From b84a6ede57a0cf902a43a65d86e5b793997250b8 Mon Sep 17 00:00:00 2001
From: eight <641137800@qq.com>
Date: 星期五, 06 九月 2024 15:40:18 +0800
Subject: [PATCH] 装机拆机功能

---
 jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/ErrorCodeConstants.java                     |    1 
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/devrent/DevRentMapper.java              |   35 +++
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/devrent/vo/DevRentRespVO.java    |   59 ++++++
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devrent/DevRentService.java               |   56 ++++++
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/devrent/vo/DevRentPageReqVO.java |   51 +++++
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/devrent/vo/DevRentSaveReqVO.java |   46 +++++
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/devrent/DevRentDO.java             |   69 +++++++
 sql/mysql/jh.sql                                                                                                      |    4 
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/devrent/DevRentController.java   |   95 ++++++++++
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devrent/DevRentServiceImpl.java           |   75 ++++++++
 jh-module-ecg/jh-module-ecg-biz/src/main/resources/mapper/devrent/DevRentMapper.xml                                   |   12 +
 11 files changed, 502 insertions(+), 1 deletions(-)

diff --git a/jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/ErrorCodeConstants.java b/jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/ErrorCodeConstants.java
index e7ceaf4..dca119d 100644
--- a/jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/ErrorCodeConstants.java
+++ b/jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/ErrorCodeConstants.java
@@ -25,4 +25,5 @@
 
     ErrorCode DEV_MODEL_NOT_EXISTS = new ErrorCode(1_010_005_000, "璁惧鍨嬪彿涓嶅瓨鍦�");
     ErrorCode DEVICE_NOT_EXISTS = new ErrorCode(1_010_005_001,  "璁惧涓嶅瓨鍦�");
