OrderIssuePerformanceController.php 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Services\OrderIssuePerformanceService;
  4. use App\Services\OrderIssueWorkLoadService;
  5. use Illuminate\Http\Request;
  6. use Exception;
  7. use Illuminate\Support\Facades\Gate;
  8. use Illuminate\Support\Facades\Http;
  9. class OrderIssuePerformanceController extends Controller
  10. {
  11. public function __construct()
  12. {
  13. app()->singleton('OrderIssueWorkLoadService', OrderIssueWorkLoadService::class);
  14. app()->singleton('service', OrderIssuePerformanceService::class);
  15. }
  16. public function index(Request $request)
  17. {
  18. if (!Gate::allows('订单管理-问题件-绩效统计')) {
  19. return redirect(url('/'));
  20. }
  21. /** @var OrderIssuePerformanceService $service */
  22. $service = app('OrderIssuePerformanceService');
  23. $performance = $service->paginate($request->all());
  24. $options = ['timeFrame' => $request->input('timeFrame'), 'create_start' => $request->input('create_start') ?? '', 'create_end' => $request->input('create_end') ?? ''];
  25. return view('order.issue.performance', compact('performance', 'options'));
  26. }
  27. public function export(Request $request)
  28. {
  29. /** @var OrderIssuePerformanceService $orderIssuePerformanceService */
  30. $orderIssuePerformanceService = app(OrderIssuePerformanceService::class);
  31. $sql = $orderIssuePerformanceService->getSql($request->all());
  32. $row = ['客服','客户','创建数','处理数','完结数','总数'];
  33. $column = ['userName','ownerName','created','process','end','sumNumber'];
  34. $post = Http::post(config('go.export.url'),['type'=>'unify','sql'=>$sql, 'connection'=>'mysql',
  35. 'row'=>json_encode($row,JSON_UNESCAPED_UNICODE), 'column'=>json_encode($column)]);
  36. if ($post->status() == 500){
  37. throw new Exception($post->header("Msg"));
  38. }
  39. return response($post,200, [
  40. "Content-type"=>"application/octet-stream",
  41. "Content-Disposition"=>"attachment; filename=客服绩效-".date('ymdHis').'.xlsx',
  42. ]);
  43. }
  44. public function workLoadPage(Request $request)
  45. {
  46. if (!Gate::allows('订单管理-问题件-工作量')) {
  47. return redirect(url('/'));
  48. }
  49. /** @var OrderIssueWorkLoadService $workLoadService */
  50. $workLoadService = app('OrderIssueWorkLoadService');
  51. $workLoads = $workLoadService->paginate($request->all());
  52. $users = $workLoadService->getUsers();
  53. $owners = $workLoadService->getOwners();
  54. $options =$workLoadService->getOptions($request->all());
  55. return view('order/issue/workload', compact('workLoads', 'owners', 'users','options'));
  56. }
  57. public function exportWorkLoad(Request $request)
  58. {
  59. $workLoadService = app('OrderIssueWorkLoadService');
  60. return $workLoadService->exportWorkLoad($request->all());
  61. }
  62. }