$id, 'is_deleted' => 0 ]); if($prescription->wr_ids){ $repice = WestRepice::find()->where([ 'in', 'id', explode(',', $prescription->wr_ids) ])->select('content,number')->asArray()->all(); foreach($repice as $v){ $content = Json::decode($v['content']); $drug = DrugStoreDrug::findOne(['id' => $content['id']]); if($drug && $drug->frozen_number > $v['number']){ $drug->stock = $drug->stock + $v['number']; $drug->frozen_number = $drug->frozen_number - $v['number']; $drug->saveOrFail(); } } } elseif($prescription->cr_ids) { $repice = ChineseRepice::find()->where([ 'in', 'id', explode(',', $prescription->cr_ids) ])->select('content,dosage')->asArray()->all(); foreach($repice as $value){ $content = Json::decode($value['content']); foreach($content as $v){ $drug = DrugStoreDrug::findOne(['id' => $v['drug_id']]); $drugNumber = $v['number'] * $value['dosage']; if($drug && $drug->frozen_number > $drugNumber){ $drug->stock = $drug->stock + $drugNumber; $drug->frozen_number = $drug->frozen_number - $drugNumber; $drug->saveOrFail(); } } } } else { $repice = GranularRepice::find()->where([ 'in', 'id', explode(',', $prescription->gr_ids) ])->select('content,dosage')->asArray()->all(); foreach($repice as $value){ $content = Json::decode($value['content']); foreach($content as $v){ $drug = DrugStoreDrug::findOne(['id' => $content['drug_id']]); $drugNumber = $v['number'] * $value['dosage']; if($drug && $drug->frozen_number > $drugNumber){ $drug->stock = $drug->stock + $drugNumber; $drug->frozen_number = $drug->frozen_number - $drugNumber; $drug->saveOrFail(); } } } } } else { $items = ProductOrderItems::find()->where([ 'product_order_id' => $id ])->select('drug_id,number')->asArray()->all(); foreach($items as $v){ $drug = DrugStoreDrug::findOne(['id' => $v['drug_id']]); if($drug && $drug->frozen_number > $v['number']){ $drug->stock = $drug->stock + $v['number']; $drug->frozen_number = $drug->frozen_number - $v['number']; $drug->saveOrFail(); } } } return true; } }