|
|
@@ -0,0 +1,121 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+namespace App\Http\Controllers;
|
|
|
+
|
|
|
+use App\Filters\WorkOrderFilters;
|
|
|
+use App\Order;
|
|
|
+use App\Services\OrderService;
|
|
|
+use App\Services\WorkOrderService;
|
|
|
+use App\WorkOrder;
|
|
|
+use App\WorkOrderChildType;
|
|
|
+use App\WorkOrderType;
|
|
|
+use Carbon\Carbon;
|
|
|
+use Illuminate\Http\Request;
|
|
|
+use Illuminate\Support\Facades\Auth;
|
|
|
+use Illuminate\Support\Facades\Gate;
|
|
|
+
|
|
|
+class WorkOrderController extends Controller
|
|
|
+{
|
|
|
+ public function index(Request $request, WorkOrderFilters $filters)
|
|
|
+ {
|
|
|
+ if(!Gate::allows('订单管理-工单处理-查询'))return redirect('/');
|
|
|
+ $workOrders = WorkOrder::query()->filter($filters)->with('type', 'childType', 'creator', 'order.packages','reviewer')->orderByDesc('created_at','grad','status')->paginate($request['paginate'] ?? 50);
|
|
|
+ return view('order.workOrder.index', compact('workOrders'));
|
|
|
+ }
|
|
|
+
|
|
|
+ public function create()
|
|
|
+ {
|
|
|
+ if(!Gate::allows('订单管理-工单处理-创建'))return redirect('/');
|
|
|
+ $workOrderTypes = WorkOrderType::query()->with('childTypes')->get();
|
|
|
+ $grads = WorkOrder::$enums['grad'];
|
|
|
+ array_shift($grads);
|
|
|
+ return view('order.workOrder.create', compact('workOrderTypes', 'grads'));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public function store(Request $request, WorkOrderService $service)
|
|
|
+ {
|
|
|
+ if(!Gate::allows('订单管理-工单处理-创建'))return redirect('/');
|
|
|
+ $result = $service->createWordOrder($request->all());
|
|
|
+ $workOrderTypes = WorkOrderType::query()->with('childTypes')->get();
|
|
|
+ $grads = WorkOrder::$enums['grad'];
|
|
|
+ array_shift($grads);
|
|
|
+ return view('order.workOrder.create', compact('workOrderTypes', 'result', 'grads'));
|
|
|
+ }
|
|
|
+
|
|
|
+ // 创建
|
|
|
+ public function storeApi(Request $request): array
|
|
|
+ {
|
|
|
+ if(!Gate::allows('订单管理-订单-生成工单'))return ['success' => false,'message' => '没有对应的创建权限'];
|
|
|
+ $order_nos = $request['order_nos'];
|
|
|
+
|
|
|
+ app(OrderService::class)->syncOrderInfoByWmsOrderNos($order_nos);
|
|
|
+
|
|
|
+ $orders = Order::query()->whereIn('code', $order_nos)->get();
|
|
|
+
|
|
|
+ $work_orders = WorkOrder::query()->with('order')->where('outer_table_name', 'orders')->whereIn('outer_table_id', $orders->map(function($item){
|
|
|
+ return $item['id'];
|
|
|
+ }))->get();
|
|
|
+ $exists_nos = $work_orders->map(function ($item) {
|
|
|
+ return $item->order->code;
|
|
|
+ });
|
|
|
+ if (count($exists_nos) > 0)
|
|
|
+ return ['success' => false, 'message' => join(',',$exists_nos->toArray()) . ' 已有对应的工单'];
|
|
|
+
|
|
|
+ $inner_params = [];
|
|
|
+
|
|
|
+ $creator_id = Auth::user()['id'];
|
|
|
+
|
|
|
+ $work_order_type = WorkOrderType::query()->firstOrCreate(['name'=> '订单']);
|
|
|
+
|
|
|
+ $work_order_child_type= WorkOrderChildType::query()->firstOrCreate(['name' => '拦截','work_order_type_id' => $work_order_type['id'],'table_name' => 'orders']);
|
|
|
+ $datetime = Carbon::now();
|
|
|
+ foreach ($orders as $order) {
|
|
|
+ $inner_params[] = [
|
|
|
+ 'work_order_type_id' => $work_order_type['id'],
|
|
|
+ 'work_order_child_type_id' => $work_order_child_type['id'],
|
|
|
+ 'outer_table_name' => $work_order_child_type['table_name'],
|
|
|
+ 'outer_table_id' => $order['id'],
|
|
|
+ 'remark' => "拦截订单:{$order['code']}",
|
|
|
+ 'creator_id' => $creator_id,
|
|
|
+ 'grad' => $request['grad'] ?? 1,
|
|
|
+ 'status' => 1,
|
|
|
+ 'updated_at' => $datetime,
|
|
|
+ 'created_at' => $datetime,
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ WorkOrder::query()->insert($inner_params);
|
|
|
+ return ['success' => true];
|
|
|
+ }
|
|
|
+
|
|
|
+ // 审核
|
|
|
+ public function reviewApi(Request $request, WorkOrderService $service): array
|
|
|
+ {
|
|
|
+ if(!Gate::allows('订单管理-工单处理-编辑'))return ['success' => false,'message' => '没有对应的编辑权限'];
|
|
|
+ $workOrder = WorkOrder::query()->find($request['id']);
|
|
|
+ return $service->reviewWordOrder($workOrder);
|
|
|
+ }
|
|
|
+
|
|
|
+ public function show(WorkOrder $workOrder)
|
|
|
+ {
|
|
|
+ //
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public function edit(WorkOrder $workOrder)
|
|
|
+ {
|
|
|
+ //
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public function update(Request $request, WorkOrder $workOrder)
|
|
|
+ {
|
|
|
+ //
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public function destroy(WorkOrder $workOrder)
|
|
|
+ {
|
|
|
+ //
|
|
|
+ }
|
|
|
+}
|