package org.springblade.mdm.statreport.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpServletResponse; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.poi.ss.usermodel.DateUtil; import org.flowable.engine.HistoryService; import org.flowable.engine.RuntimeService; import org.flowable.engine.history.HistoricProcessInstance; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.UrlUtil; import org.springblade.mdm.flow.entity.TaskDispatch; import org.springblade.mdm.flow.service.FlowCommonService; import org.springblade.mdm.flow.service.FlowProgramProperties; import org.springblade.mdm.flow.service.TaskDispatchService; import org.springblade.mdm.flow.vo.DispathTaskQueryVO; import org.springblade.mdm.flow.vo.FlowVO; import org.springblade.mdm.statreport.service.ApproveTableService; import org.springblade.mdm.statreport.service.ConfirmTablePrintService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.time.LocalDateTime; @Slf4j @RestController @AllArgsConstructor @RequestMapping("/statreport/tableprint") @Tag(name = "表格打印", description = "表格打印") public class ConfirmTablePrintController { private FlowCommonService flowCommonService; private ConfirmTablePrintService confirmTablePrintService; private final TaskDispatchService taskDispatchService; private final HistoryService hisService; @GetMapping("/confirm-page") @ApiOperationSupport(order = 3) @Operation(summary = "确认单列表", description = "确认单列表") public R> finishedList(@Parameter(description = "流程名称")String myProcessName, @Parameter(description = "流程创建时间开始") LocalDateTime createTimeBegin, @Parameter(description = "流程创建时间截止") LocalDateTime createTimeEnd, @Parameter(description = "关键字") String keyword, Query query) { IPage pages = confirmTablePrintService.confirmTablePage(Condition.getPage(query), myProcessName,keyword,createTimeBegin,createTimeEnd); return R.data(pages); } @PostMapping("/export-confirm-table") @Operation(summary = "导出数控程序确认表", description = "数控程序确认表") public void exportConfirmTable(String processInstanceId,HttpServletResponse response) throws IOException { HistoricProcessInstance his = hisService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); String taskDispatchId = his.getBusinessKey(); TaskDispatch dispatch = taskDispatchService.getById(taskDispatchId); FlowProgramProperties props = flowCommonService.getProgramPropertiesFromHis(processInstanceId); String progName = props.getDrawingNo()+"-"+props.getProcessNo()+"-"+props.getProcessEdition(); String filename = UrlUtil.encode("数控程序确认表"+progName)+".docx"; ByteArrayOutputStream outputStream = confirmTablePrintService.exportConfirmTableDoc(dispatch,props); byte[] fileBytes = outputStream.toByteArray(); response.setHeader("Content-Disposition", "attachment; filename="+filename); response.setContentType("application/octet-stream"); response.getOutputStream().write(fileBytes); } }