From 472979c8d2339ab8f4f22a4a04a11cebbeded7ac Mon Sep 17 00:00:00 2001
From: eight <641137800@qq.com>
Date: 星期四, 12 九月 2024 17:51:20 +0800
Subject: [PATCH] 撤销装机功能

---
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/jobrecord/vo/JobRecordRespVO.java    |    4 +
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/devrent/vo/DevRentRespVO.java        |    4 +
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devrent/DevRentService.java                   |   12 ++
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/devrent/vo/DevCancelReqVO.java       |   48 ++++++++++++
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/devrent/vo/DevRentSaveReqVO.java     |    3 
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/devrent/DevRentDO.java                 |    1 
 sql/mysql/jh.sql                                                                                                          |   11 +-
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devrent/DevRentServiceImpl.java               |   67 ++++++++++++++++
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/jobrecord/vo/JobRecordPageReqVO.java |    4 +
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/jobrecord/JobRecordMapper.java              |    4 +
 jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/ErrorCodeConstants.java                         |    3 
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/devrent/vo/DevRentPageReqVO.java     |    3 
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/jobrecord/JobRecordDO.java             |    3 
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/devrent/DevRentController.java       |   40 ++++++----
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/jobrecord/vo/JobRecordSaveReqVO.java |    2 
 15 files changed, 186 insertions(+), 23 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 24d25af..96dbf7f 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
@@ -28,6 +28,9 @@
     ErrorCode DEV_RENT_NOT_EXISTS = new ErrorCode(1_010_005_002, "绉熷�熶笉瀛樺湪");
     ErrorCode DEV_INSTALL_EXCEPTION = new ErrorCode(1_010_005_003, "瑁呮満鍐呴儴閿欒");
     ErrorCode DEV_DISMANTLE_EXCEPTION = new ErrorCode(1_010_005_004, "鎷嗘満鍐呴儴閿欒");
+    ErrorCode DEV_CANCEL_EXCEPTION = new ErrorCode(1_010_005_005, "鎷嗘満鍐呴儴閿欒");
+    ErrorCode DEV_INSTALL_EXIST = new ErrorCode(1_010_005_006, "褰撳ぉ宸叉湁瑁呮満");
+    ErrorCode DEV_DISMANTLE_EXIST = new ErrorCode(1_010_005_006, "褰撳ぉ宸叉湁鎷嗘満");
 
     ErrorCode JOB_RECORD_NOT_EXISTS = new ErrorCode(1_010_006_000, "宸ヤ綔璁板綍涓嶅瓨鍦�");
 }
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
index 8e2dc08..a1bca10 100644
--- 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
@@ -17,16 +17,12 @@
 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.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 static cn.lihu.jh.framework.common.util.exception.ExceptionUtils.formatException;
-import static cn.lihu.jh.module.ecg.enums.ErrorCodeConstants.DEV_DISMANTLE_EXCEPTION;
-import static cn.lihu.jh.module.ecg.enums.ErrorCodeConstants.DEV_INSTALL_EXCEPTION;
+import static cn.lihu.jh.module.ecg.enums.ErrorCodeConstants.*;
 
 import cn.lihu.jh.module.ecg.controller.admin.devrent.vo.*;
 import cn.lihu.jh.module.ecg.dal.dataobject.devrent.DevRentDO;
@@ -51,12 +47,11 @@
     @PreAuthorize("@ss.hasPermission('ecg:doctor:task')")
     public CommonResult<Long> devInstall(@Valid @RequestBody DevRentSaveReqVO createReqVO) {
         try {
-            Long rent_id = devRentService.installOperation(createReqVO);
-            return success(rent_id);
+            return devRentService.installOperation(createReqVO);
         } catch ( RuntimeException runtimeException ) {
             String err = ExceptionUtils.formatException( runtimeException );
             log.error("devInstall: " + err);
-            return error(DEV_INSTALL_EXCEPTION);
+            return CommonResult.error(DEV_INSTALL_EXCEPTION);
         }
     }
 
