jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/ErrorCodeConstants.java
@@ -10,5 +10,5 @@ public interface ErrorCodeConstants { ErrorCode APPOINTMENT_NOT_EXISTS = new ErrorCode(1_010_000_000, "é¢çº¦ä¸åå¨"); ErrorCode ROOM_NOT_EXISTS = new ErrorCode(1_010_000_001, "è¯å®¤åè¯çåºä¸åå¨"); } jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/room/RoomController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,99 @@ package cn.lihu.jh.module.ecg.controller.admin.room; import cn.lihu.jh.module.ecg.controller.admin.room.vo.RoomPageReqVO; import cn.lihu.jh.module.ecg.controller.admin.room.vo.RoomRespVO; import cn.lihu.jh.module.ecg.controller.admin.room.vo.RoomSaveReqVO; import cn.lihu.jh.module.ecg.dal.dataobject.room.RoomDO; import cn.lihu.jh.module.ecg.service.room.RoomService; 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.pojo.CommonResult.success; import cn.lihu.jh.framework.excel.core.util.ExcelUtils; import cn.lihu.jh.framework.apilog.core.annotation.ApiAccessLog; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import static cn.lihu.jh.framework.apilog.core.enums.OperateTypeEnum.*; @Tag(name = "管çåå° - è¯å®¤åè¯çåº") @RestController @RequestMapping("/clinic/room") @Validated public class RoomController { @Resource private RoomService roomService; @PostMapping("/create") @Operation(summary = "å建è¯å®¤åè¯çåº") @PreAuthorize("@ss.hasPermission('clinic:room:create')") public CommonResult<Integer> createRoom(@Valid @RequestBody RoomSaveReqVO createReqVO) { return success(roomService.createRoom(createReqVO)); } @PutMapping("/update") @Operation(summary = "æ´æ°è¯å®¤åè¯çåº") @PreAuthorize("@ss.hasPermission('clinic:room:update')") public CommonResult<Boolean> updateRoom(@Valid @RequestBody RoomSaveReqVO updateReqVO) { roomService.updateRoom(updateReqVO); return success(true); } @DeleteMapping("/delete") @Operation(summary = "å é¤è¯å®¤åè¯çåº") @Parameter(name = "id", description = "ç¼å·", required = true) @PreAuthorize("@ss.hasPermission('clinic:room:delete')") public CommonResult<Boolean> deleteRoom(@RequestParam("id") Integer id) { roomService.deleteRoom(id); return success(true); } @GetMapping("/get") @Operation(summary = "è·å¾è¯å®¤åè¯çåº") @Parameter(name = "id", description = "ç¼å·", required = true, example = "1024") @PreAuthorize("@ss.hasPermission('clinic:room:query')") public CommonResult<RoomRespVO> getRoom(@RequestParam("id") Integer id) { RoomDO room = roomService.getRoom(id); return success(BeanUtils.toBean(room, RoomRespVO.class)); } @GetMapping("/page") @Operation(summary = "è·å¾è¯å®¤åè¯çåºå页") @PreAuthorize("@ss.hasPermission('clinic:room:query')") public CommonResult<PageResult<RoomRespVO>> getRoomPage(@Valid RoomPageReqVO pageReqVO) { PageResult<RoomDO> pageResult = roomService.getRoomPage(pageReqVO); return success(BeanUtils.toBean(pageResult, RoomRespVO.class)); } @GetMapping("/export-excel") @Operation(summary = "导åºè¯å®¤åè¯çåº Excel") @PreAuthorize("@ss.hasPermission('clinic:room:export')") @ApiAccessLog(operateType = EXPORT) public void exportRoomExcel(@Valid RoomPageReqVO pageReqVO, HttpServletResponse response) throws IOException { pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); List<RoomDO> list = roomService.getRoomPage(pageReqVO).getList(); // å¯¼åº Excel ExcelUtils.write(response, "è¯å®¤åè¯çåº.xls", "æ°æ®", RoomRespVO.class, BeanUtils.toBean(list, RoomRespVO.class)); } } jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/room/vo/RoomPageReqVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,28 @@ package cn.lihu.jh.module.ecg.controller.admin.room.vo; import lombok.*; import java.util.*; import io.swagger.v3.oas.annotations.media.Schema; import cn.lihu.jh.framework.common.pojo.PageParam; import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDateTime; import static cn.lihu.jh.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; @Schema(description = "管çåå° - è¯å®¤åè¯çåºå页 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class RoomPageReqVO extends PageParam { @Schema(description = "è¯å®¤ç¼å·") private String roomNo; @Schema(description = "è¯çåºç¼å·") private String bedNo; @Schema(description = "å建æ¶é´") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; } jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/room/vo/RoomRespVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,31 @@ package cn.lihu.jh.module.ecg.controller.admin.room.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDateTime; import com.alibaba.excel.annotation.*; @Schema(description = "管çåå° - è¯å®¤åè¯çåº Response VO") @Data @ExcelIgnoreUnannotated public class RoomRespVO { @Schema(description = "ç¼å·", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("ç¼å·") private Integer id; @Schema(description = "è¯å®¤ç¼å·", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("è¯å®¤ç¼å·") private String roomNo; @Schema(description = "è¯çåºç¼å·", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("è¯çåºç¼å·") private String bedNo; @Schema(description = "å建æ¶é´", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("å建æ¶é´") private LocalDateTime createTime; } jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/room/vo/RoomSaveReqVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,24 @@ package cn.lihu.jh.module.ecg.controller.admin.room.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import javax.validation.constraints.NotEmpty; import java.util.*; @Schema(description = "管çåå° - è¯å®¤åè¯çåºæ°å¢/ä¿®æ¹ Request VO") @Data public class RoomSaveReqVO { private Integer id; @Schema(description = "è¯å®¤ç¼å·", requiredMode = Schema.RequiredMode.REQUIRED) @NotEmpty(message = "è¯å®¤ç¼å·ä¸è½ä¸ºç©º") private String roomNo; @Schema(description = "è¯çåºç¼å·", requiredMode = Schema.RequiredMode.REQUIRED) @NotEmpty(message = "è¯çåºç¼å·ä¸è½ä¸ºç©º") private String bedNo; } jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/room/RoomDO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,39 @@ package cn.lihu.jh.module.ecg.dal.dataobject.room; import lombok.*; import java.util.*; import java.time.LocalDateTime; import java.time.LocalDateTime; import com.baomidou.mybatisplus.annotation.*; import cn.lihu.jh.framework.mybatis.core.dataobject.BaseDO; /** * è¯å®¤åè¯çåº DO * * @author èéæºç */ @TableName("clinic_room") @KeySequence("clinic_room_seq") // ç¨äº OracleãPostgreSQLãKingbaseãDB2ãH2 æ°æ®åºç主é®èªå¢ãå¦ææ¯ MySQL çæ°æ®åºï¼å¯ä¸åã @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) @Builder @NoArgsConstructor @AllArgsConstructor public class RoomDO extends BaseDO { /** * id */ @TableId private Integer id; /** * è¯å®¤ç¼å· */ private String roomNo; /** * è¯çåºç¼å· */ private String bedNo; } jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/room/RoomMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,29 @@ package cn.lihu.jh.module.ecg.dal.mysql.room; import java.util.*; import cn.lihu.jh.framework.common.pojo.PageResult; import cn.lihu.jh.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.lihu.jh.framework.mybatis.core.mapper.BaseMapperX; import cn.lihu.jh.module.ecg.controller.admin.room.vo.RoomPageReqVO; import cn.lihu.jh.module.ecg.dal.dataobject.room.RoomDO; import org.apache.ibatis.annotations.Mapper; /** * è¯å®¤åè¯çåº Mapper * * @author èéæºç */ @Mapper public interface RoomMapper extends BaseMapperX<RoomDO> { default PageResult<RoomDO> selectPage(RoomPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX<RoomDO>() .eqIfPresent(RoomDO::getRoomNo, reqVO.getRoomNo()) .eqIfPresent(RoomDO::getBedNo, reqVO.getBedNo()) .betweenIfPresent(RoomDO::getCreateTime, reqVO.getCreateTime()) .orderByDesc(RoomDO::getId)); } } jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/room/RoomService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,57 @@ package cn.lihu.jh.module.ecg.service.room; import java.util.*; import cn.lihu.jh.framework.common.pojo.PageResult; import cn.lihu.jh.framework.common.pojo.PageParam; import cn.lihu.jh.module.ecg.controller.admin.room.vo.RoomPageReqVO; import cn.lihu.jh.module.ecg.controller.admin.room.vo.RoomSaveReqVO; import cn.lihu.jh.module.ecg.dal.dataobject.room.RoomDO; import javax.validation.Valid; /** * è¯å®¤åè¯çåº Service æ¥å£ * * @author èéæºç */ public interface RoomService { /** * å建è¯å®¤åè¯çåº * * @param createReqVO åå»ºä¿¡æ¯ * @return ç¼å· */ Integer createRoom(@Valid RoomSaveReqVO createReqVO); /** * æ´æ°è¯å®¤åè¯çåº * * @param updateReqVO æ´æ°ä¿¡æ¯ */ void updateRoom(@Valid RoomSaveReqVO updateReqVO); /** * å é¤è¯å®¤åè¯çåº * * @param id ç¼å· */ void deleteRoom(Integer id); /** * è·å¾è¯å®¤åè¯çåº * * @param id ç¼å· * @return è¯å®¤åè¯çåº */ RoomDO getRoom(Integer id); /** * è·å¾è¯å®¤åè¯çåºå页 * * @param pageReqVO å页æ¥è¯¢ * @return è¯å®¤åè¯çåºå页 */ PageResult<RoomDO> getRoomPage(RoomPageReqVO pageReqVO); } jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/room/RoomServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,76 @@ package cn.lihu.jh.module.ecg.service.room; import cn.lihu.jh.module.ecg.controller.admin.room.vo.RoomPageReqVO; import cn.lihu.jh.module.ecg.controller.admin.room.vo.RoomSaveReqVO; import cn.lihu.jh.module.ecg.dal.dataobject.room.RoomDO; import cn.lihu.jh.module.ecg.dal.mysql.room.RoomMapper; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import org.springframework.transaction.annotation.Transactional; import java.util.*; import cn.lihu.jh.framework.common.pojo.PageResult; import cn.lihu.jh.framework.common.pojo.PageParam; import cn.lihu.jh.framework.common.util.object.BeanUtils; import javax.annotation.Resource; import static cn.lihu.jh.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.lihu.jh.module.ecg.enums.ErrorCodeConstants.ROOM_NOT_EXISTS; /** * è¯å®¤åè¯çåº Service å®ç°ç±» * * @author èéæºç */ @Service @Validated public class RoomServiceImpl implements RoomService { @Resource private RoomMapper roomMapper; @Override public Integer createRoom(RoomSaveReqVO createReqVO) { // æå ¥ RoomDO room = BeanUtils.toBean(createReqVO, RoomDO.class); roomMapper.insert(room); // è¿å return room.getId(); } @Override public void updateRoom(RoomSaveReqVO updateReqVO) { // æ ¡éªåå¨ validateRoomExists(updateReqVO.getId()); // æ´æ° RoomDO updateObj = BeanUtils.toBean(updateReqVO, RoomDO.class); roomMapper.updateById(updateObj); } @Override public void deleteRoom(Integer id) { // æ ¡éªåå¨ validateRoomExists(id); // å é¤ roomMapper.deleteById(id); } private void validateRoomExists(Integer id) { if (roomMapper.selectById(id) == null) { throw exception(ROOM_NOT_EXISTS); } } @Override public RoomDO getRoom(Integer id) { return roomMapper.selectById(id); } @Override public PageResult<RoomDO> getRoomPage(RoomPageReqVO pageReqVO) { return roomMapper.selectPage(pageReqVO); } } jh-module-ecg/jh-module-ecg-biz/src/main/resources/mapper/room/RoomMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,12 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="cn.lihu.jh.module.clinic.dal.mysql.room.RoomMapper"> <!-- ä¸è¬æ åµä¸ï¼å°½å¯è½ä½¿ç¨ Mapper è¿è¡ CRUD å¢å æ¹æ¥å³å¯ã æ æ³æ»¡è¶³çåºæ¯ï¼ä¾å¦è¯´å¤è¡¨å ³èæ¥è¯¢ï¼æä½¿ç¨ XML ç¼å SQLã 代ç çæå¨ææ¶åªçæ Mapper XML æä»¶æ¬èº«ï¼æ´å¤æ¨è MybatisX å¿«éå¼åæä»¶æ¥çææ¥è¯¢ã ææ¡£å¯è§ï¼https://www.iocoder.cn/MyBatis/x-plugins/ --> </mapper> sql/mysql/jh.sql
@@ -28,12 +28,12 @@ `book_check_type` tinyint(1) DEFAULT NULL COMMENT 'é¢çº¦æ£æ¥ç±»å', `book_src` tinyint(1) NOT NULL COMMENT 'é¢çº¦æ¥æºï¼Xç³»ç»ãæ¤å£«æå¨é¢çº¦', `sync_time` datetime DEFAULT NULL COMMENT '仿°æ®å¹³å°åæ¥æ¶é´', `tenant_id` int NOT NULL COMMENT 'ç§æ·ç¼å·', `creator` varchar(10) DEFAULT '' COMMENT 'å建è ', `create_time` datetime NOT NULL COMMENT 'å建æ¶é´', `updater` varchar(10) DEFAULT '' COMMENT 'æ´æ°è ', `update_time` datetime NOT NULL COMMENT 'æ´æ°æ¶é´', `deleted` bit(1) DEFAULT 0 COMMENT 'å 餿 è®°', `tenant_id` bigint NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='é¢çº¦è¡¨'; @@ -56,26 +56,31 @@ `expired` tinyint(1) NOT NULL COMMENT 'é¢çº¦è¿ææ è®°', `room_num` varchar(10) DEFAULT NULL COMMENT 'è¯å®¤ç¼å·', `bed_num` varchar(10) DEFAULT NULL COMMENT 'è¯çåºç¼å·', `create_time` datetime DEFAULT NULL COMMENT 'å建æ¶é´', `update_time` datetime DEFAULT NULL COMMENT 'æ´æ°æ¶é´', `tenant_id` bigint NOT NULL, `tenant_id` int NOT NULL COMMENT 'ç§æ·ç¼å·', `creator` varchar(10) DEFAULT '' COMMENT 'å建è ', `create_time` datetime NOT NULL COMMENT 'å建æ¶é´', `updater` varchar(10) DEFAULT '' COMMENT 'æ´æ°è ', `update_time` datetime NOT NULL COMMENT 'æ´æ°æ¶é´', `deleted` bit(1) DEFAULT 0 COMMENT 'å 餿 è®°', PRIMARY KEY (`id`), UNIQUE KEY `idx_seq_id` (`seq_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='æé表'; -- ---------------------------- -- Table structure for room_bed -- Table structure for clinic_room -- ---------------------------- DROP TABLE IF EXISTS `room_bed`; CREATE TABLE `room_bed` ( DROP TABLE IF EXISTS `clinic_room`; CREATE TABLE `clinic_room` ( `id` int NOT NULL AUTO_INCREMENT COMMENT 'id', `room_no` varchar(10) NOT NULL COMMENT 'è¯å®¤ç¼å·', `bed_no` varchar(10) NOT NULL COMMENT 'è¯çåºç¼å·', `tenant_id` int NOT NULL COMMENT 'ç§æ·ç¼å·', `creator` varchar(10) DEFAULT '' COMMENT 'å建è ', `create_time` datetime NOT NULL COMMENT 'å建æ¶é´', `updater` varchar(10) DEFAULT '' COMMENT 'æ´æ°è ', `update_time` datetime NOT NULL COMMENT 'æ´æ°æ¶é´', `deleted` bit(1) DEFAULT NULL COMMENT 'å 餿 è®°', `tenant_id` bigint NOT NULL, `deleted` bit(1) DEFAULT 0 COMMENT 'å 餿 è®°', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='è¯å®¤åè¯çåºè¡¨'; @@ -89,10 +94,10 @@ `category` varchar(45) DEFAULT NULL COMMENT 'åç±»å', `brand` varchar(45) DEFAULT NULL COMMENT 'åç', `model` varchar(45) DEFAULT NULL COMMENT 'åå·', `tenant_id` int NOT NULL COMMENT 'ç§æ·ç¼å·', `create_time` datetime NOT NULL COMMENT 'å建æ¶é´', `update_time` datetime NOT NULL COMMENT 'æ´æ°æ¶é´', `deleted` bit(1) DEFAULT NULL COMMENT 'å 餿 è®°', `tenant_id` bigint NOT NULL, `deleted` bit(1) DEFAULT 0 COMMENT 'å 餿 è®°', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='设å¤åå·è¡¨'; @@ -108,10 +113,10 @@ `brand` varchar(45) DEFAULT NULL COMMENT 'åç', `model` varchar(45) DEFAULT NULL COMMENT 'åå·', `purchase_date` date DEFAULT NULL COMMENT 'éè´æ¥æ', `tenant_id` int NOT NULL COMMENT 'ç§æ·ç¼å·', `create_time` datetime NOT NULL COMMENT 'å建æ¶é´', `update_time` datetime NOT NULL COMMENT 'æ´æ°æ¶é´', `deleted` bit(1) DEFAULT NULL COMMENT 'å 餿 è®°', `tenant_id` bigint NOT NULL, `deleted` bit(1) DEFAULT 0 COMMENT 'å 餿 è®°', PRIMARY KEY (`id`), UNIQUE KEY `dev_id_UNIQUE` (`dev_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='设å¤è¡¨'; @@ -132,10 +137,10 @@ `baseline` varchar(100) DEFAULT NULL COMMENT 'åºçº¿ç²', `detachment` varchar(100) DEFAULT NULL COMMENT 'è±ç¦»', `remark` varchar(100) DEFAULT NULL COMMENT '夿³¨', `tenant_id` int NOT NULL COMMENT 'ç§æ·ç¼å·', `create_time` datetime NOT NULL COMMENT 'å建æ¶é´', `update_time` datetime NOT NULL COMMENT 'æ´æ°æ¶é´', `deleted` bit(1) DEFAULT NULL, `tenant_id` bigint NOT NULL, `deleted` bit(1) DEFAULT 0, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='è£ æºææºè¡¨';