eight
2024-09-12 472979c8d2339ab8f4f22a4a04a11cebbeded7ac
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
package cn.lihu.jh.module.ecg.controller.admin.devrent;
 
import cn.lihu.jh.framework.common.util.exception.ExceptionUtils;
import lombok.extern.slf4j.Slf4j;
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 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.*;
 
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
@Slf4j
public class DevRentController {
 
    @Resource
    private DevRentService devRentService;
 
    @PostMapping("/dev-install")
    @Operation(summary = "装机")
    @PreAuthorize("@ss.hasPermission('ecg:doctor:task')")
    public CommonResult<Long> devInstall(@Valid @RequestBody DevRentSaveReqVO createReqVO) {
        try {
            return devRentService.installOperation(createReqVO);
        } catch ( RuntimeException runtimeException ) {
            String err = ExceptionUtils.formatException( runtimeException );
            log.error("devInstall: " + err);
            return CommonResult.error(DEV_INSTALL_EXCEPTION);
        }
    }
 
    @PostMapping("/dev-dismantle")
    @Operation(summary = "拆机")
    @PreAuthorize("@ss.hasPermission('ecg:doctor:task')")
    public CommonResult<Long> devDismantle(@Valid @RequestBody DevRentSaveReqVO createReqVO) {
        try {
            devRentService.dismantleOperation(createReqVO);
            return CommonResult.success(0L);
        } catch ( RuntimeException runtimeException ) {
            String err = ExceptionUtils.formatException( runtimeException );
            log.error("devDismantle: " + err);
            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);
        }
    }
 
    @PostMapping("/create")
    @Operation(summary = "创建装机拆机")
    @PreAuthorize("@ss.hasPermission('ecg:doctor:task')")
    public CommonResult<Long> createDevRent(@Valid @RequestBody DevRentSaveReqVO createReqVO) {
        return CommonResult.success(devRentService.createDevRent(createReqVO));
    }
 
    @PutMapping("/update")
    @Operation(summary = "更新装机拆机")
    @PreAuthorize("@ss.hasPermission('ecg:doctor:task')")
    public CommonResult<Boolean> updateDevRent(@Valid @RequestBody DevRentSaveReqVO updateReqVO) {
        devRentService.updateDevRent(updateReqVO);
        return CommonResult.success(true);
    }
 
    @DeleteMapping("/delete")
    @Operation(summary = "删除装机拆机")
    @Parameter(name = "id", description = "编号", required = true)
    @PreAuthorize("@ss.hasPermission('ecg:doctor:task')")
    public CommonResult<Boolean> deleteDevRent(@RequestParam("id") Long id) {
        devRentService.deleteDevRent(id);
        return CommonResult.success(true);
    }
 
    @GetMapping("/get")
    @Operation(summary = "获得装机拆机")
    @Parameter(name = "id", description = "编号", required = true, example = "1024")
    @PreAuthorize("@ss.hasPermission('ecg:doctor:task')")
    public CommonResult<DevRentRespVO> getDevRent(@RequestParam("id") Long id) {
        DevRentDO devRent = devRentService.getDevRent(id);
        return CommonResult.success(BeanUtils.toBean(devRent, DevRentRespVO.class));
    }
 
    @GetMapping("/page")
    @Operation(summary = "获得装机拆机分页")
    @PreAuthorize("@ss.hasPermission('ecg:doctor:task')")
    public CommonResult<PageResult<DevRentRespVO>> getDevRentPage(@Valid DevRentPageReqVO pageReqVO) {
        PageResult<DevRentDO> pageResult = devRentService.getDevRentPage(pageReqVO);
        return CommonResult.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));
    }
 
    @GetMapping("/get-latest-rent")
    @Operation(summary = "获取患者设备的最近租赁情况")
    @Parameter(name = "dev-id", description = "设备编号", required = true, example = "1024")
    @PreAuthorize("@ss.hasPermission('ecg:doctor:task')")
    public CommonResult<DevRentRespVO> getLatestRent( @RequestParam("dev-id") String devId )
    {
        DevRentDO devRent = devRentService.getLatestRent( devId );
        return CommonResult.success(BeanUtils.toBean(devRent, DevRentRespVO.class));
    }
}