package org.springblade.mdm.statreport.controller;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
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.apache.commons.io.IOUtils;
|
import org.apache.commons.lang3.StringUtils;
|
import org.apache.poi.ss.usermodel.DateUtil;
|
import org.flowable.engine.RuntimeService;
|
import org.flowable.engine.TaskService;
|
import org.springblade.core.mp.support.Condition;
|
import org.springblade.core.tool.api.R;
|
import org.springblade.core.tool.utils.Func;
|
import org.springblade.core.tool.utils.UrlUtil;
|
import org.springblade.mdm.flow.entity.TaskDispatch;
|
import org.springblade.mdm.flow.excution.StartDispatcher;
|
import org.springblade.mdm.flow.service.FlowCommonService;
|
import org.springblade.mdm.flow.service.FlowProgramFileService;
|
import org.springblade.mdm.flow.service.FlowProgramProperties;
|
import org.springblade.mdm.flow.service.TaskDispatchService;
|
import org.springblade.mdm.flow.service.execute.DefaultFlowCompleteService;
|
import org.springblade.mdm.flow.service.execute.TryFlowCompleteService;
|
import org.springblade.mdm.flow.vo.DispathTaskQueryVO;
|
import org.springblade.mdm.flow.vo.TaskAssignVO;
|
import org.springblade.mdm.statreport.service.ApproveTableService;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.http.HttpHeaders;
|
import org.springframework.http.HttpStatus;
|
import org.springframework.http.MediaType;
|
import org.springframework.http.ResponseEntity;
|
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
|
|
import java.io.ByteArrayOutputStream;
|
import java.io.IOException;
|
import java.net.URLEncoder;
|
import java.nio.charset.StandardCharsets;
|
import java.time.LocalDateTime;
|
|
@Slf4j
|
@RestController
|
@AllArgsConstructor
|
@RequestMapping("/statreport/tableprint")
|
@Tag(name = "表格打印", description = "表格打印")
|
public class ApproveTablePrintController {
|
|
@Autowired
|
private FlowCommonService flowCommonService;
|
@Autowired
|
private ApproveTableService approveTableService;
|
private final TaskDispatchService taskDispatchService;
|
@Operation(summary = "任务审批表", description = "任务审批表")
|
@GetMapping("/dispatch-page")
|
public R<IPage<TaskDispatch>> dispatchPatch(DispathTaskQueryVO queryVO) {
|
LocalDateTime end = null;
|
if(queryVO.getCreateTimeEnd()!=null){
|
end = DateUtil.toLocalDateTime(queryVO.getCreateTimeEnd()).plusDays(1);
|
}
|
return R.data(taskDispatchService.lambdaQuery()
|
.like(StringUtils.isNotBlank(queryVO.getDrawingNo()), TaskDispatch::getDrawingNo,queryVO.getDrawingNo())
|
.eq(TaskDispatch::getStatus,TaskDispatch.STATUS_STARTED)
|
.ge(queryVO.getCreateTimeBegin()!=null, TaskDispatch::getCreateTime,queryVO.getCreateTimeBegin())
|
.le(queryVO.getCreateTimeEnd()!=null, TaskDispatch::getCreateTime,end).orderByDesc(TaskDispatch::getCreateTime)
|
.page(Condition.getPage(queryVO)));
|
}
|
|
@PostMapping("/export-approve-table")
|
@Operation(summary = "导出审批表", description = "导出审批表pdf")
|
public void exportApproveTable(String id,HttpServletResponse response) throws IOException {
|
|
TaskDispatch dispatch = taskDispatchService.getById(id);
|
FlowProgramProperties props = flowCommonService.getProgramPropertiesFromHis(dispatch.getProcessInstanceId());
|
|
String progName = props.getDrawingNo()+"-"+props.getProcessNo()+"-"+props.getProcessEdition();
|
|
String filename = UrlUtil.encode("数控程序编制审批单"+progName)+".docx";
|
|
|
ByteArrayOutputStream outputStream = approveTableService.exportApproveTableDoc(dispatch,props);
|
|
byte[] fileBytes = outputStream.toByteArray();
|
|
response.setHeader("Content-Disposition", "attachment; filename="+filename);
|
response.setContentType("application/octet-stream");
|
response.getOutputStream().write(fileBytes);
|
|
}
|
|
}
|