| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- <?php
- namespace App\Http\Controllers;
- use App\Filters\WorkOrderFilters;
- use App\Logistic;
- use App\Services\WorkOrderService;
- use App\Services\WorkOrderTypeService;
- use App\WorkOrder;
- use App\WorkOrderType;
- use Illuminate\Contracts\Foundation\Application;
- use Illuminate\Contracts\View\Factory;
- use Illuminate\Database\Eloquent\Builder;
- use Illuminate\Http\RedirectResponse;
- use Illuminate\Http\Request;
- use Illuminate\Routing\Redirector;
- use Illuminate\Support\Facades\Gate;
- use Illuminate\View\View;
- class WorkOrderController extends Controller
- {
- /**
- * 工单主页
- *
- * @param Request $request
- * @param WorkOrderFilters $filters
- * @return Application|Factory|RedirectResponse|Redirector|View
- */
- public function index(Request $request, WorkOrderFilters $filters)
- {
- if (!Gate::allows('订单管理-工单处理-查询')) return redirect('/');
- $workOrders = WorkOrder::query()->filter($filters)->with(['type', 'creator', 'order' => function ($query) {
- /** @var $query Builder */
- $query->with('packages', 'issue', 'logistic');
- }, 'reviewer'])->orderByDesc('created_at', 'grad', 'status')->paginate($request['paginate'] ?? 50);
- $logistics = Logistic::all();
- return view('order.workOrder.index', compact('workOrders', 'logistics'));
- }
- 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->create($request->all());
- $workOrderTypes = WorkOrderType::query()->with('childTypes')->get();
- $grads = WorkOrder::$enums['grad'];
- array_shift($grads);
- return view('order.workOrder.create', compact('workOrderTypes', 'result', 'grads'));
- }
- /**
- * 生成订单拦截工单
- * @param Request $request
- * @param WorkOrderService $service
- * @return array
- */
- public function interceptOrderApi(Request $request, WorkOrderService $service): array
- {
- if (!Gate::allows('订单管理-订单-生成工单')) return ['success' => false, 'message' => '没有对应的创建权限'];
- $uniquely_tags = $request['order_nos'];
- $work_order_type = app(WorkOrderTypeService::class)->findOrCreate('订单拦截', 'orders', '订单', '订单拦截');
- $result = $service->exists($work_order_type['id'], $uniquely_tags); // 检查订单号和工单类型是否有对应的工单
- if ($result['success'])
- return ['success' => false, 'message' => join(",", array($result['data'])) . "已有对应的订单拦截工单"];
- return $service->interceptOrder($work_order_type, $uniquely_tags, $request['grad']);
- }
- /**
- * 生成订单修改工单
- * @param Request $request
- * @param WorkOrderService $service
- * @return array
- */
- public function editOrderReceiveInfoApi(Request $request,WorkOrderService $service): array
- {
- if (!Gate::allows('订单管理-订单-生成工单')) return ['success' => false, 'message' => '没有对应的创建权限'];
- if (is_array($request['order_nos'])) return ['success' => false,'message' => '参数错误'];
- $uniquely_tag = $request['order_nos'];
- $work_order_type = app(WorkOrderTypeService::class)->findOrCreate('订单收件信息修改', 'orders', '订单', '订单收件信息修改');
- $result = $service->exists($work_order_type['id'], $uniquely_tag); // 检查订单号和工单类型是否有对应的工单
- if($result['success'])
- return ['success' => false,'message' => join(",", array($result['data'])) . "已有对应的订单信息修改工单"];
- return $service->editOrder($work_order_type,$uniquely_tag,$request['remake']);
- }
- /**
- * 工单审核
- * @param Request $request
- * @param WorkOrderService $service
- * @return array
- */
- public function reviewApi(Request $request, WorkOrderService $service): array
- {
- if (!Gate::allows('订单管理-工单处理-审核')) return ['success' => false, 'message' => '没有对应的编辑权限'];
- $workOrder = WorkOrder::query()->find($request['id']);
- return $service->review($workOrder);
- }
- /**
- * 生成问题件
- * @param Request $request
- * @param WorkOrderService $service
- * @return array
- */
- public function createOrderIssueApi(Request $request, WorkOrderService $service): array
- {
- if (!Gate::allows('订单管理-订单问题件生成'))
- return ['success' => false, 'message' => '没有对应权限'];
- $work_orders = WorkOrder::query()->whereIn('id', $request['ids'])->get();
- if (count($work_orders) == 0) return ['success' => false, 'message' => '刷新当前页面重试'];
- return $service->createOrderIssue($work_orders);
- }
- public function show(WorkOrder $workOrder)
- {
- //
- }
- public function edit(WorkOrder $workOrder)
- {
- //
- }
- public function update(Request $request, WorkOrder $workOrder)
- {
- //
- }
- public function destroy(WorkOrder $workOrder)
- {
- //
- }
- }
|