doctorInfo = DoctorInfo::findOne(['su_id' => \Yii::$app->user->identity->id]); if(!$this->doctorInfo){ throw new Exception('无权限进行该操作'); } return $ret; } /** * @doc-name 查看西药药方 * @doc-param int recipe_id 药方id * @doc-param int prescription_id 处方id */ public function actionQueryWest() { $recipe_id = \Yii::$app->request->post('recipe_id'); if (!$recipe_id) throw new Exception('药方id不能为空'); $recipe = WestRepice::find()->where(['id' => $recipe_id])->one(); if (!$recipe) throw new Exception('药方不存在'); return $recipe; } /** * @doc-name 修改西药药方 * @doc-param int recipe_id 药方id * @doc-param int number 数量 * @doc-param string instruction 说明书 * @doc-param int time_id 使用时间id * @doc-param int type_id 使用类型id * @doc-param int grain_number 粒数 * @doc-param int f_id 频率 * @doc-param int wu_id 西药单位id * @doc-param int available_days 可用天数 */ public function actionChangeWest() { $request=\Yii::$app->request; $param = $request->post(); if (!$param['recipe_id']) throw new Exception('药方id不能为空'); $this->requestValidate($param,[ ['store_id', 'required'], ['number', 'required'], // ['instruction', 'required'], ['type_id', 'required'], ['grain_number', 'required'], ['wu_id', 'required'], ['available_days', 'required'], ['f_id', 'required'] ]); $store_id = $param['store_id']; $recipe = WestRepice::find()->where(['id' => $param['recipe_id']])->one(); if (!$recipe) throw new Exception('药方不存在'); $content = Json::decode($recipe['content']); $drug = DrugStoreDrug::find()->alias('dsd')->where(['dsd.drug_id' => $content['id']])->joinWith(['store s' => function ($q) use ($store_id){ $q->andWhere(['s.id' => $store_id]); }])->asArray()->one(); if(!$drug){ throw new Exception('药品库存数据错误'); } if($drug['stock'] < $param['number']){ throw new Exception('药品库存数量不足'); } $recipe->number = $param['number']; $recipe->instruction = $param['instruction']??''; $recipe->time_id = $param['time_id']??0; $recipe->type_id = $param['type_id']; $recipe->grain_number = $param['grain_number']; $recipe->wu_id = $param['wu_id']; $recipe->available_days = $param['available_days']; $recipe->f_id = $param['f_id']; $recipe->save(); return ['修改成功']; } public function actionChangeOneChinese(){ $post = \Yii::$app->request->post(); $this->requestValidate($post,[ ['id','required'], ['number','required'], [['id','number','order'],'integer'] ]); $chineseMedicine = ChineseMedicine::findOne(['id' => $post['id']]); if(!$chineseMedicine){ throw new Exception('药品不存在'); } $chineseMedicine->order = $post['order']??0; $chineseMedicine->number = $post['number']; $chineseMedicine->save(); return ['修改成功']; } /** * @doc-name 修改中药药方 * @doc-param int recipe_id 药方id * @doc-param int deployment 调配1煎煮 2外配 * @doc-param int dosage 剂数 * @doc-param int consumption 用量id * @doc-param int usage 用法id * @doc-param int fufa_id 服法id * @doc-param string remark 备注 * @doc-param int is_deepfry 是否浓煎0否1是 */ public function actionChangeChinese() { $request=\Yii::$app->request; $param = $request->post(); if (!$param['recipe_id']) throw new Exception('药方id不能为空'); $this->requestValidate($param,[ ['store_id', 'required'], ['deployment', 'required'], ['dosage', 'required'], ['consumption', 'required'], ['cm_id', 'required'], ]); $store_id = $param['store_id']; $recipe = ChineseRepice::find()->where(['id' => $param['recipe_id']])->one(); if (!$recipe) throw new Exception('药方不存在'); $ids = explode(',', $param['cm_id']); $price = 0; $medicine = ChineseMedicine::find()->where(['in', 'id', $ids])->all(); foreach ($medicine as $value){ $drug = DrugStoreDrug::find()->alias('dsd')->where(['dsd.drug_id' => $value['drug_id']])->joinWith(['store s' => function ($q) use ($store_id){ $q->andWhere(['s.id' => $store_id]); }])->asArray()->one(); if(!$drug){ throw new Exception('药品库存数据错误'); } $drugNumber = $value['number'] * $param['dosage']; if($drug['stock'] < $drugNumber){ throw new Exception($value['name'].'库存数量不足'); } $price+=$drugNumber * $value['price']; } $encode = Json::encode($medicine); $recipe->content = $encode; $recipe->deployment = $param['deployment']; $recipe->dosage = $param['dosage']; $recipe->consumption = $param['consumption']; $recipe->is_deepfry = $param['is_deepfry']?0:1; $recipe->volume = $param['volume']??0; $recipe->cm_id = $param['cm_id']; $recipe->total_price = $price; $recipe->saveOrFail(); return [$param['recipe_id']]; } public function actionChangeOneGranular(){ $post = \Yii::$app->request->post(); $this->requestValidate($post,[ ['id','required'], ['number','required'], [['id','number'],'integer'] ]); $GranularMedicine = GranularMedicine::findOne(['id' => $post['id']]); if(!$GranularMedicine){ throw new Exception('药品不存在'); } $GranularMedicine->number = $post['number']; $GranularMedicine->save(); return ['修改成功']; } /** * @doc-name 修改颗粒药药方 * @doc-param int recipe_id 药方id * @doc-param int deployment 调配1煎煮2外配 * @doc-param int dosage 剂数id * @doc-param int consumption 用量id * @doc-param int usage 用法id * @doc-param int fufa_id 服法id * @doc-param string remark 备注 * @doc-param int is_deepfry 是否浓煎0否1是 */ public function actionChangeGranular() { $request=\Yii::$app->request; $param = $request->post(); if (!$param['recipe_id']) throw new Exception('药方id不能为空'); $this->requestValidate($param,[ ['store_id', 'required'], ['deployment', 'required'], ['dosage', 'required'], ['consumption', 'required'], ['gm_id', 'required'], ]); $store_id = $param['store_id']; $recipe = GranularRepice::find()->where(['id' => $param['recipe_id']])->one(); if (!$recipe) throw new Exception('药方不存在'); $ids = explode(',', $param['cm_id']); $price = 0; $medicine = GranularMedicine::find()->where(['in', 'id', $ids])->all(); foreach ($medicine as $value){ $drug = DrugStoreDrug::find()->alias('dsd')->where(['dsd.drug_id' => $value['drug_id']])->joinWith(['store s' => function ($q) use ($store_id){ $q->andWhere(['s.id' => $store_id]); }])->asArray()->one(); if(!$drug){ throw new Exception('药品库存数据错误'); } $drugNumber = $value['number'] * $param['dosage']; if($drug['stock'] < $drugNumber){ throw new Exception($value['name'].'库存数量不足'); } $price+=$drugNumber * $value['price']; } $encode = Json::encode($medicine); $recipe->content = $encode; $recipe->deployment = $param['deployment']; $recipe->dosage = $param['dosage']; $recipe->consumption = $param['consumption']; $recipe->is_deepfry = $param['is_deepfry']?0:1; $recipe->volume = $param['volume']??0; $recipe->gm_id = $param['gm_id']; $recipe->total_price = $price; $recipe->saveOrFail(); return [$param['recipe_id']]; } /** * @doc-name 删除西药药方 * @doc-param int recipe_id 药方id * @doc-param int prescription_id 处方id */ public function actionDelWest() { try { $request=\Yii::$app->request; $recipe_id = $request->post('recipe_id'); if (!$recipe_id) throw new Exception('药方id不能为空'); $transaction = \Yii::$app->db->beginTransaction(); $recipe = WestRepice::find()->where(['id' => $recipe_id])->one(); if (!$recipe) throw new Exception('药方不存在'); $recipe->delete(); $transaction->commit(); } catch (\Exception $exception) { $transaction->rollBack(); return $exception; } } }