| | |
| | | import org.flowable.engine.history.HistoricProcessInstance; |
| | | import org.flowable.engine.runtime.ProcessInstance; |
| | | import org.flowable.task.api.history.HistoricTaskInstance; |
| | | import org.springblade.core.oss.OssTemplate; |
| | | 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.basesetting.machine.MachineService; |
| | | import org.springblade.mdm.basesetting.machine.entity.Machine; |
| | | import org.springblade.mdm.commons.service.ParamService; |
| | | import org.springblade.mdm.commons.support.TemplatedPdfWriter; |
| | | import org.springblade.mdm.flow.constants.FlowContants; |
| | | import org.springblade.mdm.flow.vo.ApproveTableInfo; |
| | | import org.springblade.mdm.program.entity.NcNode; |
| | |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.io.IOException; |
| | | import java.io.InputStream; |
| | | import java.io.OutputStream; |
| | | import java.util.Date; |
| | | import java.util.*; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Optional; |
| | | |
| | | import com.itextpdf.text.*; |
| | | import com.itextpdf.text.pdf.*; |
| | |
| | | private IUserClient useClient; |
| | | @Autowired |
| | | private NcProgramApprovedService programApprovedService; |
| | | @Autowired |
| | | private ParamService paramService; |
| | | @Autowired |
| | | private OssTemplate ossTemplate; |
| | | |
| | | private final String DATE_PATTERN = "yyyy-M-d"; |
| | | |
| | | private static final String UNCHECK_BOX = "â"; |
| | | private static final String CHECKED_BOX = "â"; |
| | | static Chunk square = new Chunk("o", new Font(Font.FontFamily.ZAPFDINGBATS, 12)); // ç©ºæ¹æ¡ |
| | |
| | | return new Font(bfChinese, 12, Font.NORMAL); |
| | | } |
| | | |
| | | public void exportApproveTable(String processInstanceId, OutputStream os) throws DocumentException, IOException { |
| | | public void exportApproveTable(String processInstanceId, OutputStream os) throws IOException, DocumentException { |
| | | FlowProgramProperties props = flowCommonService.getProgramPropertiesFromHis(processInstanceId); |
| | | |
| | | ApproveTableInfo approveInfo = getApproveInfo(props); |
| | | Machine machine; |
| | | String machineCode = props.getMachineCode(); |
| | | machine = machineService.getByCode(machineCode); |
| | | |
| | | Map<String,String> pdfData = new HashMap<>(); |
| | | pdfData.put("drawingNo",props.getDrawingNo()); |
| | | pdfData.put("processNo",props.getProcessNo()); |
| | | pdfData.put("craftEdition",props.getCraftEdition()); |
| | | pdfData.put("machineMode",machine.getName()); |
| | | |
| | | String dispatchDateStr = " "; |
| | | if (approveInfo.getDispatchDate() != null) { |
| | | dispatchDateStr = DateUtil.format(approveInfo.getDispatchDate(), DATE_PATTERN); |
| | | } |
| | | |
| | | pdfData.put("teamLeader",approveInfo.getTeamLeaderName()+"/"+dispatchDateStr); |
| | | |
| | | if(StringUtils.equals(props.getHasCuredProgram(),FlowContants.Y)){ |
| | | pdfData.put("fuzeren",approveInfo.getCheckerName()); |
| | | pdfData.put("checkY","Y");//åºåï¼å±äºæ ¡å¯¹ä»»å¡ |
| | | }else{ |
| | | pdfData.put("fuzeren",approveInfo.getProgrammerName()); |
| | | pdfData.put("programY","Y");//å
¶ä»ï¼å±äºç¼å¶ä»»å¡ |
| | | } |
| | | pdfData.put("fangzhenY","Y"); |
| | | |
| | | Date programDate = approveInfo.getCheckDate(); |
| | | Date checkDate = approveInfo.getCheckDate(); |
| | | |
| | | String pDateStr = " "; |
| | | if (programDate != null) { |
| | | pDateStr = DateUtil.format(programDate, DATE_PATTERN); |
| | | } |
| | | String checkDateStr = " "; |
| | | if (checkDate != null) { |
| | | checkDateStr = DateUtil.format(programDate, DATE_PATTERN); |
| | | } |
| | | |
| | | String approveDateStr = " "; |
| | | if (approveInfo.getApproveDate() != null) { |
| | | approveDateStr = DateUtil.format(approveInfo.getApproveDate(), DATE_PATTERN); |
| | | } |
| | | |
| | | pdfData.put("programmer",approveInfo.getProgrammerName()+"/"+pDateStr); |
| | | pdfData.put("checker",approveInfo.getCheckerName()+"/"+checkDateStr); |
| | | pdfData.put("senior",approveInfo.getSeniorName()+"/"+approveDateStr); |
| | | |
| | | pdfData.put("sendDir",machine.getProgSendDir()!=null?machine.getProgSendDir():""); |
| | | |
| | | TemplatedPdfWriter pdfWriter = new TemplatedPdfWriter(getTemplateBytes()); |
| | | |
| | | pdfWriter.write(pdfData,os); |
| | | } |
| | | private byte[] getTemplateBytes() throws IOException { |
| | | String tplOssName = paramService.approveTableTemplateOssFileName(); |
| | | try (InputStream inputStream = this.ossTemplate.statFileStream(tplOssName)) { |
| | | return inputStream.readAllBytes(); |
| | | } |
| | | } |
| | | |
| | | public void exportApproveTableOld(String processInstanceId, OutputStream os) throws DocumentException, IOException { |
| | | |
| | | BaseFont bfChinese = getBaseFont(); |
| | | |
| | |
| | | PdfPCell cell2 = getCell("00001", ft); |
| | | cell2.setColspan(2); |
| | | |
| | | //cell2.addElement(new Phrase(programPackageNode.getProgramNo(),ft));//æ°æ§ç¨åºç¼å· |
| | | //cell2.addElement(new Phrase("00001",ft)); |
| | | |
| | | table.addCell(cell2); |
| | | |
| | | String pDateStr = " "; |
| | |
| | | .processInstanceId(props.getProcessInstanceId()).orderByTaskCreateTime().desc().list(); |
| | | |
| | | for(HistoricTaskInstance task : hisTasks){ |
| | | if(appInfo.getDispatchDate()== null && task.getTaskDefinitionKey().contains("teamLeaderTask")){ |
| | | appInfo.setDispatchDate(task.getEndTime()); |
| | | } |
| | | |
| | | if(appInfo.getProgrammingDate()== null && task.getTaskDefinitionKey().contains("program")){ |
| | | appInfo.setProgrammingDate(task.getEndTime()); |
| | | } |