CreateWeightStatistic.php 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <?php
  2. namespace App\Console\Commands;
  3. use App\Order;
  4. use App\OrderBin;
  5. use App\OrderPackageCountingRecord;
  6. use App\Services\BatchService;
  7. use App\Services\common\BatchUpdateService;
  8. use App\Services\DocWaveHeaderService;
  9. use App\Services\LogService;
  10. use App\ValueStore;
  11. use Carbon\Carbon;
  12. use Illuminate\Console\Command;
  13. use Illuminate\Support\Facades\Cache;
  14. use Illuminate\Support\Facades\DB;
  15. class CreateWeightStatistic extends Command
  16. {
  17. protected $signature = 'create:weightStatistic';
  18. protected $description = 'every day create weight statistic data';
  19. public function handle()
  20. {
  21. $yesterday = date("Y-m-d",strtotime("-1 day"));
  22. $sql = <<<sql
  23. SELECT DATE_FORMAT(order_packages.created_at,'%Y-%m-%d') date,
  24. SUM(CASE WHEN order_packages.weighed_at IS NOT NULL THEN 1 ELSE 0 END) AS count,
  25. COUNT(1) total FROM order_packages LEFT JOIN orders ON order_packages.order_id=orders.id WHERE orders.wms_status != '订单取消'
  26. AND order_packages.created_at BETWEEN '{$yesterday} 00:00:00' AND '{$yesterday} 23:59:59' GROUP BY date
  27. sql;
  28. $result = DB::selectOne(DB::raw($sql));
  29. if (!$result)$obj = [
  30. "targeted_at" => $yesterday,
  31. "un_weigh_count" => 0,
  32. "total_count" => 0
  33. ]; else $obj = [
  34. "targeted_at" => $result->date,
  35. "un_weigh_count" => $result->count,
  36. "total_count" => $result->total,
  37. ];
  38. /** @var \stdClass $model */
  39. $model = OrderPackageCountingRecord::query()->create($obj);
  40. Cache::put("weight.".$yesterday,[
  41. "date"=>$yesterday,
  42. "total"=>$model->total_count,
  43. "count"=>$model->un_weigh_count,
  44. "value"=>$model->total_count ? intval(($model->un_weigh_count/$model->total_count)*100) : 0
  45. ]);
  46. }
  47. }