mirror of
https://gitee.com/hzchunfen/erp.git
synced 2025-12-01 06:30:49 +00:00
数据统计修复
This commit is contained in:
parent
625acfa290
commit
9229309500
@ -80,6 +80,7 @@ class DailyStockRecordReport extends Command
|
|||||||
//开始更新数据
|
//开始更新数据
|
||||||
if (!empty($needUpdateExternalSkuIds)) {
|
if (!empty($needUpdateExternalSkuIds)) {
|
||||||
$needUpdateSkuIdsMap = GoodsSku::query()->whereIn("external_sku_id", $needUpdateExternalSkuIds)->pluck("external_sku_id", 'id')->toArray();
|
$needUpdateSkuIdsMap = GoodsSku::query()->whereIn("external_sku_id", $needUpdateExternalSkuIds)->pluck("external_sku_id", 'id')->toArray();
|
||||||
|
|
||||||
collect($needUpdateSkuIdsMap)->each(function ($externalSkuId,$skuId) use ($date, $orderItems, $purchaseRecords, $lossRecords) {
|
collect($needUpdateSkuIdsMap)->each(function ($externalSkuId,$skuId) use ($date, $orderItems, $purchaseRecords, $lossRecords) {
|
||||||
$record = DailyStockRecord::query()->firstOrNew([
|
$record = DailyStockRecord::query()->firstOrNew([
|
||||||
'sku_id' => $skuId,
|
'sku_id' => $skuId,
|
||||||
|
|||||||
@ -54,6 +54,8 @@ class Kernel extends ConsoleKernel
|
|||||||
$schedule->command(CheckSkuQualityPeriod::class)->dailyAt('05:30');
|
$schedule->command(CheckSkuQualityPeriod::class)->dailyAt('05:30');
|
||||||
//快团团售后单拉取
|
//快团团售后单拉取
|
||||||
$schedule->command(KttOrderAfterSaleQuery::class)->everyFifteenMinutes();
|
$schedule->command(KttOrderAfterSaleQuery::class)->everyFifteenMinutes();
|
||||||
|
//同步售卖信息和报损相关数据
|
||||||
|
$schedule->command(GoodsSkuDailyReport::class)->dailyAt('03:30');
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -191,18 +191,47 @@ class SaleDataService
|
|||||||
->where("external_sku_id", "!=", "")
|
->where("external_sku_id", "!=", "")
|
||||||
->where("business_order_items.cancel_status", "=", 0)
|
->where("business_order_items.cancel_status", "=", 0)
|
||||||
->groupBy('external_sku_id')->get()->toArray();
|
->groupBy('external_sku_id')->get()->toArray();
|
||||||
|
|
||||||
$externalSkuIds = collect($orderItems)->pluck("external_sku_id")->toArray();
|
$externalSkuIds = collect($orderItems)->pluck("external_sku_id")->toArray();
|
||||||
$orderItemsKeyByExternalSkuId = collect($orderItems)->pluck(null, "external_sku_id")->toArray();
|
$goodsSkus = GoodsSku::query()
|
||||||
|
->with([
|
||||||
|
'combinationGoods:id,goods_sku_id,item_id,item_num',
|
||||||
|
'combinationGoods.goodsSkuItem:id,name,goods_id,title,stock,sale_stock,external_sku_id,updated_at,yesterday_num,reference_price,status',
|
||||||
|
])
|
||||||
|
->whereIn("external_sku_id", $externalSkuIds)->get()->pluck(null, "external_sku_id")
|
||||||
|
->toArray();
|
||||||
|
$skus = [];
|
||||||
|
//组合商品
|
||||||
|
foreach ($orderItems as $orderItem) {
|
||||||
|
$sku = $goodsSkus[$orderItem['external_sku_id']] ?? [];
|
||||||
|
if (!empty($sku['is_combination'])) {
|
||||||
|
foreach ($sku['combination_goods'] as $combinationGood) {
|
||||||
|
$skuItem = $goodsSkus[$combinationGood['goods_sku_item']['external_sku_id']] ?? [];
|
||||||
|
$skuItem['shipping_num'] = $skuItem['shipping_num'] ?? 0 + $orderItem['shipping_num'] * $combinationGood['item_num'];
|
||||||
|
$skuItem['unshipping_num'] = $skuItem['unshipping_num'] ?? 0 + $orderItem['unshipping_num'] * $combinationGood['item_num'];
|
||||||
|
$skuItem['goods_total'] = $skuItem['goods_total'] ?? 0 + $orderItem['goods_total'] * $combinationGood['item_num'];
|
||||||
|
$skuItem['goods_total_amount'] = $skuItem['goods_total_amount'] ?? 0 + $orderItem['goods_total_amount'] * $combinationGood['item_num'];
|
||||||
|
$skus[$combinationGood['goods_sku_item']['external_sku_id']] = $skuItem;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$skuItem = $skus[$orderItem['external_sku_id']] ?? [];
|
||||||
|
$skuItem['shipping_num'] = $skuItem['shipping_num'] ?? 0 + $orderItem['shipping_num'];
|
||||||
|
$skuItem['unshipping_num'] = $skuItem['unshipping_num'] ?? 0 + $orderItem['unshipping_num'];
|
||||||
|
$skuItem['goods_total'] = $skuItem['goods_total'] ?? 0 + $orderItem['goods_total'];
|
||||||
|
$skuItem['goods_total_amount'] = $skuItem['goods_total_amount'] ?? 0 + $orderItem['goods_total_amount'];
|
||||||
|
$skus[$orderItem['external_sku_id']] = $skuItem;
|
||||||
|
}
|
||||||
|
}
|
||||||
$goodsSkuWithTypes = GoodsSku::query()
|
$goodsSkuWithTypes = GoodsSku::query()
|
||||||
->Join("goods", "goods_id", "=", "goods.id")
|
->Join("goods", "goods_id", "=", "goods.id")
|
||||||
->Join("goods_types", "goods.type_id", "=", "goods_types.id")
|
->Join("goods_types", "goods.type_id", "=", "goods_types.id")
|
||||||
->whereIn("external_sku_id", $externalSkuIds)
|
->whereIn("external_sku_id", array_keys($skus))
|
||||||
->select("goods_skus.id", "goods_types.id as type_id", "goods_types.name", "external_sku_id", "stock", "sale_stock")->get()
|
->select("goods_skus.id", "goods_types.id as type_id", "goods_types.name", "external_sku_id", "stock", "sale_stock")
|
||||||
->toArray();
|
->get()->toArray();
|
||||||
|
|
||||||
return collect($goodsSkuWithTypes)->map(function ($v) use ($orderItemsKeyByExternalSkuId) {
|
return collect($goodsSkuWithTypes)->map(function ($v) use ($skus) {
|
||||||
if (!empty($orderItemsKeyByExternalSkuId[$v['external_sku_id']])) {
|
if (!empty($skus[$v['external_sku_id']])) {
|
||||||
return array_merge($v, $orderItemsKeyByExternalSkuId[$v['external_sku_id']]);
|
return array_merge($v, $skus[$v['external_sku_id']]);
|
||||||
}
|
}
|
||||||
})->filter()->values()->groupBy('type_id')->map(function ($v, $key) {
|
})->filter()->values()->groupBy('type_id')->map(function ($v, $key) {
|
||||||
return [
|
return [
|
||||||
@ -215,7 +244,7 @@ class SaleDataService
|
|||||||
"goods_total" => $v->sum("goods_total"),
|
"goods_total" => $v->sum("goods_total"),
|
||||||
"goods_total_amount" => $v->sum("goods_total_amount"),
|
"goods_total_amount" => $v->sum("goods_total_amount"),
|
||||||
];
|
];
|
||||||
})->values()->toArray();
|
})->values()->sortByDesc('goods_total')->toArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -250,16 +279,40 @@ class SaleDataService
|
|||||||
->having(DB::raw("sum(order_goods_num)"), ">", 0)
|
->having(DB::raw("sum(order_goods_num)"), ">", 0)
|
||||||
->get()->toArray();
|
->get()->toArray();
|
||||||
$skuIds = collect($dailyAllRecord)->pluck('sku_id')->toArray();
|
$skuIds = collect($dailyAllRecord)->pluck('sku_id')->toArray();
|
||||||
$dailyRecordMapKeyBySkuId = collect($dailyAllRecord)->pluck(null, 'sku_id')->toArray();
|
$goodsSkus = GoodsSku::query()
|
||||||
|
->with([
|
||||||
|
'combinationGoods:id,goods_sku_id,item_id,item_num'
|
||||||
|
])
|
||||||
|
->whereIn("id", $skuIds)->get()->pluck(null, "id")
|
||||||
|
->toArray();
|
||||||
|
$skus = [];
|
||||||
|
//组合商品需要分散到sku维度进行统计
|
||||||
|
foreach ($dailyAllRecord as $skuRecord) {
|
||||||
|
$sku = $goodsSkus[$skuRecord['sku_id']] ?? [];
|
||||||
|
if (!empty($sku['is_combination'])) {
|
||||||
|
foreach ($sku['combination_goods'] as $combinationGood) {
|
||||||
|
$skuItem = $goodsSkus[$combinationGood['item_id']] ?? [];
|
||||||
|
$skuItem['goods_total'] = $skuItem['goods_total'] ?? 0 + $skuRecord['goods_total'] * $combinationGood['item_num'];
|
||||||
|
$skuItem['goods_total_amount'] = $skuItem['goods_total_amount'] ?? 0 + $skuRecord['goods_total_amount'] * $combinationGood['item_num'];
|
||||||
|
$skus[$combinationGood['item_id']] = $skuItem;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$skuItem = $skus[$skuRecord['sku_id']] ?? [];
|
||||||
|
$skuItem['goods_total'] = $skuItem['goods_total'] ?? 0 + $skuRecord['goods_total'];
|
||||||
|
$skuItem['goods_total_amount'] = $skuItem['goods_total_amount'] ?? 0 + $skuRecord['goods_total_amount'];
|
||||||
|
$skus[$skuRecord['sku_id']] = $skuItem;
|
||||||
|
}
|
||||||
|
}
|
||||||
$goodsSkuWithTypes = GoodsSku::query()
|
$goodsSkuWithTypes = GoodsSku::query()
|
||||||
->Join("goods", "goods_id", "=", "goods.id")
|
->Join("goods", "goods_id", "=", "goods.id")
|
||||||
->Join("goods_types", "goods.type_id", "=", "goods_types.id")
|
->Join("goods_types", "goods.type_id", "=", "goods_types.id")
|
||||||
->select("goods_skus.id", "goods_types.id as type_id", "goods_types.name", "external_sku_id", "stock", "sale_stock")
|
->select("goods_skus.id", "goods_types.id as type_id", "goods_types.name", "external_sku_id", "stock", "sale_stock")
|
||||||
->whereIn("goods_skus.id", $skuIds)
|
->whereIn("goods_skus.id", array_keys($skus))
|
||||||
->get()->toArray();
|
->get()->toArray();
|
||||||
return collect($goodsSkuWithTypes)->map(function ($v) use ($dailyRecordMapKeyBySkuId) {
|
|
||||||
if (!empty($dailyRecordMapKeyBySkuId[$v['id']])) {
|
return collect($goodsSkuWithTypes)->map(function ($v) use ($skus) {
|
||||||
return array_merge($v, $dailyRecordMapKeyBySkuId[$v['id']]);
|
if (!empty($skus[$v['id']])) {
|
||||||
|
return array_merge($v, $skus[$v['id']]);
|
||||||
}
|
}
|
||||||
})->filter()->values()->groupBy('type_id')->map(function ($v, $key) {
|
})->filter()->values()->groupBy('type_id')->map(function ($v, $key) {
|
||||||
return [
|
return [
|
||||||
@ -270,7 +323,7 @@ class SaleDataService
|
|||||||
"goods_total" => $v->sum("goods_total"),
|
"goods_total" => $v->sum("goods_total"),
|
||||||
"goods_total_amount" => $v->sum("goods_total_amount"),
|
"goods_total_amount" => $v->sum("goods_total_amount"),
|
||||||
];
|
];
|
||||||
})->values()->toArray();
|
})->values()->sortByDesc('goods_total')->toArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user