DocWaveHeaderService.php 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <?php
  2. namespace App\Services;
  3. use App\ValueStore;
  4. use Carbon\Carbon;
  5. use Illuminate\Support\Facades\DB;
  6. use Yajra\Oci8\Query\OracleBuilder;
  7. Class DocWaveHeaderService
  8. {
  9. public function get(array $params, $rule = [])
  10. {
  11. /** @var OracleBuilder $query */
  12. $query = DB::connection("oracle")->table("doc_wave_header")->orderByDesc("edittime");
  13. foreach ($params as $column=>$param){
  14. if (isset($rule[$column]))$query = $this->rule($query,$rule[$column],$column,$param);
  15. else $query->where($column,$param);
  16. }
  17. return $query->get();
  18. }
  19. private function rule(OracleBuilder $query, $rule, $column, $value)
  20. {
  21. switch ($rule){
  22. case "gtOrEqual":
  23. $query->where($column,">=",$value);
  24. break;
  25. case "gt":
  26. $query->where($column,">",$value);
  27. break;
  28. case "raw":
  29. $query->whereRaw($value);
  30. break;
  31. }
  32. return $query;
  33. }
  34. public function getSyncDate()
  35. {
  36. $valueStore = ValueStore::query()->where("name","wave_last_sync_date")->first();
  37. return $valueStore->value ?? Carbon::now()->subSeconds(65)->toDateTimeString();
  38. }
  39. public function setSyncDate(string $value)
  40. {
  41. $valueStore = ValueStore::query()->where("name","wave_last_sync_date");
  42. return $valueStore->update(["value"=>$value]);
  43. }
  44. }