CreateWeightStatistic.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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,IFNULL(order_packages.measuring_machine_id, 0) measuring_machine_id,order_packages.owner_id,
  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
  26. WHERE orders.wms_status != '订单取消'
  27. AND order_packages.created_at BETWEEN '{$yesterday} 00:00:00' AND '{$yesterday} 23:59:59' GROUP BY date,order_packages.measuring_machine_id,order_packages.owner_id
  28. sql;
  29. $result = DB::select(DB::raw($sql));
  30. if (!$result) {
  31. $obj = [
  32. "targeted_at" => $yesterday,
  33. "un_weigh_count" => 0,
  34. "total_count" => 0,
  35. "measuring_machine_id" => 0,
  36. "owner_id" => 0
  37. ];
  38. $model = OrderPackageCountingRecord::query()->create($obj);
  39. Cache::put("weight.".$yesterday, $obj);
  40. }else{
  41. $objs = [];
  42. foreach ($result as $v){
  43. $obj = [
  44. "targeted_at" => $v->date,
  45. "un_weigh_count" => $v->count,
  46. "total_count" => $v->total,
  47. "measuring_machine_id" => $v->measuring_machine_id,
  48. "owner_id" => $v->owner_id
  49. ];
  50. $model = OrderPackageCountingRecord::query()->create($obj);
  51. array_push($objs, $obj);
  52. }
  53. Cache::put("weight.".$yesterday, $objs);
  54. }
  55. }
  56. }