package org.example.controller; import org.example.entity.PageResult; import org.example.entity.WardArea; import org.example.service.WardAreaService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 病区控制器 */ @RestController @RequestMapping("/api/wardarea") public class WardAreaController { @Autowired private WardAreaService wardAreaService; /** * 查询病区列表(支持分页) */ @GetMapping("/list") public Map list( @RequestParam(required = false) String name, @RequestParam(required = false) String glkeshi, @RequestParam(required = false) Integer enabled, @RequestParam(required = false, defaultValue = "1") Integer page, @RequestParam(required = false, defaultValue = "10") Integer pageSize) { Map result = new HashMap<>(); List list = wardAreaService.findList(name, glkeshi, enabled); // 分页处理 PageResult pageResult = PageResult.of(list, page, pageSize); result.put("code", 200); result.put("data", pageResult); return result; } /** * 获取所有关联科室列表(用于下拉框) */ @GetMapping("/glkeshi-list") public Map glkeshiList() { Map result = new HashMap<>(); List list = wardAreaService.findAllGlkeshi(); result.put("code", 200); result.put("data", list); return result; } /** * 获取病区详情 */ @GetMapping("/detail/{id}") public Map detail(@PathVariable Long id) { Map result = new HashMap<>(); WardArea wardArea = wardAreaService.findById(id); if (wardArea != null) { result.put("code", 200); result.put("data", wardArea); } else { result.put("code", 404); result.put("message", "病区不存在"); } return result; } /** * 保存病区 */ @PostMapping("/save") public Map save(@RequestBody WardArea wardArea) { Map result = new HashMap<>(); try { wardAreaService.save(wardArea); result.put("code", 200); result.put("message", "保存成功"); } catch (Exception e) { result.put("code", 500); result.put("message", "保存失败:" + e.getMessage()); } return result; } /** * 批量设置病区代码 */ @PostMapping("/batch-set-code") public Map batchSetCode(@RequestBody Map params, @RequestHeader(value = "X-User-Type", required = false) String userType) { Map result = new HashMap<>(); // 权限校验:只有管理员才能设置病区代码 if (!"admin".equals(userType)) { result.put("code", 403); result.put("message", "无权操作,只有管理员才能设置病区代码"); return result; } try { @SuppressWarnings("unchecked") List idList = (List) params.get("ids"); @SuppressWarnings("unchecked") List codes = (List) params.get("codes"); if (idList == null || codes == null || idList.size() != codes.size()) { result.put("code", 400); result.put("message", "参数错误"); return result; } // 将id转换为Long类型 List ids = new ArrayList<>(); for (Object id : idList) { if (id instanceof Integer) { ids.add(((Integer) id).longValue()); } else if (id instanceof Long) { ids.add((Long) id); } else { ids.add(Long.parseLong(id.toString())); } } List errors = wardAreaService.batchSetCode(ids, codes); if (errors.isEmpty()) { result.put("code", 200); result.put("message", "设置成功"); } else { result.put("code", 200); result.put("message", "部分设置成功"); result.put("errors", errors); } } catch (Exception e) { result.put("code", 500); result.put("message", "设置失败:" + e.getMessage()); } return result; } /** * 清除缓存 */ @PostMapping("/clear-cache") public Map clearCache() { Map result = new HashMap<>(); wardAreaService.clearCache(); result.put("code", 200); result.put("message", "缓存已清除"); return result; } /** * 删除病区 */ @DeleteMapping("/delete/{id}") public Map delete(@PathVariable Long id) { Map result = new HashMap<>(); try { wardAreaService.deleteById(id); result.put("code", 200); result.put("message", "删除成功"); } catch (Exception e) { result.put("code", 500); result.put("message", "删除失败:" + e.getMessage()); } return result; } }