فهرست منبع

批量插入与去重

ANG YU 5 سال پیش
والد
کامیت
9a79baaf25
2فایلهای تغییر یافته به همراه6 افزوده شده و 4 حذف شده
  1. 3 3
      app/Services/LaborReportsCountingRecordService.php
  2. 3 1
      app/Services/OrderCountingRecordService.php

+ 3 - 3
app/Services/LaborReportsCountingRecordService.php

@@ -114,7 +114,7 @@ class LaborReportsCountingRecordService
         switch ($unit) {
             case '日':
                 $query = LaborReport::query()
-                    ->selectRaw("DATE_FORMAT(created_at,'%Y-%m-%d') as date_target, count(1) as counter");
+                    ->selectRaw("DATE_FORMAT(created_at,'%Y-%m-%d') as date_target, count(DISTINCT user_id) as counter");
                 foreach ($dateList as $startOfWeek) {
                     $query->orWhere(function ($query) use ($startOfWeek) {
                         $query->whereDate('created_at', $startOfWeek);
@@ -128,7 +128,7 @@ class LaborReportsCountingRecordService
                 });
                 break;
             case '周':
-                $query = LaborReport::query()->selectRaw("DATE_FORMAT(created_at,'%x-%v') as date_target, count(1) as counter");
+                $query = LaborReport::query()->selectRaw("DATE_FORMAT(created_at,'%x-%v') as date_target, count(DISTINCT user_id) as counter");
                 foreach ($dateList as $date) {
                     $query->orWhere(function ($query) use ($date) {
                         $year = Str::of($date)->explode('-')[0];
@@ -146,7 +146,7 @@ class LaborReportsCountingRecordService
                 });
                 break;
             case '月':
-                $query = LaborReport::query()->selectRaw("DATE_FORMAT(created_at,'%Y-%m') as date_target, count(1) as counter");
+                $query = LaborReport::query()->selectRaw("DATE_FORMAT(created_at,'%Y-%m') as date_target, count(DISTINCT user_id) as counter");
                 foreach ($dateList as $date) {
                     $query->orWhere(function ($query) use ($date) {
                         $year = Str::of($date)->explode('-')[0];

+ 3 - 1
app/Services/OrderCountingRecordService.php

@@ -269,7 +269,9 @@ class OrderCountingRecordService
             //删除OrderCountingRecord表中与当前日期相关的数据,之后的批量插入重新插入这部分数据
             OrderCountingRecord::query()->where('date_target', $currentDate)->where('counting_unit', $unit)->delete();
         }
-        OrderCountingRecord::query()->insert($result->toArray());
+        $result->chunk(1000)->each(function($item){
+            OrderCountingRecord::query()->insert($item->toArray());
+        });
         return ['resultOrders' => $result];
     }