@Overridepublic void setStatus(String id, Integer bpmStatus) {List<LyntglAmmeterInfoDO> lyntglAmmeterInfoDOS = lyntglAmmeterInfoMapper.selectBpmList(id);if (lyntglAmmeterInfoDOS != null && lyntglAmmeterInfoDOS.size()>0){lyntglAmmeterInfoDOS.forEach(item->{item.setStatus(Long.parseLong(bpmStatus.toString()));lyntglAmmeterInfoMapper.updateById(item);});}if (bpmStatus == 3){if (!lyntglAmmeterInfoDOS.isEmpty()) {String subNoBatch = lyntglAmmeterInfoDOS.get(0).getSubBatchNo(); // 假设subnobatch是你需要的参数// 执行kettle,传递subnobatch参数kettleUtils.runKTR(kettleFileName,subNoBatch);}}}
审批成功后执行kettle传递批次号参数
runKTR:
/*** @title runKTR* @description 执行KTR文件* @param fileName* @param subBatchNo 提交批次号* @return Map*/public Map<String,Object> runKTR(String fileName,String subBatchNo) {Map<String,Object> map = new HashMap<>();int code = 200;String msg = "";try {System.setProperty("KETTLE_PLUGIN_CLASSES", "org.pentaho.di.trans.steps.append.AppendMeta");// 初始化环境KettleEnvironment.init();TransMeta transMeta = new TransMeta(kettleFilePath+fileName);Trans trans = new Trans(transMeta);// 向作业中添加参数-批次号trans.setParameterValue("sub_batch_no", subBatchNo);// 执行Kettle作业trans.execute(null);trans.waitUntilFinished();if (trans.getErrors() > 0) {code = 500;msg = "KTR failed with errors.";}msg = "KTR executed successfully.";} catch (KettleException e) {msg = "Error-KTR: " + e.getMessage();}map.put("code",code);map.put("msg",msg);return map;}
需要的pom依赖:
<!-- 关联kettle --><dependency><groupId>pentaho-kettle</groupId><artifactId>kettle-core</artifactId></dependency><dependency><groupId>pentaho-kettle</groupId><artifactId>kettle-engine</artifactId></dependency>
<dependency><groupId>org.pentaho.di.plugins</groupId><artifactId>pdi-core-plugins-impl</artifactId></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId></dependency>