diff --git a/Laravel/app/Http/Controllers/API/Admin/YeWu/CheckItemController.php b/Laravel/app/Http/Controllers/API/Admin/YeWu/CheckItemController.php index 78f8b71..f69ade1 100644 --- a/Laravel/app/Http/Controllers/API/Admin/YeWu/CheckItemController.php +++ b/Laravel/app/Http/Controllers/API/Admin/YeWu/CheckItemController.php @@ -27,6 +27,19 @@ public function GetItemList() return $s->GetItemList($searchInfo, $page, $pageSize); } + //导出检查项目列表 + public function ExportItemList() + { + $searchInfo = request('searchInfo'); + $s = new CheckItemService; + $html = $s->ExportItemList($searchInfo); + $content = '' . $html . ''; + return response($content, 200, [ + 'Content-Type' => 'application/vnd.ms-excel;charset=utf-8', + 'Content-Disposition' => 'attachment; filename="check_items_export.xls"', + ]); + } + //绑定设备 public function BindDevice() { diff --git a/Laravel/app/Http/Controllers/API/Third/YiJiController.php b/Laravel/app/Http/Controllers/API/Third/YiJiController.php index 5d04709..de6491d 100644 --- a/Laravel/app/Http/Controllers/API/Third/YiJiController.php +++ b/Laravel/app/Http/Controllers/API/Third/YiJiController.php @@ -71,6 +71,11 @@ public function CheckAppointment() $patientType = $mapping[$visitTypeCode] ?? 9; foreach ($data_v['itemList'] as $item_k => $item) { + // 检查科室是否参与预约 + $dept = DB::table('s_department')->where('department_number', $item["execDeptCode"])->where('appointment_enabled', 1)->first(); + if (!$dept) { + return \Yz::JsonReturn(false, '该科室未参与预约', []); + } $entrust_ids[] = $item['orderNo']; $termCodes[] = $item['termCode']; //查询库里是否存在该检医嘱 diff --git a/Laravel/app/Http/Middleware/Log.php b/Laravel/app/Http/Middleware/Log.php index 22f1907..eb402c0 100644 --- a/Laravel/app/Http/Middleware/Log.php +++ b/Laravel/app/Http/Middleware/Log.php @@ -21,21 +21,27 @@ public function handle(Request $request, Closure $next) $insert_id=self::requestLog($request,$insert_id); //记录请求时日志,不含返回信息 $response = $next($request); - $content = $response->getContent(); - $data = json_decode($content, true); // 解码响应内容为关联数组 + // 只对 JSON 响应进行 code 注入 + if ($response instanceof \Illuminate\Http\JsonResponse) { + $content = $response->getContent(); + $data = json_decode($content, true); - // 在关联数组中添加 code 字段 - // $data['code'] = 200; - $data['code'] = $response->getStatusCode(); + $data['code'] = $response->getStatusCode(); - $modifiedContent = json_encode($data,JSON_UNESCAPED_UNICODE); // 编码修改后的关联数组为 JSON 字符串 - $response->setContent($modifiedContent); + $modifiedContent = json_encode($data,JSON_UNESCAPED_UNICODE); + $response->setContent($modifiedContent); + } if(env('REQUEST_LOG') and $response->getStatusCode()==200){ //如果返回状态为200进行log $ip=self::getTrustedProxiesIp(); //真实ip $request_header=$request->header(); //请求头 // dd($response); - $response_data = $response->getData(); //返回data,json格式 + $response_data = []; + if ($response instanceof \Illuminate\Http\JsonResponse) { + $response_data = $response->getData(); //返回data,json格式 + } else { + $response_data = $response->getContent(); + } $post_data=$request->post(); //post请求数据 $get_data=$request->query(); //get请求 $request_url=$request->getPathInfo();//访问的接口地址 diff --git a/Laravel/app/Services/Admin/YeWu/CheckItemService.php b/Laravel/app/Services/Admin/YeWu/CheckItemService.php index 20ffad6..b1d270f 100644 --- a/Laravel/app/Services/Admin/YeWu/CheckItemService.php +++ b/Laravel/app/Services/Admin/YeWu/CheckItemService.php @@ -83,11 +83,114 @@ public function GetItemList($searchInfo,$page,$pageSize){ ->join('s_devices', 's_check_item_device.device_id', '=', 's_devices.id') ->select('s_devices.*') ->where('item_id',$v->id)->get(); + // 解析原始科室 + $deptNames = []; + if (!empty($v->hisExecDepts)) { + $deptCodes = json_decode($v->hisExecDepts, true); + if (!empty($deptCodes) && is_array($deptCodes)) { + $deptNames = DB::table('s_department') + ->whereIn('department_number', $deptCodes) + ->pluck('department_name') + ->toArray(); + } + } + $list[$k]->his_exec_dept_names = $deptNames; } return \Yz::Return(true, '查询成功', ['list'=>$list,'count'=>$count]); } + //导出检查项目列表 + public function ExportItemList($searchInfo) + { + $small_id=[]; + $list=DB::table('s_check_item')->where('s_check_item.is_del', 0)->whereNotNull('sheetType')->where('sheetType', '!=', ''); + if(empty($searchInfo['bigClass'])!==true and empty($searchInfo['smallClass'])===true){ + $small_id= DB::table('s_check_item_class')->where(['pid'=>$searchInfo['bigClass'],'is_del'=>0])->pluck('id')->toArray(); + $list= $list->whereIn('item_class_id',$small_id); + } + if(!empty($searchInfo['smallClass'])){ + $small_id[0]=$searchInfo['smallClass']; + $list= $list->whereIn('item_class_id',$small_id); + } + if(!empty($searchInfo['name'])){ + $list->where(function($query) use ($searchInfo) { + $query->where('item_name', 'like', '%'.$searchInfo['name'].'%') + ->orWhere('item_code', 'like', '%'.$searchInfo['name'].'%'); + }); + } + if (isset($searchInfo['deviceBind']) && $searchInfo['deviceBind'] !== '') { + if ($searchInfo['deviceBind'] == 1) { + $list->whereIn('s_check_item.id', function($q) { + $q->select('item_id')->from('s_check_item_device'); + }); + } elseif ($searchInfo['deviceBind'] == 0) { + $list->whereNotIn('s_check_item.id', function($q) { + $q->select('item_id')->from('s_check_item_device'); + }); + } + } + if (isset($searchInfo['hisExecDepts']) && $searchInfo['hisExecDepts'] !== '') { + if ($searchInfo['hisExecDepts'] == 1) { + $list->whereNotNull('hisExecDepts')->where('hisExecDepts', '!=', ''); + } elseif ($searchInfo['hisExecDepts'] == 0) { + $list->where(function($q) { + $q->whereNull('hisExecDepts')->orWhere('hisExecDepts', ''); + }); + } + } + $list = $list->orderBy('s_check_item.id')->get(); + + // 构建 HTML 表格 + $html = '
| 检查项目代码 | 检查项目名称 | HIS执行科室 | 关联排班 |
|---|---|---|---|
| '.$v->item_code.' | '; + $html .= ''.$v->item_name.' | '; + $html .= ''.($deptNames[0] ?? '').' | '; + $html .= ''.($deviceNames[0] ?? '').' | '; + $html .= '
| '.($deptNames[$i] ?? '').' | '; + $html .= ''.($deviceNames[$i] ?? '').' | '; + $html .= '