package org.springblade.mdm.statreport.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.entity.Machine; import org.springblade.mdm.basesetting.machine.service.MachineService; import org.springblade.mdm.commons.service.ParamService; import org.springblade.mdm.commons.service.UserCommonService; import org.springblade.mdm.flow.constants.FlowConstant; import org.springblade.mdm.flow.entity.TaskDispatch; import org.springblade.mdm.flow.service.ApproveInfoQueryService; import org.springblade.mdm.flow.service.FlowProgramProperties; import org.springblade.mdm.flow.vo.ApproveTableInfo; import org.springblade.mdm.statreport.utils.WordReplaceUtil; import org.springblade.system.feign.IUserClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Date; import java.util.HashMap; import java.util.Map; /** * 审批记录,用于查询执行轨迹 * * @author yangys */ @Slf4j @Service public class ApproveTableService { @Autowired private UserCommonService userCommonService; @Autowired private MachineService machineService; @Autowired private IUserClient useClient; @Autowired private OssTemplate ossTemplate; @Autowired private ApproveInfoQueryService approveInfoQueryService; @Autowired private ParamService paramService; /** * 导出word岸本 * @param dispatch 任务分派 * @param props 流程属性 */ public ByteArrayOutputStream exportApproveTableDoc(TaskDispatch dispatch,FlowProgramProperties props) throws IOException { ByteArrayOutputStream os= new ByteArrayOutputStream(); String tplOssName = paramService.approveTableTemplateOssFileName(); try(InputStream tplInputStream = ossTemplate.statFileStream(tplOssName);) { WordReplaceUtil.convert(getData(dispatch, props), tplInputStream, os); } return os; } /** * 获取填充数据 */ Map getData(TaskDispatch dispatch,FlowProgramProperties props){ ApproveTableInfo approveInfo = approveInfoQueryService.getApproveInfo(props); Machine machine; String machineCode = props.getMachineCode(); machine = machineService.getByCode(machineCode); Map dataMap = new HashMap<>(); dataMap.put("drawingNo",props.getDrawingNo()); dataMap.put("processNo",props.getProcessNo()); dataMap.put("craftEdition",props.getCraftEdition()); dataMap.put("processEdition",props.getProcessEdition()); dataMap.put("machineMode",machine.getName()); String DATE_PATTERN = "yyyy-M-d"; String dispatchDateStr = " "; if (approveInfo.getDispatchDate() != null) { dispatchDateStr = DateUtil.format(approveInfo.getDispatchDate(), DATE_PATTERN); } dataMap.put("startTime",dispatchDateStr);//工段负责人/单元负责人派出时间 dataMap.put("fuzeren",approveInfo.getProgrammerName());//负责人 if(StringUtils.equals(props.getHasCuredProgram(), FlowConstant.Y)){ //校对任务 dataMap.put("jd", WordReplaceUtil.CHECKED); dataMap.put("bz", WordReplaceUtil.UNCHECKED); }else{ //编程任务 dataMap.put("jd", WordReplaceUtil.UNCHECKED); dataMap.put("bz", WordReplaceUtil.CHECKED); } dataMap.put("programNo",props.getProgramNo()); dataMap.put("fzy",WordReplaceUtil.CHECKED); //仿真 是 dataMap.put("fzn",WordReplaceUtil.UNCHECKED);//仿真 否 String bianzhi = userCommonService.getUserNameById(dispatch.getCreateUser()); dataMap.put("bianzhi",bianzhi+"/"+formatTimeForTable(dispatch.getCreateTime()));//编制:计划员/发起时间 dataMap.put("jiaodui",approveInfo.getTeamLeaderName()+"/"+formatTimeForTable(approveInfo.getDispatchDate())); // dataMap.put("shenpi",approveInfo.getSeniorName()+"/"+formatTimeForTable(approveInfo.getApproveDate()));//就是高师审批时间 dataMap.put("sendPath",machine.getProgSendDir()!=null?machine.getProgSendDir():""); return dataMap; } String formatTimeForTable(Date date){ String DATE_PATTERN = "yyyy-M-d"; if(date==null){ return ""; } return DateUtil.format(date, DATE_PATTERN); } /* 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(); } */ }