OracleActAllocationDetailService.php 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. namespace App\Services;
  3. use App\OracleActAllocationDetails;
  4. use Illuminate\Support\Facades\DB;
  5. /**
  6. * connection : oracle
  7. * table : ACT_ALLOCATION_DETAILS
  8. */use App\Traits\ServiceAppAop;
  9. class OracleActAllocationDetailService
  10. {
  11. use ServiceAppAop;
  12. protected $modelClass=OracleActAllocationDetail::class;
  13. private function query($sql, array $params){
  14. if ($params['checktime_start'] ?? false){
  15. $sql .= " AND checktime >= '".$params['checktime_start'].":00'";
  16. }
  17. if ($params['checktime_end'] ?? false){
  18. $sql .= " AND checktime <= '".$params['checktime_end'].":59'";
  19. }
  20. return $sql;
  21. }
  22. public function paginate(array $params){
  23. $sql = "SELECT ACT_ALLOCATION_DETAILS.* FROM(SELECT ACT_ALLOCATION_DETAILS.*,ROWNUM rn FROM
  24. (SELECT orderno FROM ACT_ALLOCATION_DETAILS WHERE 1=1 ";
  25. $sql = $this->query($sql, $params);
  26. $sql .= "GROUP BY orderno)ACT_ALLOCATION_DETAILS)ACT_ALLOCATION_DETAILS
  27. WHERE ACT_ALLOCATION_DETAILS.rn <= ".$params['page']*$params['paginate']." AND rn >".($params['page']-1)*$params['paginate'];
  28. return DB::connection('oracle')->select(DB::raw($sql));
  29. }
  30. public function get(array $params){
  31. $sql = "SELECT orderno FROM ACT_ALLOCATION_DETAILS WHERE 1=1 ";
  32. $sql = $this->query($sql, $params);
  33. $sql .= "GROUP BY orderno";
  34. return DB::connection('oracle')->select(DB::raw($sql));
  35. }
  36. public function getOrderno(array $params){
  37. if (($params['page'] ?? false) && ($params['paginate'] ?? false))$allocations = $this->paginate($params);
  38. else $allocations = $this->get($params);
  39. $count = count($allocations);
  40. if (!$count)return null;
  41. $str = "(";
  42. foreach ($allocations as $index => $allocation){
  43. if ($index < $count-1){
  44. $str .= "'".$allocation->orderno."',";
  45. }else{
  46. $str .= "'".$allocation->orderno."')";
  47. }
  48. }
  49. return $str;
  50. }
  51. /**
  52. * @param array $params
  53. * @return OracleActAllocationDetails
  54. */
  55. public function first(array $params){
  56. $actAllocationDetail = OracleActAllocationDetails::query();
  57. foreach ($params as $column => $value){
  58. $actAllocationDetail->where($column, $value);
  59. }
  60. /** @var OracleActAllocationDetails $actAllocationDetail */
  61. return $actAllocationDetail->first();
  62. }
  63. }