ProcessStatisticService.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. namespace App\Services;
  3. use App\ProcessStatistic;
  4. use App\Services\common\QueryService;
  5. use Illuminate\Database\Eloquent\Builder;
  6. use App\Traits\ServiceAppAop;
  7. class ProcessStatisticService
  8. {
  9. use ServiceAppAop;
  10. protected $modelClass=ProcessStatistic::class;
  11. private function conditionQuery(array $params){
  12. $query = ProcessStatistic::with(['process.owner','operatorLog.user'])->orderBy('process_statistics.process_id','DESC')
  13. ->has('process');
  14. if ($params["owner_id"] ?? false){
  15. $owner_id=$params["owner_id"];
  16. $query=$query->whereHas('process',function (Builder $builder)use($owner_id){
  17. $builder->where('owner_id',$owner_id);
  18. });
  19. unset($params["owner_id"]);
  20. }
  21. if ($params["code"] ?? false){
  22. $code=$params["code"];
  23. $query=$query->whereHas('process',function (Builder $builder)use($code){
  24. if (strpos($code, ',') || strpos($code, ',') || strpos($code, ' ')) {
  25. $arr = array_filter(preg_split('/[,, ]+/is', $code));
  26. $builder->whereIn('code',$arr);
  27. } else {
  28. $builder->where('code','like',$code."%");
  29. }
  30. });
  31. unset($params["code"]);
  32. }
  33. if ($params["status"] ?? false){
  34. $status=$params["status"];
  35. $query=$query->whereHas('process',function (Builder $builder)use($status){
  36. $builder->where('status',$status);
  37. });
  38. unset($params["status"]);
  39. }
  40. if($params['process_method_id'] ?? false){
  41. $process_method_id = $params['process_method_id'];
  42. $query=$query->whereHas('process',function (Builder $builder)use($process_method_id){
  43. $builder->where('process_method_id',$process_method_id);
  44. });
  45. unset($params['process_method_id']);
  46. }
  47. $columnQueryRules=[
  48. 'started_at_start' => ['alias' => 'started_at','startDate' => ' 00:00:00'],
  49. 'started_at_end' => ['alias' => 'started_at','endDate' => ' 23:59:59'],
  50. 'process_id' => ['multi' => ','],
  51. ];
  52. $query = app(QueryService::class)->query($params,$query,$columnQueryRules,"process_statistics");
  53. return $query;
  54. }
  55. public function paginate(array $params){
  56. return $this->conditionQuery($params)->paginate($params["paginate"] ?? 50);
  57. }
  58. public function get(array $params)
  59. {
  60. return $this->conditionQuery($params)->get();
  61. }
  62. }