#javascript #birt #maximo
#javascript #birt #maximo
Вопрос:
Я унаследовал BIRT .rptdesign, который не возвращает никаких записей в «результатах предварительного просмотра». Задействован один открытый скрипт, а также скрипт выборки, внутри которого содержится еще примерно 5 SQL-запросов. Многое из того, что я пробовал для решений, включает в себя выделение этих запросов, участвующих в скрипте выборки, в их собственный набор данных, а затем связывание их с открытым скриптом (в качестве альтернативы я пытался сформировать совместный набор данных, но безуспешно).). Даже после выполнения небольшого запроса из скрипта выборки я не могу генерировать записи в предварительном просмотре результатов. Я пытался загрузить изображение макета, но у меня нет репутации для этого … Пожалуйста, дайте мне знать, если вам нужен файл дизайна, чтобы помочь визуализировать, где все приземляется!
Открыть скрипт:
maximoDataSet = MXReportDataSetProvider.create(this.getDataSource().getName(), this.getName());
maximoDataSet.open();
var sqlText = new String();
var printed = params["Printed"].toUpperCase().replace("Y","1");
var printed1 = printed.replace("N","0");
var where = new String(params["where"]);
if (params["Printed"].value)
where = " and workorder.em_printed = '" printed1 "' ";
// Add query to sqlText variable.
sqlText = "select workorder.wonum, workorder.workorderid as workorderid1, (select min(w2.workorderid) from maximo.workorder w2 where w2.istask=1 and w2.parent=workorder.wonum and w2.siteid=workorder.siteid) as workorderid, "
" workorder.pmnum as pmnum, workorder.targstartdate, workorder.siteid, workorder.description as wdesc, workorder.worktype, a.assetnum, a.description as adesc, a.em_relaymajor, a.em_relayminor, "
" workorder.location, l.description as ldesc, a.em_circuit, a.em_manfmodl, a.serialnum, j.em_craft, a.assetuid, "
" (select al.description from alndomain al where al.value=j.em_craft and al.domainid='EM_CRAFT') as cdesc, "
" (select wt.wtypedesc from maximo.worktype wt where wt.worktype=workorder.worktype) as wtdesc "
" from maximo.workorder "
" left outer join maximo.asset as a on a.assetnum=workorder.assetnum and a.siteid=workorder.siteid "
" left outer join maximo.jobplan as j on j.jpnum=workorder.jpnum and j.pluscrevnum=workorder.pluscjprevnum "
" left outer join maximo.locations as l on l.location=workorder.location and l.siteid=workorder.siteid"
// Include the Maximo where clause
" where workorder.istask=0 and workorder.status='INPRG' and workorder.siteid='EM' and " where
;
maximoDataSet.setQuery(sqlText);
Скрипт выборки:
if (!maximoDataSet.fetch())
return (false);
// Add a line for each output column
// The specific get method should match the data type of the output column.
row["wonum"] = maximoDataSet.getString("wonum");
row["workorderid"] = maximoDataSet.getString("workorderid");
row["workorderid1"] = maximoDataSet.getString("workorderid1");
row["wdesc"] = maximoDataSet.getString("wdesc");
row["worktype"] = maximoDataSet.getString("worktype");
row["assetnum"] = maximoDataSet.getString("assetnum");
row["location"] = maximoDataSet.getString("location");
row["adesc"] = maximoDataSet.getString("adesc");
row["ldesc"] = maximoDataSet.getString("ldesc");
row["em_circuit"] = maximoDataSet.getString("em_circuit");
row["em_manfmodl"] = maximoDataSet.getString("em_manfmodl");
row["serialnum"] = maximoDataSet.getString("serialnum");
row["em_craft"] = maximoDataSet.getString("em_craft");
row["cdesc"] = maximoDataSet.getString("cdesc");
row["wtdesc"] = maximoDataSet.getString("wtdesc");
row["pmnum"] = maximoDataSet.getString("pmnum");
row["siteid"] = maximoDataSet.getString("siteid");
row["assetuid"] = maximoDataSet.getString("assetuid");
row["em_relaymajor"] = maximoDataSet.getString("em_relaymajor");
row["em_relayminor"] = maximoDataSet.getString("em_relayminor");
row["targstartdate"] = maximoDataSet.getTimestamp("targstartdate");
// Long Description
longDescDataSet = MXReportDataSetProvider.create(this.getDataSource().getName(), "longDescDataSet");
longDescDataSet.open();
longDescSQL = "select longdescription.ldtext "
"from longdescription "
"where longdescription.ldownertable='WORKORDER' and longdescription.ldownercol='DESCRIPTION' "
"and longdescription.ldownercol='DESCRIPTION' "
"and longdescription.ldkey=?";
longDescDataSet.setQuery(longDescSQL);
longDescDataSet.setQueryParameterValue(1, maximoDataSet.getString("workorderid"));
if(longDescDataSet.fetch()) {
row["longdesc"] = longDescDataSet.getString("ldtext");
}
longDescDataSet.close();
// End Long Description
// Last Major
lastmajorDataSet = MXReportDataSetProvider.create(this.getDataSource().getName(), "lastmajorDataSet");
lastmajorDataSet.open();
lastmajorSQL = "select workorder.wonum as wn1, workorder.workorderid as wid1, workorder.description as d1, p.frequency as f1, p.frequnit as fu1, "
"p.lastcompdate as lc1, p.extdate as e1, p.nextdate as n1, workorder.targstartdate as tsd1 "
"from workorder "
"join pm as p on p.pmnum=workorder.pmnum and p.siteid=workorder.siteid "
"where workorder.istask = 0 and workorder.actfinish = (select max(w1.actfinish) from maximo.workorder as w1 where w1.wonum=workorder.wonum and w1.siteid=workorder.siteid) "
"and workorder.worktype = 'MAJPM' and workorder.assetnum=? and workorder.siteid=? ";
lastmajorDataSet.setQuery(lastmajorSQL);
lastmajorDataSet.setQueryParameterValue(1, maximoDataSet.getString("assetnum"));
lastmajorDataSet.setQueryParameterValue(2, maximoDataSet.getString("siteid"));
if(lastmajorDataSet.fetch()) {
row["wn1"] = lastmajorDataSet.getString("wn1");
row["wid1"] = lastmajorDataSet.getString("wid1");
row["d1"] = lastmajorDataSet.getString("d1");
row["f1"] = lastmajorDataSet.getString("f1");
row["lc1"] = lastmajorDataSet.getTimestamp("lc1");
row["fu1"] = lastmajorDataSet.getString("fu1");
row["e1"] = lastmajorDataSet.getTimestamp("e1");
row["n1"] = lastmajorDataSet.getTimestamp("n1");
row["tsd1"] = lastmajorDataSet.getTimestamp("tsd1");
}
lastmajorDataSet.close();
// End Last Major
// Last Major Initials
lastmajorIDataSet = MXReportDataSetProvider.create(this.getDataSource().getName(), "lastmajorIDataSet");
lastmajorIDataSet.open();
lastmajorISQL =" WITH x(key, val, rnum) AS "
" (SELECT refwo, em_initials, row_number() over(partition by refwo) "
" from maximo.labtrans as labtrans "
" join maximo.person as person on person.personid=labtrans.laborcode where labtrans.refwo='" row["wn1"] "' and labtrans.siteid=?), "
" y(key, str, cnt, cnt_max) AS "
" ( SELECT key, VARCHAR('', 1000), 0, MAX(rnum) "
" FROM x "
" GROUP BY key "
" UNION ALL "
" SELECT y.key, y.str || RTRIM(CHAR(x.val)) || ',', y.cnt 1, y.cnt_max "
" FROM x, y "
" WHERE x.key = y.key AND "
" x.rnum = y.cnt 1 AND "
" y.cnt < y.cnt_max ) "
" SELECT key, str "
" FROM y "
" WHERE y.cnt = y.cnt_max ";
lastmajorIDataSet.setQuery(lastmajorISQL);
//lastmajorIDataSet.setQueryParameterValue(1, lastmajorDataSet.getString("wn1"));
lastmajorIDataSet.setQueryParameterValue(1, maximoDataSet.getString("siteid"));
if(lastmajorIDataSet.fetch()) {
row["str"] = lastmajorIDataSet.getString("str");
}
lastmajorIDataSet.close();
// End Last Major Initials
// Last Major Long Description
LMlongDescDataSet = MXReportDataSetProvider.create(this.getDataSource().getName(), "LMlongDescDataSet");
LMlongDescDataSet.open();
LMlongDescSQL = "select longdescription.ldtext as ldtext1 "
"from longdescription "
"where longdescription.ldownertable='WORKORDER' and longdescription.ldownercol='DESCRIPTION' "
"and longdescription.ldkey=" row["wid1"];
LMlongDescDataSet.setQuery(LMlongDescSQL);
//LMlongDescDataSet.setQueryParameterValue(1, lastmajorDataSet.getString("wid1"));
if(LMlongDescDataSet.fetch()) {
row["longdesc1"] = LMlongDescDataSet.getString("ldtext1");
}
LMlongDescDataSet.close();
// End Last Major Long Description
// Last Minor
lastminorDataSet = MXReportDataSetProvider.create(this.getDataSource().getName(), "lastminorDataSet");
lastminorDataSet.open();
lastminorSQL = "select workorder.wonum as wn2, workorder.workorderid as wid2, workorder.description as d2, p.frequency as f2, p.frequnit as fu2, "
"p.lastcompdate as lc2, p.extdate as e2, p.nextdate as n2, workorder.targstartdate as tsd2 "
"from workorder "
"join pm as p on p.pmnum=workorder.pmnum and p.siteid=workorder.siteid "
"where workorder.istask = 0 and workorder.actfinish = (select max(w1.actfinish) from maximo.workorder as w1 where w1.wonum=workorder.wonum and w1.siteid=workorder.siteid) "
"and workorder.worktype = 'MINPM' and workorder.assetnum=? and workorder.siteid= ? ";
lastminorDataSet.setQuery(lastminorSQL);
lastminorDataSet.setQueryParameterValue(1, maximoDataSet.getString("assetnum"));
lastminorDataSet.setQueryParameterValue(2, maximoDataSet.getString("siteid"));
if(lastminorDataSet.fetch()) {
row["wn2"] = lastminorDataSet.getString("wn2");
row["wid2"] = lastminorDataSet.getString("wid2");
row["d2"] = lastminorDataSet.getString("d2");
row["f2"] = lastminorDataSet.getString("f2");
row["lc2"] = lastminorDataSet.getTimestamp("lc2");
row["fu2"] = lastminorDataSet.getString("fu2");
row["e2"] = lastminorDataSet.getTimestamp("e2");
row["n2"] = lastminorDataSet.getTimestamp("n2");
row["tsd2"] = lastminorDataSet.getTimestamp("tsd2");
}
lastminorDataSet.close();
// End Last Minor
// Last Minor Initials
lastminorIDataSet = MXReportDataSetProvider.create(this.getDataSource().getName(), "lastminorIDataSet");
lastminorIDataSet.open();
lastminorISQL =" WITH x(key, val, rnum) AS "
" (SELECT refwo, em_initials, row_number() over(partition by refwo) "
" from maximo.labtrans as labtrans "
" join maximo.person as person on person.personid=labtrans.laborcode where labtrans.refwo='" row["wn2"] "' and labtrans.siteid=?), "
" y(key, str1, cnt, cnt_max) AS "
" ( SELECT key, VARCHAR('', 1000), 0, MAX(rnum) "
" FROM x "
" GROUP BY key "
" UNION ALL "
" SELECT y.key, y.str1 || RTRIM(CHAR(x.val)) || ',', y.cnt 1, y.cnt_max "
" FROM x, y "
" WHERE x.key = y.key AND "
" x.rnum = y.cnt 1 AND "
" y.cnt < y.cnt_max ) "
" SELECT key, str1 "
" FROM y "
" WHERE y.cnt = y.cnt_max ";
lastminorIDataSet.setQuery(lastminorISQL);
//lastminorIDataSet.setQueryParameterValue(1, lastminorDataSet.getString("wn2"));
lastminorIDataSet.setQueryParameterValue(1, maximoDataSet.getString("siteid"));
if(lastminorIDataSet.fetch()) {
row["str1"] = lastminorIDataSet.getString("str1");
}
lastminorIDataSet.close();
// End Last Minor Initials
// Last Minor Long Description
LM2longDescDataSet = MXReportDataSetProvider.create(this.getDataSource().getName(), "LM2longDescDataSet");
LM2longDescDataSet.open();
LM2longDescSQL = "select longdescription.ldtext as ldtext2 "
"from longdescription "
"where longdescription.ldownertable='WORKORDER' and longdescription.ldownercol='DESCRIPTION' "
"and longdescription.ldkey=" row["wid2"];
LM2longDescDataSet.setQuery(LM2longDescSQL);
//LM2longDescDataSet.setQueryParameterValue(1, lastminorDataSet.getString("wid2"));
if(LM2longDescDataSet.fetch()) {
row["longdesc2"] = LM2longDescDataSet.getString("ldtext2");
}
LM2longDescDataSet.close();
// End Last Minor Long Description
// Asset Long Description
AlongDescDataSet = MXReportDataSetProvider.create(this.getDataSource().getName(), "AlongDescDataSet");
AlongDescDataSet.open();
AlongDescSQL = "select longdescription.ldtext as ldtext3 "
"from longdescription "
"where longdescription.ldownertable='ASSET' and longdescription.ldownercol='DESCRIPTION' "
"and longdescription.ldkey=?";
AlongDescDataSet.setQuery(AlongDescSQL);
AlongDescDataSet.setQueryParameterValue(1, maximoDataSet.getString("assetuid"));
if(AlongDescDataSet.fetch()) {
row["longdesc3"] = AlongDescDataSet.getString("ldtext3");
}
AlongDescDataSet.close();
// End Asset Long Description
myTxn = MXReportTxnProvider.create(this.getDataSource().getName());
myStmt = myTxn.createStatement();
myStmt.setQuery("update workorder set workorder.em_printed = '1' where workorder.em_printed = '0' and workorder.workorderid = ? ");
myStmt.setQueryParameterValue(1,row["workorderid1"]);
//myStmt.setQueryParameterValue(2,"'" row["siteid"] "'");
myTxn.save();
return (true);
Комментарии:
1. Вы пробовали добавлять инструкции отладки, чтобы увидеть, какие запросы выполняются на самом деле? Затем посмотрите, сколько записей вы получите обратно. Добавьте их вместе, и он должен быть ниже вашего максимального предела записи, установленного в настройках