OracleBasSkuService.php 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <?php
  2. namespace App\Services;
  3. use App\OracleBasSKU;
  4. use Illuminate\Support\Facades\DB;
  5. use App\Traits\ServiceAppAop;
  6. class OracleBasSkuService
  7. {
  8. use ServiceAppAop;
  9. protected $modelClass=OracleBasSku::class;
  10. public function getOwnerCommodities(array $params){
  11. $query = OracleBasSKU::query();
  12. if ($params['code'] ?? false){
  13. if (!is_array($params['code'])){
  14. $params['code'] = [$params['code']];
  15. }
  16. $query->whereIn('customerid',$params['code']);
  17. }
  18. return $query->get();
  19. }
  20. public function get(array $params){
  21. $query = $this->query($params);
  22. return $query->get();
  23. }
  24. public function first(array $params){
  25. return $this->query($params)->first();
  26. }
  27. public function count(array $params){
  28. $query = $this->query($params);
  29. return $query->count();
  30. }
  31. private function query(array $params){
  32. $query = OracleBasSKU::query();
  33. foreach ($params as $column => $value){
  34. if ($column == "barcode"){
  35. $query->where(function ($builder)use($value){
  36. $builder->where('alternate_sku1',$value)->orWhere('alternate_sku2',$value);
  37. });
  38. continue;
  39. }
  40. if (is_array($value))$query->whereIn($column,$value);
  41. else $query->where($column,$value);
  42. }
  43. return $query;
  44. }
  45. public function getPiece(array $params,int $start, int $amount){
  46. $sql = "SELECT * FROM (SELECT ROWNUM rn,d.* FROM BAS_SKU d WHERE 1=1";
  47. foreach ($params as $column => $value){
  48. if (is_array($value)){
  49. if (count($value) < 1)return null;
  50. $sql .= " AND ".$column." IN (";
  51. foreach ($value as $i => $v){
  52. if ($i != 0)$sql .= ",";
  53. $sql .= "'".$v."'";
  54. }
  55. $sql .= ")";
  56. continue;
  57. }
  58. $sql .= " AND ".$column." = '".$value."'";
  59. }
  60. $sql .= " ORDER BY addtime)WHERE rn>".$start." AND rn <= ".($start+$amount);
  61. return DB::connection('oracle')->select(DB::raw($sql));
  62. }
  63. public function 获取BasSKu_通过WMSOrderHeaders($orderHeaders){
  64. if(!$orderHeaders){return null;}
  65. $customer_Ids = array_unique(data_get($orderHeaders,'*.customerid'));
  66. $sku_s = array_unique(data_get($orderHeaders,'*.oracleDOCOrderDetails.*.sku'));
  67. if(!$customer_Ids || !$sku_s){return null;}
  68. return OracleBasSKU::query()->whereIn('customerid',$customer_Ids)->whereIn('sku',$sku_s)->get();
  69. }
  70. public function getWmsCreatedCommodities($startDate)
  71. {
  72. if (!$startDate) return null;
  73. return OracleBasSKU::query()
  74. ->select('customerid','sku','descr_c','alternate_sku1','alternate_sku2','alternate_sku3','skulength','skuwidth','skuhigh','cube','packid','addtime','edittime')
  75. ->where('addTime', '>=', $startDate)
  76. ->orderByDesc('addtime')
  77. ->get();
  78. }
  79. public function getWmsUpdatedCommodities($startDate)
  80. {
  81. if (!$startDate) return null;
  82. return OracleBasSKU::query()
  83. ->select('customerid','sku','descr_c','alternate_sku1','alternate_sku2','alternate_sku3','skulength','skuwidth','skuhigh','cube','packid','addtime','edittime')
  84. ->where('EditTime', '>=', $startDate)
  85. ->whereColumn('EditTime', '<>', 'addTime')
  86. ->orderByDesc('EditTime')
  87. ->get();
  88. }
  89. }