@@ -66,11 +61,24 @@
     public CommonResult<Long> devDismantle(@Valid @RequestBody DevRentSaveReqVO createReqVO) {
         try {
             devRentService.dismantleOperation(createReqVO);
-            return success(0L);
+            return CommonResult.success(0L);
         } catch ( RuntimeException runtimeException ) {
             String err = ExceptionUtils.formatException( runtimeException );
             log.error("devDismantle: " + err);
-            return error(DEV_DISMANTLE_EXCEPTION);
+            return CommonResult.error(DEV_DISMANTLE_EXCEPTION);
+        }
+    }
+
+    @PostMapping("/dev-cancel")
+    @Operation(summary = "鍙栨秷瑁呮満")
+    @PreAuthorize("@ss.hasPermission('ecg:doctor:task')")
+    public CommonResult<Long> devCancel(@Valid @RequestBody DevCancelReqVO cancelReqVO) {
+        try {
+            return devRentService.cancelOperation(cancelReqVO);
+        } catch ( RuntimeException runtimeException ) {
+            String err = ExceptionUtils.formatException( runtimeException );
+            log.error("devCancel: " + err);
+            return CommonResult.error(DEV_CANCEL_EXCEPTION);
         }
     }
 
@@ -78,7 +86,7 @@
     @Operation(summary = "鍒涘缓瑁呮満鎷嗘満")
     @PreAuthorize("@ss.hasPermission('ecg:doctor:task')")
     public CommonResult<Long> createDevRent(@Valid @RequestBody DevRentSaveReqVO createReqVO) {
-        return success(devRentService.createDevRent(createReqVO));
+        return CommonResult.success(devRentService.createDevRent(createReqVO));
     }
 
     @PutMapping("/update")
@@ -86,7 +94,7 @@
     @PreAuthorize("@ss.hasPermission('ecg:doctor:task')")
     public CommonResult<Boolean> updateDevRent(@Valid @RequestBody DevRentSaveReqVO updateReqVO) {
         devRentService.updateDevRent(updateReqVO);
-        return success(true);
+        return CommonResult.success(true);
     }
 
     @DeleteMapping("/delete")
@@ -95,7 +103,7 @@
     @PreAuthorize("@ss.hasPermission('ecg:doctor:task')")
     public CommonResult<Boolean> deleteDevRent(@RequestParam("id") Long id) {
         devRentService.deleteDevRent(id);
-        return success(true);
+        return CommonResult.success(true);
     }
 
     @GetMapping("/get")
@@ -104,7 +112,7 @@
     @PreAuthorize("@ss.hasPermission('ecg:doctor:task')")
     public CommonResult<DevRentRespVO> getDevRent(@RequestParam("id") Long id) {
         DevRentDO devRent = devRentService.getDevRent(id);
-        return success(BeanUtils.toBean(devRent, DevRentRespVO.class));
+        return CommonResult.success(BeanUtils.toBean(devRent, DevRentRespVO.class));
     }
 
     @GetMapping("/page")
@@ -112,7 +120,7 @@
     @PreAuthorize("@ss.hasPermission('ecg:doctor:task')")
     public CommonResult<PageResult<DevRentRespVO>> getDevRentPage(@Valid DevRentPageReqVO pageReqVO) {
         PageResult<DevRentDO> pageResult = devRentService.getDevRentPage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, DevRentRespVO.class));
+        return CommonResult.success(BeanUtils.toBean(pageResult, DevRentRespVO.class));
     }
 
     @GetMapping("/export-excel")
