package cn.iocoder.yudao.module.mes.controller.admin.safety; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.mes.controller.admin.safety.vo.permit.*; import cn.iocoder.yudao.module.mes.service.safety.SafetyWorkPermitService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; import jakarta.validation.Valid; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; /** * 安全生产 - 高危作业票(动火 / 高压带电 / 有限空间等)审批与电子留存 * * @author 超级管理员 */ @Tag(name = "管理后台 - 安全生产-高危作业票") @RestController @RequestMapping("/safety/permit") @Validated public class SafetyWorkPermitController { @Resource private SafetyWorkPermitService permitService; @PostMapping("/create") @Operation(summary = "提交高危作业申请") @PreAuthorize("@ss.hasPermission('safety:permit:create')") public CommonResult create(@Valid @RequestBody SafetyWorkPermitSaveReqVO reqVO) { return success(permitService.createPermit(reqVO)); } @PutMapping("/update") @Operation(summary = "修改作业票") @PreAuthorize("@ss.hasPermission('safety:permit:update')") public CommonResult update(@Valid @RequestBody SafetyWorkPermitSaveReqVO reqVO) { permitService.updatePermit(reqVO); return success(true); } @DeleteMapping("/delete") @Operation(summary = "删除作业票(连同监护记录)") @Parameter(name = "id", description = "编号", required = true) @PreAuthorize("@ss.hasPermission('safety:permit:delete')") public CommonResult delete(@RequestParam("id") Long id) { permitService.deletePermit(id); return success(true); } @GetMapping("/get") @Operation(summary = "获得作业票") @Parameter(name = "id", description = "编号", required = true) @PreAuthorize("@ss.hasPermission('safety:permit:query')") public CommonResult get(@RequestParam("id") Long id) { var permit = permitService.getPermit(id); var resp = BeanUtils.toBean(permit, SafetyWorkPermitRespVO.class); SafetyWorkPermitService.fillPermitDisplay(permit, resp); return success(resp); } @GetMapping("/page") @Operation(summary = "获得作业票分页") @PreAuthorize("@ss.hasPermission('safety:permit:query')") public CommonResult> page(@Valid SafetyWorkPermitPageReqVO reqVO) { var page = permitService.getPermitPage(reqVO); var result = BeanUtils.toBean(page, SafetyWorkPermitRespVO.class); for (int i = 0; i < page.getList().size(); i++) { SafetyWorkPermitService.fillPermitDisplay(page.getList().get(i), result.getList().get(i)); } return success(result); } @PutMapping("/approve") @Operation(summary = "审批作业票(通过/驳回)") @PreAuthorize("@ss.hasPermission('safety:permit:approve')") public CommonResult approve(@Valid @RequestBody SafetyWorkPermitApproveReqVO reqVO) { permitService.approvePermit(reqVO); return success(true); } @PutMapping("/start") @Operation(summary = "开始作业") @Parameter(name = "id", description = "编号", required = true) @PreAuthorize("@ss.hasPermission('safety:permit:update')") public CommonResult start(@RequestParam("id") Long id) { permitService.startPermit(id); return success(true); } @PutMapping("/close") @Operation(summary = "结束作业并归档") @Parameter(name = "id", description = "编号", required = true) @PreAuthorize("@ss.hasPermission('safety:permit:update')") public CommonResult close(@RequestParam("id") Long id) { permitService.closePermit(id); return success(true); } @PutMapping("/cancel") @Operation(summary = "作废作业票") @Parameter(name = "id", description = "编号", required = true) @PreAuthorize("@ss.hasPermission('safety:permit:update')") public CommonResult cancel(@RequestParam("id") Long id) { permitService.cancelPermit(id); return success(true); } // ==================== 监护记录 ==================== @GetMapping("/monitor/list") @Operation(summary = "获得作业监护记录列表") @Parameter(name = "permitId", description = "作业票编号", required = true) @PreAuthorize("@ss.hasPermission('safety:permit:query')") public CommonResult> monitorList(@RequestParam("permitId") Long permitId) { return success(BeanUtils.toBean(permitService.getMonitorList(permitId), SafetyWorkPermitMonitorRespVO.class)); } @PostMapping("/monitor/create") @Operation(summary = "新增作业监护记录") @PreAuthorize("@ss.hasPermission('safety:permit:update')") public CommonResult createMonitor(@Valid @RequestBody SafetyWorkPermitMonitorSaveReqVO reqVO) { return success(permitService.createMonitor(reqVO)); } @DeleteMapping("/monitor/delete") @Operation(summary = "删除作业监护记录") @Parameter(name = "id", description = "编号", required = true) @PreAuthorize("@ss.hasPermission('safety:permit:update')") public CommonResult deleteMonitor(@RequestParam("id") Long id) { permitService.deleteMonitor(id); return success(true); } }