2024-08-21 22:55:18 +08:00
< ? php
namespace app\admin\logic\statistic ;
use app\common\logic\BaseLogic ;
2024-08-22 14:14:21 +08:00
use app\common\model\store_branch_product\StoreBranchProduct ;
2024-08-21 22:55:18 +08:00
use app\common\model\store_order\StoreOrder ;
2024-08-22 14:14:21 +08:00
use app\common\model\store_order_cart_info\StoreOrderCartInfo ;
2024-08-22 12:04:58 +08:00
use app\common\model\store_product\StoreProduct ;
2024-08-23 14:41:07 +08:00
use app\common\model\supplier\Supplier ;
2024-08-23 13:46:25 +08:00
use app\common\model\system_store\SystemStore ;
2024-08-21 22:55:18 +08:00
use app\common\model\user\User ;
use app\common\model\user\UserVisit ;
use app\common\model\user_recharge\UserRecharge ;
2024-08-23 13:46:25 +08:00
use app\common\model\warehouse\Warehouse ;
2024-08-22 14:14:21 +08:00
use app\common\model\warehouse_order\WarehouseOrder ;
use app\common\model\warehouse_product\WarehouseProduct ;
use app\common\model\warehouse_product_storege\WarehouseProductStorege ;
2024-08-21 22:55:18 +08:00
use Exception ;
2024-08-22 12:04:58 +08:00
2024-08-21 22:55:18 +08:00
/**
* Class 仓库统计
* @ package app\services\statistic
*/
class WarehouseLogic extends BaseLogic
{
2024-08-22 12:04:58 +08:00
public static function total_warehouse ()
{
2024-08-21 22:55:18 +08:00
$topData [] = [
'title' => '总采购金额' ,
'desc' => '平台采购商品总支付金额' ,
2024-08-22 14:14:21 +08:00
'total_money' => WarehouseOrder :: sum ( 'total_price' ),
2024-08-21 22:55:18 +08:00
'value' => [],
'type' => 1 ,
];
$topData [] = [
'title' => '已结算金额' ,
'desc' => '平台支付给供应商的金额' ,
2024-08-22 14:14:21 +08:00
'total_money' => WarehouseOrder :: sum ( 'completed_amount' ),
2024-08-21 22:55:18 +08:00
'value' => [],
'type' => 1 ,
];
$topData [] = [
'title' => '未结算金额' ,
'desc' => '平台未支付给供应商的金额' ,
2024-08-22 14:14:21 +08:00
'total_money' => WarehouseOrder :: sum ( 'outstanding_amount' ),
2024-08-21 22:55:18 +08:00
'value' => [],
'type' => 1 ,
];
2024-08-24 11:30:25 +08:00
$toreProduct = StoreProduct :: where ( 'stock' , '>' , 0 ) -> field ( 'sum(stock) as stock,sum(total_price) as total_price' ) -> find ();
2024-08-21 22:55:18 +08:00
$topData [] = [
'title' => '总商品库存' ,
'desc' => '平台统计商品总库存、含门店仓库' ,
2024-08-24 11:30:25 +08:00
'total_money' => $toreProduct [ 'stock' ],
'cash_title' => $toreProduct [ 'total_price' ],
2024-08-21 22:55:18 +08:00
'value' => [],
'type' => 1 ,
];
2024-08-24 13:40:52 +08:00
$warehouseProductStorege = WarehouseProductStorege :: where ( 'nums' , '>' , 0 ) -> field ( 'sum(nums) as nums,sum(total_price) as total_price' ) -> find ();
2024-08-21 22:55:18 +08:00
$topData [] = [
'title' => '总仓库库存' ,
'desc' => '平台统计仓库库存' ,
2024-08-24 11:30:25 +08:00
'total_money' => $warehouseProductStorege [ 'nums' ],
'cash_title' => $warehouseProductStorege [ 'total_price' ],
2024-08-21 22:55:18 +08:00
'value' => [],
'type' => 1 ,
];
2024-08-24 13:40:52 +08:00
$warehouseProductStorege_1 = WarehouseProductStorege :: where ( 'nums' , '>' , 0 ) -> where ( 'warehouse_id' , 1 ) -> field ( 'sum(nums) as nums,sum(total_price) as total_price' ) -> find ();
2024-08-21 22:55:18 +08:00
$topData [] = [
'title' => '海吉星仓库库存' ,
'desc' => '平台统计海吉星仓库库存' ,
2024-08-24 11:30:25 +08:00
'total_money' => $warehouseProductStorege_1 [ 'nums' ],
'cash_title' => $warehouseProductStorege_1 [ 'total_price' ],
2024-08-21 22:55:18 +08:00
'value' => [],
'type' => 1 ,
];
2024-08-24 13:40:52 +08:00
$warehouseProductStorege_2 = WarehouseProductStorege :: where ( 'nums' , '>' , 0 ) -> where ( 'warehouse_id' , 2 ) -> field ( 'sum(nums) as nums,sum(total_price) as total_price' ) -> find ();
2024-08-21 22:55:18 +08:00
$topData [] = [
'title' => '泸县集采集配库存' ,
'desc' => '平台统计泸县集采集配库存' ,
2024-08-24 11:30:25 +08:00
'total_money' => $warehouseProductStorege_2 [ 'nums' ],
'cash_title' => $warehouseProductStorege_2 [ 'total_price' ],
2024-08-21 22:55:18 +08:00
'value' => [],
'type' => 1 ,
];
2024-08-24 11:30:25 +08:00
$storeBranchProduct = StoreBranchProduct :: where ( 'stock' , '>' , 0 ) -> field ( 'sum(stock) as stock,sum(total_price) as total_price' ) -> find ();
2024-08-21 22:55:18 +08:00
$topData [] = [
'title' => '总门店库存' ,
'desc' => '平台统计门店库存' ,
2024-08-24 11:30:25 +08:00
'total_money' => $storeBranchProduct [ 'stock' ],
'cash_title' => $storeBranchProduct [ 'total_price' ],
2024-08-21 22:55:18 +08:00
'value' => [],
'type' => 1 ,
];
$data [ 'series' ] = [];
foreach ( $topData as $k => $v ) {
// $data['x'] = $Chain['out']['x'];
$data [ 'series' ][ $k ][ 'name' ] = $v [ 'title' ];
$data [ 'series' ][ $k ][ 'desc' ] = $v [ 'desc' ];
$data [ 'series' ][ $k ][ 'total_value' ] = $v [ 'total_money' ];
2024-08-22 12:04:58 +08:00
$data [ 'series' ][ $k ][ 'total_money' ] = $v [ 'cash_title' ] ? ? '' ;
2024-08-21 22:55:18 +08:00
$data [ 'series' ][ $k ][ 'type' ] = $v [ 'type' ];
}
return $data ;
}
2024-08-22 12:04:58 +08:00
2024-08-23 13:46:25 +08:00
/**
* 统计门店仓库总库存
* @ return array
*/
public static function total_warehouse_list ( $parmas , $type = 1 ) {
if ( $type == 1 ){
$list = StoreBranchProduct :: where ( 'stock' , '>' , 0 ) -> where ( 'product_id' , $parmas [ 'product_id' ])
-> select () -> each ( function ( $item ){
$item -> system_store = SystemStore :: where ( 'id' , $item [ 'store_id' ]) -> value ( 'name' );
$item -> total_price = bcmul ( $item -> purchase , $item -> stock , 2 );
});
$count = StoreBranchProduct :: where ( 'stock' , '>' , 0 ) -> where ( 'product_id' , $parmas [ 'product_id' ])
-> count ();
} else {
$list = WarehouseProductStorege :: where ( 'nums' , '>' , 0 ) -> where ( 'product_id' , $parmas [ 'product_id' ]) -> select () -> each ( function ( $item ){
$item -> warehouse_name = Warehouse :: where ( 'id' , $item [ 'warehouse_id' ]) -> value ( 'name' );
$find = StoreProduct :: where ( 'id' , $item [ 'product_id' ]) -> find ();
$item -> store_name = $find [ 'store_name' ];
$item -> image = $find [ 'image' ];
$item -> purchase = $find [ 'purchase' ];
if ( $find [ 'purchase' ] > 0 && $item -> nums > 0 ){
$item -> total_price = bcmul ( $find [ 'purchase' ], $item -> nums , 2 );
} else {
$item -> total_price = 0 ;
}
});
$count = WarehouseProductStorege :: where ( 'nums' , '>' , 0 ) -> where ( 'product_id' , $parmas [ 'product_id' ]) -> count ();
}
return [ 'lists' => $list , 'count' => $count ];
}
2024-08-23 14:41:07 +08:00
/**
* 统计商品采购总价 已结未结
* @ return array
*/
public static function total_warehouse_product_list ( $parmas , $type = 1 ) {
$list = [];
$count = 0 ;
if ( $type == 1 ){
//总采购价
$where = [[ 'product_id' , '=' , $parmas [ 'product_id' ]],[ 'nums' , '>' , 0 ],[ 'financial_pm' , '=' , 1 ]];
$list = WarehouseProduct :: where ( $where ) -> select () -> each ( function ( $item ){
$item -> warehouse_name = Warehouse :: where ( 'id' , $item [ 'warehouse_id' ]) -> value ( 'name' );
$item -> supplier_name = Supplier :: where ( 'id' , $item [ 'supplier_id' ]) -> value ( 'mer_name' );
$find = StoreProduct :: where ( 'id' , $item [ 'product_id' ]) -> find ();
$item -> store_name = $find [ 'store_name' ];
$item -> image = $find [ 'image' ];
});
$count = WarehouseProduct :: where ( $where ) -> count ();
} elseif ( $type == 2 ){
//已结算采购价
2024-08-23 16:58:49 +08:00
$where = [[ 'product_id' , '=' , $parmas [ 'product_id' ]],[ 'nums' , '>' , 0 ],[ 'financial_pm' , '=' , 1 ],[ 'is_pay' , '=' , 1 ]];
2024-08-23 14:41:07 +08:00
$list = WarehouseProduct :: where ( $where ) -> select () -> each ( function ( $item ){
$item -> warehouse_name = Warehouse :: where ( 'id' , $item [ 'warehouse_id' ]) -> value ( 'name' );
$item -> supplier_name = Supplier :: where ( 'id' , $item [ 'supplier_id' ]) -> value ( 'mer_name' );
$find = StoreProduct :: where ( 'id' , $item [ 'product_id' ]) -> find ();
$item -> store_name = $find [ 'store_name' ];
$item -> image = $find [ 'image' ];
});
$count = WarehouseProduct :: where ( $where ) -> count ();
} elseif ( $type == 3 ){
//未结算采购价
2024-08-23 16:58:49 +08:00
$where = [[ 'product_id' , '=' , $parmas [ 'product_id' ]],[ 'nums' , '>' , 0 ],[ 'financial_pm' , '=' , 1 ],[ 'is_pay' , '=' , 0 ]];
2024-08-23 14:41:07 +08:00
$list = WarehouseProduct :: where ( $where ) -> select () -> each ( function ( $item ){
$item -> warehouse_name = Warehouse :: where ( 'id' , $item [ 'warehouse_id' ]) -> value ( 'name' );
$item -> supplier_name = Supplier :: where ( 'id' , $item [ 'supplier_id' ]) -> value ( 'mer_name' );
$find = StoreProduct :: where ( 'id' , $item [ 'product_id' ]) -> find ();
$item -> store_name = $find [ 'store_name' ];
$item -> image = $find [ 'image' ];
});
$count = WarehouseProduct :: where ( $where ) -> count ();
}
return [ 'lists' => $list , 'count' => $count ];
}
2024-08-22 12:04:58 +08:00
}