+    ErrorCode DEV_RENT_NOT_EXISTS = new ErrorCode(1_010_005_002, "绉熷�熶笉瀛樺湪");
 }
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/devrent/DevRentController.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/devrent/DevRentController.java
new file mode 100644
index 0000000..bd79b4f
--- /dev/null
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/devrent/DevRentController.java
@@ -0,0 +1,95 @@
+package cn.lihu.jh.module.ecg.controller.admin.devrent;
+
+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 static cn.lihu.jh.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.lihu.jh.module.ecg.controller.admin.devrent.vo.*;
+import cn.lihu.jh.module.ecg.dal.dataobject.devrent.DevRentDO;
+import cn.lihu.jh.module.ecg.service.devrent.DevRentService;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+@Tag(name = "绠$悊鍚庡彴 - 瑁呮満鎷嗘満")
+@RestController
+@RequestMapping("/ecg/dev-rent")
+@Validated
+public class DevRentController {
+
+    @Resource
+    private DevRentService devRentService;
+
+    @PostMapping("/create")
+    @Operation(summary = "鍒涘缓瑁呮満鎷嗘満")
+    @PreAuthorize("@ss.hasPermission('ecg:dev-rent:create')")
+    public CommonResult<Integer> createDevRent(@Valid @RequestBody DevRentSaveReqVO createReqVO) {
+        return success(devRentService.createDevRent(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "鏇存柊瑁呮満鎷嗘満")
+    @PreAuthorize("@ss.hasPermission('ecg:dev-rent:update')")
+    public CommonResult<Boolean> updateDevRent(@Valid @RequestBody DevRentSaveReqVO updateReqVO) {
+        devRentService.updateDevRent(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "鍒犻櫎瑁呮満鎷嗘満")
+    @Parameter(name = "id", description = "缂栧彿", required = true)
+    @PreAuthorize("@ss.hasPermission('ecg:dev-rent:delete')")
+    public CommonResult<Boolean> deleteDevRent(@RequestParam("id") Integer id) {
+        devRentService.deleteDevRent(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "鑾峰緱瑁呮満鎷嗘満")
+    @Parameter(name = "id", description = "缂栧彿", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('ecg:dev-rent:query')")
+    public CommonResult<DevRentRespVO> getDevRent(@RequestParam("id") Integer id) {
+        DevRentDO devRent = devRentService.getDevRent(id);
+        return success(BeanUtils.toBean(devRent, DevRentRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "鑾峰緱瑁呮満鎷嗘満鍒嗛〉")
+    @PreAuthorize("@ss.hasPermission('ecg:dev-rent:query')")
+    public CommonResult<PageResult<DevRentRespVO>> getDevRentPage(@Valid DevRentPageReqVO pageReqVO) {
+        PageResult<DevRentDO> pageResult = devRentService.getDevRentPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, DevRentRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "瀵煎嚭瑁呮満鎷嗘満 Excel")
+    @PreAuthorize("@ss.hasPermission('ecg:dev-rent:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportDevRentExcel(@Valid DevRentPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<DevRentDO> list = devRentService.getDevRentPage(pageReqVO).getList();
+        // 瀵煎嚭 Excel
+        ExcelUtils.write(response, "瑁呮満鎷嗘満.xls", "鏁版嵁", DevRentRespVO.class,
+                        BeanUtils.toBean(list, DevRentRespVO.class));
+    }
+
+}
\ No newline at end of file
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/devrent/vo/DevRentPageReqVO.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/devrent/vo/DevRentPageReqVO.java
new file mode 100644
index 0000000..e0f6798
--- /dev/null
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/devrent/vo/DevRentPageReqVO.java
@@ -0,0 +1,51 @@
+package cn.lihu.jh.module.ecg.controller.admin.devrent.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 DevRentPageReqVO extends PageParam {
+
+    @Schema(description = "璁惧缂栧彿", example = "3986")
+    private String devId;
+
+    @Schema(description = "鎮h�呯紪鍙�", example = "4973")
+    private String patId;
+
+    @Schema(description = "鎮h�呭悕绉�", example = "鑺嬭壙")
+    private String patName;
+
+    @Schema(description = "瑁呮満鏃堕棿")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] rentTime;
+
+    @Schema(description = "鎷嗘満鏃堕棿")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] returnTime;
+
+    @Schema(description = "骞叉壈鏁�")
+    private Integer interference;
+
+    @Schema(description = "鍩虹嚎绮�")
+    private String baseline;
+
+    @Schema(description = "鑴辩")
+    private String detachment;
+
+    @Schema(description = "澶囨敞", example = "浣犵寽")
+    private String remark;
+
+    @Schema(description = "鍒涘缓鏃堕棿")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}
\ No newline at end of file
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/devrent/vo/DevRentRespVO.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/devrent/vo/DevRentRespVO.java
new file mode 100644
index 0000000..4099444
--- /dev/null
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/devrent/vo/DevRentRespVO.java
@@ -0,0 +1,59 @@
+package cn.lihu.jh.module.ecg.controller.admin.devrent.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 DevRentRespVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "26525")
+    @ExcelProperty("id")
+    private Integer id;
+
+    @Schema(description = "璁惧缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "3986")
+    @ExcelProperty("璁惧缂栧彿")
+    private String devId;
+
+    @Schema(description = "鎮h�呯紪鍙�", requiredMode = Schema.RequiredMode.REQUIRED, example = "4973")
+    @ExcelProperty("鎮h�呯紪鍙�")
+    private String patId;
+
+    @Schema(description = "鎮h�呭悕绉�", requiredMode = Schema.RequiredMode.REQUIRED, example = "鑺嬭壙")
+    @ExcelProperty("鎮h�呭悕绉�")
+    private String patName;
+
+    @Schema(description = "瑁呮満鏃堕棿")
+    @ExcelProperty("瑁呮満鏃堕棿")
+    private LocalDateTime rentTime;
+
+    @Schema(description = "鎷嗘満鏃堕棿")
+    @ExcelProperty("鎷嗘満鏃堕棿")
+    private LocalDateTime returnTime;
+
+    @Schema(description = "骞叉壈鏁�")
+    @ExcelProperty("骞叉壈鏁�")
+    private Integer interference;
+
+    @Schema(description = "鍩虹嚎绮�")
+    @ExcelProperty("鍩虹嚎绮�")
+    private String baseline;
+
+    @Schema(description = "鑴辩")
+    @ExcelProperty("鑴辩")
+    private String detachment;
+
+    @Schema(description = "澶囨敞", example = "浣犵寽")
+    @ExcelProperty("澶囨敞")
+    private String remark;
+
+    @Schema(description = "鍒涘缓鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("鍒涘缓鏃堕棿")
+    private LocalDateTime createTime;
+
+}
\ No newline at end of file
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/devrent/vo/DevRentSaveReqVO.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/devrent/vo/DevRentSaveReqVO.java
new file mode 100644
index 0000000..7e0b981
--- /dev/null
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/devrent/vo/DevRentSaveReqVO.java
@@ -0,0 +1,46 @@
+package cn.lihu.jh.module.ecg.controller.admin.devrent.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+import javax.validation.constraints.NotEmpty;
+import java.time.LocalDateTime;
+
+@Schema(description = "绠$悊鍚庡彴 - 瑁呮満鎷嗘満鏂板/淇敼 Request VO")
+@Data
+public class DevRentSaveReqVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "26525")
+    private Integer id;
+
+    @Schema(description = "璁惧缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "3986")
+    @NotEmpty(message = "璁惧缂栧彿涓嶈兘涓虹┖")
+    private String devId;
+
+    @Schema(description = "鎮h�呯紪鍙�", requiredMode = Schema.RequiredMode.REQUIRED, example = "4973")
+    @NotEmpty(message = "鎮h�呯紪鍙蜂笉鑳戒负绌�")
+    private String patId;
+
+    @Schema(description = "鎮h�呭悕绉�", requiredMode = Schema.RequiredMode.REQUIRED, example = "鑺嬭壙")
+    @NotEmpty(message = "鎮h�呭悕绉颁笉鑳戒负绌�")
+    private String patName;
+
+    @Schema(description = "瑁呮満鏃堕棿")
+    private LocalDateTime rentTime;
+
+    @Schema(description = "鎷嗘満鏃堕棿")
+    private LocalDateTime returnTime;
+
+    @Schema(description = "骞叉壈鏁�")
+    private Integer interference;
+
+    @Schema(description = "鍩虹嚎绮�")
+    private String baseline;
+
+    @Schema(description = "鑴辩")
+    private String detachment;
+
+    @Schema(description = "澶囨敞", example = "浣犵寽")
+    private String remark;
+
+}
\ No newline at end of file
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/devrent/DevRentDO.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/devrent/DevRentDO.java
new file mode 100644
index 0000000..718bda3
--- /dev/null
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/devrent/DevRentDO.java
@@ -0,0 +1,69 @@
+package cn.lihu.jh.module.ecg.dal.dataobject.devrent;
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+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("dev_rent")
+@KeySequence("dev_rent_seq") // 鐢ㄤ簬 Oracle銆丳ostgreSQL銆並ingbase銆丏B2銆丠2 鏁版嵁搴撶殑涓婚敭鑷銆傚鏋滄槸 MySQL 绛夋暟鎹簱锛屽彲涓嶅啓銆�
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class DevRentDO extends BaseDO {
+
+    /**
+     * id
+     */
+    @TableId
+    private Integer id;
+    /**
+     * 璁惧缂栧彿
+     */
+    private String devId;
+    /**
+     * 鎮h�呯紪鍙�
+     */
+    private String patId;
+    /**
+     * 鎮h�呭悕绉�
+     */
+    private String patName;
+    /**
+     * 瑁呮満鏃堕棿
+     */
+    private LocalDateTime rentTime;
+    /**
+     * 鎷嗘満鏃堕棿
+     */
+    private LocalDateTime returnTime;
+    /**
+     * 骞叉壈鏁�
+     */
+    private Integer interference;
+    /**
+     * 鍩虹嚎绮�
+     */
+    private String baseline;
+    /**
+     * 鑴辩
+     */
+    private String detachment;
+    /**
+     * 澶囨敞
+     */
+    private String remark;
+
+}
\ No newline at end of file
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/devrent/DevRentMapper.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/devrent/DevRentMapper.java
new file mode 100644
index 0000000..b0a998f
--- /dev/null
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/devrent/DevRentMapper.java
@@ -0,0 +1,35 @@
+package cn.lihu.jh.module.ecg.dal.mysql.devrent;
+
+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.dal.dataobject.devrent.DevRentDO;
+import org.apache.ibatis.annotations.Mapper;
+import cn.lihu.jh.module.ecg.controller.admin.devrent.vo.*;
+
+/**
+ * 瑁呮満鎷嗘満 Mapper
+ *
+ * @author 鑺嬮亾婧愮爜
+ */
+@Mapper
+public interface DevRentMapper extends BaseMapperX<DevRentDO> {
+
+    default PageResult<DevRentDO> selectPage(DevRentPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<DevRentDO>()
+                .eqIfPresent(DevRentDO::getDevId, reqVO.getDevId())
+                .eqIfPresent(DevRentDO::getPatId, reqVO.getPatId())
+                .likeIfPresent(DevRentDO::getPatName, reqVO.getPatName())
+                .betweenIfPresent(DevRentDO::getRentTime, reqVO.getRentTime())
+                .betweenIfPresent(DevRentDO::getReturnTime, reqVO.getReturnTime())
+                .eqIfPresent(DevRentDO::getInterference, reqVO.getInterference())
+                .eqIfPresent(DevRentDO::getBaseline, reqVO.getBaseline())
+                .eqIfPresent(DevRentDO::getDetachment, reqVO.getDetachment())
+                .eqIfPresent(DevRentDO::getRemark, reqVO.getRemark())
+                .betweenIfPresent(DevRentDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(DevRentDO::getId));
+    }
+
+}
\ No newline at end of file
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devrent/DevRentService.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devrent/DevRentService.java
new file mode 100644
index 0000000..0d6d562
--- /dev/null
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devrent/DevRentService.java
@@ -0,0 +1,56 @@
+package cn.lihu.jh.module.ecg.service.devrent;
+
+import java.util.*;
+import cn.lihu.jh.module.ecg.controller.admin.devrent.vo.*;
+import cn.lihu.jh.module.ecg.dal.dataobject.devrent.DevRentDO;
+import cn.lihu.jh.framework.common.pojo.PageResult;
+import cn.lihu.jh.framework.common.pojo.PageParam;
+
+import javax.validation.Valid;
+
+/**
+ * 瑁呮満鎷嗘満 Service 鎺ュ彛
+ *
+ * @author 鑺嬮亾婧愮爜
+ */
+public interface DevRentService {
+
+    /**
+     * 鍒涘缓瑁呮満鎷嗘満
+     *
+     * @param createReqVO 鍒涘缓淇℃伅
+     * @return 缂栧彿
+     */
+    Integer createDevRent(@Valid DevRentSaveReqVO createReqVO);
+
+    /**
+     * 鏇存柊瑁呮満鎷嗘満
+     *
+     * @param updateReqVO 鏇存柊淇℃伅
+     */
+    void updateDevRent(@Valid DevRentSaveReqVO updateReqVO);
+
+    /**
+     * 鍒犻櫎瑁呮満鎷嗘満
+     *
+     * @param id 缂栧彿
+     */
+    void deleteDevRent(Integer id);
+
+    /**
+     * 鑾峰緱瑁呮満鎷嗘満
+     *
+     * @param id 缂栧彿
+     * @return 瑁呮満鎷嗘満
+     */
+    DevRentDO getDevRent(Integer id);
+
+    /**
+     * 鑾峰緱瑁呮満鎷嗘満鍒嗛〉
+     *
+     * @param pageReqVO 鍒嗛〉鏌ヨ
+     * @return 瑁呮満鎷嗘満鍒嗛〉
+     */
+    PageResult<DevRentDO> getDevRentPage(DevRentPageReqVO pageReqVO);
+
+}
\ No newline at end of file
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devrent/DevRentServiceImpl.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devrent/DevRentServiceImpl.java
new file mode 100644
index 0000000..a7b6021
--- /dev/null
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devrent/DevRentServiceImpl.java
@@ -0,0 +1,75 @@
+package cn.lihu.jh.module.ecg.service.devrent;
+
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+import cn.lihu.jh.module.ecg.controller.admin.devrent.vo.*;
+import cn.lihu.jh.module.ecg.dal.dataobject.devrent.DevRentDO;
+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 cn.lihu.jh.module.ecg.dal.mysql.devrent.DevRentMapper;
+
+import javax.annotation.Resource;
+
+import static cn.lihu.jh.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.lihu.jh.module.ecg.enums.ErrorCodeConstants.*;
+
+/**
+ * 瑁呮満鎷嗘満 Service 瀹炵幇绫�
+ *
+ * @author 鑺嬮亾婧愮爜
+ */
+@Service
+@Validated
+public class DevRentServiceImpl implements DevRentService {
+
+    @Resource
+    private DevRentMapper devRentMapper;
+
+    @Override
+    public Integer createDevRent(DevRentSaveReqVO createReqVO) {
+        // 鎻掑叆
+        DevRentDO devRent = BeanUtils.toBean(createReqVO, DevRentDO.class);
+        devRentMapper.insert(devRent);
+        // 杩斿洖
+        return devRent.getId();
+    }
+
+    @Override
+    public void updateDevRent(DevRentSaveReqVO updateReqVO) {
+        // 鏍¢獙瀛樺湪
+        validateDevRentExists(updateReqVO.getId());
+        // 鏇存柊
+        DevRentDO updateObj = BeanUtils.toBean(updateReqVO, DevRentDO.class);
+        devRentMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteDevRent(Integer id) {
+        // 鏍¢獙瀛樺湪
+        validateDevRentExists(id);
+        // 鍒犻櫎
+        devRentMapper.deleteById(id);
+    }
+
+    private void validateDevRentExists(Integer id) {
+        if (devRentMapper.selectById(id) == null) {
+            throw exception(DEV_RENT_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public DevRentDO getDevRent(Integer id) {
+        return devRentMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<DevRentDO> getDevRentPage(DevRentPageReqVO pageReqVO) {
+        return devRentMapper.selectPage(pageReqVO);
+    }
+
+}
\ No newline at end of file
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/resources/mapper/devrent/DevRentMapper.xml b/jh-module-ecg/jh-module-ecg-biz/src/main/resources/mapper/devrent/DevRentMapper.xml
new file mode 100644
index 0000000..0dcc0be
--- /dev/null
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/resources/mapper/devrent/DevRentMapper.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.ecg.dal.mysql.devrent.DevRentMapper">
+
+    <!--
+        涓�鑸儏鍐典笅锛屽敖鍙兘浣跨敤 Mapper 杩涜 CRUD 澧炲垹鏀规煡鍗冲彲銆�
+        鏃犳硶婊¤冻鐨勫満鏅紝渚嬪璇村琛ㄥ叧鑱旀煡璇紝鎵嶄娇鐢� XML 缂栧啓 SQL銆�
+        浠g爜鐢熸垚鍣ㄦ殏鏃跺彧鐢熸垚 Mapper XML 鏂囦欢鏈韩锛屾洿澶氭帹鑽� MybatisX 蹇�熷紑鍙戞彃浠舵潵鐢熸垚鏌ヨ銆�
+        鏂囨。鍙锛歨ttps://www.iocoder.cn/MyBatis/x-plugins/
+     -->
+
+</mapper>
\ No newline at end of file
diff --git a/sql/mysql/jh.sql b/sql/mysql/jh.sql
index 307195d..dfcb821 100644
--- a/sql/mysql/jh.sql
+++ b/sql/mysql/jh.sql
@@ -151,9 +151,11 @@
   `detachment` varchar(100) DEFAULT NULL COMMENT '鑴辩',  
   `remark` varchar(100) DEFAULT NULL COMMENT '澶囨敞',
   `tenant_id` int DEFAULT 1 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,
+  `deleted` bit(1) DEFAULT 0 COMMENT '鍒犻櫎鏍囪',
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='瑁呮満鎷嗘満琛�';
 

--
Gitblit v1.9.3