|
@@ -33,7 +33,7 @@ class OrderController extends BaseController
|
|
$project = Project::find($request->input('project_id'));
|
|
$project = Project::find($request->input('project_id'));
|
|
if(!$project) return $this->error(['msg' => '找不到项目']);
|
|
if(!$project) return $this->error(['msg' => '找不到项目']);
|
|
$user = Auth::guard('mini')->user();
|
|
$user = Auth::guard('mini')->user();
|
|
- $project_role_id = $request->input('is_draft') == 1 ? ProjectRole::getByKey('work', 'id') : ProjectRole::getByKey('machine', 'id');
|
|
|
|
|
|
+ $project_role = ProjectRole::getCreateRole('rent', $request->input('is_draft'));
|
|
$option = Option::get('orders', 'status', 'checking');
|
|
$option = Option::get('orders', 'status', 'checking');
|
|
|
|
|
|
$order = Order::create([
|
|
$order = Order::create([
|
|
@@ -44,7 +44,8 @@ class OrderController extends BaseController
|
|
'order_number' => $this->model->createOrderNumber(),
|
|
'order_number' => $this->model->createOrderNumber(),
|
|
'project_id' => $project->id,
|
|
'project_id' => $project->id,
|
|
'user_id' => $user->id,
|
|
'user_id' => $user->id,
|
|
- 'project_role_id' => $project_role_id,
|
|
|
|
|
|
+ 'project_role_id' => $project_role ? $project_role['id'] : '',
|
|
|
|
+ 'level' => $project_role ? $project_role['level'] : '',
|
|
'type' => 1
|
|
'type' => 1
|
|
]);
|
|
]);
|
|
if(!$order) return $this->error(['msg' => '订单创建失败']);
|
|
if(!$order) return $this->error(['msg' => '订单创建失败']);
|
|
@@ -119,7 +120,7 @@ class OrderController extends BaseController
|
|
}
|
|
}
|
|
|
|
|
|
$user = Auth::guard('mini')->user();
|
|
$user = Auth::guard('mini')->user();
|
|
- $project_role_id = $request->input('is_draft') == 1 ? ProjectRole::getByKey('machine', 'id') : ProjectRole::getByKey('assist', 'id');
|
|
|
|
|
|
+ $project_role = ProjectRole::getCreateRole('apply', $request->input('is_draft'));
|
|
$option = Option::get('orders', 'status', 'checking');
|
|
$option = Option::get('orders', 'status', 'checking');
|
|
|
|
|
|
$order = Order::create([
|
|
$order = Order::create([
|
|
@@ -130,7 +131,8 @@ class OrderController extends BaseController
|
|
'order_number' => $this->model->createOrderNumber(),
|
|
'order_number' => $this->model->createOrderNumber(),
|
|
'project_id' => $project->id,
|
|
'project_id' => $project->id,
|
|
'user_id' => $user->id,
|
|
'user_id' => $user->id,
|
|
- 'project_role_id' => $project_role_id,
|
|
|
|
|
|
+ 'project_role_id' => $project_role ? $project_role['id'] : '',
|
|
|
|
+ 'level' => $project_role ? $project_role['level'] : '',
|
|
'type' => 2,
|
|
'type' => 2,
|
|
'is_change' => 2
|
|
'is_change' => 2
|
|
]);
|
|
]);
|
|
@@ -141,6 +143,7 @@ class OrderController extends BaseController
|
|
'name' => $device['name'],
|
|
'name' => $device['name'],
|
|
'order_id' => $order->id,
|
|
'order_id' => $order->id,
|
|
'project_id' => $order->project_id,
|
|
'project_id' => $order->project_id,
|
|
|
|
+ 'user_id' => $order->user_id,
|
|
'inner_device_id' => $device['id'],
|
|
'inner_device_id' => $device['id'],
|
|
'start_date' => $device['start_date'],
|
|
'start_date' => $device['start_date'],
|
|
'end_date' => $device['end_date']
|
|
'end_date' => $device['end_date']
|
|
@@ -164,7 +167,7 @@ class OrderController extends BaseController
|
|
$order = $this->model->find($request->input('id'));
|
|
$order = $this->model->find($request->input('id'));
|
|
if(!$order) return $this->error(['msg' => '找不到订单']);
|
|
if(!$order) return $this->error(['msg' => '找不到订单']);
|
|
$user = Auth::guard('mini')->user();
|
|
$user = Auth::guard('mini')->user();
|
|
- $project_role_id = $request->input('is_draft') == 1 ? ProjectRole::getByKey('work', 'id') : ProjectRole::getByKey('machine', 'id');
|
|
|
|
|
|
+ $project_role = ProjectRole::getCreateRole('rent', $request->input('is_draft'));
|
|
$option = Option::get('orders', 'status', 'checking');
|
|
$option = Option::get('orders', 'status', 'checking');
|
|
$res = $order->update([
|
|
$res = $order->update([
|
|
'work_point_id' => $request->input('work_point_id'),
|
|
'work_point_id' => $request->input('work_point_id'),
|
|
@@ -173,7 +176,8 @@ class OrderController extends BaseController
|
|
'status' => $option,
|
|
'status' => $option,
|
|
'order_number' => $this->model->createOrderNumber(),
|
|
'order_number' => $this->model->createOrderNumber(),
|
|
'user_id' => $user->id,
|
|
'user_id' => $user->id,
|
|
- 'project_role_id' => $project_role_id
|
|
|
|
|
|
+ 'project_role_id' => $project_role ? $project_role['id'] : '',
|
|
|
|
+ 'level' => $project_role ? $project_role['level'] : ''
|
|
]);
|
|
]);
|
|
if(!$res) return $this->error(['msg' => '订单修改失败']);
|
|
if(!$res) return $this->error(['msg' => '订单修改失败']);
|
|
$devices = $request->input('devices');
|
|
$devices = $request->input('devices');
|
|
@@ -201,7 +205,7 @@ class OrderController extends BaseController
|
|
$order = $this->model->find($request->input('id'));
|
|
$order = $this->model->find($request->input('id'));
|
|
if(!$order) return $this->error(['msg' => '找不到订单']);
|
|
if(!$order) return $this->error(['msg' => '找不到订单']);
|
|
$user = Auth::guard('mini')->user();
|
|
$user = Auth::guard('mini')->user();
|
|
- $project_role_id = $request->input('is_draft') == 1 ? ProjectRole::getByKey('work', 'id') : ProjectRole::getByKey('machine', 'id');
|
|
|
|
|
|
+ $project_role = ProjectRole::getCreateRole('apply', $request->input('is_draft'));
|
|
$type = $request->input('type');
|
|
$type = $request->input('type');
|
|
$option = Option::get('orders', 'status', 'checking');
|
|
$option = Option::get('orders', 'status', 'checking');
|
|
if($type == 'back') {
|
|
if($type == 'back') {
|
|
@@ -214,7 +218,8 @@ class OrderController extends BaseController
|
|
'is_draft' => $request->input('is_draft'),
|
|
'is_draft' => $request->input('is_draft'),
|
|
'status' => $option,
|
|
'status' => $option,
|
|
'user_id' => $user->id,
|
|
'user_id' => $user->id,
|
|
- 'project_role_id' => $project_role_id
|
|
|
|
|
|
+ 'project_role_id' => $project_role ? $project_role['id'] : '',
|
|
|
|
+ 'level' => $project_role ? $project_role['level'] : '',
|
|
]);
|
|
]);
|
|
if(!$res) return $this->error(['msg' => '订单修改失败']);
|
|
if(!$res) return $this->error(['msg' => '订单修改失败']);
|
|
$devices = $request->input('devices');
|
|
$devices = $request->input('devices');
|
|
@@ -255,9 +260,12 @@ class OrderController extends BaseController
|
|
|
|
|
|
public function get(Request $request)
|
|
public function get(Request $request)
|
|
{
|
|
{
|
|
|
|
+ $user = Auth::guard('mini')->user();
|
|
|
|
+ $level = $user->getLevel($request->input('project_id'));
|
|
$items = $this->model->join('users', 'orders.user_id', '=', 'users.id')->select('orders.*', 'users.id as user_id', 'users.name');
|
|
$items = $this->model->join('users', 'orders.user_id', '=', 'users.id')->select('orders.*', 'users.id as user_id', 'users.name');
|
|
$search_items = [
|
|
$search_items = [
|
|
- ['project_id', $request->input('project_id')]
|
|
|
|
|
|
+ ['project_id', $request->input('project_id')],
|
|
|
|
+ ['level', '>=', $level]
|
|
];
|
|
];
|
|
$is_draft = $request->input('is_draft');
|
|
$is_draft = $request->input('is_draft');
|
|
if($is_draft) {
|
|
if($is_draft) {
|
|
@@ -302,27 +310,40 @@ class OrderController extends BaseController
|
|
|
|
|
|
public function detail(Request $request)
|
|
public function detail(Request $request)
|
|
{
|
|
{
|
|
- $order = $this->model->with('project', 'workPoint', 'devices', 'user', 'innerDevices')->find($request->input('id'));
|
|
|
|
|
|
+ $order = $this->model->with('project', 'workPoint', 'user', 'innerDevices', 'order_devices')->find($request->input('id'));
|
|
if(!$order) return $this->error(['msg' => '找不到订单']);
|
|
if(!$order) return $this->error(['msg' => '找不到订单']);
|
|
$this->formatOrder($order);
|
|
$this->formatOrder($order);
|
|
foreach($order['innerDevices'] as $device) {
|
|
foreach($order['innerDevices'] as $device) {
|
|
|
|
+ $device->device = Device::find($device->device_id);
|
|
|
|
+ $device->device_name = DeviceName::find($device->device_name_id);
|
|
$device->status = Option::find($device->status);
|
|
$device->status = Option::find($device->status);
|
|
$device->spec = Spec::find($device->spec);
|
|
$device->spec = Spec::find($device->spec);
|
|
$device->work_point = WorkPoint::find($device->work_point_id);
|
|
$device->work_point = WorkPoint::find($device->work_point_id);
|
|
}
|
|
}
|
|
|
|
+ foreach($order['order_devices'] as $order_device) {
|
|
|
|
+ $order_device->device_type = Device::find($order_device->device_id);
|
|
|
|
+ $order_device->device_name = DeviceName::find($order_device->device_name_id);
|
|
|
|
+ $order_device->spec = Spec::find($order_device->spec_id);
|
|
|
|
+ $order_device->rent_type = RentType::find($order_device->rent_type_id);
|
|
|
|
+ }
|
|
return $this->success(['data' => $order]);
|
|
return $this->success(['data' => $order]);
|
|
}
|
|
}
|
|
|
|
|
|
public function getRole(Request $request)
|
|
public function getRole(Request $request)
|
|
{
|
|
{
|
|
$user = Auth::guard('mini')->user();
|
|
$user = Auth::guard('mini')->user();
|
|
- $order = $this->model->find($request->input('id'));
|
|
|
|
- if(!$order) return $this->error(['msg' => '找不到订单']);
|
|
|
|
$project_user = ProjectUser::where([
|
|
$project_user = ProjectUser::where([
|
|
- ['project_id', '=', $order->project_id],
|
|
|
|
|
|
+ ['project_id', '=', $request->input('id')],
|
|
['user_id', '=', $user->id]
|
|
['user_id', '=', $user->id]
|
|
- ])->with('projectRole')->first();
|
|
|
|
- return $this->success(['data' => $project_user]);
|
|
|
|
|
|
+ ])->first();
|
|
|
|
+ $project_role = null;
|
|
|
|
+ if($project_user) {
|
|
|
|
+ $project_role = ProjectRole::find($project_user->project_role_id);
|
|
|
|
+ if($project_role) {
|
|
|
|
+ $project_role->rights = $project_role->getRights();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return $this->success(['data' => $project_role]);
|
|
}
|
|
}
|
|
|
|
|
|
public function check(Request $request)
|
|
public function check(Request $request)
|
|
@@ -338,37 +359,63 @@ class OrderController extends BaseController
|
|
$project_role = ProjectRole::find($project_user->project_role_id);
|
|
$project_role = ProjectRole::find($project_user->project_role_id);
|
|
if(!$project_role) return $this->error(['msg' => '找不到角色']);
|
|
if(!$project_role) return $this->error(['msg' => '找不到角色']);
|
|
$status = Option::get('orders', 'status', $request->input('type'));
|
|
$status = Option::get('orders', 'status', $request->input('type'));
|
|
-
|
|
|
|
|
|
+ $next_project_role = null;
|
|
$is_inner = $order->type == 2;
|
|
$is_inner = $order->type == 2;
|
|
|
|
+ $new_order = null;
|
|
// 工区负责人确认通过
|
|
// 工区负责人确认通过
|
|
if($request->input('type') == 'pass') {
|
|
if($request->input('type') == 'pass') {
|
|
$status = Option::get('orders', 'status', 'pass');
|
|
$status = Option::get('orders', 'status', 'pass');
|
|
- $next_project_role_id = $project_role->id;
|
|
|
|
|
|
+ $next_project_role = $project_role;
|
|
} else if($request->input('type') == 're-submit') {
|
|
} else if($request->input('type') == 're-submit') {
|
|
$status = Option::get('orders', 'status', 'checking');
|
|
$status = Option::get('orders', 'status', 'checking');
|
|
- $next_project_role_id = $project_role->getNext('id', $is_inner);
|
|
|
|
|
|
+ $next_project_role = $project_role->getNext(null, $is_inner);
|
|
} else if($request->input('type') == 'reject') {
|
|
} else if($request->input('type') == 'reject') {
|
|
- if($is_inner) {
|
|
|
|
- $next_project_role_id = ProjectRole::getByKey('machine', 'id');
|
|
|
|
|
|
+ $next_project_role = ProjectRole::getFirstRole($order);
|
|
|
|
+ } else if($request->input('type') == 'back') {
|
|
|
|
+ $new_order = $order->backInnerDevices($request->input('devices'));
|
|
|
|
+ // 没有返回新订单,是全部归还
|
|
|
|
+ if(!$new_order) {
|
|
|
|
+ $status = Option::get('orders', 'status', 'pass');
|
|
|
|
+ // 全部归还,下一角色改为最高角色
|
|
|
|
+ $next_project_role = ProjectRole::getLastRole($order);
|
|
} else {
|
|
} else {
|
|
- $next_project_role_id = ProjectRole::getByKey('work', 'id');
|
|
|
|
|
|
+ // 部分归还,状态保持,下一角色保持,上一角色保持
|
|
|
|
+ $status = $order->status;
|
|
|
|
+ $next_project_role = ProjectRole::find($order->project_role_id);
|
|
|
|
+ $project_role = ProjectRole::find($order->last_project_role_id);
|
|
}
|
|
}
|
|
- } else if($request->input('type') == 'back') {
|
|
|
|
- $next_project_role_id = $project_role->id;
|
|
|
|
- $order->backInnerDevices();
|
|
|
|
} else {
|
|
} else {
|
|
// 审核
|
|
// 审核
|
|
- $next_project_role_id = $project_role->getNext('id', $is_inner);
|
|
|
|
|
|
+ $next_project_role = $project_role->getNext(null, $is_inner);
|
|
}
|
|
}
|
|
$is_change = $request->input('is_change');
|
|
$is_change = $request->input('is_change');
|
|
|
|
|
|
|
|
+ $level = $next_project_role ? $next_project_role['level'] : '';
|
|
|
|
+ if($request->input('type') == 'pass') {
|
|
|
|
+ $last_role = ProjectRole::getLastRole($order);
|
|
|
|
+ $level = $last_role ? $last_role['level'] : '';
|
|
|
|
+ }
|
|
|
|
+
|
|
$res = $order->update([
|
|
$res = $order->update([
|
|
'status' => $status,
|
|
'status' => $status,
|
|
'last_project_role_id' => $project_role->id,
|
|
'last_project_role_id' => $project_role->id,
|
|
- 'project_role_id' => $next_project_role_id,
|
|
|
|
- 'is_change' => $is_change
|
|
|
|
|
|
+ 'project_role_id' => $next_project_role ? $next_project_role['id'] : '',
|
|
|
|
+ 'level' => $level,
|
|
|
|
+ 'is_change' => $is_change,
|
|
|
|
+ 'remark' => $request->input('remark')
|
|
]);
|
|
]);
|
|
- Notification::send($order->id);
|
|
|
|
|
|
+ if($request->input('type') == 'back') {
|
|
|
|
+ if($new_order) {
|
|
|
|
+ // 部分归还
|
|
|
|
+ Notification::send($new_order->id);
|
|
|
|
+ } else {
|
|
|
|
+ // 全部归还
|
|
|
|
+ Notification::send($order->id);
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ Notification::send($order->id);
|
|
|
|
+ }
|
|
|
|
+
|
|
if($res) return $this->success();
|
|
if($res) return $this->success();
|
|
return $this->error(['msg' => '操作失败']);
|
|
return $this->error(['msg' => '操作失败']);
|
|
}
|
|
}
|
|
@@ -391,6 +438,17 @@ class OrderController extends BaseController
|
|
if($request->input('id')) {
|
|
if($request->input('id')) {
|
|
$id = $request->input('id');
|
|
$id = $request->input('id');
|
|
$this->model->where('id', $id)->delete();
|
|
$this->model->where('id', $id)->delete();
|
|
|
|
+ $inner_device_ids = OrderDevice::where('order_id', $id)->pluck('inner_device_id');
|
|
|
|
+ if($inner_device_ids) {
|
|
|
|
+ $free_id = Option::get('inner_devices', 'status', 'free');
|
|
|
|
+ InnerDevice::where('id', $inner_device_ids)->update([
|
|
|
|
+ 'status' => $free_id,
|
|
|
|
+ 'start_date' => null,
|
|
|
|
+ 'end_date' => null,
|
|
|
|
+ 'work_point_id' => ''
|
|
|
|
+ ]);
|
|
|
|
+ }
|
|
|
|
+ Notification::where('order_id', $id)->delete();
|
|
OrderDevice::where('order_id', $id)->delete();
|
|
OrderDevice::where('order_id', $id)->delete();
|
|
}
|
|
}
|
|
return $this->success();
|
|
return $this->success();
|