924 lines
32 KiB
PHP
Executable File
924 lines
32 KiB
PHP
Executable File
<?php
|
|
|
|
# @Author: 嗨噜客(三亚) <fm453>
|
|
# @Date: 2022-05-22T07:37:46+08:00
|
|
# @Email: fm453@lukegzs.com
|
|
# @Last modified by: fm453
|
|
# @Last modified time: 2022-05-22T07:37:46+08:00
|
|
# @Copyright: www.hiluker.cn
|
|
|
|
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 Common
|
|
{
|
|
//出车单
|
|
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
|
|
]);
|
|
}
|
|
}
|