Просмотр исходного кода

订单量趋势 修改统计表中快递单字段

ANG YU 5 лет назад
Родитель
Сommit
6ce41498c2
2 измененных файлов с 40 добавлено и 24 удалено
  1. 1 1
      app/OrderCountingRecord.php
  2. 39 23
      app/Services/OrderCountingRecordService.php

+ 1 - 1
app/OrderCountingRecord.php

@@ -7,5 +7,5 @@ use Illuminate\Database\Eloquent\Model;
 class OrderCountingRecord extends Model
 {
     //
-    protected $fillable = ['owner_id','shop_id' ,'warehouse_id' ,'logistics_id' ,'date_target' ,'counting_unit' ,'amount'];
+    protected $fillable = ['owner_id','shop_id' ,'warehouse_id' ,'logistic_id' ,'date_target' ,'counting_unit' ,'amount'];
 }

+ 39 - 23
app/Services/OrderCountingRecordService.php

@@ -34,6 +34,41 @@ class OrderCountingRecordService
         return $resultByCache['resultOrders'];
     }
 
+    public function orderCountingRecords($start, $end, $unit = '日')
+    {
+        $orders = $this->get($start, $end, null, $unit);
+        $dataList = collect();
+        $orders->groupBy('date_target')->each(function ($items) use (&$dataList, $unit) {
+            $counter = $items->reduce(function ($sum, $item) {
+                return $sum + $item->amount;
+            }, 0);
+            $date_target = $items[0]->date_target;
+            if ($unit == '周') {
+                $date_target = (new DateTime())->setISODate(Str::of($date_target)->explode('-')[0], Str::of($date_target)->explode('-')[1])->format('yy-m-d');
+            }
+            $dataList->push([
+                'counter' => $counter,
+                'date_target' => $date_target,
+            ]);
+        });
+        return $dataList->sortBy("date_target");
+    }
+
+    public function logisticsCountingRecords($start, $end, $ownerIds = null)
+    {
+        $dataList = collect();
+        $resultOrders = $this->get($start, $end, $ownerIds);
+        $resultOrders->groupBy('logistic_id')->each(function ($item)use(&$dataList) {
+            $counter = $item->reduce(function ($sum, $item) {
+                return $sum + $item->amount;
+            }, 0);
+            $dataList->push([
+                'counter' => $counter,
+                'logistic_id' => $date_target,
+            ]);
+        });
+    }
+
     public function getByCache($start, $end, $ownerIds = null, $unit = '日')
     {// Order[] results, Array [$date=>[$ownerIds]]
         $countingOwnerIds = $this->getCountingOwnerIds($ownerIds);
@@ -109,7 +144,7 @@ class OrderCountingRecordService
                 'owner_id' => $order->owner_id,
                 'shop_id' => $order->shop_id,
                 'warehouse_id' => $order->warehouse_id,
-                'logistic_id' => $order->logistics_id,
+                'logistic_id' => $order->logistic_id,
                 'date_target' => $order->date_target,
                 'counting_unit' => $unit,
                 'amount' => $order->amounts,
@@ -120,25 +155,6 @@ class OrderCountingRecordService
         return ['resultOrders' => $result];
     }
 
-    public function orderCountingRecords($start, $end, $unit = '日')
-    {
-        $orders = $this->get($start, $end, null, $unit);
-        $dataList = collect();
-        $orders->groupBy('date_target')->each(function ($items) use (&$dataList, $unit) {
-            $counter = $items->reduce(function ($sum, $item) {
-                return $sum + $item->amount;
-            }, 0);
-            $date_target = $items[0]->date_target;
-            if ($unit == '周') {
-                $date_target = (new DateTime())->setISODate(Str::of($date_target)->explode('-')[0], Str::of($date_target)->explode('-')[1])->format('yy-m-d');
-            }
-            $dataList->push([
-                'counter' => $counter,
-                'date_target' => $date_target,
-            ]);
-        });
-        return $dataList->sortBy("date_target");
-    }
 
     public function periodDateToArray($start, $end, $unit = '日')
     {
@@ -200,7 +216,7 @@ class OrderCountingRecordService
         $orderSqlBuilder = Order::query()->selectRaw("owner_id,warehouse_id,shop_id,logistic_id,count(1) as amounts ,DATE_FORMAT(created_at,'%Y-%m-%d') as date_target");
         foreach ($targetOwnerIdsUnderDates as $dateStr => $ownerIds) {
             $orderSqlBuilder->orWhere(function ($query) use ($ownerIds, $dateStr) {
-                $query->whereIn('owner_id', $ownerIds)->whereDate('created_at', $dateStr)->where('wms_status','订单完成');
+                $query->whereIn('owner_id', $ownerIds)->whereDate('created_at', $dateStr)->where('wms_status', '订单完成');
             });
         }
         return $orderSqlBuilder->groupBy(['owner_id', 'warehouse_id', 'shop_id', 'logistic_id', 'date_target'])->get();
@@ -212,7 +228,7 @@ class OrderCountingRecordService
         foreach ($targetOwnerIdsUnderDates as $dateStr => $ownerIds) {
             $orderSqlBuilder->orWhere(function ($query) use ($ownerIds, $dateStr) {
                 $dateStr = (new DateTime())->setISODate(Str::of($dateStr)->explode('-')[0], Str::of($dateStr)->explode('-')[1])->format('yy-m-d');
-                $query->whereIn('owner_id', $ownerIds)->whereDate('created_at', '>=', $dateStr)->whereDate('created_at', '<', Carbon::parse($dateStr)->addWeek()->toDateString())->where('wms_status','订单完成');;
+                $query->whereIn('owner_id', $ownerIds)->whereDate('created_at', '>=', $dateStr)->whereDate('created_at', '<', Carbon::parse($dateStr)->addWeek()->toDateString())->where('wms_status', '订单完成');;
             });
         }
         return $orderSqlBuilder->groupBy(['owner_id', 'warehouse_id', 'shop_id', 'logistic_id', 'date_target'])->get();
@@ -225,7 +241,7 @@ class OrderCountingRecordService
             $orderSqlBuilder->orWhere(function ($query) use ($ownerIds, $dateStr) {
                 $year = Str::of($dateStr)->explode('-')[0];
                 $month = Str::of($dateStr)->explode('-')[1];
-                $query->whereIn('owner_id', $ownerIds)->whereMonth('created_at', $month)->whereYear('created_at', $year)->where('wms_status','订单完成');;
+                $query->whereIn('owner_id', $ownerIds)->whereMonth('created_at', $month)->whereYear('created_at', $year)->where('wms_status', '订单完成');;
             });
         }
         return $orderSqlBuilder->groupBy(['owner_id', 'warehouse_id', 'shop_id', 'logistic_id', 'date_target'])->get();