@@ -135,6 +143,6 @@
     public CommonResult<DevRentRespVO> getLatestRent( @RequestParam("dev-id") String devId )
     {
         DevRentDO devRent = devRentService.getLatestRent( devId );
-        return success(BeanUtils.toBean(devRent, DevRentRespVO.class));
+        return CommonResult.success(BeanUtils.toBean(devRent, DevRentRespVO.class));
     }
 }
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/devrent/vo/DevCancelReqVO.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/devrent/vo/DevCancelReqVO.java
new file mode 100644
index 0000000..e44776e
--- /dev/null
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/devrent/vo/DevCancelReqVO.java
@@ -0,0 +1,48 @@
+package cn.lihu.jh.module.ecg.controller.admin.devrent.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import java.time.LocalDateTime;
+
+@Schema(description = "绠$悊鍚庡彴 - 鍙栨秷瑁呮満 Request VO")
+@Data
+public class DevCancelReqVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "26525")
+    private Long id;
+
+    @Schema(description = "璁惧缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "3986")
+    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;
+
+    @Schema(description = "鍙栨秷瀹夎")
+    private Integer cancelled;
+
+}
\ 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
index e0f6798..ff4aa83 100644
--- 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
@@ -44,6 +44,9 @@
     @Schema(description = "澶囨敞", example = "浣犵寽")
     private String remark;
 
+    @Schema(description = "鍙栨秷瀹夎")
+    private Integer cancelled;
+
     @Schema(description = "鍒涘缓鏃堕棿")
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
     private LocalDateTime[] createTime;
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
index fb16cb0..7ab2796 100644
--- 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
@@ -52,6 +52,10 @@
     @ExcelProperty("澶囨敞")
     private String remark;
 
+    @Schema(description = "鍙栨秷瀹夎")
+    @ExcelProperty("鍙栨秷瀹夎")
+    private Integer cancelled;
+
     @Schema(description = "鍒涘缓鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
     @ExcelProperty("鍒涘缓鏃堕棿")
     private LocalDateTime createTime;
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
index 6a54acd..c83c0e0 100644
--- 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
@@ -43,4 +43,7 @@
     @Schema(description = "澶囨敞", example = "浣犵寽")
     private String remark;
 
+    @Schema(description = "鍙栨秷瀹夎")
+    private Integer cancelled;
+
 }
\ 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/jobrecord/vo/JobRecordPageReqVO.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/jobrecord/vo/JobRecordPageReqVO.java
index 9b69342..34ee4e7 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/jobrecord/vo/JobRecordPageReqVO.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/jobrecord/vo/JobRecordPageReqVO.java
@@ -1,5 +1,6 @@
 package cn.lihu.jh.module.ecg.controller.admin.jobrecord.vo;
 
+import com.alibaba.excel.annotation.ExcelProperty;
 import lombok.*;
 import java.util.*;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -43,6 +44,9 @@
     @Schema(description = "澶囨敞", example = "浣犵寽")
     private String remark;
 
+    @Schema(description = "鍙栨秷瀹夎")
+    private Integer cancelled;
+
     @Schema(description = "鍒涘缓鏃堕棿")
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
     private LocalDateTime[] createTime;
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/jobrecord/vo/JobRecordRespVO.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/jobrecord/vo/JobRecordRespVO.java
index fde9212..23a4ac0 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/jobrecord/vo/JobRecordRespVO.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/jobrecord/vo/JobRecordRespVO.java
@@ -52,6 +52,10 @@
     @ExcelProperty("澶囨敞")
     private String remark;
 
+    @Schema(description = "鍙栨秷瀹夎")
+    @ExcelProperty("鍙栨秷瀹夎")
+    private Integer cancelled;
+
     @Schema(description = "鍒涘缓鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
     @ExcelProperty("鍒涘缓鏃堕棿")
     private LocalDateTime createTime;
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/jobrecord/vo/JobRecordSaveReqVO.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/jobrecord/vo/JobRecordSaveReqVO.java
index 76f545d..7ae3155 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/jobrecord/vo/JobRecordSaveReqVO.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/jobrecord/vo/JobRecordSaveReqVO.java
@@ -46,4 +46,6 @@
     @NotNull(message = "瀵瑰簲绉熻祦缂栧彿涓嶈兘涓虹┖")
     private Long rentId;
 
+    @Schema(description = "鍙栨秷瀹夎")
+    private Integer cancelled;
 }
