OracleActAllocationDetailService.php 2.4 KB

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