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)); 
 | 
    } 
 | 
} 
 |