ANG YU 5 лет назад
Родитель
Сommit
b70e3c8a8f

+ 27 - 7
app/Services/OrderCountingRecordService.php

@@ -96,6 +96,9 @@ class OrderCountingRecordService
             case'周':
                 $resultOrders = $this->getCreateByDatabaseUnitWeek($targetOwnerIdsUnderDates);
                 break;
+            case'月':
+                $resultOrders = $this->getCreateByDatabaseUnitMounth($targetOwnerIdsUnderDates);
+                break;
             default:
                 $resultOrders = collect();
                 break;
@@ -117,7 +120,7 @@ class OrderCountingRecordService
         return ['resultOrders' => $result];
     }
 
-    public function orderCountingRecords($start = '2020-10-1', $end = '2020-11-09', $unit = '')
+    public function orderCountingRecords($start = '2020-10-1', $end = '2020-11-09', $unit = '')
     {
         $orders = $this->get($start, $end, null, $unit);
         $dataList = collect();
@@ -151,12 +154,16 @@ class OrderCountingRecordService
                     $dataArray[] = $item->year . '-' . $item->week . '';
                 }
                 break;
-//            case '月';
-//                $array = Carbon::parse($start)->monthsUntil($end, 1)->toArray();
-//                break;
-//            case '年';
-//                $array = Carbon::parse($start)->yearsUntil($end, 1)->toArray();
-//                break;
+            case '月';
+                foreach (Carbon::parse($start)->monthsUntil($end, 1)->toArray() as $item) {
+                    $dataArray[] = $item->year . '-' . $item->month . '';
+                }
+                break;
+            case '年';
+                foreach (Carbon::parse($start)->yearsUntil($end, 1)->toArray() as $item) {
+                    $dataArray[] = $item->year . '-' . $item->month . '';
+                }
+                break;
             default:
                 break;
         }
@@ -210,4 +217,17 @@ class OrderCountingRecordService
         }
         return $orderSqlBuilder->groupBy(['owner_id', 'warehouse_id', 'shop_id', 'logistic_id', 'date_target'])->get();
     }
+
+    private function getCreateByDatabaseUnitMounth($targetOwnerIdsUnderDates)
+    {
+        $orderSqlBuilder = Order::query()->selectRaw("owner_id,warehouse_id,shop_id,logistic_id,count(1) as amounts ,DATE_FORMAT(created_at,'%Y-%m') as date_target");
+        foreach ($targetOwnerIdsUnderDates as $dateStr => $ownerIds) {
+            $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);
+            });
+        }
+        return $orderSqlBuilder->groupBy(['owner_id', 'warehouse_id', 'shop_id', 'logistic_id', 'date_target'])->get();
+    }
 }

+ 8 - 13
tests/Services/OrderCountingRecordService/DateTestTest.php

@@ -13,18 +13,13 @@ class DateTestTest extends TestCase
 {
     public function test01()
     {
-//        $period = Carbon::parse('2020-03-01')->daysUntil('2020-03-5',1);
-//        $period2 = Carbon::parse('2020-10-02')->weeksUntil('2020-11-10',1);
-//        foreach ($period2->toArray() as $item) {
-//            var_dump($item->toDateString());
-//        }
-//        var_dump('--------------------------------');
-//        $period2 = Carbon::parse('2020-08-02')->monthsUntil('2020-11-10',1);
-//        foreach ($period2->toArray() as $item) {
-//            var_dump($item->toDateString());
-//        }
-        $week_start = new DateTime();
-        $week_start->setISODate('2020','46');
-        dd($week_start->format('yy-m-d'));
+        $start = '2020-10-01';
+        $end = '2020-11-01';
+        $dataArray = [];
+        foreach (Carbon::parse($start)->monthsUntil($end, 1)->toArray() as $item) {
+            $dataArray[] = $item->year . '-' . $item->month . '';
+        }
+        dd($dataArray);
+
     }
 }