OracleActAllocationDetailService.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. */
  9. Class OracleActAllocationDetailService
  10. {
  11. private function query($sql, array $params){
  12. if ($params['checktime_start'] ?? false){
  13. $sql .= " AND checktime >= '".$params['checktime_start']." 00:00:00'";
  14. }
  15. if ($params['checktime_end'] ?? false){
  16. $sql .= " AND checktime <= '".$params['checktime_end']." 23:59:59'";
  17. }
  18. return $sql;
  19. }
  20. public function paginate(array $params){
  21. $sql = "SELECT ACT_ALLOCATION_DETAILS.* FROM(SELECT ACT_ALLOCATION_DETAILS.*,ROWNUM rn FROM
  22. (SELECT orderno FROM ACT_ALLOCATION_DETAILS WHERE 1=1 ";
  23. $sql = $this->query($sql, $params);
  24. $sql .= "GROUP BY orderno)ACT_ALLOCATION_DETAILS)ACT_ALLOCATION_DETAILS
  25. WHERE ACT_ALLOCATION_DETAILS.rn <= ".$params['page']*$params['paginate']." AND rn >".($params['page']-1)*$params['paginate'];
  26. return DB::connection('oracle')->select(DB::raw($sql));
  27. }
  28. public function get(array $params){
  29. $sql = "SELECT orderno FROM ACT_ALLOCATION_DETAILS WHERE 1=1 ";
  30. $sql = $this->query($sql, $params);
  31. $sql .= "GROUP BY orderno";
  32. return DB::connection('oracle')->select(DB::raw($sql));
  33. }
  34. public function getOrderno(array $params){
  35. if (($params['page'] ?? false) && ($params['paginate'] ?? false))$allocations = $this->paginate($params);
  36. else $allocations = $this->get($params);
  37. $count = count($allocations);
  38. $str = "(";
  39. foreach ($allocations as $index => $allocation){
  40. if ($index < $count-1){
  41. $str .= "'".$allocation->orderno."',";
  42. }else{
  43. $str .= "'".$allocation->orderno."')";
  44. }
  45. }
  46. return $str;
  47. }
  48. /**
  49. * @param array $params
  50. * @return OracleActAllocationDetails
  51. */
  52. public function first(array $params){
  53. $actAllocationDetail = OracleActAllocationDetails::query();
  54. foreach ($params as $column => $value){
  55. $actAllocationDetail->where($column, $value);
  56. }
  57. /** @var OracleActAllocationDetails $actAllocationDetail */
  58. return $actAllocationDetail->first();
  59. }
  60. }