ProcessStatisticService.php 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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'/*,'operatorLogSubmit'*/])->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. $builder->where('code','like',$code."%");
  25. });
  26. unset($params["code"]);
  27. }
  28. if ($params["status"] ?? false){
  29. $status=$params["status"];
  30. $query=$query->whereHas('process',function (Builder $builder)use($status){
  31. $builder->where('status',$status);
  32. });
  33. unset($params["status"]);
  34. }
  35. if($params['process_method_id'] ?? false){
  36. $process_method_id = $params['process_method_id'];
  37. $query=$query->whereHas('process',function (Builder $builder)use($process_method_id){
  38. $builder->where('process_method_id',$process_method_id);
  39. });
  40. unset($params['process_method_id']);
  41. }
  42. $columnQueryRules=[
  43. 'started_at_start' => ['alias' => 'started_at','startDate' => ' 00:00:00'],
  44. 'started_at_end' => ['alias' => 'started_at','endDate' => ' 23:59:59'],
  45. 'process_id' => ['multi' => ','],
  46. ];
  47. $query = app(QueryService::class)->query($params,$query,$columnQueryRules,"process_statistics");
  48. return $query;
  49. }
  50. public function paginate(array $params){
  51. return $this->conditionQuery($params)->paginate($params["paginate"] ?? 50);
  52. }
  53. public function getSql(array $params){
  54. return $this->conditionQuery($params)->selectRaw('process_statistics.*')
  55. ->leftJoin('processes','process_statistics.process_id','processes.id')
  56. ->selectRaw('processes.created_at process_created_at,processes.code process_code,processes.unit_price process_unit_price,processes.amount process_amount,processes.completed_amount process_completed_amount,processes.status process_status,processes.remark process_remark,processes.balance_remark process_balance_remark')
  57. ->leftJoin('owners','processes.owner_id','owners.id')
  58. ->selectRaw('owners.name owner_name')
  59. ->leftJoin('process_methods','processes.process_method_id','process_methods.id')
  60. ->selectRaw('process_methods.name process_method_name')
  61. ->sql();
  62. }
  63. }