\ 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
index 8bcd9af..eeca1de 100644
--- 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
@@ -66,4 +66,5 @@
      */
     private String remark;
 
+    private Integer cancelled;
 }
\ 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/jobrecord/JobRecordDO.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/jobrecord/JobRecordDO.java
index 2e54e7c..04278be 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/jobrecord/JobRecordDO.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/jobrecord/JobRecordDO.java
@@ -64,6 +64,9 @@
      * 澶囨敞
      */
     private String remark;
+
+    private Integer cancelled;
+
     /**
      * 瀵瑰簲绉熻祦缂栧彿
      */
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/jobrecord/JobRecordMapper.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/jobrecord/JobRecordMapper.java
index dd41d33..26afeeb 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/jobrecord/JobRecordMapper.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/jobrecord/JobRecordMapper.java
@@ -1,5 +1,6 @@
 package cn.lihu.jh.module.ecg.dal.mysql.jobrecord;
 
+import java.time.LocalDateTime;
 import java.util.*;
 
 import cn.lihu.jh.framework.common.pojo.PageResult;
@@ -38,4 +39,7 @@
 
     @Select("SELECT * FROM lihu.job_record where rent_id=#{rentId} and job_type=#{jobType} and doc_id=#{docId} limit 1")
     JobRecordDO selectByRentIdJobTypeDocId(@Param("rentId") Long rentId, @Param("jobType") Integer jobType, @Param("docId") Long docId );
+
+    @Select("SELECT count(1) FROM lihu.job_record where pat_id=#{patId} and TO_DAYS(job_time)=TO_DAYS(#{jobTime}) and job_type=#{jobType} ")
+    Integer getPatientJobNum(@Param("patId") String patId, @Param("jobTime") LocalDateTime jobTime, @Param("jobType") Integer jobType );
 }
\ 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
index 4b1e791..f1e640d 100644
--- 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
@@ -1,6 +1,8 @@
 package cn.lihu.jh.module.ecg.service.devrent;
 
 import java.util.*;
+
+import cn.lihu.jh.framework.common.pojo.CommonResult;
 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;
@@ -21,7 +23,7 @@
      * @param createReqVO 鍒涘缓淇℃伅
      * @return 缂栧彿
      */
