package org.springblade.mdm.flow.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.tags.Tag; import jakarta.servlet.http.HttpServletResponse; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.flowable.engine.HistoryService; import org.springblade.core.excel.util.ExcelUtil; import org.springblade.core.mp.support.Condition; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.Func; import org.springblade.mdm.flow.constants.FlowVariableContants; import org.springblade.mdm.flow.service.FlowCommonService; import org.springblade.mdm.flow.service.ProgramOnMachineExportService; import org.springblade.mdm.flow.service.TaskDispatchService; import org.springblade.mdm.flow.vo.FlowVO; import org.springblade.mdm.flow.vo.ProgramOnMachineExcel; import org.springblade.mdm.flow.vo.ProgramOnMachineQueryVO; 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.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; @Slf4j @RestController @AllArgsConstructor @RequestMapping("/flowmgr/programonmachine") @Tag(name = "现场编制导出", description = "现场编制导出") public class ProgramOnMachineExportController { private FlowCommonService flowCommonService; private ProgramOnMachineExportService programOnMachineService; private final TaskDispatchService taskDispatchService; private final HistoryService historyService; @GetMapping("/finished-page") @ApiOperationSupport(order = 3) @Operation(summary = "已审批列表", description = "已审批列表") public R> finishedPage(ProgramOnMachineQueryVO queryVO) { IPage pages = programOnMachineService.finishedPage(Condition.getPage(queryVO), queryVO); return R.data(pages); } @PostMapping("/export") @Operation(summary = "导出现场编制记录", description = "导出现场编制记录") public void export(ProgramOnMachineQueryVO queryVO,HttpServletResponse response) throws IOException { queryVO.setCurrent(1); queryVO.setSize(Integer.MAX_VALUE); IPage page = programOnMachineService.finishedPage(Condition.getPage(queryVO), queryVO); List list = new ArrayList<>(); page.getRecords().forEach(record -> { ProgramOnMachineExcel excel = new ProgramOnMachineExcel(); Map vars = record.getVariables(); excel.setDrawingNo(Func.toStr(vars.get(FlowVariableContants.DRAWING_NO))); excel.setProcessNo(Func.toStr(vars.get(FlowVariableContants.PROCESS_NO))); excel.setProcessEdition(Func.toStr(vars.get(FlowVariableContants.PROCESS_EDITION))); excel.setMachineCode(Func.toStr(vars.get(FlowVariableContants.MACHINE_CODE))); excel.setProcessInstanceId(record.getProcessInstanceId()); list.add(excel); }); ExcelUtil.export(response, "现场编制记录" + DateUtil.time(), "机床数据表", list, ProgramOnMachineExcel.class); } }