OracleBasSkuService.php 3.4 KB

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