Nessuna descrizione

MonitorSkuToRedis.php 2.9KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <?php
  2. namespace App\Console\Commands;
  3. use Illuminate\Console\Command;
  4. use DB;
  5. use App\OrderGoodsSkus;
  6. use App\GoodsSkus;
  7. use App\Order;
  8. use App\RedisModel;
  9. class MonitorSkuToRedis extends Command {
  10. protected $signature = 'MonitorSkuToRedis';
  11. /**
  12. * The console command description.
  13. *
  14. * @var string
  15. */
  16. protected $description = '监控预占库存';
  17. public function handle()
  18. {
  19. $this->MonitorSkuToRedis();
  20. }
  21. public function MonitorSkuToRedis(){
  22. echo "\nStart: ".date('Y-m-d H:i:s');
  23. $order_ids = Order::where('warehouse', 3)->where('is_del', 0)->whereNull('orderCode')->lists('id');
  24. $res = OrderGoodsSkus::select(DB::raw('sum(num) as num , sku_id'))->whereIn('order_id', $order_ids)->where('mj_status', 0)->where('is_del', 0)->groupBy('sku_id')->get();
  25. $res = json_decode(json_encode($res), true);
  26. $sku_arr = array();
  27. foreach($res as $k=>$v){
  28. $sku_arr[$v['sku_id']] = $v['num'];
  29. }
  30. $order_ids = DB::table('seafood_fx.order')->where('warehouse', 3)->where('is_del', 0)->whereNull('orderCode')->lists('id');
  31. if(!empty($order_ids)){
  32. $res = DB::table('seafood_fx.order_goods_skus')->select(DB::raw('sum(num) as num , sku_id'))->whereIn('order_id', $order_ids)->where('mj_status', 0)->where('is_del', 0)->groupBy('sku_id')->get();
  33. $res = json_decode(json_encode($res), true);
  34. foreach($res as $k=>$v){
  35. if(isset($sku_arr[$v['sku_id']])){
  36. $sku_arr[$v['sku_id']] += $v['num'];
  37. }else{
  38. $sku_arr[$v['sku_id']] = $v['num'];
  39. }
  40. }
  41. }
  42. $order_ids = DB::table('seafood_fx2.order')->where('warehouse', 3)->where('is_del', 0)->whereNull('orderCode')->lists('id');
  43. if(!empty($order_ids)){
  44. $res = DB::table('seafood_fx2.order_goods_skus')->select(DB::raw('sum(num) as num , sku_id'))->whereIn('order_id', $order_ids)->where('mj_status', 0)->where('is_del', 0)->groupBy('sku_id')->get();
  45. $res = json_decode(json_encode($res), true);
  46. foreach($res as $k=>$v){
  47. if(isset($sku_arr[$v['sku_id']])){
  48. $sku_arr[$v['sku_id']] += $v['num'];
  49. }else{
  50. $sku_arr[$v['sku_id']] = $v['num'];
  51. }
  52. }
  53. }
  54. $redis_table = config('constants.SKU_QUANTITY_TABLE');
  55. foreach($sku_arr as $key=>$val){
  56. $code = GoodsSkus::where('id', $key)->pluck('code');
  57. $sku_redis_val = RedisModel::hGet($redis_table, $code);
  58. if($val != $sku_redis_val){
  59. echo "\nWARNING_Sku: ". $key.' '.$code.' true_num->redis_num:'.$val.' -> '.$sku_redis_val;
  60. }else{
  61. //echo "\nSUCCESS_Sku: ". $key.' '.$code.' true_num->redis_num:'.$val.' -> '.$sku_redis_val;
  62. }
  63. }
  64. }
  65. }