|
|
@@ -99,14 +99,30 @@ class NewOrderCountingRecordService
|
|
|
case '年':
|
|
|
break;
|
|
|
case '月':
|
|
|
+ $lowUnit = '周';
|
|
|
+ $conditionClone = ['unit' => $lowUnit, 'data' => []];
|
|
|
+ foreach ($queryCondition['data'] as $date => $ownerIds) {
|
|
|
+ $startAt = $date;
|
|
|
+ $endAt = Carbon::parse($date)->endOfMonth()->toDateString();
|
|
|
+ $items = $this->transfersToCondition(
|
|
|
+ $startAt, $endAt, $lowUnit, $ownerIds
|
|
|
+ )['data'];
|
|
|
+ foreach ($items as $dateStr => $item) {
|
|
|
+ if (empty($conditionClone['data'][$dateStr])) $conditionClone['data'][$dateStr] = $dateStr;
|
|
|
+ $conditionClone['data'][$dateStr] = ($item);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $orderCountingRecords_days = $this->getOrderCountingRecords($conditionClone);
|
|
|
+ $orderCountingRecords_combinedByLower = $this->turnGradingUpToLow($orderCountingRecords_days, $lowUnit, 'month');
|
|
|
break;
|
|
|
case '周':
|
|
|
- $conditionClone = ['unit' => '日', 'data' => []];
|
|
|
+ $lowUnit = '日';
|
|
|
+ $conditionClone = ['unit' => $lowUnit, 'data' => []];
|
|
|
foreach ($queryCondition['data'] as $date => $ownerIds) {
|
|
|
$startAt = $date;
|
|
|
$endAt = Carbon::parse($date)->endOfWeek()->toDateString();
|
|
|
$items = $this->transfersToCondition(
|
|
|
- $startAt, $endAt, '日', $ownerIds
|
|
|
+ $startAt, $endAt, $lowUnit, $ownerIds
|
|
|
)['data'];
|
|
|
foreach ($items as $dateStr => $item) {
|
|
|
if (empty($conditionClone['data'][$dateStr])) $conditionClone['data'][$dateStr] = $dateStr;
|
|
|
@@ -114,7 +130,7 @@ class NewOrderCountingRecordService
|
|
|
}
|
|
|
}
|
|
|
$orderCountingRecords_days = $this->getOrderCountingRecords($conditionClone);
|
|
|
- $orderCountingRecords_combinedByLower = $this->turnDaysToWeeks($orderCountingRecords_days);
|
|
|
+ $orderCountingRecords_combinedByLower = $this->turnGradingUpToLow($orderCountingRecords_days, $lowUnit, 'week');
|
|
|
break;
|
|
|
case '日':
|
|
|
return [[], $queryCondition];
|
|
|
@@ -263,7 +279,7 @@ class NewOrderCountingRecordService
|
|
|
return $dataFromMiddleTable;
|
|
|
}
|
|
|
|
|
|
- public function count($orderCountingRecords_days)
|
|
|
+ public function count($orderCountingRecords_days, $unit)
|
|
|
{
|
|
|
$isEnd = false;
|
|
|
$result = collect();
|
|
|
@@ -277,22 +293,33 @@ class NewOrderCountingRecordService
|
|
|
}
|
|
|
$amount += $itemToCount->amount;
|
|
|
} else {
|
|
|
- $result = $result->concat($this->count($itemToCount));
|
|
|
+ $result = $result->concat($this->count($itemToCount, $unit));
|
|
|
}
|
|
|
}
|
|
|
if ($isEnd) {
|
|
|
- $item['date_target'] = Carbon::parse($item['date_target'])->startOfWeek()->toDateString();
|
|
|
+ switch ($unit) {
|
|
|
+ case "日":
|
|
|
+ $item['date_target'] = Carbon::parse($item['date_target'])->startOfWeek()->toDateString();
|
|
|
+ break;
|
|
|
+ case "周":
|
|
|
+ $item['date_target'] = Carbon::parse($item['date_target'])->firstOfMonth()->toDateString();
|
|
|
+ break;
|
|
|
+ case "月":
|
|
|
+ $item['date_target'] = Carbon::parse($item['date_target'])->firstOfYear()->toDateString();
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
$item['amount'] = $amount;
|
|
|
- $item['counting_unit'] = '周';
|
|
|
+ $item['counting_unit'] = $unit;
|
|
|
return $result->push($item);
|
|
|
}
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
- public function turnDaysToWeeks($orderCountingRecords_days)
|
|
|
+ public function turnGradingUpToLow($orderCountingRecords_days, $unit, $grading)
|
|
|
{
|
|
|
- $orderCountingRecords_days = $orderCountingRecords_days->groupBy(['owner_id','shop_id','warehouse_id','logistic_id','week']);
|
|
|
- return $this->count($orderCountingRecords_days);
|
|
|
+ $orderCountingRecords_days = $orderCountingRecords_days->groupBy(['owner_id', 'shop_id', 'warehouse_id', 'logistic_id', $grading]);
|
|
|
+ return $this->count($orderCountingRecords_days, $unit);
|
|
|
}
|
|
|
|
|
|
public function setDefultData($dataFromMiddleTable, $queryCondition)
|