OracleBasSkuService.php 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  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 first(array $params){
  22. return $this->query($params)->first();
  23. }
  24. public function count(array $params){
  25. $query = $this->query($params);
  26. return $query->count();
  27. }
  28. private function query(array $params){
  29. $query = OracleBasSKU::query();
  30. foreach ($params as $column => $value){
  31. if ($column == "barcode"){
  32. $query->where(function ($builder)use($value){
  33. $builder->where('alternate_sku1',$value)->orWhere('alternate_sku2',$value);
  34. });
  35. continue;
  36. }
  37. if (is_array($value))$query->whereIn($column,$value);
  38. else $query->where($column,$value);
  39. }
  40. return $query;
  41. }
  42. public function getPiece(array $params,int $start, int $amount){
  43. $sql = "SELECT * FROM (SELECT ROWNUM rn,d.* FROM BAS_SKU d WHERE 1=1";
  44. foreach ($params as $column => $value){
  45. if (is_array($value)){
  46. if (count($value) < 1)return null;
  47. $sql .= " AND ".$column." IN (";
  48. foreach ($value as $i => $v){
  49. if ($i != 0)$sql .= ",";
  50. $sql .= "'".$v."'";
  51. }
  52. $sql .= ")";
  53. continue;
  54. }
  55. $sql .= " AND ".$column." = '".$value."'";
  56. }
  57. $sql .= " ORDER BY addtime)WHERE rn>".$start." AND rn <= ".($start+$amount);
  58. return DB::connection('oracle')->select(DB::raw($sql));
  59. }
  60. public function 获取BasSKu_通过WMSOrderHeaders($orderHeaders){
  61. if(!$orderHeaders){return null;}
  62. $customer_Ids = array_unique(data_get($orderHeaders,'*.customerid'));
  63. $sku_s = array_unique(data_get($orderHeaders,'*.oracleDOCOrderDetails.*.sku'));
  64. if(!$customer_Ids || !$sku_s){return null;}
  65. return OracleBasSKU::query()->whereIn('customerid',$customer_Ids)->whereIn('sku',$sku_s)->get();
  66. }
  67. public function getWmsCreatedCommodities($startDate)
  68. {
  69. if (!$startDate) return null;
  70. return OracleBasSKU::query()
  71. ->select('customerid','sku','descr_c','alternate_sku1','alternate_sku2','alternate_sku3','skulength','skuwidth','skuhigh','cube','packid','addtime','edittime')
  72. ->where('addTime', '>=', $startDate)
  73. ->orderByDesc('addtime')
  74. ->get();
  75. }
  76. public function getWmsUpdatedCommodities($startDate)
  77. {
  78. if (!$startDate) return null;
  79. return OracleBasSKU::query()
  80. ->select('customerid','sku','descr_c','alternate_sku1','alternate_sku2','alternate_sku3','skulength','skuwidth','skuhigh','cube','packid','addtime','edittime')
  81. ->where('EditTime', '>=', $startDate)
  82. ->whereColumn('EditTime', '<>', 'addTime')
  83. ->orderByDesc('EditTime')
  84. ->get();
  85. }
  86. }