-    Long installOperation(@Valid DevRentSaveReqVO createReqVO);
+    CommonResult<Long> installOperation(@Valid DevRentSaveReqVO createReqVO);
 
     /**
      * 鎷嗘満
@@ -32,6 +34,14 @@
     Long dismantleOperation(@Valid DevRentSaveReqVO createReqVO);
 
     /**
+     * 瑁呮満
+     *
+     * @param createReqVO 鍒涘缓淇℃伅
+     * @return 缂栧彿
+     */
+    CommonResult<Long> cancelOperation(@Valid DevCancelReqVO createReqVO);
+
+    /**
      * 鍒涘缓瑁呮満鎷嗘満
      *
      * @param createReqVO 鍒涘缓淇℃伅
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
index 3238445..445794c 100644
--- 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
@@ -1,5 +1,6 @@
 package cn.lihu.jh.module.ecg.service.devrent;
 
+import cn.lihu.jh.framework.common.pojo.CommonResult;
 import cn.lihu.jh.framework.security.core.util.SecurityFrameworkUtils;
 import cn.lihu.jh.module.ecg.controller.admin.jobrecord.vo.JobRecordSaveReqVO;
 import cn.lihu.jh.module.ecg.dal.dataobject.jobrecord.JobRecordDO;
@@ -40,12 +41,19 @@
 
     @Override
     @Transactional
-    public Long installOperation(DevRentSaveReqVO createReqVO) {
+    public CommonResult<Long> installOperation(DevRentSaveReqVO createReqVO) {
         Long userId = SecurityFrameworkUtils.getLoginUserId();
         String userNickname = SecurityFrameworkUtils.getLoginUserNickname();
 
         Long rent_id = createReqVO.getId();
         if (null == rent_id) {
+
+            // 鍒ゆ柇鏄惁宸茬粡鏈夎鏈鸿褰�
+            Integer recordNum = jobRecordMapper.getPatientJobNum(createReqVO.getPatId(), createReqVO.getRentTime(), 0);
+            if (null != recordNum && recordNum > 0) {
+                return CommonResult.error(DEV_INSTALL_EXIST);
+            }
+
             rent_id = createDevRent(createReqVO);
 
             JobRecordSaveReqVO jobRecordSaveReqVO = new JobRecordSaveReqVO();
@@ -63,10 +71,14 @@
             JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class);
             jobRecordMapper.insert(jobRecord);
         } else {
+            // 鎾ら攢 鏀惧純鎿嶄綔
+            createReqVO.setCancelled(0);
+
             updateDevRent( createReqVO );
 
             JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdJobTypeDocId(rent_id, 0, userId);
             if (null != jobRecordDO) {
+                jobRecordDO.setCancelled( createReqVO.getCancelled() );
                 jobRecordDO.setDevId(createReqVO.getDevId());
                 jobRecordDO.setJobTime(createReqVO.getRentTime());
                 jobRecordDO.setRemark(createReqVO.getRemark());
@@ -75,7 +87,7 @@
                 jobRecordMapper.updateById(jobRecordDO);
             }
         }
-        return rent_id;
+        return CommonResult.success(rent_id);
     }
 
     @Override
@@ -113,6 +125,57 @@
     }
 
     @Override
+    public CommonResult<Long> cancelOperation(DevCancelReqVO cancelReqVO) {
+        DevRentSaveReqVO createReqVO = BeanUtils.toBean(cancelReqVO, DevRentSaveReqVO.class);
+        Long userId = SecurityFrameworkUtils.getLoginUserId();
+        String userNickname = SecurityFrameworkUtils.getLoginUserNickname();
+
+        createReqVO.setCancelled(1);
+
+        Long rent_id = createReqVO.getId();
+        if (null == rent_id) {
+
+            // 鍒ゆ柇鏄惁宸茬粡鏈夋媶鏈鸿褰�
+            Integer recordNum = jobRecordMapper.getPatientJobNum(createReqVO.getPatId(), createReqVO.getRentTime(), 0);
+            if (null != recordNum && recordNum > 0) {
+                return CommonResult.error(DEV_INSTALL_EXIST);
+            }
+
+            rent_id = createDevRent(createReqVO);
+
+            JobRecordSaveReqVO jobRecordSaveReqVO = new JobRecordSaveReqVO();
+            jobRecordSaveReqVO.setRentId(rent_id);
+            //jobRecordSaveReqVO.setDevId(createReqVO.getDevId());
+            jobRecordSaveReqVO.setDocId(userId);
+            jobRecordSaveReqVO.setDocName(userNickname);
+            jobRecordSaveReqVO.setPatId(createReqVO.getPatId());
+            jobRecordSaveReqVO.setPatName(createReqVO.getPatName());
+            jobRecordSaveReqVO.setJobTime(createReqVO.getRentTime());
+            jobRecordSaveReqVO.setJobType(0);
+            jobRecordSaveReqVO.setCancelled(1);
+            jobRecordSaveReqVO.setRemark(createReqVO.getRemark());
+            jobRecordSaveReqVO.setSummary("");
+
+            JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class);
+            jobRecordMapper.insert(jobRecord);
+        } else {
+            updateDevRent( createReqVO );
+
+            JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdJobTypeDocId(rent_id, 0, userId);
+            if (null != jobRecordDO) {
+                //jobRecordDO.setDevId(createReqVO.getDevId());
+                jobRecordDO.setJobTime(createReqVO.getRentTime());
+                jobRecordDO.setCancelled(1);
+                jobRecordDO.setRemark(createReqVO.getRemark());
+                jobRecordDO.setUpdater(String.valueOf(userId));
+                jobRecordDO.setUpdateTime(LocalDateTime.now());
+                jobRecordMapper.updateById(jobRecordDO);
+            }
+        }
+        return CommonResult.success(rent_id);
+    }
+
+    @Override
     public Long createDevRent(DevRentSaveReqVO createReqVO) {
         //
 
diff --git a/sql/mysql/jh.sql b/sql/mysql/jh.sql
index 0296ce6..6c5e132 100644
--- a/sql/mysql/jh.sql
+++ b/sql/mysql/jh.sql
@@ -141,15 +141,16 @@
 DROP TABLE IF EXISTS `dev_rent`;
 CREATE TABLE `dev_rent` (
   `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
-  `dev_id` varchar(45) DEFAULT NULL COMMENT '璁惧缂栧彿',
   `pat_id` varchar(45) DEFAULT NULL COMMENT '鎮h�呯紪鍙�',
   `pat_name` varchar(45) DEFAULT NULL COMMENT '鎮h�呭悕绉�',
+  `dev_id` varchar(45) DEFAULT NULL COMMENT '璁惧缂栧彿',
   `rent_time` datetime DEFAULT NULL COMMENT '瑁呮満鏃堕棿',
   `return_time` datetime DEFAULT NULL COMMENT '鎷嗘満鏃堕棿',
   `interference` int DEFAULT NULL COMMENT '骞叉壈鏁�',
   `baseline` varchar(100) DEFAULT NULL COMMENT '鍩虹嚎绮�',
   `detachment` varchar(100) DEFAULT NULL COMMENT '鑴辩',
   `remark` varchar(100) DEFAULT NULL COMMENT '澶囨敞',
+  `cancelled` int DEFAULT '0' COMMENT '鏈畨瑁�',
   `tenant_id` int DEFAULT '1' COMMENT '绉熸埛缂栧彿',
   `creator` varchar(10) DEFAULT '' COMMENT '鍒涘缓鑰�',
   `create_time` datetime NOT NULL COMMENT '鍒涘缓鏃堕棿',
@@ -158,7 +159,7 @@
   `deleted` bit(1) DEFAULT b'0' COMMENT '鍒犻櫎鏍囪',
   PRIMARY KEY (`id`),
   KEY `indx_dev_rent` (`dev_id`,`rent_time`) USING BTREE
-) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='瑁呮満鎷嗘満琛�';
+) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='瑁呮満鎷嗘満琛�';
 
 -- ----------------------------
 -- Table structure for job_record
@@ -176,6 +177,7 @@
   `job_time` datetime DEFAULT NULL COMMENT '浣滀笟鏃堕棿',
   `summary` varchar(200) DEFAULT NULL COMMENT '浣滀笟姒傝',
   `remark` varchar(100) DEFAULT NULL COMMENT '澶囨敞',
+  `cancelled` int DEFAULT '0' COMMENT '鏈畨瑁�',
   `tenant_id` int DEFAULT '1' COMMENT '绉熸埛缂栧彿',
   `creator` varchar(10) DEFAULT '' COMMENT '鍒涘缓鑰�',
   `create_time` datetime NOT NULL COMMENT '鍒涘缓鏃堕棿',
@@ -183,6 +185,7 @@
   `update_time` datetime NOT NULL COMMENT '鏇存柊鏃堕棿',
   `deleted` bit(1) DEFAULT b'0' COMMENT '鍒犻櫎鏍囪',
   PRIMARY KEY (`id`),
-  UNIQUE KEY `uni_rent_job_doc` (`rent_id`,`job_type`,`doc_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='宸ヤ綔璁板綍琛�';
+  KEY `idx_pat_job` (`pat_id`,`job_time`,`job_type`),
+  KEY `idx_rent_id` (`rent_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='宸ヤ綔璁板綍琛�';
 

--
Gitblit v1.9.3