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.core.tool.utils.Func; 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.FlowContants; 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.service.TaskDispatchService; import org.springblade.mdm.flow.vo.ApproveTableInfo; import org.springblade.mdm.program.service.NcNodeService; 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 org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; 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());//负责人 int isProgram = 0; if(StringUtils.equals(props.getHasCuredProgram(),FlowContants.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",dispatch.getProgramNo()); dataMap.put("fzy",WordReplaceUtil.CHECKED); //仿真 是 dataMap.put("fzn",WordReplaceUtil.UNCHECKED);//仿真 否 Date programDate = approveInfo.getCheckDate(); Date checkDate = approveInfo.getCheckDate(); String checkDateStr = " "; if (checkDate != null) { checkDateStr = DateUtil.format(programDate, DATE_PATTERN); } String approveDateStr = " "; if (approveInfo.getApproveDate() != null) { approveDateStr = DateUtil.format(approveInfo.getApproveDate(), DATE_PATTERN); } String bianzhi = userCommonService.getUserNameById(dispatch.getCreateUser()); String bianzhiDateStr = DateUtil.format(dispatch.getCreateTime(), DATE_PATTERN); dataMap.put("bianzhi",bianzhi+"/"+bianzhiDateStr);//编制:计划员/发起时间 dataMap.put("jiaodui",approveInfo.getTeamLeaderName()+"/时间不确定"); dataMap.put("shenpi",approveInfo.getSeniorName()+"/时间不确定"); dataMap.put("sendPath",machine.getProgSendDir()!=null?machine.getProgSendDir():""); return dataMap; } /* 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(); } */ }