| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- <?php
- namespace App\Http\Controllers;
- use App\Filters\WorkOrderFilters;
- use App\Http\Requests\WorkOrder\WorkOrderRequest;
- use App\Logistic;
- use App\OrderIssue;
- use App\Services\OrderService;
- use App\Services\OwnerService;
- use App\Services\WorkOrderCommoditiesService;
- use App\Services\WorkOrderDetailService;
- use App\Services\WorkOrderLogService;
- use App\Services\WorkOrderService;
- use App\WorkOrder;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Gate;
- class WorkOrderController extends Controller
- {
- /**
- * @var WorkOrderService $service
- * @var WorkOrderCommoditiesService $commoditiesService
- * @var WorkOrderDetailService $detailService
- * @var WorkOrderLogService $logService
- * @var OrderService $orderService
- * @var OwnerService $ownerService
- */
- public $service;
- public $detailService;
- public $commoditiesService;
- public $logService;
- public $orderService;
- public $ownerService;
- public function __construct()
- {
- $this->service = app(WorkOrderService::class);
- $this->detailService = app('WorkOrderDetailService');
- $this->commoditiesService = app(WorkOrderCommoditiesService::class);
- $this->logService = app(WorkOrderLogService::class);
- $this->orderService = app(OrderService::class);
- $this->ownerService = app(OwnerService::class);
- }
- public function index(Request $request, WorkOrderFilters $filters)
- {
- if (Gate::denies('订单管理-工单处理-查询')) return redirect('/');
- $workOrders = WorkOrder::query()->filter($filters)->defaultWith()->orderByDesc('work_order_status')->orderBy('created_at')->paginate($request['paginate'] ?? 50);
- $logistics = Logistic::all();
- $orderIssueTypes = $this->service->getIssueType();
- $owners = $this->ownerService->getAuthorizedOwners();
- $this->service->tags($workOrders);
- return view('order.workOrder.index', compact('workOrders', 'logistics', 'orderIssueTypes', 'owners'));
- }
- /**
- * 工单生成问题件
- * @param Request $request
- * @return array
- */
- public function buildOrderIssueApi(Request $request): array
- {
- if (Gate::denies('订单管理-订单问题件生成'))
- return ['success' => false, 'message' => '没有对应权限'];
- $work_orders = WorkOrder::query()->whereIn('id', $request['ids'])->get();
- if (count($work_orders) == 0) return ['success' => false, 'message' => '刷新当前页面重试'];
- if (OrderIssue::query()->whereIn('order_id', $work_orders->map(function ($item) {
- return $item['order_id'];
- }))->exists()) {
- return ['success' => false, 'message' => '已有对应的问题件'];
- }
- $result = $this->service->buildOrderIssue($work_orders);
- if (!$result['success']) return $result;
- $workOrders = WorkOrder::query()->defaultWith()->whereIn('id', $request['ids'])->get();
- $this->service->tags($workOrders);
- return ['success' => true, 'data' => $workOrders];
- }
- public function updateIssueTypeApi(Request $request): array
- {
- if (Gate::denies('订单管理-工单处理-审核'))
- return ['success' => false, 'message' => '没有对应权限'];
- WorkOrder::query()->where('id', $request['id'])->update(['order_issue_type_id' => $request['type_id']]);
- return ['success' => true];
- }
- public function batchUpdateIssueTypeApi(Request $request): array
- {
- if (Gate::denies('订单管理-工单处理-审核'))
- return ['success' => false, 'message' => '没有对应权限'];
- WorkOrder::query()->whereIn('id', $request['ids'])->update(['order_issue_type_id' => $request['type']]);
- $items = WorkOrder::query()->defaultWith()->whereIn('id', $request['ids'])->get();
- $this->service->tags($items);
- return ['success' => true, 'data' => $items];
- }
- public function destroyApi($id): array
- {
- if (Gate::denies('订单管理-工单处理-删除'))
- return ['success' => false, 'message' => '没有对应权限'];
- $workOrder = $this->service->find($id);
- if (!$workOrder)
- return ['success' => false, 'message' => '对应工单信息未找到'];
- if ($workOrder->status == '已处理') {
- return ['success' => false, 'message' => '对应工单已处理,拒绝删除'];
- }
- WorkOrder::query()->where('id', $id)->Delete();
- return ['success' => true];
- }
- public function checkWorkOrderApi(Request $request): array
- {
- $nos = $request->input('no','');
- if (is_string($nos)){
- $nos = [$nos];
- }
- $data = $this->service->checkWorkOrder($nos);
- return ['success' => true,'data' => $data];
- }
- }
|