'EXAMSHEETTYPE' ]; $His = new HisController(); $res = $His::Get("查询所有检查项目分类", $data); $success_count=0; if ($res['code'] == 200) { $res_data = $res['data']; foreach ($res_data as $data_k => $data_v) { $type= DB::table('s_check_item_class')->where(['consInfoCode' => $data_v['consInfoCode']])->first(); $data=[ 'item_class_name'=> $data_v['consInfoName'], 'pid'=> 1, 'CTC_Code'=> $data_v['consInfoName'], 'CTC_Desc'=> $data_v['consInfoName'], 'CTC_Status'=> 1, 'consInfoCode'=> $data_v['consInfoCode'], ]; if(!!$type){ $u= DB::table('s_check_item_class')->where(['id'=>$type->id])->update([ 'item_class_name'=> $data_v['consInfoName'], 'CTC_Code'=> $data_v['consInfoName'], 'CTC_Desc'=> $data_v['consInfoName'], ]); }else{ $u= DB::table('s_check_item_class')->insert($data); } if($u) $success_count++; } } return \Yz::JsonReturn(true,"更新完成",['success_count'=>$success_count]); } public function UpdateCheckItem(){ $termClassId = request('termClassId'); if(!isset($termClassId)){ return \Yz::echoError1('类别id不能为空'); } $data=[]; $where=[]; if($termClassId<>'all'){ //155为检查项目 不要使用all $data=[ 'termClassId' => $termClassId, ]; } $His = new HisController(); $res = $His::Get("查询非药品列表", $data); if($res['code']==200){ $res_data=$res['data']; if(isset($res_data['list']) and !empty($res_data['list'])){ $db_data=DB::table('s_check_item')->get();//库里的数据 //根据 接收数据的undrugId,和库里的item_code进行比对,如果库里存在则更新,如果库里没有则添加,如果库里有但是接收数据里没有则在库里标记is_del=0 $db_map = []; foreach ($db_data as $db_item) { $db_map[$db_item->item_code] = $db_item; } // 用于记录接收到的数据中的 item_code,方便后面判断哪些需要删除 $received_ids = []; foreach ($res_data['list'] as $item) { // 假设远程返回字段是 undrugId 和 undrugName,对应数据库字段是 item_code 和 item_name $item_code = $item['undrugId']; $item_name = $item['termName']; // 添加到接收 ID 列表 $received_ids[] = $item_code; $item_class_id=null; $class_type= DB::table('s_check_item_class')->where(['consInfoCode'=>$item['sheetType']])->first(); if($class_type and !empty($item['sheetType'])){ $item_class_id=$class_type->id; } $department_arr=[]; //优先取默认科室,如果存在默认则忽略范围科室。2025-06-24 与叶工微信群沟通 if(isset($item['defaultExecDepts']) and !empty($item['defaultExecDepts'])){ $department_arr=[$item['defaultExecDepts']]; }else{ if(isset($item['execDepts']) and !empty($item['execDepts'])){ foreach ($item['execDepts'] as $dept) { $department_arr[]=$dept['code']; } } } // 快速查找是否已存在该 item_code if (isset($db_map[$item_code])) { // 存在则更新 DB::table('s_check_item') ->where('item_code', $item_code) ->update([ 'item_class_id'=>$item_class_id, 'sheetType'=>$item['sheetType'], 'item_name' => $item_name, 'item_desc' => $item_name, 'is_del' => 0, // 取消删除标记 'hisExecDepts'=>json_encode($department_arr, JSON_UNESCAPED_UNICODE), ]); } else { // 不存在则插入新记录 DB::table('s_check_item')->insert([ 'item_class_id'=>$item_class_id, 'sheetType'=>$item['sheetType'], 'item_code' => $item_code, 'item_name' => $item_name, 'item_desc' => $item_name, 'reservation_method' =>'0,1,2,3,4', 'limosis' =>0, 'check_time' =>0, 'hisExecDepts'=>json_encode($department_arr, JSON_UNESCAPED_UNICODE), ]); $this->updateBindDrivers($item_code,$department_arr); } } // 处理数据库中存在但远程没有返回的数据,标记为删除 foreach ($db_map as $item_code => $db_item) { if (!in_array($item_code, $received_ids)) { DB::table('s_check_item') ->where('item_code', $item_code) ->update([ 'is_del' => 1 ]); } } return \Yz::return(true,'更新检查项目成功',[]); }else{ return \Yz::echoError1('His接口返回数据为空'); } }else{ return \Yz::echoError1('更新失败'); } } //绑定设备 public function updateBindDrivers($item_code,$department_arr) { $iteminfo=DB::table('s_check_item')->where('item_code',$item_code)->first(); $departments = DB::table('s_department')->whereIn('department_number',$department_arr)->get(); $department_ids=[]; foreach ($departments as $department) { $department_ids[]=$department->id; } if(count($department_ids)>0 and !!$iteminfo){ $devices=DB::table('s_department_resources_device')->whereIn('department_id',$department_ids)->pluck('device_id')->toArray(); //删除库里项目和设备绑定关系 DB::table('s_check_item_device')->where(['item_id'=>$iteminfo->id])->whereIn('device_id',$devices)->delete(); $data=[]; foreach ($devices as $device) { $data[]=[ 'item_id' => $iteminfo->id, 'device_id' => $device, ]; } if(count($devices)>0 and !!$iteminfo){ //插入表 DB::table('s_check_item_device')->insert($data); } } } }