OrderIssuePerformanceService.php 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. namespace App\Services;
  3. use App\OrderIssueProcessLog;
  4. use App\Owner;
  5. use App\Services\common\QueryService;
  6. use App\User;
  7. use App\Exports\Export;
  8. use Carbon\Carbon;
  9. use Illuminate\Pagination\LengthAwarePaginator;
  10. use Illuminate\Pagination\Paginator;
  11. use Illuminate\Support\Facades\Auth;
  12. use Illuminate\Support\Facades\DB;
  13. use Maatwebsite\Excel\Facades\Excel;
  14. use App\Traits\ServiceAppAop;
  15. class OrderIssuePerformanceService
  16. {
  17. use ServiceAppAop;
  18. protected $modelClass=OrderIssuePerformance::class;
  19. public function paginate(array $params)
  20. {
  21. $paginate = $params['paginate'] ?? 50;
  22. $page = $params['page'] ?? 1;
  23. $data = $this->queryAll($params);
  24. $collection = collect($data);
  25. $list = $collection->slice(($page - 1) * $paginate, $paginate)->all();
  26. $option = ['path' => Paginator::resolveCurrentPath()];
  27. $paginate = new LengthAwarePaginator($list, $collection->count(), $paginate, $page,$option );
  28. return $paginate;
  29. }
  30. public function queryAll($params)
  31. {
  32. $sql = $this->getSql($params);
  33. return $result = DB::select($sql);
  34. }
  35. public function getSql($params){
  36. $sql =" select users.name as userName,owners.name as ownerName,count(case order_issue_process_logs.type WHEN '创建' THEN 1 end ) as created, count(case order_issue_process_logs.type WHEN '处理' THEN 1 end ) as processed, count(case order_issue_process_logs.type WHEN '结束' THEN 1 end ) as end,count(1) as sumNumber ";
  37. $sql.=" from order_issue_process_logs left join users on order_issue_process_logs.user_id = users.id left join order_issues on order_issue_process_logs.order_issue_id = order_issues.id left join orders on order_issues.order_id = orders.id left join owners on orders.owner_id = owners.id ";
  38. $sql.=" where 1=1 ";
  39. if(isset($params['create_start'])){
  40. $sql.= " and order_issue_process_logs.created_at >= '".$params['create_start']." 00:00:00' ";
  41. }
  42. if(isset($params['create_end'])){
  43. $sql.= " and order_issue_process_logs.created_at <= '".$params['create_end']." 23:59:59' ";
  44. }
  45. if (isset($params['timeFrame'])) {
  46. $create_start ='';$create_end ='';
  47. if ($params['timeFrame'] == 'day') {
  48. $create_start = date('Y-m-d');
  49. $create_end = date('Y-m-d');
  50. } else if ($params['timeFrame'] == 'yesterday') {
  51. $create_start = date('Y-m-d', strtotime('-1 day'));
  52. $create_end = date('Y-m-d', strtotime('-1 day'));
  53. } else if ($params['timeFrame'] == 'week') {
  54. $date = date('Y-m-d', strtotime('-1 weeks', strtotime('Monday')));
  55. $create_start = $date;
  56. $create_end = date('Y-m-d');
  57. } else if ($params['timeFrame'] == 'month') {
  58. $create_start = date('Y-m-01', strtotime(date("Y-m-d")));
  59. $create_end = date('Y-m-d');
  60. }
  61. $sql.= " and order_issue_process_logs.created_at >= '".$create_start." 00:00:00' ";
  62. $sql.= " and order_issue_process_logs.created_at <= '".$create_end." 23:59:59' ";
  63. }
  64. $sql.= "group by users.name, owners.name;";
  65. return $sql;
  66. }
  67. }