| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- <?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)
- {
- //
- }
- }
|