WardAreaController.java 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. package org.example.controller;
  2. import org.example.entity.PageResult;
  3. import org.example.entity.WardArea;
  4. import org.example.service.WardAreaService;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.web.bind.annotation.*;
  7. import java.util.ArrayList;
  8. import java.util.HashMap;
  9. import java.util.List;
  10. import java.util.Map;
  11. /**
  12. * 病区控制器
  13. */
  14. @RestController
  15. @RequestMapping("/api/wardarea")
  16. public class WardAreaController {
  17. @Autowired
  18. private WardAreaService wardAreaService;
  19. /**
  20. * 查询病区列表(支持分页)
  21. */
  22. @GetMapping("/list")
  23. public Map<String, Object> list(
  24. @RequestParam(required = false) String name,
  25. @RequestParam(required = false) String glkeshi,
  26. @RequestParam(required = false) Integer enabled,
  27. @RequestParam(required = false, defaultValue = "1") Integer page,
  28. @RequestParam(required = false, defaultValue = "10") Integer pageSize) {
  29. Map<String, Object> result = new HashMap<>();
  30. List<WardArea> list = wardAreaService.findList(name, glkeshi, enabled);
  31. // 分页处理
  32. PageResult<WardArea> pageResult = PageResult.of(list, page, pageSize);
  33. result.put("code", 200);
  34. result.put("data", pageResult);
  35. return result;
  36. }
  37. /**
  38. * 获取所有关联科室列表(用于下拉框)
  39. */
  40. @GetMapping("/glkeshi-list")
  41. public Map<String, Object> glkeshiList() {
  42. Map<String, Object> result = new HashMap<>();
  43. List<String> list = wardAreaService.findAllGlkeshi();
  44. result.put("code", 200);
  45. result.put("data", list);
  46. return result;
  47. }
  48. /**
  49. * 获取病区详情
  50. */
  51. @GetMapping("/detail/{id}")
  52. public Map<String, Object> detail(@PathVariable Long id) {
  53. Map<String, Object> result = new HashMap<>();
  54. WardArea wardArea = wardAreaService.findById(id);
  55. if (wardArea != null) {
  56. result.put("code", 200);
  57. result.put("data", wardArea);
  58. } else {
  59. result.put("code", 404);
  60. result.put("message", "病区不存在");
  61. }
  62. return result;
  63. }
  64. /**
  65. * 保存病区
  66. */
  67. @PostMapping("/save")
  68. public Map<String, Object> save(@RequestBody WardArea wardArea) {
  69. Map<String, Object> result = new HashMap<>();
  70. try {
  71. wardAreaService.save(wardArea);
  72. result.put("code", 200);
  73. result.put("message", "保存成功");
  74. } catch (Exception e) {
  75. result.put("code", 500);
  76. result.put("message", "保存失败:" + e.getMessage());
  77. }
  78. return result;
  79. }
  80. /**
  81. * 批量设置病区代码
  82. */
  83. @PostMapping("/batch-set-code")
  84. public Map<String, Object> batchSetCode(@RequestBody Map<String, Object> params,
  85. @RequestHeader(value = "X-User-Type", required = false) String userType) {
  86. Map<String, Object> result = new HashMap<>();
  87. // 权限校验:只有管理员才能设置病区代码
  88. if (!"admin".equals(userType)) {
  89. result.put("code", 403);
  90. result.put("message", "无权操作,只有管理员才能设置病区代码");
  91. return result;
  92. }
  93. try {
  94. @SuppressWarnings("unchecked")
  95. List<?> idList = (List<?>) params.get("ids");
  96. @SuppressWarnings("unchecked")
  97. List<String> codes = (List<String>) params.get("codes");
  98. if (idList == null || codes == null || idList.size() != codes.size()) {
  99. result.put("code", 400);
  100. result.put("message", "参数错误");
  101. return result;
  102. }
  103. // 将id转换为Long类型
  104. List<Long> ids = new ArrayList<>();
  105. for (Object id : idList) {
  106. if (id instanceof Integer) {
  107. ids.add(((Integer) id).longValue());
  108. } else if (id instanceof Long) {
  109. ids.add((Long) id);
  110. } else {
  111. ids.add(Long.parseLong(id.toString()));
  112. }
  113. }
  114. List<String> errors = wardAreaService.batchSetCode(ids, codes);
  115. if (errors.isEmpty()) {
  116. result.put("code", 200);
  117. result.put("message", "设置成功");
  118. } else {
  119. result.put("code", 200);
  120. result.put("message", "部分设置成功");
  121. result.put("errors", errors);
  122. }
  123. } catch (Exception e) {
  124. result.put("code", 500);
  125. result.put("message", "设置失败:" + e.getMessage());
  126. }
  127. return result;
  128. }
  129. /**
  130. * 清除缓存
  131. */
  132. @PostMapping("/clear-cache")
  133. public Map<String, Object> clearCache() {
  134. Map<String, Object> result = new HashMap<>();
  135. wardAreaService.clearCache();
  136. result.put("code", 200);
  137. result.put("message", "缓存已清除");
  138. return result;
  139. }
  140. /**
  141. * 删除病区
  142. */
  143. @DeleteMapping("/delete/{id}")
  144. public Map<String, Object> delete(@PathVariable Long id) {
  145. Map<String, Object> result = new HashMap<>();
  146. try {
  147. wardAreaService.deleteById(id);
  148. result.put("code", 200);
  149. result.put("message", "删除成功");
  150. } catch (Exception e) {
  151. result.put("code", 500);
  152. result.put("message", "删除失败:" + e.getMessage());
  153. }
  154. return result;
  155. }
  156. }