289 lines
9.8 KiB
PHP
289 lines
9.8 KiB
PHP
<?php
|
|
|
|
namespace service\modules\v1\controllers;
|
|
|
|
use common\core\BaseAppController;
|
|
use common\models\oldDb\ChineseRepice;
|
|
use common\models\oldDb\DoctorInfo;
|
|
use common\models\oldDb\DrugStoreDrug;
|
|
use common\models\oldDb\GranularRepice;
|
|
use common\models\oldDb\WestRepice;
|
|
use common\modelsgii\oldDb\ChineseMedicine;
|
|
use common\modelsgii\oldDb\GranularMedicine;
|
|
use yii\base\Exception;
|
|
use yii\helpers\Json;
|
|
|
|
/**
|
|
* @doc-module 药方
|
|
*/
|
|
class RecipeController extends BaseAppController
|
|
{
|
|
public $doctorInfo;
|
|
|
|
public function beforeAction($action){
|
|
$ret = parent::beforeAction($action);
|
|
|
|
//验证是否拥有权限
|
|
$this->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;
|
|
}
|
|
}
|
|
|
|
} |