|
|
@@ -6,7 +6,10 @@ 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\WorkOrderLogService;
|
|
|
use App\Services\WorkOrderService;
|
|
|
use App\WorkOrder;
|
|
|
use Illuminate\Http\Request;
|
|
|
@@ -15,93 +18,144 @@ use Illuminate\Support\Facades\Gate;
|
|
|
class WorkOrderController extends Controller
|
|
|
{
|
|
|
|
|
|
- public function index(Request $request, WorkOrderFilters $filters, WorkOrderService $service)
|
|
|
+ /**
|
|
|
+ * @var WorkOrderService $service
|
|
|
+ * @var WorkOrderCommoditiesService $commoditiesService
|
|
|
+ * @var WorkOrderLogService $logService
|
|
|
+ * @var OrderService $orderService
|
|
|
+ * @var OwnerService $ownerService
|
|
|
+ */
|
|
|
+ public $service;
|
|
|
+ public $commoditiesService;
|
|
|
+ public $logService;
|
|
|
+ public $orderService;
|
|
|
+ public $ownerService;
|
|
|
+
|
|
|
+ public function __construct(
|
|
|
+ WorkOrderService $service,
|
|
|
+ WorkOrderCommoditiesService $commoditiesService,
|
|
|
+ WorkOrderLogService $logService,
|
|
|
+ OrderService $orderService,
|
|
|
+ OwnerService $ownerService)
|
|
|
+ {
|
|
|
+ $this->service = $service;
|
|
|
+ $this->commoditiesService = $commoditiesService;
|
|
|
+ $this->logService = $logService;
|
|
|
+ $this->orderService = $orderService;
|
|
|
+ $this->ownerService = $ownerService;
|
|
|
+ }
|
|
|
+
|
|
|
+ public function index(Request $request, WorkOrderFilters $filters)
|
|
|
{
|
|
|
if (Gate::denies('订单管理-工单处理-查询')) return redirect('/');
|
|
|
+
|
|
|
$workOrders = WorkOrder::query()->filter($filters)->defaultWith()->orderBy('created_at')->orderByDesc('status')->paginate($request['paginate'] ?? 50);
|
|
|
+
|
|
|
$logistics = Logistic::all();
|
|
|
- $orderIssueTypes = $service->getIssueType();
|
|
|
- $owners = app('OwnerService')->getAuthorizedOwners();
|
|
|
- $service->tags($workOrders);
|
|
|
- return view('order.workOrder.index', compact('workOrders', 'logistics', 'orderIssueTypes','owners'));
|
|
|
+
|
|
|
+ $orderIssueTypes = $this->service->getIssueType();
|
|
|
+
|
|
|
+ $owners = $this->ownerService->getAuthorizedOwners();
|
|
|
+
|
|
|
+ $this->service->tags($workOrders);
|
|
|
+
|
|
|
+ return view('order.workOrder.index', compact('workOrders', 'logistics', 'orderIssueTypes', 'owners'));
|
|
|
}
|
|
|
|
|
|
// 审核 api
|
|
|
- public function reviewApi(Request $request, WorkOrderService $service): array
|
|
|
+ public function reviewApi(Request $request): array
|
|
|
{
|
|
|
if (Gate::denies('订单管理-工单处理-审核')) return ['success' => false, 'message' => '没有对应的编辑权限'];
|
|
|
+
|
|
|
$workOrder = WorkOrder::query()->find($request['id']);
|
|
|
- return $service->review($workOrder);
|
|
|
+
|
|
|
+ return $this->service->review($workOrder);
|
|
|
}
|
|
|
|
|
|
// 批量审核 api
|
|
|
- public function batchReviewApi(Request $request,WorkOrderService $service): array
|
|
|
+ public function batchReviewApi(Request $request): array
|
|
|
{
|
|
|
- if(Gate::denies('订单管理-工单处理-审核'))return ['success' => false, 'message' => '没有对应的编辑权限'];
|
|
|
- if (WorkOrder::query()->whereIn('id',$request['ids'])->whereNotNull('review_at')->exists())
|
|
|
+ if (Gate::denies('订单管理-工单处理-审核')) {
|
|
|
+ return ['success' => false, 'message' => '没有对应的编辑权限'];
|
|
|
+ }
|
|
|
+
|
|
|
+ if (WorkOrder::query()->whereIn('id', $request['ids'])->whereNotNull('review_at')->exists())
|
|
|
return ['success' => false, 'message' => '选中的工单已有审核完成,刷新页面重试'];
|
|
|
- $work_orders = WorkOrder::query()->whereIn('id',$request['ids'])->get();
|
|
|
- $service->tags($work_orders);
|
|
|
- return $service->batchReview($work_orders);
|
|
|
+
|
|
|
+ $work_orders = WorkOrder::query()->whereIn('id', $request['ids'])->get();
|
|
|
+
|
|
|
+ $this->service->tags($work_orders);
|
|
|
+
|
|
|
+ return $this->service->batchReview($work_orders);
|
|
|
}
|
|
|
|
|
|
// 生成问题件 api
|
|
|
- public function buildOrderIssueApi(Request $request, WorkOrderService $service): 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()){
|
|
|
+
|
|
|
+ if (OrderIssue::query()->whereIn('order_id', $work_orders->map(function ($item) {
|
|
|
+ return $item['order_id'];
|
|
|
+ }))->exists()) {
|
|
|
return ['success' => false, 'message' => '已有对应的问题件'];
|
|
|
}
|
|
|
- $result = $service->buildOrderIssue($work_orders);
|
|
|
+
|
|
|
+ $result = $this->service->buildOrderIssue($work_orders);
|
|
|
+
|
|
|
if (!$result['success']) return $result;
|
|
|
- $workOrders = WorkOrder::query()->defaultWith()->whereIn('id',$request['ids'])->get();
|
|
|
- $service->tags($workOrders);
|
|
|
- return ['success' => true ,'data' => $workOrders];
|
|
|
+
|
|
|
+ $workOrders = WorkOrder::query()->defaultWith()->whereIn('id', $request['ids'])->get();
|
|
|
+
|
|
|
+ $this->service->tags($workOrders);
|
|
|
+
|
|
|
+ return ['success' => true, 'data' => $workOrders];
|
|
|
}
|
|
|
|
|
|
// 创建工单 api
|
|
|
- public function storeApi(Request $request, WorkOrderService $service):array
|
|
|
+ public function storeApi(Request $request): array
|
|
|
{
|
|
|
if (Gate::denies('订单管理-订单-生成工单'))
|
|
|
return ['success' => false, 'message' => '没有对应权限'];
|
|
|
$params = $request->all();
|
|
|
- if (count($params) == 0) return ['success' => false,'message' => '参数异常'];
|
|
|
- app('OrderService')->syncOrderByCodes(array_map(function($param){
|
|
|
+ if (count($params) == 0) return ['success' => false, 'message' => '参数异常'];
|
|
|
+ app('OrderService')->syncOrderByCodes(array_map(function ($param) {
|
|
|
return $param['order_no'];
|
|
|
- },$params));
|
|
|
- return $service->build($params);
|
|
|
+ }, $params));
|
|
|
+ return $this->service->build($params);
|
|
|
}
|
|
|
|
|
|
// 破损工单
|
|
|
- public function damagedApi(WorkOrderRequest $request, WorkOrderService $service): array
|
|
|
+ public function damagedApi(WorkOrderRequest $request): array
|
|
|
{
|
|
|
if (Gate::denies('订单管理-订单-生成工单'))
|
|
|
return ['success' => false, 'message' => '没有对应权限'];
|
|
|
- app('OrderService')->syncOrderByCodes([$request->input('order_no')]);
|
|
|
|
|
|
- $workOrder = $service->createDamagedWorkOrder($request->all());
|
|
|
+ $this->orderService->syncOrderByCodes([$request->input('order_no')]);
|
|
|
+
|
|
|
+ $workOrder = $this->service->createDamagedWorkOrder($request->all());
|
|
|
|
|
|
if ($workOrder) return ['success' => true];
|
|
|
- else return ['success' => false];
|
|
|
+ else return ['success' => false];
|
|
|
}
|
|
|
|
|
|
// 货主 遗失工单信息 填充
|
|
|
- public function updateLossApi(Request $request, WorkOrderService $service): array
|
|
|
+ public function updateLossApi(Request $request): array
|
|
|
{
|
|
|
if (Gate::denies('订单管理-工单处理-货主编辑'))
|
|
|
return ['success' => false, 'message' => '没有对应权限'];
|
|
|
|
|
|
- /** @var WorkOrder $workOrder */
|
|
|
- $workOrder = WorkOrder::query()->where('id',$request->input('id'))->first();
|
|
|
+ $workOrder = $this->service->find($request->input('id'));
|
|
|
|
|
|
- if (!$workOrder) return ['success' => false,'message' => '参数异常'];
|
|
|
+ if (!$workOrder) return ['success' => false, 'message' => '参数异常'];
|
|
|
|
|
|
- $workOrder = $service->fillLossWorkOrder($workOrder,$request->all());
|
|
|
+ $workOrder = $this->service->fillLossWorkOrder($workOrder, $request->all());
|
|
|
|
|
|
- if(!$workOrder) return ['success' => false,'message' => '创建异常'];
|
|
|
+ if (!$workOrder) return ['success' => false, 'message' => '创建异常'];
|
|
|
|
|
|
return ['success' => true, 'data' => $workOrder];
|
|
|
}
|
|
|
@@ -110,35 +164,42 @@ class WorkOrderController extends Controller
|
|
|
public function updateIssueTypeApi(Request $request): array
|
|
|
{
|
|
|
if (Gate::denies('订单管理-工单处理-审核'))
|
|
|
- return ['success' => false,'message' => '没有对应权限'];
|
|
|
+ return ['success' => false, 'message' => '没有对应权限'];
|
|
|
+
|
|
|
+ WorkOrder::query()->where('id', $request['id'])->update(['order_issue_type_id' => $request['type_id']]);
|
|
|
|
|
|
- WorkOrder::query()->where('id',$request['id'])->update(['order_issue_type_id' => $request['type_id']]);
|
|
|
return ['success' => true];
|
|
|
}
|
|
|
|
|
|
// 批量修改问题件类型
|
|
|
- public function batchUpdateIssueTypeApi(Request $request,WorkOrderService $service): array
|
|
|
+ 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();
|
|
|
- $service->tags($items);
|
|
|
- return ['success' => true,'data' => $items];
|
|
|
+ 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 = WorkOrder::query()->where('id',$id)->first();
|
|
|
- if (! $workOrder)
|
|
|
- return ['success' => false,'message' => '对应工单信息未找到'];
|
|
|
- if ($workOrder->status == '已处理'){
|
|
|
- return ['success' => false,'message' => '对应工单已处理,拒绝删除'];
|
|
|
+ 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();
|
|
|
+ WorkOrder::query()->where('id', $id)->Delete();
|
|
|
return ['success' => true];
|
|
|
}
|
|
|
|
|
|
@@ -146,41 +207,47 @@ class WorkOrderController extends Controller
|
|
|
public function updateWorkOrderStatusApi(Request $request): array
|
|
|
{
|
|
|
if (Gate::denies('订单管理-工单处理-宝时编辑'))
|
|
|
- return ['success' => false,'message' => '没有对应权限'];
|
|
|
+ return ['success' => false, 'message' => '没有对应权限'];
|
|
|
try {
|
|
|
- $workOrder = WorkOrder::query()->find($request['id']);
|
|
|
+ $workOrder = $this->service->find($request->input('id'));
|
|
|
+
|
|
|
$workOrder->work_order_status = $request['work_order_status'];
|
|
|
+
|
|
|
$workOrder->update();
|
|
|
} catch (\Exception $e) {
|
|
|
- return ['success' => false,'message' => '编辑工单状态失败'];
|
|
|
+ return ['success' => false, 'message' => '编辑工单状态失败'];
|
|
|
}
|
|
|
return ['success' => true];
|
|
|
}
|
|
|
|
|
|
// 承运商处理工单状态
|
|
|
- public function logisticUpdateWorkOrderStatusApi(Request $request):array
|
|
|
+ public function logisticUpdateWorkOrderStatusApi(Request $request): array
|
|
|
{
|
|
|
if (Gate::denies('订单管理-工单处理-承运商编辑'))
|
|
|
- return ['success' => false,'message' => '没有对应权限'];
|
|
|
+ return ['success' => false, 'message' => '没有对应权限'];
|
|
|
try {
|
|
|
- $workOrder = WorkOrder::query()->find($request['id']);
|
|
|
+ $workOrder = $this->service->find($request->input('id'));
|
|
|
+
|
|
|
$workOrder->work_order_status = $request['work_order_status'];
|
|
|
+
|
|
|
$workOrder->update();
|
|
|
} catch (\Exception $e) {
|
|
|
- return ['success' => false,'message' => '编辑工单状态失败'];
|
|
|
+ return ['success' => false, 'message' => '编辑工单状态失败'];
|
|
|
}
|
|
|
- return ['success'=> true];
|
|
|
+ return ['success' => true];
|
|
|
}
|
|
|
|
|
|
- public function ownerUpdateCommoditiesApi(Request $request,WorkOrderCommoditiesService $commoditiesService): array
|
|
|
+ public function ownerUpdateCommoditiesApi(Request $request): array
|
|
|
{
|
|
|
- if (Gate::denies('订单管理-工单处理-货主编辑')){
|
|
|
- return ['success' => false,'message' => '没有对应权限'];
|
|
|
+ if (Gate::denies('订单管理-工单处理-货主编辑')) {
|
|
|
+ return ['success' => false, 'message' => '没有对应权限'];
|
|
|
}
|
|
|
- /** @var WorkOrder $workOrder */
|
|
|
- $workOrder = WorkOrder::query()->find($request->input('id'));
|
|
|
- if (!$workOrder)return ['success' => false,'message' => '参数异常'];
|
|
|
- $commoditiesService->updateWorkOrderCommoditiesByJsonArray($workOrder,$request->input('commodities'));
|
|
|
+
|
|
|
+ $workOrder = $this->service->find($request->input('id'));
|
|
|
+
|
|
|
+ if (!$workOrder) return ['success' => false, 'message' => '参数异常'];
|
|
|
+
|
|
|
+ $this->commoditiesService->updateWorkOrderCommoditiesByJsonArray($workOrder, $request->input('commodities'));
|
|
|
|
|
|
$workOrder->loadDefaultWith();
|
|
|
|
|
|
@@ -189,17 +256,16 @@ class WorkOrderController extends Controller
|
|
|
return ['success' => true, 'data' => $workOrder];
|
|
|
}
|
|
|
|
|
|
- public function logisticUpdateCommoditiesApi(Request $request,WorkOrderCommoditiesService $commoditiesService): array
|
|
|
+ public function logisticUpdateCommoditiesApi(Request $request): array
|
|
|
{
|
|
|
- if (Gate::denies('订单管理-工单处理-承运商编辑')){
|
|
|
- return ['success' => false,'message' => '没有对应权限'];
|
|
|
+ if (Gate::denies('订单管理-工单处理-承运商编辑')) {
|
|
|
+ return ['success' => false, 'message' => '没有对应权限'];
|
|
|
}
|
|
|
- /** @var WorkOrder $workOrder */
|
|
|
- $workOrder = WorkOrder::query()->find($request->input('id'));
|
|
|
+ $workOrder = $this->service->find($request->input('id'));
|
|
|
|
|
|
- if (!$workOrder)return ['success' => false,'message' => '参数异常'];
|
|
|
+ if (!$workOrder) return ['success' => false, 'message' => '参数异常'];
|
|
|
|
|
|
- $commoditiesService->updateWorkOrderCommoditiesByJsonArray($workOrder,$request->input('commodities'));
|
|
|
+ $this->commoditiesService->updateWorkOrderCommoditiesByJsonArray($workOrder, $request->input('commodities'));
|
|
|
|
|
|
$workOrder->loadDefaultWith();
|
|
|
|
|
|
@@ -208,20 +274,42 @@ class WorkOrderController extends Controller
|
|
|
return ['success' => true, 'data' => $workOrder];
|
|
|
}
|
|
|
|
|
|
- public function logisticEndApi(Request $request,WorkOrderService $service): array
|
|
|
+ public function baoShiUpdateCommoditiesApi(Request $request): array
|
|
|
+ {
|
|
|
+ if (Gate::denies('订单管理-工单处理-宝时编辑')) {
|
|
|
+ return ['success' => false, 'message' => '没有对应权限'];
|
|
|
+ }
|
|
|
+ $workOrder = $this->service->find($request->input('id'));
|
|
|
+
|
|
|
+ if (!$workOrder) return ['success' => false, 'message' => '参数异常'];
|
|
|
+
|
|
|
+ $this->commoditiesService->updateWorkOrderCommoditiesByJsonArray($workOrder, $request->input('commodities'));
|
|
|
+
|
|
|
+ $workOrder->loadDefaultWith();
|
|
|
+
|
|
|
+ if (($workOrder->issueType->name ?? '') === '错漏发') {
|
|
|
+ $workOrder->changeStatus('完成');
|
|
|
+
|
|
|
+ $this->logService->createLog($workOrder, '完成', '错漏发完结');
|
|
|
+ }
|
|
|
+
|
|
|
+ return ['success' => true, 'data' => $workOrder];
|
|
|
+ }
|
|
|
+
|
|
|
+ public function logisticEndApi(Request $request): array
|
|
|
{
|
|
|
- if (Gate::denies('订单管理-工单处理-承运商编辑')){
|
|
|
- return ['success' => false,'message' => '没有对应权限'];
|
|
|
+ if (Gate::denies('订单管理-工单处理-承运商编辑')) {
|
|
|
+ return ['success' => false, 'message' => '没有对应权限'];
|
|
|
}
|
|
|
+ $workOrder = $this->service->find($request->input('id'));
|
|
|
|
|
|
- /** @var WorkOrder $workOrder */
|
|
|
- $workOrder = WorkOrder::query()->find($request->input('id'));
|
|
|
- if (!$workOrder) return ['success' => false,'message' => '参数错误,刷新重试'];
|
|
|
- $service->logisticEnd($workOrder);
|
|
|
+ if (!$workOrder) return ['success' => false, 'message' => '参数错误,刷新重试'];
|
|
|
+
|
|
|
+ $this->service->logisticEnd($workOrder);
|
|
|
|
|
|
$workOrder->loadDefaultWith();
|
|
|
|
|
|
- return ['success' => true,'data' => $workOrder];
|
|
|
+ return ['success' => true, 'data' => $workOrder];
|
|
|
}
|
|
|
|
|
|
}
|