|
package org.springblade.mdm.flow.service;
|
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springblade.core.oss.OssTemplate;
|
import org.springblade.core.tool.utils.DateUtil;
|
import org.springblade.mdm.basesetting.machine.service.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.service.NcNodeService;
|
import org.springblade.system.feign.IUserClient;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.io.IOException;
|
import java.io.InputStream;
|
import java.io.OutputStream;
|
import java.util.*;
|
|
import com.itextpdf.text.*;
|
/**
|
* 审批记录,用于查询执行轨迹
|
*
|
* @author yangys
|
*/
|
@Slf4j
|
@Service
|
public class ApproveTableService {
|
@Autowired
|
private FlowCommonService flowCommonService;
|
@Autowired
|
private NcNodeService ncNodeService;
|
@Autowired
|
private MachineService machineService;
|
@Autowired
|
private IUserClient useClient;
|
@Autowired
|
private ParamService paramService;
|
@Autowired
|
private OssTemplate ossTemplate;
|
|
@Autowired
|
private ApproveInfoQueryService approveInfoQueryService;
|
|
//private static final String UNCHECK_BOX = "☐";
|
//private static final String CHECKED_BOX = "☑";
|
//static Chunk square = new Chunk("o", new Font(Font.FontFamily.ZAPFDINGBATS, 12)); // 空方框
|
//static Chunk check = new Chunk("4", new Font(Font.FontFamily.ZAPFDINGBATS, 12)); // 带勾方框
|
/*
|
BaseFont getBaseFont() throws DocumentException, IOException {
|
return BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
|
}
|
|
Font getChineseFont() throws DocumentException, IOException {
|
BaseFont bfChinese = getBaseFont();
|
return new Font(bfChinese, 12, Font.NORMAL);
|
}*/
|
|
public void exportApproveTable(String processInstanceId, OutputStream os) throws IOException, DocumentException {
|
FlowProgramProperties props = flowCommonService.getProgramPropertiesFromHis(processInstanceId);
|
|
TemplatedPdfWriter pdfWriter = new TemplatedPdfWriter(getTemplateBytes());
|
pdfWriter.write(getPdfData(props),os);
|
}
|
|
/**
|
* 获取pdf模板的字节数组
|
* @return 模板字节数组
|
* @throws IOException
|
*/
|
private byte[] getTemplateBytes() throws IOException {
|
String tplOssName = paramService.approveTableTemplateOssFileName();
|
try (InputStream inputStream = this.ossTemplate.statFileStream(tplOssName)) {
|
return inputStream.readAllBytes();
|
}
|
}
|
|
/**
|
* 获取填充数据
|
*/
|
|
Map<String,String> getPdfData(FlowProgramProperties props){
|
ApproveTableInfo approveInfo = approveInfoQueryService.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 DATE_PATTERN = "yyyy-M-d";
|
|
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");
|
|
pdfData.put("programNo",approveInfo.getProgramNo());
|
|
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():"");
|
|
return pdfData;
|
}
|
|
/*
|
public void exportApproveTableOld(String processInstanceId, OutputStream os) throws DocumentException, IOException {
|
|
BaseFont bfChinese = getBaseFont();
|
|
Document document = new Document(PageSize.B5.rotate());
|
PdfWriter.getInstance(document, os);
|
|
document.open();
|
|
FlowProgramProperties props = flowCommonService.getProgramPropertiesFromHis(processInstanceId);
|
|
ApproveTableInfo appInfo = getApproveInfo(props);
|
Machine machine;
|
String machineCode = props.getMachineCode();
|
machine = machineService.getByCode(machineCode);
|
|
int flag = props.getProcessDefinitionKey().equals(FlowContants.TRY_PROCESS_KEY)?1:2;
|
printPage(document, bfChinese, props, machine, flag, appInfo);
|
//document.newPage();
|
|
|
//printPage(document, bfChinese, props, machine, 2, appInfo);
|
|
document.close();
|
}
|
*/
|
|
|
}
|