feat(admin): 添加订单列表统计功能

- 在 BeforehandOrderController 中添加 statistics_count 方法处理统计请求
- 在 BeforehandOrderLogic 中实现 statisticsCount 方法进行订单统计
- 统计内容包括不同状态的订单数量,如未出库、已出库、未入库、已入库等
- 优化了代码格式,调整了部分缩进和空格
This commit is contained in:
mkm 2025-01-09 17:58:39 +08:00
parent 3d897d5dda
commit 222dcbfcbb
3 changed files with 97 additions and 33 deletions

View File

@ -37,7 +37,15 @@ class BeforehandOrderController extends BaseAdminController
{ {
return $this->dataLists(new BeforehandOrderLists()); return $this->dataLists(new BeforehandOrderLists());
} }
/**
* 列表统计
*/
public function statistics_count()
{
$params=$this->request->get();
$data=BeforehandOrderLogic::statisticsCount($params);
return $this->data($data);
}
public function warehousing_lists() public function warehousing_lists()
{ {
return $this->dataLists(new BeforehandOrderTwoLists()); return $this->dataLists(new BeforehandOrderTwoLists());

View File

@ -202,14 +202,14 @@ class BeforehandOrderLogic extends BaseLogic
} }
$cart_select[$k]['price'] = $v['price']; $cart_select[$k]['price'] = $v['price'];
// //判断如果零售价小于供货价,则零售价等于供货价 // //判断如果零售价小于供货价,则零售价等于供货价
// if ($v['price'] < $find['purchase'] && $find['purchase'] != 0) { // if ($v['price'] < $find['purchase'] && $find['purchase'] != 0) {
// $cart_select[$k]['price'] = $find['purchase']; // $cart_select[$k]['price'] = $find['purchase'];
// } // }
// if ($user['user_ship'] == 4 && $find['cost'] != 0) { // if ($user['user_ship'] == 4 && $find['cost'] != 0) {
// $cart_select[$k]['price'] = $find['cost']; // $cart_select[$k]['price'] = $find['cost'];
// $total_prices = bcmul($find['cost'], $v['cart_num'], 2); // $total_prices = bcmul($find['cost'], $v['cart_num'], 2);
// } // }
$cart_select[$k]['cost'] = $find['cost']; $cart_select[$k]['cost'] = $find['cost'];
$cart_select[$k]['purchase'] = $find['purchase']; $cart_select[$k]['purchase'] = $find['purchase'];
$cart_select[$k]['vip'] = 0; $cart_select[$k]['vip'] = 0;
@ -375,9 +375,9 @@ class BeforehandOrderLogic extends BaseLogic
if ($count > 0) { if ($count > 0) {
throw new BusinessException('订单中有数量为0的商品请先处理'); throw new BusinessException('订单中有数量为0的商品请先处理');
} }
$user_ship=0; $user_ship = 0;
if($order['uid']>0){ if ($order['uid'] > 0) {
$user_ship=User::where('id', $order['uid'])->value('user_ship')??0; $user_ship = User::where('id', $order['uid'])->value('user_ship') ?? 0;
} }
Db::startTrans(); Db::startTrans();
try { try {
@ -395,10 +395,10 @@ class BeforehandOrderLogic extends BaseLogic
$arr['delivery_time'] = strtotime($delivery_time); $arr['delivery_time'] = strtotime($delivery_time);
$res = WarehouseOrder::create($arr); $res = WarehouseOrder::create($arr);
foreach ($info as $key => $arr) { foreach ($info as $key => $arr) {
if($user_ship==0){ if ($user_ship == 0) {
$price=0; $price = 0;
}else{ } else {
$price=StoreProductGroupPrice::where('product_id',$arr['product_id'])->where('group_id',$user_ship)->value('price')??0; $price = StoreProductGroupPrice::where('product_id', $arr['product_id'])->where('group_id', $user_ship)->value('price') ?? 0;
} }
$data = [ $data = [
'warehouse_id' => $warehouse_id, 'warehouse_id' => $warehouse_id,
@ -418,7 +418,7 @@ class BeforehandOrderLogic extends BaseLogic
'code' => $res['code'], 'code' => $res['code'],
'unit' => $arr['unit'] ?? 0, 'unit' => $arr['unit'] ?? 0,
]; ];
WarehouseProductLogic::setOutbound($data,1,$admin_id); WarehouseProductLogic::setOutbound($data, 1, $admin_id);
} }
$finds = WarehouseProduct::where('oid', $res['id'])->field('sum(nums) as nums,sum(total_price) as total_price')->find(); $finds = WarehouseProduct::where('oid', $res['id'])->field('sum(nums) as nums,sum(total_price) as total_price')->find();
WarehouseOrder::where('id', $res['id'])->update(['total_price' => $finds['total_price'], 'nums' => $finds['nums']]); WarehouseOrder::where('id', $res['id'])->update(['total_price' => $finds['total_price'], 'nums' => $finds['nums']]);
@ -431,7 +431,7 @@ class BeforehandOrderLogic extends BaseLogic
} }
} }
/** /**
* @notes 一键报损出库 * @notes 一键报损出库
* @param array $params * @param array $params
* @return bool * @return bool
@ -492,7 +492,7 @@ class BeforehandOrderLogic extends BaseLogic
'code' => $res['code'], 'code' => $res['code'],
'unit' => $arr['unit'] ?? 0, 'unit' => $arr['unit'] ?? 0,
]; ];
WarehouseProductLogic::setOutbound($data,1,$admin_id); WarehouseProductLogic::setOutbound($data, 1, $admin_id);
} }
$finds = WarehouseProduct::where('oid', $res['id'])->field('sum(nums) as nums,sum(total_price) as total_price')->find(); $finds = WarehouseProduct::where('oid', $res['id'])->field('sum(nums) as nums,sum(total_price) as total_price')->find();
WarehouseOrder::where('id', $res['id'])->update(['total_price' => $finds['total_price'], 'nums' => $finds['nums']]); WarehouseOrder::where('id', $res['id'])->update(['total_price' => $finds['total_price'], 'nums' => $finds['nums']]);
@ -734,7 +734,7 @@ class BeforehandOrderLogic extends BaseLogic
$find = WarehouseOrder::where('id', $order['outbound_id'])->find(); $find = WarehouseOrder::where('id', $order['outbound_id'])->find();
$order['order_id'] = $find['code']; $order['order_id'] = $find['code'];
$order['pay_price'] = $find['total_price']; $order['pay_price'] = $find['total_price'];
if (!empty($params['type']) &&$params['type'] == 3) { if (!empty($params['type']) && $params['type'] == 3) {
$file_path = $order_info->exportWithoutPrice($data, $order, $other_data); $file_path = $order_info->exportWithoutPrice($data, $order, $other_data);
} else { } else {
$file_path = $order_info->export($data, $order, $other_data); $file_path = $order_info->export($data, $order, $other_data);
@ -839,7 +839,7 @@ class BeforehandOrderLogic extends BaseLogic
$v['store_name'] = $find['store_name']; $v['store_name'] = $find['store_name'];
$v['mark'] = $find['after_sales']; $v['mark'] = $find['after_sales'];
$v['pay_price'] = bcmul($v['purchase'], $v['nums'], 2); $v['pay_price'] = bcmul($v['purchase'], $v['nums'], 2);
$v['profit']= bcsub($v['total_price'], $v['pay_price'], 2); $v['profit'] = bcsub($v['total_price'], $v['pay_price'], 2);
$total_profit = bcadd($total_profit, $v['profit'], 2); $total_profit = bcadd($total_profit, $v['profit'], 2);
$pay_price = bcadd($pay_price, $v['pay_price'], 2); $pay_price = bcadd($pay_price, $v['pay_price'], 2);
$total_price = bcadd($total_price, $v['total_price'], 2); $total_price = bcadd($total_price, $v['total_price'], 2);
@ -868,12 +868,12 @@ class BeforehandOrderLogic extends BaseLogic
} }
$order['admin_name'] = Admin::where('id', $order['admin_id'])->value('name'); $order['admin_name'] = Admin::where('id', $order['admin_id'])->value('name');
$data = WarehouseProduct::where('oid', $order['outbound_id'])->where('nums', '>', 0)->select(); $data = WarehouseProduct::where('oid', $order['outbound_id'])->where('nums', '>', 0)->select();
if($order['uid']>0){ if ($order['uid'] > 0) {
$user_ship = User::where('id', $order['uid'])->value('user_ship'); $user_ship = User::where('id', $order['uid'])->value('user_ship');
if($user_ship==0){ if ($user_ship == 0) {
throw new BusinessException('用户角色id不能为0'); throw new BusinessException('用户角色id不能为0');
} }
}else{ } else {
throw new BusinessException('该订单没选择会员用户'); throw new BusinessException('该订单没选择会员用户');
} }
$total_price = 0; $total_price = 0;
@ -884,13 +884,13 @@ class BeforehandOrderLogic extends BaseLogic
$v['unit_name'] = StoreProductUnit::where('id', $find['unit'])->value('name'); $v['unit_name'] = StoreProductUnit::where('id', $find['unit'])->value('name');
$v['store_name'] = $find['store_name']; $v['store_name'] = $find['store_name'];
$v['mark'] = $find['after_sales']; $v['mark'] = $find['after_sales'];
$v['purchase']=StoreProductGroupPrice::where('product_id',$v['product_id'])->where('group_id',$user_ship)->value('price'); $v['purchase'] = StoreProductGroupPrice::where('product_id', $v['product_id'])->where('group_id', $user_ship)->value('price');
if($v['purchase']){ if ($v['purchase']) {
$v['pay_price'] = bcmul($v['purchase'], $v['nums'], 2); $v['pay_price'] = bcmul($v['purchase'], $v['nums'], 2);
}else{ } else {
$v['pay_price']=0; $v['pay_price'] = 0;
} }
$v['profit']= bcsub($v['total_price'], $v['pay_price'], 2); $v['profit'] = bcsub($v['total_price'], $v['pay_price'], 2);
$total_profit = bcadd($total_profit, $v['profit'], 2); $total_profit = bcadd($total_profit, $v['profit'], 2);
$pay_price = bcadd($pay_price, $v['pay_price'], 2); $pay_price = bcadd($pay_price, $v['pay_price'], 2);
$total_price = bcadd($total_price, $v['total_price'], 2); $total_price = bcadd($total_price, $v['total_price'], 2);
@ -904,8 +904,8 @@ class BeforehandOrderLogic extends BaseLogic
$order['total_profit'] = $total_profit; $order['total_profit'] = $total_profit;
$order['total_price'] = $total_price; $order['total_price'] = $total_price;
$order['group_title'] = ''; $order['group_title'] = '';
if($user_ship){ if ($user_ship) {
$order['group_title'] = UserShip::where('id',$user_ship)->value('title'); $order['group_title'] = UserShip::where('id', $user_ship)->value('title');
} }
$file_path = $order_info->export($data, $order, $other_data, 2); $file_path = $order_info->export($data, $order, $other_data, 2);
return $file_path; return $file_path;
@ -948,4 +948,56 @@ class BeforehandOrderLogic extends BaseLogic
$model->save(); $model->save();
} }
/**
* 统计
*/
public static function statisticsCount($params)
{
$where = [];
if ($params['warehouse_type'] > 0) {
switch ($params['warehouse_type']) {
case 1:
$where[] = ['is_outbound', '=', 0];
$where[] = ['order_type', '<>', 5];
break;
case 2:
$where[] = ['is_outbound', '=', 1];
break;
case 3:
$where[] = ['is_warehousing', '=', 0];
break;
case 4:
$where[] = ['is_warehousing', '=', 1];
break;
default:
break;
}
}
$orderCounts = BeforehandOrder::where('order_type', 'in', [1, 2, 3, 4, 5, 7, 8])
->group('order_type')
->where(['order_type', Db::raw('count(*) as count')])
->column('count', 'order_type');
d($orderCounts);
$order_type_1 = BeforehandOrder::where([['order_type', '=', 1]])->count();
$order_type_2 = BeforehandOrder::where([['order_type', '=', 2]])->count();
$order_type_3 = BeforehandOrder::where([['order_type', '=', 3]])->count();
$order_type_4 = BeforehandOrder::where([['order_type', '=', 4]])->count();
$order_type_5 = BeforehandOrder::where([['order_type', '=', 5]])->count();
$order_type_7 = BeforehandOrder::where([['order_type', '=', 7]])->count();
$order_type_8 = BeforehandOrder::where([['order_type', '=', 8]])->count();
$outbound_0 = BeforehandOrder::where([['is_outbound', '=', 0], ['order_type', '<>', 5]])->count();
$outbound_1 = BeforehandOrder::where([['is_outbound', '=', 1]])->count();
$warehousing_0 = BeforehandOrder::where([['is_warehousing', '=', 0]])->count();
$warehousing_1 = BeforehandOrder::where([['is_warehousing', '=', 1]])->count();
return [
'outbound_0' => $outbound_0,
'outbound_1' => $outbound_1,
'warehousing_0' => $warehousing_0,
'warehousing_1' => $warehousing_1,
];
}
} }

View File

@ -71,9 +71,13 @@ class DemoLogic extends BaseLogic
//活动价 //活动价
$find42 = StoreProductGroupPrice::where('product_id', $v['product_id'])->where('group_id', 42)->find(); $find42 = StoreProductGroupPrice::where('product_id', $v['product_id'])->where('group_id', 42)->find();
if ($find42) { if ($find42) {
$find42->save(['price' => bcadd($v['price4'], 0, 2)]); if($v['price9']>0){
$find42->save(['price' => bcadd($v['price9'], 0, 2)]);
}
} else { } else {
StoreProductGroupPrice::insert(['product_id' => $v['product_id'], 'group_id' => 42, 'price' => bcadd($v['price9'], 0, 2), 'price_type' => 3, 'base_rate' =>0]); if($v['price9']>0){
StoreProductGroupPrice::insert(['product_id' => $v['product_id'], 'group_id' => 42, 'price' => bcadd($v['price9'], 0, 2), 'price_type' => 3, 'base_rate' =>0]);
}
} }
} }
} }