|
|
@@ -30,21 +30,15 @@ class ConsoleController extends BaseController
|
|
|
//$lsDebt = \bizHd\order\classes\OrderClass::sum(['mainId' => $this->mainId, 'debt' => 1], 'remainDebtPrice');
|
|
|
//$lsDebt = $lsDebt === null ? 0 : $lsDebt;
|
|
|
//$totalDebt = bcadd($pfDebt, $lsDebt, 2);
|
|
|
- $itemList = ItemClass::getAllByCondition(['mainId' => $this->mainId], null, 'id,stock,avCost,cost,virtualStock,delStatus', null, true);
|
|
|
- $totalItemNum = 0;
|
|
|
- $totalCost = 0;
|
|
|
- if (!empty($itemList)) {
|
|
|
- foreach ($itemList as $item) {
|
|
|
- if ($item->virtualStock == 0 && $item->delStatus == 0) {
|
|
|
- $stock = $item->stock ?? 0;
|
|
|
- $cost = $item->avCost ?? 0;
|
|
|
- $totalItemNum = bcadd($stock, $totalItemNum, 2);
|
|
|
- $currentCost = bcmul($stock, $cost, 2);
|
|
|
- $totalCost = bcadd($currentCost, $totalCost, 2);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- $totalItemNum = floor($totalItemNum);
|
|
|
+ // 优化慢查询:直接在数据库层聚合库存和成本,避免取出全量数据到PHP内存中循环计算
|
|
|
+ $stat = ItemClass::getByCondition(
|
|
|
+ ['mainId' => $this->mainId, 'virtualStock' => 0, 'delStatus' => 0],
|
|
|
+ false,
|
|
|
+ false,
|
|
|
+ 'SUM(stock) as totalItemNum, SUM(stock * avCost) as totalCost'
|
|
|
+ );
|
|
|
+ $totalItemNum = floor($stat['totalItemNum'] ?? 0);
|
|
|
+ $totalCost = round($stat['totalCost'] ?? 0, 2);
|
|
|
$totalBalance = CustomClass::sum(['ownMainId'=>$this->mainId],'balance');
|
|
|
$may = $totalBalance<0 ? abs($totalBalance) : 0;
|
|
|
$overview = [
|