package jnpf.dmsController; import cn.dev33.satoken.annotation.SaCheckLogin; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import jnpf.base.ActionResult; import jnpf.dmsEntity.recordprint.form.DmsRecordPrintPrepareForm; import jnpf.dmsEntity.recordprint.form.DmsRecordPrintConfirmForm; import jnpf.dmsEntity.recordprint.vo.DmsRecordPrintConfirmVO; import jnpf.dmsEntity.recordprint.vo.DmsRecordPrintPrepareVO; import jnpf.dmsEntity.form.DmsWenjianDayinShouquanForm; import jnpf.dmsEntity.print.vo.DmsWorkflowPrintFilesGrantResultVO; import jnpf.dmsService.DmsRecordPrintService; import jnpf.exception.DataException; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * DMS 记录文件一次性打印接口。 */ @Tag(name = "DMS记录文件打印接口", description = "生成记录文件打印流水号并准备打印单元") @RestController @SaCheckLogin @RequiredArgsConstructor @RequestMapping("/biz/jilu/record-print") public class DmsRecordPrintController { private final DmsRecordPrintService service; /** * 按审批流程为申请人授予记录文件永久打印权限。 * * @param form 流程实例及任务标识 * @return 文件打印授权结果 * @throws DataException 申请数据无效或授权失败 */ @Operation(summary = "记录文件打印授权") @PostMapping("/authorize") public ActionResult authorize( @Valid @RequestBody DmsWenjianDayinShouquanForm form) throws DataException { return ActionResult.success("记录文件打印授权成功", service.authorize(form.getFlowId(), form.getFlowTaskId())); } /** * 根据打印申请子项预占全部连续流水号,不写入打印业务表。 * * @param form 仅包含 B 表打印申请子项主键 * @return 打印单元与流水号映射 * @throws DataException 打印申请无效、已经打印或流水号预占失败 */ @Operation(summary = "准备记录文件打印流水号") @PostMapping("/prepare") public ActionResult prepare( @Valid @RequestBody DmsRecordPrintPrepareForm form) throws DataException { return ActionResult.success("打印预览准备成功", service.prepare(form.getId())); } /** * 确认打印并将预览阶段预占的流水号写入数据库。 * * @param form 打印预占标识 * @return 已确认的打印流水记录 * @throws DataException 预占无效、过期或申请状态已变化 */ @Operation(summary = "确认记录文件打印") @PostMapping("/confirm") public ActionResult confirm( @Valid @RequestBody DmsRecordPrintConfirmForm form) throws DataException { return ActionResult.success("打印确认成功", service.confirm(form.getReservationId())); } @Operation(summary = "更新记录打印子项为打印完成") @PostMapping("/complete") public ActionResult complete( @Valid @RequestBody DmsRecordPrintPrepareForm form) throws DataException { service.complete(form.getId()); return ActionResult.success("打印状态更新成功"); } }