HospitalBedController.java 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. package org.example.controller;
  2. import org.example.entity.HospitalBed;
  3. import org.example.service.HospitalBedService;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.web.bind.annotation.*;
  6. import java.util.HashMap;
  7. import java.util.List;
  8. import java.util.Map;
  9. import java.util.stream.Collectors;
  10. @RestController
  11. @RequestMapping("/api/beds")
  12. public class HospitalBedController {
  13. @Autowired
  14. private HospitalBedService hospitalBedService;
  15. /**
  16. * 获取所有床位列表(支持按名称模糊查询和启用状态筛选)
  17. * @param code 床位代码(精确匹配)
  18. * @param name 床位名称(模糊匹配)
  19. * @param belongDept 所属科室(模糊匹配)
  20. * @param belongWard 所属病区(模糊匹配)
  21. * @param enabled 是否启用
  22. * @return 床位列表
  23. */
  24. @GetMapping
  25. public Map<String, Object> getAllBeds(@RequestParam(required = false) String code,
  26. @RequestParam(required = false) String name,
  27. @RequestParam(required = false) String belongDept,
  28. @RequestParam(required = false) String belongWard,
  29. @RequestParam(required = false) Boolean enabled) {
  30. Map<String, Object> result = new HashMap<>();
  31. try {
  32. List<HospitalBed> allBeds = hospitalBedService.findAll();
  33. // 如果提供了床位代码参数,则进行精确匹配
  34. if (code != null && !code.isEmpty()) {
  35. allBeds = allBeds.stream()
  36. .filter(bed -> bed.getCode() != null && bed.getCode().equals(code))
  37. .collect(Collectors.toList());
  38. }
  39. // 如果提供了名称参数,则进行模糊匹配
  40. if (name != null && !name.isEmpty()) {
  41. allBeds = allBeds.stream()
  42. .filter(bed -> bed.getName() != null && bed.getName().contains(name))
  43. .collect(Collectors.toList());
  44. }
  45. // 如果提供了所属科室参数,则进行模糊匹配
  46. if (belongDept != null && !belongDept.isEmpty()) {
  47. allBeds = allBeds.stream()
  48. .filter(bed -> bed.getBelongDept() != null && bed.getBelongDept().contains(belongDept))
  49. .collect(Collectors.toList());
  50. }
  51. // 如果提供了所属病区参数,则进行模糊匹配
  52. if (belongWard != null && !belongWard.isEmpty()) {
  53. allBeds = allBeds.stream()
  54. .filter(bed -> bed.getBelongWard() != null && bed.getBelongWard().contains(belongWard))
  55. .collect(Collectors.toList());
  56. }
  57. // 如果提供了启用状态参数,则进行筛选
  58. if (enabled != null) {
  59. allBeds = allBeds.stream()
  60. .filter(bed -> enabled.equals(bed.getEnabled()))
  61. .collect(Collectors.toList());
  62. }
  63. result.put("success", true);
  64. result.put("data", allBeds);
  65. } catch (Exception e) {
  66. result.put("success", false);
  67. result.put("message", "获取床位列表失败: " + e.getMessage());
  68. }
  69. return result;
  70. }
  71. /**
  72. * 根据床位代码获取床位信息
  73. * @param code 床位代码
  74. * @return 床位信息
  75. */
  76. @GetMapping("/{code}")
  77. public Map<String, Object> getBedByCode(@PathVariable String code) {
  78. Map<String, Object> result = new HashMap<>();
  79. try {
  80. HospitalBed bed = hospitalBedService.findByCode(code);
  81. if (bed != null) {
  82. result.put("success", true);
  83. result.put("data", bed);
  84. } else {
  85. result.put("success", false);
  86. result.put("message", "未找到该床位信息");
  87. }
  88. } catch (Exception e) {
  89. result.put("success", false);
  90. result.put("message", "获取床位信息失败: " + e.getMessage());
  91. }
  92. return result;
  93. }
  94. /**
  95. * 添加新床位
  96. * @param bed 床位信息
  97. * @return 操作结果
  98. */
  99. @PostMapping
  100. public Map<String, Object> addBed(@RequestBody HospitalBed bed) {
  101. Map<String, Object> result = new HashMap<>();
  102. try {
  103. // 检查代码是否已存在
  104. if (hospitalBedService.findByCode(bed.getCode()) != null) {
  105. result.put("success", false);
  106. result.put("message", "床位代码已存在");
  107. return result;
  108. }
  109. hospitalBedService.addBed(bed);
  110. result.put("success", true);
  111. result.put("message", "床位添加成功");
  112. } catch (Exception e) {
  113. result.put("success", false);
  114. result.put("message", "床位添加失败: " + e.getMessage());
  115. }
  116. return result;
  117. }
  118. /**
  119. * 更新床位信息
  120. * @param code 床位代码
  121. * @param bed 床位信息
  122. * @return 操作结果
  123. */
  124. @PutMapping("/{code}")
  125. public Map<String, Object> updateBed(@PathVariable String code, @RequestBody HospitalBed bed) {
  126. Map<String, Object> result = new HashMap<>();
  127. try {
  128. // 检查新代码是否已存在(仅当代码确实改变时)
  129. if (!code.equals(bed.getCode())) {
  130. boolean exists = hospitalBedService.existsByCodeExcluding(bed.getCode(), code);
  131. if (exists) {
  132. result.put("success", false);
  133. result.put("message", "床位代码已存在");
  134. return result;
  135. }
  136. }
  137. // 更新床位信息
  138. hospitalBedService.updateBed(code, bed);
  139. result.put("success", true);
  140. result.put("message", "床位更新成功");
  141. } catch (Exception e) {
  142. e.printStackTrace(); // 打印异常堆栈以便调试
  143. result.put("success", false);
  144. result.put("message", "床位更新失败: " + e.getMessage());
  145. }
  146. return result;
  147. }
  148. /**
  149. * 删除床位
  150. * @param code 床位代码
  151. * @return 操作结果
  152. */
  153. @DeleteMapping("/{code}")
  154. public Map<String, Object> deleteBed(@PathVariable String code) {
  155. Map<String, Object> result = new HashMap<>();
  156. try {
  157. hospitalBedService.deleteBed(code);
  158. result.put("success", true);
  159. result.put("message", "床位删除成功");
  160. } catch (Exception e) {
  161. result.put("success", false);
  162. result.put("message", "床位删除失败: " + e.getMessage());
  163. }
  164. return result;
  165. }
  166. }