package cn.lihu.jh.module.ecg.controller.admin.queue; import cn.lihu.jh.framework.common.exception.ErrorCode; import cn.lihu.jh.framework.security.core.util.SecurityFrameworkUtils; import cn.lihu.jh.module.ecg.controller.admin.room.vo.RoomRespVO; import cn.lihu.jh.module.ecg.dal.dataobject.room.RoomResVO; import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; import org.springframework.security.access.prepost.PreAuthorize; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Operation; import java.util.*; import java.io.IOException; import cn.lihu.jh.framework.common.pojo.PageParam; import cn.lihu.jh.framework.common.pojo.PageResult; import cn.lihu.jh.framework.common.pojo.CommonResult; import cn.lihu.jh.framework.common.util.object.BeanUtils; import static cn.lihu.jh.framework.common.exception.enums.GlobalErrorCodeConstants.SUCCESS; import static cn.lihu.jh.framework.common.pojo.CommonResult.error; import static cn.lihu.jh.framework.common.pojo.CommonResult.success; import cn.lihu.jh.framework.excel.core.util.ExcelUtils; import cn.lihu.jh.framework.apilog.core.annotation.ApiAccessLog; import static cn.lihu.jh.framework.apilog.core.enums.OperateTypeEnum.*; import cn.lihu.jh.module.ecg.controller.admin.queue.vo.*; import cn.lihu.jh.module.ecg.dal.dataobject.queue.QueueDO; import cn.lihu.jh.module.ecg.service.queue.QueueService; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import javax.annotation.Resource; @Tag(name = "管理后台 - 排队") @RestController @RequestMapping("/ecg/queue") @Validated public class queueController { @Resource private QueueService queueService; @PostMapping("/create") @Operation(summary = "创建排队") @PreAuthorize("@ss.hasPermission('ecg:queue:create')") public CommonResult createqueue(@Valid @RequestBody QueueSaveReqVO createReqVO) { return success(queueService.createqueue(createReqVO)); } @PutMapping("/update") @Operation(summary = "更新排队") @PreAuthorize("@ss.hasPermission('ecg:queue:update')") public CommonResult updatequeue(@Valid @RequestBody QueueSaveReqVO updateReqVO) { queueService.updatequeue(updateReqVO); return success(true); } @DeleteMapping("/delete") @Operation(summary = "删除排队") @Parameter(name = "id", description = "编号", required = true) @PreAuthorize("@ss.hasPermission('ecg:queue:delete')") public CommonResult deletequeue(@RequestParam("id") Integer id) { queueService.deletequeue(id); return success(true); } @GetMapping("/get") @Operation(summary = "获得排队") @Parameter(name = "id", description = "编号", required = true, example = "1024") @PreAuthorize("@ss.hasPermission('ecg:queue:query')") public CommonResult getqueue(@RequestParam("id") Integer id) { QueueDO queue = queueService.getqueue(id); return success(BeanUtils.toBean(queue, QueueRespVO.class)); } @GetMapping("/page") @Operation(summary = "获得排队分页") @PreAuthorize("@ss.hasPermission('ecg:queue:query')") public CommonResult> getqueuePage(@Valid QueuePageReqVO pageReqVO) { PageResult pageResult = queueService.getqueuePage(pageReqVO); return success(BeanUtils.toBean(pageResult, QueueRespVO.class)); } @GetMapping("/export-excel") @Operation(summary = "导出排队 Excel") @PreAuthorize("@ss.hasPermission('ecg:queue:export')") @ApiAccessLog(operateType = EXPORT) public void exportqueueExcel(@Valid QueuePageReqVO pageReqVO, HttpServletResponse response) throws IOException { pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); List list = queueService.getqueuePage(pageReqVO).getList(); // 导出 Excel ExcelUtils.write(response, "排队.xls", "数据", QueueRespVO.class, BeanUtils.toBean(list, QueueRespVO.class)); } @GetMapping("/bed-open") @Operation(summary = "工位开通") @PreAuthorize("@ss.hasPermission('ecg:queue:bedcontrol')") public CommonResult bedOpen( @RequestParam("roomId") Long roomId, @RequestParam("bedNo") String bedNo) { ErrorCode result = queueService.startBedOpen(roomId, bedNo); if (result.equals(SUCCESS)) return success(0); return error(result); } @GetMapping("/bed-close") @Operation(summary = "工位关闭") @PreAuthorize("@ss.hasPermission('ecg:queue:bedcontrol')") public CommonResult bedClose( @RequestParam("roomId") Long roomId, @RequestParam("bedNo") String bedNo) { ErrorCode result = queueService.startBedClose(roomId, bedNo); if (result.equals(SUCCESS)) return success(0); return error(result); } @GetMapping("/bed-doctor-pause") @Operation(summary = "医生暂停") @PreAuthorize("@ss.hasPermission('ecg:queue:bedcontrol')") public CommonResult bedPause( @RequestParam("roomId") Long roomId, @RequestParam("bedNo") String bedNo) { Long userId = SecurityFrameworkUtils.getLoginUserId(); String userNickname = SecurityFrameworkUtils.getLoginUserNickname(); ErrorCode result = queueService.startBedDoctorPause(roomId, bedNo, userId, userNickname); if (result.equals(SUCCESS)) return success(SUCCESS.getCode()); return error(result); } @GetMapping("/bed-doctor-resume") @Operation(summary = "医生暂停") @PreAuthorize("@ss.hasPermission('ecg:queue:bedcontrol')") public CommonResult bedResume( @RequestParam("roomId") Long roomId, @RequestParam("bedNo") String bedNo) { Long userId = SecurityFrameworkUtils.getLoginUserId(); String userNickname = SecurityFrameworkUtils.getLoginUserNickname(); ErrorCode result = queueService.startBedDoctorResume(roomId, bedNo, userId, userNickname); if (result.equals(SUCCESS)) return success(SUCCESS.getCode()); return error(result); } @GetMapping("/bed-doctor-on") @Operation(summary = "医生入座") @PreAuthorize("@ss.hasPermission('ecg:queue:bedcontrol')") public CommonResult bedDoctorOn( @RequestParam("roomId") Long roomId, @RequestParam("bedNo") String bedNo) { Long userId = SecurityFrameworkUtils.getLoginUserId(); String userNickname = SecurityFrameworkUtils.getLoginUserNickname(); ErrorCode result = queueService.startBedDoctorOn(roomId, bedNo, userId, userNickname); if (result.equals(SUCCESS)) return success(0); return error(result); } @GetMapping("/bed-doctor-off") @Operation(summary = "医生离座") @PreAuthorize("@ss.hasPermission('ecg:queue:bedcontrol')") public CommonResult bedDoctorOff( @RequestParam("roomId") Long roomId, @RequestParam("bedNo") String bedNo) { Long userId = SecurityFrameworkUtils.getLoginUserId(); String userNickname = SecurityFrameworkUtils.getLoginUserNickname(); ErrorCode result = queueService.startBedDoctorOff(roomId, bedNo, userId, userNickname); if (result.equals(SUCCESS)) return success(0); return error(result); } @GetMapping("/bed-doctor-get") @Operation(summary = "医生工位获取") @PreAuthorize("@ss.hasPermission('ecg:queue:bedcontrol')") public CommonResult bedDoctorGet( @RequestParam("roomId") Long roomId, @RequestParam("bedNo") String bedNo) { Long userId = SecurityFrameworkUtils.getLoginUserId(); CommonResult result = queueService.getRoom(roomId, bedNo, userId); return result; } @GetMapping("/startbiz") @Operation(summary = "手动开诊") @PreAuthorize("@ss.hasPermission('ecg:queue:setting')") public CommonResult startBiz() { queueService.startBiz(); return success(0); } @GetMapping("/patient-jump") @Operation(summary = "插队") @Parameter(name = "patId", description = "患者编号", required = true, example = "B2") @PreAuthorize("@ss.hasPermission('ecg:queue:jump')") public CommonResult queueJump( @RequestParam("patId") String patId, @RequestParam("jumpFlag") Byte jumpFlag) { Integer result = queueService.patientJump(patId, jumpFlag); if (null == result || 0 == result) return error( new ErrorCode(201, "找不到患者") ); return success("success"); } }