| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- package org.example.controller;
- import org.example.entity.HospitalBed;
- import org.example.service.HospitalBedService;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.*;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.stream.Collectors;
- @RestController
- @RequestMapping("/api/beds")
- public class HospitalBedController {
-
- @Autowired
- private HospitalBedService hospitalBedService;
-
- /**
- * 获取所有床位列表(支持按名称模糊查询和启用状态筛选)
- * @param code 床位代码(精确匹配)
- * @param name 床位名称(模糊匹配)
- * @param belongDept 所属科室(模糊匹配)
- * @param belongWard 所属病区(模糊匹配)
- * @param enabled 是否启用
- * @return 床位列表
- */
- @GetMapping
- public Map<String, Object> getAllBeds(@RequestParam(required = false) String code,
- @RequestParam(required = false) String name,
- @RequestParam(required = false) String belongDept,
- @RequestParam(required = false) String belongWard,
- @RequestParam(required = false) Boolean enabled) {
- Map<String, Object> result = new HashMap<>();
- try {
- List<HospitalBed> allBeds = hospitalBedService.findAll();
-
- // 如果提供了床位代码参数,则进行精确匹配
- if (code != null && !code.isEmpty()) {
- allBeds = allBeds.stream()
- .filter(bed -> bed.getCode() != null && bed.getCode().equals(code))
- .collect(Collectors.toList());
- }
-
- // 如果提供了名称参数,则进行模糊匹配
- if (name != null && !name.isEmpty()) {
- allBeds = allBeds.stream()
- .filter(bed -> bed.getName() != null && bed.getName().contains(name))
- .collect(Collectors.toList());
- }
-
- // 如果提供了所属科室参数,则进行模糊匹配
- if (belongDept != null && !belongDept.isEmpty()) {
- allBeds = allBeds.stream()
- .filter(bed -> bed.getBelongDept() != null && bed.getBelongDept().contains(belongDept))
- .collect(Collectors.toList());
- }
-
- // 如果提供了所属病区参数,则进行模糊匹配
- if (belongWard != null && !belongWard.isEmpty()) {
- allBeds = allBeds.stream()
- .filter(bed -> bed.getBelongWard() != null && bed.getBelongWard().contains(belongWard))
- .collect(Collectors.toList());
- }
-
- // 如果提供了启用状态参数,则进行筛选
- if (enabled != null) {
- allBeds = allBeds.stream()
- .filter(bed -> enabled.equals(bed.getEnabled()))
- .collect(Collectors.toList());
- }
-
- result.put("success", true);
- result.put("data", allBeds);
- } catch (Exception e) {
- result.put("success", false);
- result.put("message", "获取床位列表失败: " + e.getMessage());
- }
- return result;
- }
-
- /**
- * 根据床位代码获取床位信息
- * @param code 床位代码
- * @return 床位信息
- */
- @GetMapping("/{code}")
- public Map<String, Object> getBedByCode(@PathVariable String code) {
- Map<String, Object> result = new HashMap<>();
- try {
- HospitalBed bed = hospitalBedService.findByCode(code);
- if (bed != null) {
- result.put("success", true);
- result.put("data", bed);
- } else {
- result.put("success", false);
- result.put("message", "未找到该床位信息");
- }
- } catch (Exception e) {
- result.put("success", false);
- result.put("message", "获取床位信息失败: " + e.getMessage());
- }
- return result;
- }
-
- /**
- * 添加新床位
- * @param bed 床位信息
- * @return 操作结果
- */
- @PostMapping
- public Map<String, Object> addBed(@RequestBody HospitalBed bed) {
- Map<String, Object> result = new HashMap<>();
- try {
- // 检查代码是否已存在
- if (hospitalBedService.findByCode(bed.getCode()) != null) {
- result.put("success", false);
- result.put("message", "床位代码已存在");
- return result;
- }
-
- hospitalBedService.addBed(bed);
- result.put("success", true);
- result.put("message", "床位添加成功");
- } catch (Exception e) {
- result.put("success", false);
- result.put("message", "床位添加失败: " + e.getMessage());
- }
- return result;
- }
-
- /**
- * 更新床位信息
- * @param code 床位代码
- * @param bed 床位信息
- * @return 操作结果
- */
- @PutMapping("/{code}")
- public Map<String, Object> updateBed(@PathVariable String code, @RequestBody HospitalBed bed) {
- Map<String, Object> result = new HashMap<>();
- try {
- // 检查新代码是否已存在(仅当代码确实改变时)
- if (!code.equals(bed.getCode())) {
- boolean exists = hospitalBedService.existsByCodeExcluding(bed.getCode(), code);
- if (exists) {
- result.put("success", false);
- result.put("message", "床位代码已存在");
- return result;
- }
- }
-
- // 更新床位信息
- hospitalBedService.updateBed(code, bed);
- result.put("success", true);
- result.put("message", "床位更新成功");
- } catch (Exception e) {
- e.printStackTrace(); // 打印异常堆栈以便调试
- result.put("success", false);
- result.put("message", "床位更新失败: " + e.getMessage());
- }
- return result;
- }
-
- /**
- * 删除床位
- * @param code 床位代码
- * @return 操作结果
- */
- @DeleteMapping("/{code}")
- public Map<String, Object> deleteBed(@PathVariable String code) {
- Map<String, Object> result = new HashMap<>();
- try {
- hospitalBedService.deleteBed(code);
- result.put("success", true);
- result.put("message", "床位删除成功");
- } catch (Exception e) {
- result.put("success", false);
- result.put("message", "床位删除失败: " + e.getMessage());
- }
- return result;
- }
- }
|