OracleBasSkuService.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php
  2. namespace App\Services;
  3. use App\OracleBasSKU;
  4. use Illuminate\Support\Facades\DB;
  5. Class OracleBasSkuService
  6. {
  7. public function getOwnerCommodities(array $params){
  8. $query = OracleBasSKU::query();
  9. if ($params['code'] ?? false){
  10. if (!is_array($params['code'])){
  11. $params['code'] = [$params['code']];
  12. }
  13. $query->whereIn('customerid',$params['code']);
  14. }
  15. return $query->get();
  16. }
  17. public function get(array $params){
  18. $query = $this->query($params);
  19. return $query->get();
  20. }
  21. public function count(array $params){
  22. $query = $this->query($params);
  23. return $query->count();
  24. }
  25. private function query(array $params){
  26. $query = OracleBasSKU::query();
  27. foreach ($params as $column => $value){
  28. if (is_array($value))$query->whereIn($column,$value);
  29. else $query->where($column,$value);
  30. }
  31. return $query;
  32. }
  33. public function getPiece(array $params,int $start, int $amount){
  34. $sql = "SELECT * FROM (SELECT ROWNUM rn,d.* FROM BAS_SKU d WHERE 1=1";
  35. foreach ($params as $column => $value){
  36. if (is_array($value)){
  37. if (count($value) < 1)return null;
  38. $sql .= " AND ".$column." IN (";
  39. foreach ($value as $i => $v){
  40. if ($i != 0)$sql .= ",";
  41. $sql .= "'".$v."'";
  42. }
  43. $sql .= ")";
  44. continue;
  45. }
  46. $sql .= " AND ".$column." = '".$value."'";
  47. }
  48. $sql .= " ORDER BY addtime)WHERE rn>".$start." AND rn <= ".($start+$amount);
  49. return DB::connection('oracle')->select(DB::raw($sql));
  50. }
  51. public function 获取BasSKu_通过WMSOrderHeaders($orderHeaders){
  52. if(!$orderHeaders){return null;}
  53. $customer_Ids = array_unique(data_get($orderHeaders,'*.customerid'));
  54. $sku_s = array_unique(data_get($orderHeaders,'*.oracleDOCOrderDetails.*.sku'));
  55. if(!$customer_Ids || !$sku_s){return null;}
  56. return OracleBasSKU::query()->whereIn('customerid',$customer_Ids)->whereIn('sku',$sku_s)->get();
  57. }
  58. }