Commit 85c4b10b by 赵增煜

Merge branch 'develop' of http://git.imohe.com/zhaozengyu/tzt-admin into develop

parents 4ac546ad 02f5f63c
...@@ -2,17 +2,16 @@ ...@@ -2,17 +2,16 @@
namespace App\Admin\Controllers; namespace App\Admin\Controllers;
use App\Admin\Repositories\ExternalPrescription;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use Dcat\Admin\Http\Controllers\AdminController;
use App\Models\PharmacyModel;
use App\Models\ExternalPrescriptionModel;
use App\Admin\Extensions\ToolBar\Actions\ExternalPrescriptionImportAction; use App\Admin\Extensions\ToolBar\Actions\ExternalPrescriptionImportAction;
use App\Models\ExternalPrescriptionModel;
use App\Models\PharmacyModel;
use Box\Spout\Common\Entity\Style\Color; use Box\Spout\Common\Entity\Style\Color;
use Box\Spout\Writer\Common\Creator\Style\StyleBuilder; use Box\Spout\Writer\Common\Creator\Style\StyleBuilder;
use Box\Spout\Writer\Common\Creator\WriterEntityFactory; use Box\Spout\Writer\Common\Creator\WriterEntityFactory;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Http\Controllers\AdminController;
use Dcat\Admin\Show;
use Dcat\EasyExcel\Excel; use Dcat\EasyExcel\Excel;
use Illuminate\Http\Request; use Illuminate\Http\Request;
...@@ -49,8 +48,9 @@ protected function grid() ...@@ -49,8 +48,9 @@ protected function grid()
if (is_array($drugInfoArray)) { if (is_array($drugInfoArray)) {
// 使用 array_map 来格式化每个药物的信息 // 使用 array_map 来格式化每个药物的信息
$formattedDrugs = array_map(function ($item) { $formattedDrugs = array_map(function ($item) {
return $item['drug_name'] . ' : ' . ($item['drug_spec'] ?? '') . ' : ' . $item['drug_num']; return $item['drug_name'].' : '.($item['drug_spec'] ?? '').' : '.$item['drug_num'];
}, $drugInfoArray); }, $drugInfoArray);
// 将数组转换为以逗号分隔的字符串(或根据您的需求进行其他格式化) // 将数组转换为以逗号分隔的字符串(或根据您的需求进行其他格式化)
return implode(', ', $formattedDrugs); return implode(', ', $formattedDrugs);
} else { } else {
...@@ -70,12 +70,12 @@ protected function grid() ...@@ -70,12 +70,12 @@ protected function grid()
$grid->tools(function ($tools) { $grid->tools(function ($tools) {
$tools->append(new ExternalPrescriptionImportAction()); // 导入药品信息 $tools->append(new ExternalPrescriptionImportAction()); // 导入药品信息
}); });
$grid->filter(function (Grid\Filter $filter) { $grid->filter(function (Grid\Filter $filter) {
//$filter->equal('id'); //$filter->equal('id');
$filter->panel(); // 更改为 panel 布局 $filter->panel(); // 更改为 panel 布局
$filter->expand(); // 默认展开搜索框 $filter->expand(); // 默认展开搜索框
$filter->equal('external_prescription_id','580处方单编号')->width(3); $filter->equal('external_prescription_id', '580处方单编号')->width(3);
$filter->equal('pharmacy_id')->select(PharmacyModel::all()->pluck('name', 'id'))->width(3); $filter->equal('pharmacy_id')->select(PharmacyModel::all()->pluck('name', 'id'))->width(3);
// $filter->equal('pharmacy_id','药店编号')->width(3); // $filter->equal('pharmacy_id','药店编号')->width(3);
}); });
...@@ -91,39 +91,39 @@ protected function grid() ...@@ -91,39 +91,39 @@ protected function grid()
/** /**
* Make a show builder. * Make a show builder.
* *
* @param mixed $id * @param mixed $id
*
* @return Show * @return Show
*/ */
protected function detail($id) protected function detail($id)
{ {
//$this->title('580处方单详情'); //$this->title('580处方单详情');
return Show::make($id, new ExternalPrescriptionModel(), function (Show $show) { return Show::make($id, new ExternalPrescriptionModel(), function (Show $show) {
$show->field('id'); $show->field('id');
$show->field('external_prescription_id','580处方单编号'); $show->field('external_prescription_id', '580处方单编号');
$show->field('issue_at','处方开具时间'); $show->field('issue_at', '处方开具时间');
$show->field('status','状态'); $show->field('status', '状态');
$show->field('company_name','企业名称'); $show->field('company_name', '企业名称');
$show->field('pharmacy_name','药店名称'); $show->field('pharmacy_name', '药店名称');
//$show->field('pharmacy_id'); //$show->field('pharmacy_id');
$show->field('agent','会员/代理人'); $show->field('agent', '会员/代理人');
$show->field('patient_name','就诊人姓名'); $show->field('patient_name', '就诊人姓名');
$show->field('patient_mobile','就诊人手机号'); $show->field('patient_mobile', '就诊人手机号');
$show->field('patient_gender','就诊人性别')->using(ExternalPrescriptionModel::SEX_MAP)->width(3); $show->field('patient_gender', '就诊人性别')->using(ExternalPrescriptionModel::SEX_MAP)->width(3);
$show->field('patient_age','就诊人年龄'); $show->field('patient_age', '就诊人年龄');
$show->field('patient_id_card','就诊人身份证号'); $show->field('patient_id_card', '就诊人身份证号');
$show->field('doctor_name','接诊医师姓名'); $show->field('doctor_name', '接诊医师姓名');
$show->field('diagnosis','诊断'); $show->field('diagnosis', '诊断');
$show->field('drug_info','用药信息')->as(function ($drugInfoJson) { $show->field('drug_info', '用药信息')->as(function ($drugInfoJson) {
// 尝试将 $drugInfoJson 解码为数组 // 尝试将 $drugInfoJson 解码为数组
$drugInfoArray = json_decode($drugInfoJson, true); $drugInfoArray = json_decode($drugInfoJson, true);
// 检查解码是否成功且 $drugInfoArray 是一个数组 // 检查解码是否成功且 $drugInfoArray 是一个数组
if (is_array($drugInfoArray)) { if (is_array($drugInfoArray)) {
// 使用 array_map 来格式化每个药物的信息 // 使用 array_map 来格式化每个药物的信息
$formattedDrugs = array_map(function ($item) { $formattedDrugs = array_map(function ($item) {
return $item['drug_name'] . ' : ' . ($item['drug_spec'] ?? '') . ' : ' . $item['drug_num']; return $item['drug_name'].' : '.($item['drug_spec'] ?? '').' : '.$item['drug_num'];
}, $drugInfoArray); }, $drugInfoArray);
// 将数组转换为以逗号分隔的字符串(或根据您的需求进行其他格式化) // 将数组转换为以逗号分隔的字符串(或根据您的需求进行其他格式化)
return implode(', ', $formattedDrugs); return implode(', ', $formattedDrugs);
} else { } else {
...@@ -131,12 +131,12 @@ protected function detail($id) ...@@ -131,12 +131,12 @@ protected function detail($id)
return $drugInfoJson; // 或者返回一个错误消息,如 'Invalid JSON' return $drugInfoJson; // 或者返回一个错误消息,如 'Invalid JSON'
} }
})->label(); // 设置列的标签 })->label(); // 设置列的标签
$show->field('pharmacist_name','审核药师'); $show->field('pharmacist_name', '审核药师');
$show->field('review_at','审核时间'); $show->field('review_at', '审核时间');
$show->field('pharmacist_attr','药师属性'); $show->field('pharmacist_attr', '药师属性');
$show->field('dispatcher','调配人'); $show->field('dispatcher', '调配人');
$show->field('checker','核对人'); $show->field('checker', '核对人');
$show->field('dispenser','发药人'); $show->field('dispenser', '发药人');
// $show->field('created_at'); // $show->field('created_at');
// $show->field('updated_at'); // $show->field('updated_at');
$show->panel()->tools(function ($tools) { $show->panel()->tools(function ($tools) {
...@@ -176,19 +176,18 @@ protected function form() ...@@ -176,19 +176,18 @@ protected function form()
$form->text('dispatcher'); $form->text('dispatcher');
$form->text('checker'); $form->text('checker');
$form->text('dispenser'); $form->text('dispenser');
$form->display('created_at'); $form->display('created_at');
$form->display('updated_at'); $form->display('updated_at');
}); });
} }
public function exportPrescriptionTemplate(Request $request) public function exportPrescriptionTemplate(Request $request)
{ {
$sheet1Head = ['处方编号','处方开具时间','处方状态','企业名称','门店名称','会员/代理人','就诊人姓名','就诊人电话','就诊人性别','就诊人年龄','就诊人身份证号','接诊医师姓名','诊断','药品名称','药品规格','药品数量','审核药师','药师审核时间','药师属性','调配人','核对人','发药人']; $sheet1Head = ['处方编号', '处方开具时间', '处方状态', '企业名称', '门店名称', '会员/代理人', '就诊人姓名', '就诊人电话', '就诊人性别', '就诊人年龄', '就诊人身份证号', '接诊医师姓名', '诊断', '药品名称', '药品规格', '药品数量', '审核药师', '药师审核时间', '药师属性', '调配人', '核对人', '发药人'];
$sheet1Data = [ $sheet1Data = [
['P1734339107979HN0','2024-12-16 16:51:48','正常','国药控股国大药房河南连锁有限公司','江阴市正鑫医药有限公司','会员_1085','赵海英','13335150001','女','34','','陆海','维生素D缺乏症,急性上呼吸道感染','维生素AD滴剂','10粒*3板','1','林俊杰','2024-12-16 16:51:58','总部药师','','',''], ['P1734339107979HN0', '2024-12-16 16:51:48', '正常', '国药控股国大药房河南连锁有限公司', '江阴市正鑫医药有限公司', '会员_1085', '赵海英', '13335150001', '女', '34', '', '陆海', '维生素D缺乏症,急性上呼吸道感染', '维生素AD滴剂', '10粒*3板', '1', '林俊杰', '2024-12-16 16:51:58', '总部药师', '', '', ''],
['P1734339107979HN0','2024-12-16 16:51:48','正常','国药控股国大药房河南连锁有限公司','江阴市正鑫医药有限公司','会员_1085','赵海英','13335150001','女','34','','陆海','维生素D缺乏症,急性上呼吸道感染','飞扬胃肠炎片','24片','1','林俊杰','2024-12-16 16:51:58','总部药师','','',''], ['P1734339107979HN0', '2024-12-16 16:51:48', '正常', '国药控股国大药房河南连锁有限公司', '江阴市正鑫医药有限公司', '会员_1085', '赵海英', '13335150001', '女', '34', '', '陆海', '维生素D缺乏症,急性上呼吸道感染', '飞扬胃肠炎片', '24片', '1', '林俊杰', '2024-12-16 16:51:58', '总部药师', '', '', ''],
]; ];
$sheet1 = Excel::createSheet($sheet1Data, '处方明细列表', $sheet1Head)->row(function (array $row) { $sheet1 = Excel::createSheet($sheet1Data, '处方明细列表', $sheet1Head)->row(function (array $row) {
......
...@@ -2,14 +2,14 @@ ...@@ -2,14 +2,14 @@
namespace App\Admin\Controllers; namespace App\Admin\Controllers;
use App\Admin\Metrics\Statistics;
use App\Admin\Metrics\Examples; use App\Admin\Metrics\Examples;
use App\Admin\Metrics\Statistics;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Dcat\Admin\Admin;
use Dcat\Admin\Http\Controllers\Dashboard; use Dcat\Admin\Http\Controllers\Dashboard;
use Dcat\Admin\Layout\Column; use Dcat\Admin\Layout\Column;
use Dcat\Admin\Layout\Content; use Dcat\Admin\Layout\Content;
use Dcat\Admin\Layout\Row; use Dcat\Admin\Layout\Row;
use Dcat\Admin\Admin;
class HomeController extends Controller class HomeController extends Controller
{ {
...@@ -19,8 +19,8 @@ public function index(Content $content) ...@@ -19,8 +19,8 @@ public function index(Content $content)
->header('首页') ->header('首页')
->body(function (Row $row) { ->body(function (Row $row) {
// $row->column(6, function (Column $column) { // $row->column(6, function (Column $column) {
// $column->row(Dashboard::title()); // $column->row(Dashboard::title());
// $column->row(new Examples\Tickets()); // $column->row(new Examples\Tickets());
// }); // });
if (! Admin::user()->isRole('pharmacy')) { if (! Admin::user()->isRole('pharmacy')) {
$row->column(12, function (Column $column) { $row->column(12, function (Column $column) {
...@@ -29,20 +29,19 @@ public function index(Content $content) ...@@ -29,20 +29,19 @@ public function index(Content $content)
$row->column(3, new Statistics\Pharmacist()); $row->column(3, new Statistics\Pharmacist());
$row->column(3, new Statistics\Patient()); $row->column(3, new Statistics\Patient());
$row->column(3, new Statistics\Prescription()); $row->column(3, new Statistics\Prescription());
//$row->column(6, new Examples\Sessions()); //$row->column(6, new Examples\Sessions());
$row->column(6,new Statistics\PrescriptionChart()); $row->column(6, new Statistics\PrescriptionChart());
$row->column(6,new Statistics\PharmacyChart()); $row->column(6, new Statistics\PharmacyChart());
}); });
//$column->row(new Statistics\PrescriptionChart()); //$column->row(new Statistics\PrescriptionChart());
// $row->column(6, new Examples\NewDevices()); // $row->column(6, new Examples\NewDevices());
//$column->row(new Examples\ProductOrders()); //$column->row(new Examples\ProductOrders());
//$column->row(new Examples\Tickets()); //$column->row(new Examples\Tickets());
}); });
} }
}); });
} }
} }
...@@ -49,7 +49,7 @@ protected function grid() ...@@ -49,7 +49,7 @@ protected function grid()
} }
$grid->column('is_open')->using(PharmacyModel::IS_OPEN_MAP)->help('药店控制')->dot(PharmacyModel::IS_OPEN_MAP_COLOR); $grid->column('is_open')->using(PharmacyModel::IS_OPEN_MAP)->help('药店控制')->dot(PharmacyModel::IS_OPEN_MAP_COLOR);
$grid->column('is_auto')->using(PharmacyModel::IS_AUTO_MAP)->dot(PharmacyModel::IS_AUTO_MAP_COLOR); $grid->column('is_auto')->using(PharmacyModel::IS_AUTO_MAP)->dot(PharmacyModel::IS_AUTO_MAP_COLOR);
$grid->column('is_yb_open','医保开方')->using(PharmacyModel::IS_YB_OPEN_MAP)->dot(PharmacyModel::IS_AUTO_MAP_COLOR); $grid->column('is_yb_open', '医保开方')->using(PharmacyModel::IS_YB_OPEN_MAP)->dot(PharmacyModel::IS_AUTO_MAP_COLOR);
$grid->column('name'); $grid->column('name');
$grid->column('药师数量')->display(function () { $grid->column('药师数量')->display(function () {
$num = PharmacistModel::where('pharmacy_id', $this->id)->count(); $num = PharmacistModel::where('pharmacy_id', $this->id)->count();
...@@ -182,7 +182,7 @@ protected function form() ...@@ -182,7 +182,7 @@ protected function form()
$form->switch('status'); $form->switch('status');
} }
$form->switch('is_auto'); $form->switch('is_auto');
$form->switch('is_yb_open','医保开方'); $form->switch('is_yb_open', '医保开方');
$form->display('created_at'); $form->display('created_at');
$form->display('updated_at'); $form->display('updated_at');
}); });
......
...@@ -2,11 +2,6 @@ ...@@ -2,11 +2,6 @@
namespace App\Admin\Controllers; namespace App\Admin\Controllers;
use App\Admin\Extensions\ToolBar\Actions\AddPharmacyDrugAction;
use App\Admin\Repositories\PharmacyDrugRepository;
use App\Models\DosageModel;
use App\Models\DrugModel;
use App\Models\DrugUnitModel;
use App\Models\ExternalPrescriptionModel; use App\Models\ExternalPrescriptionModel;
use Dcat\Admin\Admin; use Dcat\Admin\Admin;
use Dcat\Admin\Form; use Dcat\Admin\Form;
...@@ -15,10 +10,8 @@ ...@@ -15,10 +10,8 @@
use Dcat\Admin\Layout\Content; use Dcat\Admin\Layout\Content;
use Dcat\Admin\Show; use Dcat\Admin\Show;
class PharmacyExternalPrescriptionController extends AdminController class PharmacyExternalPrescriptionController extends AdminController
{ {
public function index(Content $content) public function index(Content $content)
{ {
return $content return $content
...@@ -26,6 +19,7 @@ public function index(Content $content) ...@@ -26,6 +19,7 @@ public function index(Content $content)
->description('列表') // 可选,设置 content-header 的副标题 ->description('列表') // 可选,设置 content-header 的副标题
->body($this->grid()); // 设置页面主体为 Grid ->body($this->grid()); // 设置页面主体为 Grid
} }
/** /**
* Make a grid builder. * Make a grid builder.
* *
...@@ -37,34 +31,34 @@ protected function grid() ...@@ -37,34 +31,34 @@ protected function grid()
if (! Admin::user()->pharmacy_id) { if (! Admin::user()->pharmacy_id) {
admin_exit(Content::make()->withError(trans('admin.deny'))); admin_exit(Content::make()->withError(trans('admin.deny')));
} }
$grid->model()->orderBy('id', 'DESC'); $grid->model()->orderBy('id', 'DESC');
$grid->model()->where('pharmacy_id', Admin::user()->pharmacy_id); $grid->model()->where('pharmacy_id', Admin::user()->pharmacy_id);
$grid->column('id')->sortable(); $grid->column('id')->sortable();
$grid->column('external_prescription_id','580处方单编号'); $grid->column('external_prescription_id', '580处方单编号');
$grid->column('issue_at','处方开具时间')->sortable(); $grid->column('issue_at', '处方开具时间')->sortable();
$grid->column('status','状态'); $grid->column('status', '状态');
$grid->column('company_name','企业名称'); $grid->column('company_name', '企业名称');
$grid->column('pharmacy_name','药店名称'); $grid->column('pharmacy_name', '药店名称');
// $grid->column('pharmacy_id'); // $grid->column('pharmacy_id');
$grid->column('agent','会员/代理人'); $grid->column('agent', '会员/代理人');
$grid->column('patient_name','就诊人姓名'); $grid->column('patient_name', '就诊人姓名');
$grid->column('patient_mobile','就诊人手机号'); $grid->column('patient_mobile', '就诊人手机号');
$grid->column('patient_gender','就诊人性别')->using(ExternalPrescriptionModel::SEX_MAP); $grid->column('patient_gender', '就诊人性别')->using(ExternalPrescriptionModel::SEX_MAP);
$grid->column('patient_age','就诊人年龄'); $grid->column('patient_age', '就诊人年龄');
$grid->column('patient_id_card','就诊人身份证号'); $grid->column('patient_id_card', '就诊人身份证号');
$grid->column('doctor_name','接诊医师姓名'); $grid->column('doctor_name', '接诊医师姓名');
$grid->column('diagnosis','诊断'); $grid->column('diagnosis', '诊断');
$grid->column('drug_info','用药信息')->display(function ($drugInfoJson) { $grid->column('drug_info', '用药信息')->display(function ($drugInfoJson) {
// 尝试将 $drugInfoJson 解码为数组 // 尝试将 $drugInfoJson 解码为数组
$drugInfoArray = json_decode($drugInfoJson, true); $drugInfoArray = json_decode($drugInfoJson, true);
// 检查解码是否成功且 $drugInfoArray 是一个数组 // 检查解码是否成功且 $drugInfoArray 是一个数组
if (is_array($drugInfoArray)) { if (is_array($drugInfoArray)) {
// 使用 array_map 来格式化每个药物的信息 // 使用 array_map 来格式化每个药物的信息
$formattedDrugs = array_map(function ($item) { $formattedDrugs = array_map(function ($item) {
return $item['drug_name'] . ' : ' . ($item['drug_spec'] ?? '') . ' : ' . $item['drug_num']; return $item['drug_name'].' : '.($item['drug_spec'] ?? '').' : '.$item['drug_num'];
}, $drugInfoArray); }, $drugInfoArray);
// 将数组转换为以逗号分隔的字符串(或根据您的需求进行其他格式化) // 将数组转换为以逗号分隔的字符串(或根据您的需求进行其他格式化)
return implode(', ', $formattedDrugs); return implode(', ', $formattedDrugs);
} else { } else {
...@@ -72,30 +66,30 @@ protected function grid() ...@@ -72,30 +66,30 @@ protected function grid()
return $drugInfoJson; // 或者返回一个错误消息,如 'Invalid JSON' return $drugInfoJson; // 或者返回一个错误消息,如 'Invalid JSON'
} }
})->label(); // 设置列的标签 })->label(); // 设置列的标签
$grid->column('pharmacist_name','审核药师'); $grid->column('pharmacist_name', '审核药师');
$grid->column('review_at','审核时间'); $grid->column('review_at', '审核时间');
$grid->column('pharmacist_attr','药师属性'); $grid->column('pharmacist_attr', '药师属性');
$grid->column('dispatcher','调配人'); $grid->column('dispatcher', '调配人');
$grid->column('checker','核对人'); $grid->column('checker', '核对人');
$grid->column('dispenser','发药人'); $grid->column('dispenser', '发药人');
// $grid->column('created_at'); // $grid->column('created_at');
// $grid->column('updated_at')->sortable(); // $grid->column('updated_at')->sortable();
// 工具栏普通按钮 // 工具栏普通按钮
// $grid->tools(function ($tools) { // $grid->tools(function ($tools) {
// $tools->append(new ExternalPrescriptionImportAction()); // 导入药品信息 // $tools->append(new ExternalPrescriptionImportAction()); // 导入药品信息
// }); // });
$grid->filter(function (Grid\Filter $filter) { $grid->filter(function (Grid\Filter $filter) {
//$filter->equal('id'); //$filter->equal('id');
$filter->panel(); // 更改为 panel 布局 $filter->panel(); // 更改为 panel 布局
$filter->expand(); // 默认展开搜索框 $filter->expand(); // 默认展开搜索框
$filter->equal('external_prescription_id','580处方单编号')->width(3); $filter->equal('external_prescription_id', '580处方单编号')->width(3);
// $filter->equal('pharmacy_id')->select(PharmacyModel::all()->pluck('name', 'id'))->width(3); // $filter->equal('pharmacy_id')->select(PharmacyModel::all()->pluck('name', 'id'))->width(3);
// $filter->equal('pharmacy_id','药店编号')->width(3); // $filter->equal('pharmacy_id','药店编号')->width(3);
$filter->like('patient_name','就诊人姓名')->width(3); $filter->like('patient_name', '就诊人姓名')->width(3);
$filter->like('patient_mobile','就诊人手机号')->width(3); $filter->like('patient_mobile', '就诊人手机号')->width(3);
$filter->like('doctor_name','接诊医生')->width(3); $filter->like('doctor_name', '接诊医生')->width(3);
}); });
// 行按钮控制 // 行按钮控制
...@@ -109,8 +103,7 @@ protected function grid() ...@@ -109,8 +103,7 @@ protected function grid()
/** /**
* Make a show builder. * Make a show builder.
* *
* @param mixed $id * @param mixed $id
*
* @return Show * @return Show
*/ */
protected function detail($id) protected function detail($id)
...@@ -118,29 +111,30 @@ protected function detail($id) ...@@ -118,29 +111,30 @@ protected function detail($id)
// return Content::make()->title('详情')->description('详情')->body($this->showDetail($id)); // return Content::make()->title('详情')->description('详情')->body($this->showDetail($id));
return Show::make($id, new ExternalPrescriptionModel(), function (Show $show) { return Show::make($id, new ExternalPrescriptionModel(), function (Show $show) {
$show->field('id'); $show->field('id');
$show->field('external_prescription_id','580处方单编号'); $show->field('external_prescription_id', '580处方单编号');
$show->field('issue_at','处方开具时间'); $show->field('issue_at', '处方开具时间');
$show->field('status','状态'); $show->field('status', '状态');
$show->field('company_name','企业名称'); $show->field('company_name', '企业名称');
$show->field('pharmacy_name','药店名称'); $show->field('pharmacy_name', '药店名称');
//$show->field('pharmacy_id'); //$show->field('pharmacy_id');
$show->field('agent','会员/代理人'); $show->field('agent', '会员/代理人');
$show->field('patient_name','就诊人姓名'); $show->field('patient_name', '就诊人姓名');
$show->field('patient_mobile','就诊人手机号'); $show->field('patient_mobile', '就诊人手机号');
$show->field('patient_gender','就诊人性别')->using(ExternalPrescriptionModel::SEX_MAP)->width(3); $show->field('patient_gender', '就诊人性别')->using(ExternalPrescriptionModel::SEX_MAP)->width(3);
$show->field('patient_age','就诊人年龄'); $show->field('patient_age', '就诊人年龄');
$show->field('patient_id_card','就诊人身份证号'); $show->field('patient_id_card', '就诊人身份证号');
$show->field('doctor_name','接诊医师姓名'); $show->field('doctor_name', '接诊医师姓名');
$show->field('diagnosis','诊断'); $show->field('diagnosis', '诊断');
$show->field('drug_info','用药信息')->as(function ($drugInfoJson) { $show->field('drug_info', '用药信息')->as(function ($drugInfoJson) {
// 尝试将 $drugInfoJson 解码为数组 // 尝试将 $drugInfoJson 解码为数组
$drugInfoArray = json_decode($drugInfoJson, true); $drugInfoArray = json_decode($drugInfoJson, true);
// 检查解码是否成功且 $drugInfoArray 是一个数组 // 检查解码是否成功且 $drugInfoArray 是一个数组
if (is_array($drugInfoArray)) { if (is_array($drugInfoArray)) {
// 使用 array_map 来格式化每个药物的信息 // 使用 array_map 来格式化每个药物的信息
$formattedDrugs = array_map(function ($item) { $formattedDrugs = array_map(function ($item) {
return $item['drug_name'] . ' : ' . ($item['drug_spec'] ?? '') . ' : ' . $item['drug_num']; return $item['drug_name'].' : '.($item['drug_spec'] ?? '').' : '.$item['drug_num'];
}, $drugInfoArray); }, $drugInfoArray);
// 将数组转换为以逗号分隔的字符串(或根据您的需求进行其他格式化) // 将数组转换为以逗号分隔的字符串(或根据您的需求进行其他格式化)
return implode(', ', $formattedDrugs); return implode(', ', $formattedDrugs);
} else { } else {
...@@ -148,12 +142,12 @@ protected function detail($id) ...@@ -148,12 +142,12 @@ protected function detail($id)
return $drugInfoJson; // 或者返回一个错误消息,如 'Invalid JSON' return $drugInfoJson; // 或者返回一个错误消息,如 'Invalid JSON'
} }
})->label(); // 设置列的标签 })->label(); // 设置列的标签
$show->field('pharmacist_name','审核药师'); $show->field('pharmacist_name', '审核药师');
$show->field('review_at','审核时间'); $show->field('review_at', '审核时间');
$show->field('pharmacist_attr','药师属性'); $show->field('pharmacist_attr', '药师属性');
$show->field('dispatcher','调配人'); $show->field('dispatcher', '调配人');
$show->field('checker','核对人'); $show->field('checker', '核对人');
$show->field('dispenser','发药人'); $show->field('dispenser', '发药人');
// $show->field('created_at'); // $show->field('created_at');
// $show->field('updated_at'); // $show->field('updated_at');
$show->panel()->tools(function ($tools) { $show->panel()->tools(function ($tools) {
...@@ -163,10 +157,7 @@ protected function detail($id) ...@@ -163,10 +157,7 @@ protected function detail($id)
}); });
} }
protected function showDetail($id){ protected function showDetail($id) {}
}
/** /**
* Make a form builder. * Make a form builder.
...@@ -198,9 +189,9 @@ protected function form() ...@@ -198,9 +189,9 @@ protected function form()
$form->text('dispatcher'); $form->text('dispatcher');
$form->text('checker'); $form->text('checker');
$form->text('dispenser'); $form->text('dispenser');
$form->display('created_at'); $form->display('created_at');
$form->display('updated_at'); $form->display('updated_at');
}); });
} }
} }
\ No newline at end of file
...@@ -2,7 +2,6 @@ ...@@ -2,7 +2,6 @@
namespace App\Admin\Extensions\ToolBar\Actions; namespace App\Admin\Extensions\ToolBar\Actions;
use App\Admin\Extensions\ToolBar\Forms\DrugImportForm;
use App\Admin\Extensions\ToolBar\Forms\ExternalPrescriptionImportForm; use App\Admin\Extensions\ToolBar\Forms\ExternalPrescriptionImportForm;
use Dcat\Admin\Grid\Tools\AbstractTool; use Dcat\Admin\Grid\Tools\AbstractTool;
use Dcat\Admin\Widgets\Modal; use Dcat\Admin\Widgets\Modal;
......
...@@ -2,24 +2,20 @@ ...@@ -2,24 +2,20 @@
namespace App\Admin\Extensions\ToolBar\Forms; namespace App\Admin\Extensions\ToolBar\Forms;
use App\Models\DosageModel;
use App\Models\ExternalPrescriptionModel; use App\Models\ExternalPrescriptionModel;
use App\Models\PharmacyModel; use App\Models\PharmacyModel;
use Dcat\Admin\Admin;
use Dcat\Admin\Http\JsonResponse; use Dcat\Admin\Http\JsonResponse;
use Dcat\Admin\Widgets\Form; use Dcat\Admin\Widgets\Form;
use Dcat\EasyExcel\Excel; use Dcat\EasyExcel\Excel;
use Dcat\EasyExcel\Sheet; use Dcat\EasyExcel\Sheet;
use Dcat\EasyExcel\Support\SheetCollection;
use Illuminate\Support\Facades\Log;
use Exception; use Exception;
use Illuminate\Support\Facades\Log;
set_time_limit(1800); set_time_limit(1800);
ini_set('memory_limit', '-1'); ini_set('memory_limit', '-1');
ini_set('max_execution_time', 10800); ini_set('max_execution_time', 10800);
ini_set('max_input_time', 10800); ini_set('max_input_time', 10800);
class ExternalPrescriptionImportForm extends Form class ExternalPrescriptionImportForm extends Form
{ {
/** /**
...@@ -27,44 +23,44 @@ class ExternalPrescriptionImportForm extends Form ...@@ -27,44 +23,44 @@ class ExternalPrescriptionImportForm extends Form
*/ */
public function handle(array $input): JsonResponse public function handle(array $input): JsonResponse
{ {
// 表单参数 // 表单参数
$file = $input['import_file']; $file = $input['import_file'];
$filePath = storage_path('app/'.$file); $filePath = storage_path('app/'.$file);
// Log::info("====>".$filePath); // Log::info("====>".$filePath);
try { try {
# $excel = Excel::import($filePath)->toArray(); // $excel = Excel::import($filePath)->toArray();
// Get the sheet names from the file // Get the sheet names from the file
# $sheetNames = $excel[0]->getSheetNames(); // $sheetNames = $excel[0]->getSheetNames();
# Log::info("====>".$sheetNames."====>".json_encode($excel)); // Log::info("====>".$sheetNames."====>".json_encode($excel));
// 每100行数据为一批数据进行读取 // 每100行数据为一批数据进行读取
$chunkSize = 10; $chunkSize = 10;
$successNum = 0; $successNum = 0;
$failNum = 0; $failNum = 0;
$data = Excel::import($filePath)->sheet('处方明细列表')->toArray(); $data = Excel::import($filePath)->sheet('处方明细列表')->toArray();
if(!empty($data) && is_array($data)){ if (! empty($data) && is_array($data)) {
// 判断处方单编号是会否重复,如果重复需进行合并药品数据 // 判断处方单编号是会否重复,如果重复需进行合并药品数据
$prescriptions = []; $prescriptions = [];
foreach($data as $row){ foreach ($data as $row) {
$prescriptionNo = $row['处方编号']; $prescriptionNo = $row['处方编号'];
$drug_info['drug_name'] = $row['药品名称'] ?? ''; $drug_info['drug_name'] = $row['药品名称'] ?? '';
$drug_info['drug_spec'] = $row['药品规格'] ?? ''; $drug_info['drug_spec'] = $row['药品规格'] ?? '';
$drug_info['drug_num'] = $row['药品数量'] ?? 0; $drug_info['drug_num'] = $row['药品数量'] ?? 0;
if(!isset($prescriptions[$prescriptionNo])){ if (! isset($prescriptions[$prescriptionNo])) {
$prescriptions[$prescriptionNo] = $row; $prescriptions[$prescriptionNo] = $row;
} }
$prescriptions[$prescriptionNo]['药品明细'][] = $drug_info; $prescriptions[$prescriptionNo]['药品明细'][] = $drug_info;
} }
// 循环插入数据 // 循环插入数据
foreach($prescriptions as $prescriptionNo=>$prescription){ foreach ($prescriptions as $prescriptionNo => $prescription) {
// 校验数据库中是否存在该数据 // 校验数据库中是否存在该数据
$externalPrescriptionModel = ExternalPrescriptionModel::where('external_prescription_id', $prescriptionNo)->first(); $externalPrescriptionModel = ExternalPrescriptionModel::where('external_prescription_id', $prescriptionNo)->first();
if( !$externalPrescriptionModel ){ if (! $externalPrescriptionModel) {
$externalPrescriptionModel = new ExternalPrescriptionModel; $externalPrescriptionModel = new ExternalPrescriptionModel;
} }
// 查找对应的药店ID // 查找对应的药店ID
$pharmacy = PharmacyModel::where('name', $prescription['门店名称'])->first(); $pharmacy = PharmacyModel::where('name', $prescription['门店名称'])->first();
$pharmacyId = 0; $pharmacyId = 0;
if( $pharmacy ){ if ($pharmacy) {
$pharmacyId = $pharmacy->id; $pharmacyId = $pharmacy->id;
} }
$externalPrescriptionModel->external_prescription_id = $prescriptionNo; $externalPrescriptionModel->external_prescription_id = $prescriptionNo;
...@@ -83,27 +79,27 @@ public function handle(array $input): JsonResponse ...@@ -83,27 +79,27 @@ public function handle(array $input): JsonResponse
$externalPrescriptionModel->diagnosis = $prescription['诊断']; $externalPrescriptionModel->diagnosis = $prescription['诊断'];
$externalPrescriptionModel->drug_info = json_encode($prescription['药品明细']); $externalPrescriptionModel->drug_info = json_encode($prescription['药品明细']);
$externalPrescriptionModel->pharmacist_name = $prescription['审核药师'] ?? ''; $externalPrescriptionModel->pharmacist_name = $prescription['审核药师'] ?? '';
if($prescription['药师审核时间']){ if ($prescription['药师审核时间']) {
$externalPrescriptionModel->review_at = $prescription['药师审核时间']; $externalPrescriptionModel->review_at = $prescription['药师审核时间'];
} }
$externalPrescriptionModel->pharmacist_attr = $prescription['药师属性'] ?? ''; $externalPrescriptionModel->pharmacist_attr = $prescription['药师属性'] ?? '';
$externalPrescriptionModel->dispatcher = $prescription['调配人'] ?? ''; $externalPrescriptionModel->dispatcher = $prescription['调配人'] ?? '';
$externalPrescriptionModel->checker = $prescription['核对人'] ?? ''; $externalPrescriptionModel->checker = $prescription['核对人'] ?? '';
$externalPrescriptionModel->dispenser = $prescription['发药人'] ?? ''; $externalPrescriptionModel->dispenser = $prescription['发药人'] ?? '';
if( $externalPrescriptionModel->save() ){ if ($externalPrescriptionModel->save()) {
$successNum++; $successNum++;
} }
} }
// Log::info("prescriptions====>".json_encode($prescriptions)); // Log::info("prescriptions====>".json_encode($prescriptions));
} }
$return = $this->response()->success("导入成功{$successNum}条")->refresh(); $return = $this->response()->success("导入成功{$successNum}条")->refresh();
unlink($filePath); unlink($filePath);
} catch (Exception $e) { } catch (Exception $e) {
$return = $this->response()->error("导入失败{$failNum}条:".$e->getMessage()); $return = $this->response()->error("导入失败{$failNum}条:".$e->getMessage());
} }
return $return; return $return;
} }
/** /**
...@@ -126,8 +122,8 @@ public function form() ...@@ -126,8 +122,8 @@ public function form()
$this->html("<a target='_blank' href='{$downloadUrl}'>下载580处方单导入模板</a>"); $this->html("<a target='_blank' href='{$downloadUrl}'>下载580处方单导入模板</a>");
} }
private static function getGender($value)
private static function getGender($value){ {
$value = trim($value); $value = trim($value);
switch ($value) { switch ($value) {
case '男': case '男':
...@@ -138,5 +134,4 @@ private static function getGender($value){ ...@@ -138,5 +134,4 @@ private static function getGender($value){
return 0; return 0;
} }
} }
}
}
\ No newline at end of file
...@@ -17,7 +17,7 @@ protected function init() ...@@ -17,7 +17,7 @@ protected function init()
parent::init(); parent::init();
$this->title('药店数量'); $this->title('药店数量');
} }
/** /**
...@@ -55,10 +55,10 @@ public function handle(Request $request) ...@@ -55,10 +55,10 @@ public function handle(Request $request)
// break; // break;
// case '7': // case '7':
// default: // default:
// 卡片内容 // 卡片内容
$this->withContent('89.2k'); $this->withContent('89.2k');
// 图表数据 // 图表数据
// $this->withChart([28, 40, 36, 52, 38, 60, 55]); // $this->withChart([28, 40, 36, 52, 38, 60, 55]);
//} //}
} }
......
...@@ -2,9 +2,10 @@ ...@@ -2,9 +2,10 @@
namespace App\Admin\Metrics\Statistics; namespace App\Admin\Metrics\Statistics;
use App\Models\PatientModel;
use Dcat\Admin\Widgets\Metrics\Line; use Dcat\Admin\Widgets\Metrics\Line;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Models\PatientModel;
class Patient extends Line class Patient extends Line
{ {
/** /**
...@@ -17,7 +18,7 @@ protected function init() ...@@ -17,7 +18,7 @@ protected function init()
parent::init(); parent::init();
$this->title('问诊人数量'); $this->title('问诊人数量');
} }
/** /**
...@@ -29,10 +30,10 @@ protected function init() ...@@ -29,10 +30,10 @@ protected function init()
public function handle(Request $request) public function handle(Request $request)
{ {
$query_time = date('Y-m-d 23:59:59'); $query_time = date('Y-m-d 23:59:59');
$patient_count = PatientModel::where('created_at','<=',$query_time)->count(); $patient_count = PatientModel::where('created_at', '<=', $query_time)->count();
// 卡片内容 // 卡片内容
$this->withContent($patient_count); $this->withContent($patient_count);
} }
/** /**
......
...@@ -2,9 +2,10 @@ ...@@ -2,9 +2,10 @@
namespace App\Admin\Metrics\Statistics; namespace App\Admin\Metrics\Statistics;
use App\Models\PharmacistModel;
use Dcat\Admin\Widgets\Metrics\Line; use Dcat\Admin\Widgets\Metrics\Line;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Models\PharmacistModel;
class Pharmacist extends Line class Pharmacist extends Line
{ {
/** /**
...@@ -17,7 +18,7 @@ protected function init() ...@@ -17,7 +18,7 @@ protected function init()
parent::init(); parent::init();
$this->title('药师数量'); $this->title('药师数量');
} }
/** /**
...@@ -29,10 +30,10 @@ protected function init() ...@@ -29,10 +30,10 @@ protected function init()
public function handle(Request $request) public function handle(Request $request)
{ {
$query_time = date('Y-m-d 23:59:59'); $query_time = date('Y-m-d 23:59:59');
$pharmacist_count = PharmacistModel::where('created_at','<=',$query_time)->count(); $pharmacist_count = PharmacistModel::where('created_at', '<=', $query_time)->count();
// 卡片内容 // 卡片内容
$this->withContent($pharmacist_count); $this->withContent($pharmacist_count);
} }
/** /**
......
...@@ -2,9 +2,9 @@ ...@@ -2,9 +2,9 @@
namespace App\Admin\Metrics\Statistics; namespace App\Admin\Metrics\Statistics;
use App\Models\PharmacyModel;
use Dcat\Admin\Widgets\Metrics\Line; use Dcat\Admin\Widgets\Metrics\Line;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Models\PharmacyModel;
class Pharmacy extends Line class Pharmacy extends Line
{ {
...@@ -18,7 +18,7 @@ protected function init() ...@@ -18,7 +18,7 @@ protected function init()
parent::init(); parent::init();
$this->title('药店数量'); $this->title('药店数量');
} }
/** /**
...@@ -30,10 +30,10 @@ protected function init() ...@@ -30,10 +30,10 @@ protected function init()
public function handle(Request $request) public function handle(Request $request)
{ {
$query_time = date('Y-m-d 23:59:59'); $query_time = date('Y-m-d 23:59:59');
$pharmacy_count = PharmacyModel::where('created_at','<=',$query_time)->count(); $pharmacy_count = PharmacyModel::where('created_at', '<=', $query_time)->count();
// 卡片内容 // 卡片内容
$this->withContent($pharmacy_count); $this->withContent($pharmacy_count);
} }
/** /**
......
...@@ -2,14 +2,13 @@ ...@@ -2,14 +2,13 @@
namespace App\Admin\Metrics\Statistics; namespace App\Admin\Metrics\Statistics;
use Dcat\Admin\Widgets\Metrics\Line;
use Illuminate\Http\Request;
use App\Models\PrescriptionModel; use App\Models\PrescriptionModel;
use Dcat\Admin\Admin; use Carbon\Carbon;
use Dcat\Admin\Widgets\Metrics\Bar; use Dcat\Admin\Widgets\Metrics\Bar;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
class PharmacyChart extends Bar class PharmacyChart extends Bar
{ {
/** /**
...@@ -20,8 +19,8 @@ class PharmacyChart extends Bar ...@@ -20,8 +19,8 @@ class PharmacyChart extends Bar
protected function init() protected function init()
{ {
parent::init(); parent::init();
$date = date('Y-m-d',strtotime('-1 day')); $date = date('Y-m-d', strtotime('-1 day'));
$this->title($date .'开方药店数量'); $this->title($date.'开方药店数量');
} }
/** /**
...@@ -42,7 +41,7 @@ public function handle(Request $request) ...@@ -42,7 +41,7 @@ public function handle(Request $request)
$datesRange = []; $datesRange = [];
for ($date = clone $eightDaysAgoStart; $date->lte($yesterdayEnd); $date->addDay()) { for ($date = clone $eightDaysAgoStart; $date->lte($yesterdayEnd); $date->addDay()) {
$query_date = $date->format('Y-m-d'); $query_date = $date->format('Y-m-d');
$res = DB::select( $res = DB::select(
'SELECT COUNT(DISTINCT pharmacy_id) AS pharmacy_count 'SELECT COUNT(DISTINCT pharmacy_id) AS pharmacy_count
FROM prescription FROM prescription
...@@ -50,8 +49,8 @@ public function handle(Request $request) ...@@ -50,8 +49,8 @@ public function handle(Request $request)
AND created_at < :next_day AND created_at < :next_day
AND status = 2', AND status = 2',
[ [
'start_of_day' => $query_date . ' 00:00:00', 'start_of_day' => $query_date.' 00:00:00',
'next_day' => $query_date . ' 23:59:59' 'next_day' => $query_date.' 23:59:59',
] ]
); );
...@@ -71,7 +70,6 @@ public function handle(Request $request) ...@@ -71,7 +70,6 @@ public function handle(Request $request)
], ],
]); ]);
} }
/** /**
...@@ -87,8 +85,6 @@ public function withChart(array $data) ...@@ -87,8 +85,6 @@ public function withChart(array $data)
]); ]);
} }
/** /**
* 设置卡片内容. * 设置卡片内容.
* *
......
...@@ -2,9 +2,10 @@ ...@@ -2,9 +2,10 @@
namespace App\Admin\Metrics\Statistics; namespace App\Admin\Metrics\Statistics;
use App\Models\PrescriptionModel;
use Dcat\Admin\Widgets\Metrics\Line; use Dcat\Admin\Widgets\Metrics\Line;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Models\PrescriptionModel;
class Prescription extends Line class Prescription extends Line
{ {
/** /**
...@@ -17,7 +18,7 @@ protected function init() ...@@ -17,7 +18,7 @@ protected function init()
parent::init(); parent::init();
$this->title('处方数量'); $this->title('处方数量');
} }
/** /**
...@@ -29,10 +30,10 @@ protected function init() ...@@ -29,10 +30,10 @@ protected function init()
public function handle(Request $request) public function handle(Request $request)
{ {
$query_time = date('Y-m-d 23:59:59'); $query_time = date('Y-m-d 23:59:59');
$prescription_total = PrescriptionModel::where('created_at','<=',$query_time)->count(); $prescription_total = PrescriptionModel::where('created_at', '<=', $query_time)->count();
// 卡片内容 // 卡片内容
$this->withContent($prescription_total); $this->withContent($prescription_total);
} }
/** /**
......
...@@ -2,14 +2,13 @@ ...@@ -2,14 +2,13 @@
namespace App\Admin\Metrics\Statistics; namespace App\Admin\Metrics\Statistics;
use Dcat\Admin\Widgets\Metrics\Line;
use Illuminate\Http\Request;
use App\Models\PrescriptionModel; use App\Models\PrescriptionModel;
use Dcat\Admin\Admin; use Carbon\Carbon;
use Dcat\Admin\Widgets\Metrics\Bar; use Dcat\Admin\Widgets\Metrics\Bar;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
class PrescriptionChart extends Bar class PrescriptionChart extends Bar
{ {
/** /**
...@@ -20,8 +19,8 @@ class PrescriptionChart extends Bar ...@@ -20,8 +19,8 @@ class PrescriptionChart extends Bar
protected function init() protected function init()
{ {
parent::init(); parent::init();
$date = date('Y-m-d',strtotime('-1 day')); $date = date('Y-m-d', strtotime('-1 day'));
$this->title($date .'开方数量'); $this->title($date.'开方数量');
} }
/** /**
...@@ -40,7 +39,7 @@ public function handle(Request $request) ...@@ -40,7 +39,7 @@ public function handle(Request $request)
$eightDaysAgoStart = clone $yesterdayEnd; $eightDaysAgoStart = clone $yesterdayEnd;
$eightDaysAgoStart->subDays(7)->startOfDay(); // 八天前的00:00:00 $eightDaysAgoStart->subDays(7)->startOfDay(); // 八天前的00:00:00
// 创建包含过去7天日期的完整数组 // 创建包含过去7天日期的完整数组
$datesRange = []; $datesRange = [];
for ($date = clone $eightDaysAgoStart; $date->lte($yesterdayEnd); $date->addDay()) { for ($date = clone $eightDaysAgoStart; $date->lte($yesterdayEnd); $date->addDay()) {
...@@ -56,9 +55,6 @@ public function handle(Request $request) ...@@ -56,9 +55,6 @@ public function handle(Request $request)
->groupBy('date') // 按日期分组 ->groupBy('date') // 按日期分组
->orderBy('date') // 按日期排序 ->orderBy('date') // 按日期排序
->get(); // 执行查询并获取结果 ->get(); // 执行查询并获取结果
// 将查询结果合并到日期范围数组中 // 将查询结果合并到日期范围数组中
foreach ($prescriptionCounts as $day) { foreach ($prescriptionCounts as $day) {
...@@ -80,7 +76,6 @@ public function handle(Request $request) ...@@ -80,7 +76,6 @@ public function handle(Request $request)
], ],
]); ]);
} }
/** /**
...@@ -96,8 +91,6 @@ public function withChart(array $data) ...@@ -96,8 +91,6 @@ public function withChart(array $data)
]); ]);
} }
/** /**
* 设置卡片内容. * 设置卡片内容.
* *
......
...@@ -68,7 +68,7 @@ public function add(Request $request) ...@@ -68,7 +68,7 @@ public function add(Request $request)
$idValidator = new IdValidator(); $idValidator = new IdValidator();
// if (! $idValidator->isValid($data['id_card'])) { // if (! $idValidator->isValid($data['id_card'])) {
// if( !in_array(strlen($data['id_card']),[15,18])){ // if( !in_array(strlen($data['id_card']),[15,18])){
if (isset($data['id_card']) && !validateIDCard($data['id_card'])) { // 身份证非必填项 if (isset($data['id_card']) && ! validateIDCard($data['id_card'])) { // 身份证非必填项
return $this->failed('身份证格式错误'); return $this->failed('身份证格式错误');
} }
...@@ -116,7 +116,7 @@ public function update(Request $request) ...@@ -116,7 +116,7 @@ public function update(Request $request)
// 验证身份证格式 // 验证身份证格式
$idValidator = new IdValidator(); $idValidator = new IdValidator();
// if (! $idValidator->isValid($id_card)) { // if (! $idValidator->isValid($id_card)) {
if (isset($id_card) && !validateIDCard($id_card)) { if (isset($id_card) && ! validateIDCard($id_card)) {
return $this->failed('身份证格式错误'); return $this->failed('身份证格式错误');
} }
......
...@@ -363,7 +363,7 @@ public function create(Request $request) ...@@ -363,7 +363,7 @@ public function create(Request $request)
// $currentTime = $review_at; // $currentTime = $review_at;
// $pharmacistLog->log_info = $pharmacist->name.'在'.$review_at.'为'.$patient->name.'('.$patient->mobile.')审方(处方单编号:'.$prescription_number.')'; // $pharmacistLog->log_info = $pharmacist->name.'在'.$review_at.'为'.$patient->name.'('.$patient->mobile.')审方(处方单编号:'.$prescription_number.')';
// $pharmacistLog->save(); // $pharmacistLog->save();
} elseif ($pharmacy->is_auto == 0) { } elseif ($pharmacy->is_auto == 0) {
// 手动审方发送药店通知短信 1219发送短信注销 // 手动审方发送药店通知短信 1219发送短信注销
// if (env('SMS_CHANNEL') == 'chengliye') { // if (env('SMS_CHANNEL') == 'chengliye') {
// $templateName = 'pharmacist_notification'; // $templateName = 'pharmacist_notification';
...@@ -488,7 +488,7 @@ public function enter(Request $request) ...@@ -488,7 +488,7 @@ public function enter(Request $request)
'drug_id' => $pharmacyDrugQueryInfo->drug_id, 'drug_id' => $pharmacyDrugQueryInfo->drug_id,
'drug_name' => $pharmacyDrugQueryInfo->drug->name, 'drug_name' => $pharmacyDrugQueryInfo->drug->name,
'spec' => $pharmacyDrugQueryInfo->drug->spec, 'spec' => $pharmacyDrugQueryInfo->drug->spec,
'unit' => $pharmacyDrugQueryInfo->drug->unit,//$pharmacyDrugQueryInfo->unit, 'unit' => $pharmacyDrugQueryInfo->drug->unit, //$pharmacyDrugQueryInfo->unit,
'dosage_id' => $drug['dosage_id'] ?? 0, // $pharmacyDrugQueryInfo->dosage_id, 'dosage_id' => $drug['dosage_id'] ?? 0, // $pharmacyDrugQueryInfo->dosage_id,
'dosage_desc' => $drug['dosage_desc'] ?? '等待药师录入', // $pharmacyDrugQueryInfo->dosage->dosage_desc, 'dosage_desc' => $drug['dosage_desc'] ?? '等待药师录入', // $pharmacyDrugQueryInfo->dosage->dosage_desc,
'num' => $drug['num'], // 中药为药师录入数量 'num' => $drug['num'], // 中药为药师录入数量
......
...@@ -35,12 +35,11 @@ public function config(Request $request) ...@@ -35,12 +35,11 @@ public function config(Request $request)
return $this->success($data); return $this->success($data);
} }
public function isYBOpen(Request $request) public function isYBOpen(Request $request)
{ {
$is_open_yb = 0; $is_open_yb = 0;
$authInfo = auth('api')->user(); $authInfo = auth('api')->user();
if( $authInfo->last_login_type == User::LOGIN_TYPE_PHARMACY ){ if ($authInfo->last_login_type == User::LOGIN_TYPE_PHARMACY) {
$pharmacy = PharmacyModel::where('user_id', $authInfo->id)->first(); $pharmacy = PharmacyModel::where('user_id', $authInfo->id)->first();
if ($pharmacy) { if ($pharmacy) {
$is_open_yb = $pharmacy->is_yb_open; $is_open_yb = $pharmacy->is_yb_open;
......
...@@ -3,51 +3,41 @@ ...@@ -3,51 +3,41 @@
namespace App\Api\Controllers; namespace App\Api\Controllers;
use App\Http\Controllers\BaseApiController; use App\Http\Controllers\BaseApiController;
use App\Models\DiagnosiModel;
use App\Models\DoctorModel;
use App\Models\InquiryModel;
use App\Models\PatientModel; use App\Models\PatientModel;
use App\Models\PharmacistModel; use App\Models\PharmacistModel;
use App\Models\PharmacyDrugModel;
use App\Models\PharmacyModel; use App\Models\PharmacyModel;
use App\Models\PrescriptionLogModel;
use App\Models\PrescriptionModel; use App\Models\PrescriptionModel;
use App\Models\User;
use App\Services\SmsService;
use Carbon\Carbon;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Overtrue\EasySms\EasySms;
class StatisticsController extends BaseApiController class StatisticsController extends BaseApiController
{ {
public function index(Request $request) public function index(Request $request)
{ {
$request = $request->all(); $request = $request->all();
// var_dump($request); // var_dump($request);
if( !isset($request['token']) || $request['token'] !='imohe123@' ){ if (! isset($request['token']) || $request['token'] != 'imohe123@') {
echo '错误请求';exit(); echo '错误请求';
exit();
} }
// 搜索前一天的数据 23:59:59 // 搜索前一天的数据 23:59:59
$query_time = date('Y-m-d 23:59:59', strtotime("-1 day")); $query_time = date('Y-m-d 23:59:59', strtotime('-1 day'));
$prev_start_time = date('Y-m-d 00:00:00', strtotime("-1 day")); $prev_start_time = date('Y-m-d 00:00:00', strtotime('-1 day'));
$prev_end_time = date('Y-m-d 23:59:59', strtotime("-1 day")); $prev_end_time = date('Y-m-d 23:59:59', strtotime('-1 day'));
$query_date = date('Y-m-d', strtotime("-1 day")); $query_date = date('Y-m-d', strtotime('-1 day'));
if( isset($request['date']) ){ if (isset($request['date'])) {
$query_time = date('Y-m-d 23:59:59', strtotime($request['date'])); $query_time = date('Y-m-d 23:59:59', strtotime($request['date']));
$prev_start_time = date('Y-m-d 00:00:00', strtotime($request['date'])); $prev_start_time = date('Y-m-d 00:00:00', strtotime($request['date']));
$prev_end_time = date('Y-m-d 23:59:59', strtotime($request['date'])); $prev_end_time = date('Y-m-d 23:59:59', strtotime($request['date']));
$query_date = date('Y-m-d', strtotime($request['date'])); $query_date = date('Y-m-d', strtotime($request['date']));
} }
$pharmacy_count = PharmacyModel::where('created_at','<=',$query_time)->count(); $pharmacy_count = PharmacyModel::where('created_at', '<=', $query_time)->count();
$pharmacist_count = PharmacistModel::where('created_at','<=',$query_time)->count(); $pharmacist_count = PharmacistModel::where('created_at', '<=', $query_time)->count();
$results = DB::select('SELECT count(pharmacy_id) FROM prescription WHERE created_at <= :query_time GROUP BY pharmacy_id having count(pharmacy_id) >=100', ['query_time' => $query_time]); $results = DB::select('SELECT count(pharmacy_id) FROM prescription WHERE created_at <= :query_time GROUP BY pharmacy_id having count(pharmacy_id) >=100', ['query_time' => $query_time]);
$prescription_count = count($results); $prescription_count = count($results);
$prescription_total = PrescriptionModel::where('created_at','<=',$query_time)->count(); $prescription_total = PrescriptionModel::where('created_at', '<=', $query_time)->count();
$prescription_day_total = PrescriptionModel::where('created_at','<=',$prev_end_time)->where('created_at','>=',$prev_start_time)->count(); $prescription_day_total = PrescriptionModel::where('created_at', '<=', $prev_end_time)->where('created_at', '>=', $prev_start_time)->count();
$res = DB::select( $res = DB::select(
'SELECT COUNT(DISTINCT pharmacy_id) AS pharmacy_count 'SELECT COUNT(DISTINCT pharmacy_id) AS pharmacy_count
FROM prescription FROM prescription
...@@ -55,24 +45,23 @@ public function index(Request $request) ...@@ -55,24 +45,23 @@ public function index(Request $request)
AND created_at < :next_day AND created_at < :next_day
AND status = 2', // 只统计审方成功的记录 AND status = 2', // 只统计审方成功的记录
[ [
'start_of_day' => $query_date . ' 00:00:00', 'start_of_day' => $query_date.' 00:00:00',
'next_day' => $query_date . ' 23:59:59' 'next_day' => $query_date.' 23:59:59',
] ]
); );
// var_dump($res[0]->pharmacy_count);exit(); // var_dump($res[0]->pharmacy_count);exit();
$next_day_count = $res[0]->pharmacy_count; $next_day_count = $res[0]->pharmacy_count;
$patient_count = PatientModel::where('created_at','<=',$query_time)->count(); $patient_count = PatientModel::where('created_at', '<=', $query_time)->count();
echo "统计数据(" .$query_time. "):<br /> echo '统计数据('.$query_time.'):<br />
&nbsp;&nbsp;药店数量:". $pharmacy_count ."<br /> &nbsp;&nbsp;药店数量:'.$pharmacy_count.'<br />
&nbsp;&nbsp;药师数量:". $pharmacist_count ."<br /> &nbsp;&nbsp;药师数量:'.$pharmacist_count.'<br />
&nbsp;&nbsp;开方药店(处方数超过100单):". $prescription_count ."<br /> &nbsp;&nbsp;开方药店(处方数超过100单):'.$prescription_count.'<br />
&nbsp;&nbsp;处方总量:". $prescription_total ."<br /> &nbsp;&nbsp;处方总量:'.$prescription_total.'<br />
&nbsp;&nbsp;问诊人数量:". $patient_count ."<br /> &nbsp;&nbsp;问诊人数量:'.$patient_count.'<br />
&nbsp;&nbsp;" . $query_date . "开方量:". $prescription_day_total ."<br /> &nbsp;&nbsp;'.$query_date.'开方量:'.$prescription_day_total.'<br />
&nbsp;&nbsp;" . $query_date . "开方药店量:". $next_day_count ."<br /> &nbsp;&nbsp;'.$query_date.'开方药店量:'.$next_day_count.'<br />
";exit(); ';
exit();
} }
}
}
\ No newline at end of file
...@@ -67,5 +67,6 @@ class Kernel extends HttpKernel ...@@ -67,5 +67,6 @@ class Kernel extends HttpKernel
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'watermark' => \App\Http\Middleware\WatermarkMiddleware::class, 'watermark' => \App\Http\Middleware\WatermarkMiddleware::class,
'checkrole' => \App\Http\Middleware\CheckRoleChangeMiddleware::class, 'checkrole' => \App\Http\Middleware\CheckRoleChangeMiddleware::class,
'custom.jwt' => \App\Http\Middleware\CustomJwtMiddleware::class,
]; ];
} }
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Tymon\JWTAuth\Exceptions\JWTException;
use Tymon\JWTAuth\Exceptions\TokenExpiredException;
use Tymon\JWTAuth\Exceptions\TokenInvalidException;
use Tymon\JWTAuth\Facades\JWTAuth;
class CustomJwtMiddleware
{
public function handle(Request $request, Closure $next)
{
try {
// 检查 JWT Token 是否存在
$token = $request->bearerToken();
if (! $token) {
return response()->json(['status' => false, 'code' => 600, 'message' => '未提供 Token', 'data' => []]);
}
// 尝试解析 Token
$user = JWTAuth::parseToken()->authenticate();
if (! $user) {
return response()->json(['status' => false, 'code' => 600, 'message' => '用户未找到', 'data' => []]);
}
// 如果需要,可以在这里添加更多逻辑,例如检查用户状态等
} catch (TokenExpiredException $e) {
// Token 过期
return response()->json(['status' => false, 'code' => 600, 'message' => 'Token 已过期', 'data' => []]);
} catch (TokenInvalidException $e) {
// Token 无效
return response()->json(['status' => false, 'code' => 600, 'message' => '无效的 Token', 'data' => []]);
} catch (JWTException $e) {
// 其他 JWT 相关错误
return response()->json(['status' => false, 'code' => 600, 'message' => '未提供 Token 或 Token 无效', 'data' => []]);
}
return $next($request);
}
}
...@@ -3,13 +3,14 @@ ...@@ -3,13 +3,14 @@
namespace App\Models; namespace App\Models;
use Dcat\Admin\Traits\HasDateTimeFormatter; use Dcat\Admin\Traits\HasDateTimeFormatter;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class ExternalPrescriptionModel extends Model class ExternalPrescriptionModel extends Model
{ {
use HasDateTimeFormatter; use HasDateTimeFormatter;
use SoftDeletes; use SoftDeletes;
// 性别[0=未知,1=男,2=女] // 性别[0=未知,1=男,2=女]
const SEX_UNDEFINED = 0; const SEX_UNDEFINED = 0;
...@@ -23,9 +24,6 @@ class ExternalPrescriptionModel extends Model ...@@ -23,9 +24,6 @@ class ExternalPrescriptionModel extends Model
self::SEX_MALE => '男', self::SEX_MALE => '男',
self::SEX_FEMALE => '女', self::SEX_FEMALE => '女',
]; ];
protected $table = 'external_prescription';
protected $table = 'external_prescription';
} }
...@@ -61,7 +61,6 @@ class PharmacyModel extends Model ...@@ -61,7 +61,6 @@ class PharmacyModel extends Model
self::IS_AUTO_TRUE => 'success', self::IS_AUTO_TRUE => 'success',
]; ];
// 开启医保开方[0=否,1=是] // 开启医保开方[0=否,1=是]
const IS_YB_OPEN_FALSE = 0; const IS_YB_OPEN_FALSE = 0;
...@@ -73,7 +72,6 @@ class PharmacyModel extends Model ...@@ -73,7 +72,6 @@ class PharmacyModel extends Model
self::IS_YB_OPEN_TRUE => '是', self::IS_YB_OPEN_TRUE => '是',
]; ];
// 药店所属于的用户,一对一 // 药店所属于的用户,一对一
public function user() public function user()
{ {
......
<?php <?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateExternalPrescriptionTable extends Migration class CreateExternalPrescriptionTable extends Migration
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment