eight
2024-09-11 0fd05805e138bcd29f75a17f0fbde15a8292238c
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
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 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 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 {
            Long rent_id = devRentService.installOperation(createReqVO);
            return success(rent_id);
        } catch ( RuntimeException runtimeException ) {
            String err = ExceptionUtils.formatException( runtimeException );
            log.error("devInstall: " + err);
            return 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 success(0L);
        } catch ( RuntimeException runtimeException ) {
            String err = ExceptionUtils.formatException( runtimeException );
            log.error("devDismantle: " + err);
            return error(DEV_DISMANTLE_EXCEPTION);
        }
    }
 
    @PostMapping("/create")
    @Operation(summary = "创建装机拆机")
    @PreAuthorize("@ss.hasPermission('ecg:doctor:task')")
    public CommonResult<Long> createDevRent(@Valid @RequestBody DevRentSaveReqVO createReqVO) {
        return 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 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 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 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 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 success(BeanUtils.toBean(devRent, DevRentRespVO.class));
    }
}