| | |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.flowable.engine.HistoryService; |
| | | import org.flowable.engine.RuntimeService; |
| | | import org.flowable.engine.TaskService; |
| | | import org.flowable.engine.history.HistoricProcessInstance; |
| | | import org.flowable.engine.history.HistoricProcessInstanceQuery; |
| | | import org.flowable.engine.task.Comment; |
| | | import org.flowable.task.api.Task; |
| | | import org.flowable.task.api.TaskInfoQuery; |
| | | import org.flowable.task.api.TaskQuery; |
| | | import org.flowable.task.api.history.HistoricTaskInstance; |
| | | import org.flowable.task.api.history.HistoricTaskInstanceQuery; |
| | | import org.springblade.core.oss.OssTemplate; |
| | | import org.springblade.core.secure.utils.AuthUtil; |
| | | 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.entity.Machine; |
| | | import org.springblade.mdm.basesetting.machine.service.MachineService; |
| | | import org.springblade.mdm.basesetting.producedivision.entity.QinzheFgb; |
| | | import org.springblade.mdm.basesetting.producedivision.service.QinzheFgbService; |
| | | import org.springblade.mdm.commons.contants.DictBizConstants; |
| | | import org.springblade.mdm.commons.service.ParamService; |
| | | import org.springblade.mdm.flow.constants.FlowContants; |
| | | import org.springblade.mdm.flow.entity.FlowProgramFile; |
| | | import org.springblade.mdm.flow.entity.MdmFlowProcess; |
| | | import org.springblade.mdm.flow.entity.TaskDispatch; |
| | | import org.springblade.mdm.flow.service.ApproveInfoQueryService; |
| | | import org.springblade.mdm.flow.service.FlowProgramFileService; |
| | | import org.springblade.mdm.flow.service.FlowProgramProperties; |
| | | import org.springblade.mdm.flow.util.MdmFlowCache; |
| | | import org.springblade.mdm.flow.service.TaskDispatchService; |
| | | import org.springblade.mdm.flow.vo.ApproveTableInfo; |
| | | import org.springblade.mdm.flow.vo.FlowVO; |
| | | import org.springblade.mdm.program.entity.NcNode; |
| | | import org.springblade.mdm.program.service.NcNodeService; |
| | | import org.springblade.mdm.statreport.utils.WordReplaceUtil; |
| | | import org.springblade.system.feign.IDictBizClient; |
| | | import org.springblade.system.feign.IUserClient; |
| | | import org.springblade.system.pojo.entity.User; |
| | | 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.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.util.*; |
| | | |
| | |
| | | private final RuntimeService runtimeService; |
| | | private final IDictBizClient dictBizClient; |
| | | private final HistoryService historyService; |
| | | private final IUserClient userClient; |
| | | private final FlowProgramFileService flowProgramFileService; |
| | | @Autowired |
| | | private MachineService machineService; |
| | | @Autowired |
| | | private ParamService paramService; |
| | | @Autowired |
| | | private OssTemplate ossTemplate; |
| | | private ApproveInfoQueryService approveInfoQueryService; |
| | | private final MachineService machineService; |
| | | private final NcNodeService nodeService; |
| | | private final ParamService paramService; |
| | | private final TaskDispatchService taskDispatchService; |
| | | private final OssTemplate ossTemplate; |
| | | private final QinzheFgbService qinzheFgbService; |
| | | private static final String DATE_PATTERN = "yyyy-M-d"; |
| | | /** |
| | | * 导出word岸本 |
| | | * @param dispatch 任务分派 |
| | | * @param props 流程属性 |
| | | */ |
| | | public ByteArrayOutputStream exportConfirmTableDoc(TaskDispatch dispatch, FlowProgramProperties props) throws IOException { |
| | | public ByteArrayOutputStream exportConfirmTableDoc(FlowProgramProperties props) throws IOException { |
| | | ByteArrayOutputStream os= new ByteArrayOutputStream(); |
| | | String tplOssName = paramService.confirmTableTemplateOssFileName(); |
| | | try(InputStream tplInputStream = ossTemplate.statFileStream(tplOssName);) { |
| | | WordReplaceUtil.convert(getData(dispatch, props), tplInputStream, os); |
| | | WordReplaceUtil.convert(getData( props), tplInputStream, os); |
| | | } |
| | | return os; |
| | | } |
| | |
| | | * 获取填充数据 |
| | | */ |
| | | |
| | | Map<String,String> getData(TaskDispatch dispatch,FlowProgramProperties props){ |
| | | //ApproveTableInfo approveInfo = approveInfoQueryService.getApproveInfo(props); |
| | | Map<String,String> getData(FlowProgramProperties props) { |
| | | ApproveTableInfo approveInfo = approveInfoQueryService.getApproveInfo(props); |
| | | Machine machine; |
| | | String machineCode = props.getMachineCode(); |
| | | machine = machineService.getByCode(machineCode); |
| | | |
| | | Map<String, String> dataMap = new HashMap<>(); |
| | | NcNode node = this.nodeService.getById(props.getNodeId()); |
| | | TaskDispatch dispatch = taskDispatchService.getByProgramNo(node.getProgramNo()); |
| | | |
| | | if(dispatch == null){ |
| | | dispatch = new TaskDispatch();//TODO 后面去掉 |
| | | //防止老数据报错 |
| | | dispatch = new TaskDispatch(); |
| | | } |
| | | dataMap.put("bh",node.getProgramNo());//编号,就是数控程序编号 |
| | | |
| | | Map<String,String> 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()); |
| | | dataMap.put("drawingEdition", props.getDrawingNoEdition());//word内不能跟drawingNo有相同字符 |
| | | |
| | | dataMap.put("bh","不明确"); |
| | | QinzheFgb qzfgb = qinzheFgbService.getByLjh(props.getDrawingNo()); |
| | | dataMap.put("drawingName",qzfgb.getLjmc()); |
| | | |
| | | 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()); |
| | | dataMap.put("productModel", props.getProductModel()); |
| | | |
| | | String DATE_PATTERN = "yyyy-M-d"; |
| | | //页数,页号 |
| | | dataMap.put("tp", "1"); |
| | | dataMap.put("pg", "1"); |
| | | |
| | | String dispatchDateStr = " "; |
| | | |
| | | dataMap.put("processName", dispatch.getProcessName()); |
| | | dataMap.put("processCard", dispatch.getProcessCard()); |
| | | |
| | | String ctlSystem = ""; |
| | | R<String> ctmR = dictBizClient.getValue(DictBizConstants.CONTROL_SYSTEM,machine.getControlSystem()); |
| | | if(ctmR.isSuccess()){ |
| | | R<String> ctmR = dictBizClient.getValue(DictBizConstants.CONTROL_SYSTEM, machine.getControlSystem()); |
| | | if (ctmR.isSuccess()) { |
| | | ctlSystem = ctmR.getData(); |
| | | } |
| | | dataMap.put("deviation",dispatch.getDeviation()==null?"":dispatch.getDeviation()); |
| | | dataMap.put("controlSystem",ctlSystem); |
| | | dataMap.put("czz","操作者"); |
| | | dataMap.put("jyy","检验员"); |
| | | |
| | | |
| | | dataMap.put("deviation", props.getDeviation() == null ? "" : props.getDeviation()); |
| | | dataMap.put("controlSystem", ctlSystem); |
| | | if (StringUtils.isNotBlank(dispatch.getOperator())){ |
| | | dataMap.put("czz", dispatch.getOperator()+"/"+formatTimeForTable(dispatch.getOperateTime()));//操作员,时间 |
| | | }else{ |
| | | dataMap.put("czz", ""); |
| | | } |
| | | dataMap.put("programNo",dispatch.getProgramNo()); |
| | | dataMap.put("fuhey",WordReplaceUtil.CHECKED); |
| | | dataMap.put("fuhen",WordReplaceUtil.UNCHECKED); |
| | | dataMap.put("jly",WordReplaceUtil.CHECKED); |
| | | dataMap.put("jln",WordReplaceUtil.UNCHECKED); |
| | | if(StringUtils.isNotBlank(dispatch.getInspector())) { |
| | | dataMap.put("jyy",dispatch.getInspector()+"/"+formatTimeForTable(dispatch.getCheckTime()));//实际检验员和检验时间 |
| | | |
| | | String bianzhiDateStr = "";//DateUtil.format(dispatch.getCreateTime(), DATE_PATTERN); |
| | | //有检验员,即 符合该工序工艺卡片尺寸特性要求 |
| | | dataMap.put("fuhey", WordReplaceUtil.CHECKED); |
| | | dataMap.put("fuhen", WordReplaceUtil.UNCHECKED); |
| | | |
| | | dataMap.put("jly",WordReplaceUtil.CHECKED); |
| | | dataMap.put("jln",WordReplaceUtil.UNCHECKED); |
| | | }else { |
| | | dataMap.put("jyy",""); //填充空检验员 |
| | | |
| | | dataMap.put("bianzhi","编程员?/"+bianzhiDateStr); |
| | | dataMap.put("jiaodui","工艺校对?/时间不确定"); |
| | | dataMap.put("shenhe","高师?/时间不确定"); |
| | | dataMap.put("fuhey", WordReplaceUtil.UNCHECKED); |
| | | dataMap.put("fuhen", WordReplaceUtil.CHECKED); |
| | | |
| | | dataMap.put("jly",WordReplaceUtil.UNCHECKED); |
| | | dataMap.put("jln",WordReplaceUtil.CHECKED); |
| | | } |
| | | |
| | | dataMap.put("bianzhi",approveInfo.getProgrammerName()+"/"+formatTimeForTable(approveInfo.getProgrammingDate()));//编程人员 |
| | | //approveInfo.getDispatchDate() |
| | | dataMap.put("jiaodui",approveInfo.getTeamLeaderName()+"/"+formatTimeForTable(approveInfo.getCheckDate()));//校对:专业组长 |
| | | dataMap.put("shenhe",approveInfo.getSeniorName()+"/"+formatTimeForTable(approveInfo.getApproveDate())); |
| | | |
| | | dataMap.put("sendPath",machine.getProgSendDir()!=null?machine.getProgSendDir():""); |
| | | |
| | |
| | | vo.setHistoryTaskEndTime(processInstance.getEndTime()); |
| | | |
| | | |
| | | vo.setFile(getFileString(processInstance.getId())); |
| | | //vo.setFile(getFileString(processInstance.getId())); |
| | | records.add(vo); |
| | | } |
| | | |
| | |
| | | |
| | | return page; |
| | | } |
| | | |
| | | String formatTimeForTable(Date date){ |
| | | if(date==null){ |
| | | return ""; |
| | | } |
| | | |
| | | return DateUtil.format(date, DATE_PATTERN); |
| | | } |
| | | /** |
| | | 获取列表中的文件名 |
| | | */ |