修复部分对账统计
This commit is contained in:
@@ -200,11 +200,15 @@ class StatementAccountController extends BaseAdminController
|
||||
];
|
||||
|
||||
} else {//药品
|
||||
// TODO 对账问题
|
||||
// 设置查询条件,查找状态为1的对账记录,按ID降序排序
|
||||
$query = Reconciliation::find()->alias('r')->where(['r.status' => 1])->orderBy(['id' => SORT_DESC]);
|
||||
|
||||
// 获取搜索参数:门店名称和药品名称
|
||||
$store_name = $get['store_name'];
|
||||
$drug_name = $get['drug_name'];
|
||||
|
||||
// 根据门店名称过滤门店
|
||||
$query->joinWith(['store' => function ($s) use ($store_name) {
|
||||
$s->alias('s');
|
||||
if (!empty($store_name)) {
|
||||
@@ -216,6 +220,7 @@ class StatementAccountController extends BaseAdminController
|
||||
}
|
||||
}]);
|
||||
|
||||
// 根据药品名称过滤药品
|
||||
$query->joinWith(['drug' => function ($d) use ($drug_name) {
|
||||
$d->alias('d');
|
||||
if (!empty($drug_name)) {
|
||||
@@ -226,13 +231,18 @@ class StatementAccountController extends BaseAdminController
|
||||
]);
|
||||
}
|
||||
}]);
|
||||
//门店搜索
|
||||
|
||||
// 根据门店ID过滤对账记录
|
||||
if (!empty($get['store_id'])) {
|
||||
$query->andWhere(['r.store_id' => $get['store_id']]);
|
||||
}
|
||||
|
||||
// 如果用户是门店管理员,只查询该门店的对账记录
|
||||
if ($user->role == UserRoleEnum::STORE_ADMIN) {
|
||||
$query->andWhere(['r.store_id' => $user->store_id]);
|
||||
}
|
||||
|
||||
// 根据药品类型过滤对账记录
|
||||
if (!empty($get['drug_type'])) {
|
||||
if ($get['drug_type'] == 1) {
|
||||
$query->andWhere(['r.drug_type' => [1, 3]]);
|
||||
@@ -241,6 +251,7 @@ class StatementAccountController extends BaseAdminController
|
||||
}
|
||||
}
|
||||
|
||||
// 根据开始时间和结束时间过滤对账记录
|
||||
if (!empty($start_time) && !empty($end_time)) {
|
||||
|
||||
if ($start_time==$end_time){//筛选当天
|
||||
@@ -252,11 +263,16 @@ class StatementAccountController extends BaseAdminController
|
||||
$query->andWhere(['between', 'r.xd_time',$start_time, $end_time]);
|
||||
}
|
||||
|
||||
$query->groupBy('drug_id');
|
||||
|
||||
// 按药品ID分组
|
||||
// $query->groupBy('drug_id');
|
||||
|
||||
// TODO 这里有问题
|
||||
// 定义查询字段及格式化函数
|
||||
$this->field = [
|
||||
Reconciliation::class => [
|
||||
'id', 'order_id', 'store_id', 'pay_time' => function ($m) {
|
||||
'id', 'order_id', 'store_id',
|
||||
'pay_time' => function ($m) {
|
||||
return date('Y-m-d H:i:s', $m->pay_time);
|
||||
},
|
||||
'drug_id', 'drug_type', 'total_buy_price', 'status',
|
||||
@@ -264,23 +280,77 @@ class StatementAccountController extends BaseAdminController
|
||||
'drug_name' => 'drug.drug_name',
|
||||
'store_number' => 'productOrder.store.id',
|
||||
'store' => 'store.name',
|
||||
'number' => function ($model) use ($start_time, $end_time) {
|
||||
return $this->calculateSum($model, 'number', $start_time, $end_time);
|
||||
},
|
||||
'total_buy_price' => function ($model) use ($start_time, $end_time) {
|
||||
return $this->calculateSum($model, 'total_buy_price', $start_time, $end_time);
|
||||
},
|
||||
'total_price' => function ($model) use ($start_time, $end_time) {
|
||||
return $this->calculateSum($model, 'total_price', $start_time, $end_time);
|
||||
},
|
||||
'sale_number' => function ($s)use($start_time,$end_time) {
|
||||
return $this->actionEverySaleNumber($s->order_id, $s->drug_id,$start_time,$end_time);
|
||||
},
|
||||
'number',
|
||||
'total_buy_price',
|
||||
'total_price',
|
||||
'sale_number' => 0,
|
||||
'trans_fee'=>'productOrder.trans_expenses',
|
||||
'work_fee' => 'productOrder.process_price',
|
||||
'treatement_fee' => 'productOrder.treatement_price'
|
||||
]
|
||||
];
|
||||
$list = $this->create($query, $get)->getModels();
|
||||
// 总销量 sale_number
|
||||
// 单个销量 number 不知道要这个干嘛
|
||||
// 总价 total_price
|
||||
// 总供货价 total_buy_price
|
||||
$result = [];
|
||||
foreach ($list as $value) {
|
||||
if (!empty($result[$value['drug_id']])) {
|
||||
$result[$value['drug_id']]['number'] = bcadd($result[$value['drug_id']]['sale_number'], $value['number'], 0);
|
||||
$result[$value['drug_id']]['sale_number'] = bcadd($result[$value['drug_id']]['sale_number'], $value['number'], 2);
|
||||
$result[$value['drug_id']]['total_buy_price'] = bcadd($result[$value['drug_id']]['total_buy_price'], $value['total_buy_price'], 2);
|
||||
$result[$value['drug_id']]['total_price'] = bcadd($result[$value['drug_id']]['total_price'], $value['total_price'], 2);
|
||||
} else {
|
||||
$result[$value['drug_id']] = [
|
||||
'id' => $value['drug_id'],
|
||||
'drug_number' => $value['drug']['drug_number'],
|
||||
'drug_name' => $value['drug']['drug_name'],
|
||||
'number' => $value['number'],
|
||||
'sale_number' => $value['number'],
|
||||
'total_price' => $value['total_price'],
|
||||
'total_buy_price' => $value['total_buy_price'],
|
||||
'drug_type' => $value['drug_type'],
|
||||
'drug_id' => $value['drug_id'],
|
||||
'status' => $value['status'],
|
||||
];
|
||||
}
|
||||
}
|
||||
return [
|
||||
'list' => array_values($result),
|
||||
'pageSize' => 10,
|
||||
'page' => 1,
|
||||
'total' => count($result)
|
||||
];
|
||||
// 定义查询字段及格式化函数
|
||||
// $this->field = [
|
||||
// Reconciliation::class => [
|
||||
// 'id', 'order_id', 'store_id',
|
||||
// 'pay_time' => function ($m) {
|
||||
// return date('Y-m-d H:i:s', $m->pay_time);
|
||||
// },
|
||||
// 'drug_id', 'drug_type', 'total_buy_price', 'status',
|
||||
// 'drug_number' => 'drug.drug_number',
|
||||
// 'drug_name' => 'drug.drug_name',
|
||||
// 'store_number' => 'productOrder.store.id',
|
||||
// 'store' => 'store.name',
|
||||
// 'number' => function ($model) use ($start_time, $end_time) {
|
||||
// return $this->calculateSum($model, 'number', $start_time, $end_time);
|
||||
// },
|
||||
// 'total_buy_price' => function ($model) use ($start_time, $end_time) {
|
||||
// return $this->calculateSum($model, 'total_buy_price', $start_time, $end_time);
|
||||
// },
|
||||
// 'total_price' => function ($model) use ($start_time, $end_time) {
|
||||
// return $this->calculateSum($model, 'total_price', $start_time, $end_time);
|
||||
// },
|
||||
// 'sale_number' => function ($s)use($start_time,$end_time) {
|
||||
// return $this->actionEverySaleNumber($s->order_id, $s->drug_id,$start_time,$end_time);
|
||||
// },
|
||||
// 'trans_fee'=>'productOrder.trans_expenses',
|
||||
// 'work_fee' => 'productOrder.process_price',
|
||||
// 'treatement_fee' => 'productOrder.treatement_price'
|
||||
// ]
|
||||
// ];
|
||||
}
|
||||
|
||||
return $this->create($query, $get);
|
||||
@@ -613,6 +683,7 @@ class StatementAccountController extends BaseAdminController
|
||||
*/
|
||||
public function actionStoreStatistic()
|
||||
{
|
||||
// TODO 这里有问题(统计金额-诊所)需要重构
|
||||
$get = \Yii::$app->request->get();
|
||||
$admin=\Yii::$app->user->identity;
|
||||
|
||||
@@ -770,6 +841,7 @@ class StatementAccountController extends BaseAdminController
|
||||
*/
|
||||
public function actionDrugStatistic()
|
||||
{
|
||||
// TODO 这里有问题(统计金额-药品)
|
||||
$get = \Yii::$app->request->get();
|
||||
$admin=\Yii::$app->user->identity;
|
||||
|
||||
@@ -784,21 +856,31 @@ class StatementAccountController extends BaseAdminController
|
||||
$start_time=$get['start_time'];
|
||||
$end_time=$time[1];
|
||||
}
|
||||
$data=['between', 'r.xd_time', $start_time, $end_time];
|
||||
$data=['between', 'xd_time', $start_time, $end_time];
|
||||
}
|
||||
|
||||
if ($admin->role==UserRoleEnum::STORE_ADMIN){
|
||||
$all_sale= Reconciliation::find()->alias('r')->andWhere(['r.status' => 1,'r.store_id'=>$admin->store_id])->andWhere($data??'')->groupBy('r.drug_id')->sum('number');
|
||||
$all_total_price= Reconciliation::find()->alias('r')->andWhere(['r.status' => 1,'r.store_id'=>$admin->store_id])->andWhere($data??'')->groupBy('r.drug_id')->sum('total_price');
|
||||
$resData= Reconciliation::find()
|
||||
->andWhere(['status' => 1,'store_id'=>$admin->store_id])
|
||||
->andWhere($data??'')
|
||||
->all();
|
||||
}else{
|
||||
$all_sale= Reconciliation::find()->alias('r')->andWhere(['r.status' => 1])->andWhere($data??'')->groupBy('r.drug_id')->sum('number');
|
||||
$all_total_price= Reconciliation::find()->alias('r')->andWhere(['r.status' => 1])->andWhere($data??'')->groupBy('r.drug_id')->sum('total_price');
|
||||
$resData= Reconciliation::find()
|
||||
->andWhere(['status' => 1])
|
||||
->andWhere($data??'')
|
||||
->all();
|
||||
}
|
||||
$allSale = 0;
|
||||
$totalPrice = 0;
|
||||
foreach ($resData as $key=>$value) {
|
||||
$allSale = bcadd($allSale, $value->number, 0);
|
||||
$totalPrice = bcadd($totalPrice, $value->total_price, 0);
|
||||
}
|
||||
|
||||
|
||||
return [
|
||||
'all_sale'=>$all_sale??0,
|
||||
'all_total_price'=>$all_total_price??0,
|
||||
'all_sale'=>$allSale??0,
|
||||
'all_total_price'=>$totalPrice??0,
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user