67,516
社区成员
发帖
与我相关
我的任务
分享
/**
* 此方法用来递归实现展开产品结构的功能
* 其中的LEFT为父结点ID、RIGHT为子结点ID、CLASS2为子结点的表名(需进行表名转化)
*/
public List obtainPartNumber(String leftobid ) {
Connection con = null;
PreparedStatement ps
ResultSet rs = null;
String tableName = "";
String partnumber = "";
String obid = "";
try {
sql = "select /*+RULE*/ CLASS2,RIGHT from PDMM31A.ASSMSTRC where LEFT=?";
ps = con.prepareStatement(sql);
ps.setString(1, leftobid);
rs = ps.executeQuery();
while (rs.next()) {
//进行表名转化,真正的对象信息存放在对应的W2PRODCT(产品)、W2ASSM(部件)等 表中
if (rs.getString("CLASS2").equals("W2ProMtr")) tableName = "W2PRODCT";
if (rs.getString("CLASS2").equals("W2AsmMtr")) tableName = "W2ASSM";
……
string SSql = "select/*+RULE*/ PARTNUMBER from PDMM31A."+ rs.getString("CLASS2") + " where OBID=?";
ps = con.prepareStatement(SSql);
ps.setString(1, rs.getString("RIGHT"));
ResultSet rss = ps.executeQuery();
if (rss.next())
partnumber = rss.getString("PARTNUMBER");
close(rss);
close(ps);
//调用函数obtainPartNumberObjectInfo获取对象信息
obid = obtainPartNumberObjectInfo(partnumber, tableName,con);
/**
*
* 递归调用obtainPartNumber实现逐层展开功能
* <注意>ASSMSTRC表中RIGHT的值是与其CLASS2中的**Mtr表中某个属性的OBID相对应,
* 而表中的LEFT中值是与某个保存对象信息的表中的OBID相对应。
*/
obtainPartNumber(obid, newvalue);
close(rss);
close(ps);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
close(ps);
close(rs);
close(cstmt);
}
return null;
}
public String obtainPartNumberObjectInfo(String partnumber,
String tablename,
connection con
) {
PreparedStatement pss = null;
ResultSet rs = null;
String sql = null;
String obid = "";
try {
sql = "select /*+RULE*/* from PDMM31A." + tablename + " where PARTNUMBER=? ";
pss = con.prepareStatement(sql);
pss.setString(1, partnumber);
rs = pss.executeQuery();
// 计算满足条件的记录数,PARTNUMBEROBJECT_RSCOUNT是个全局变量充当计算器的作用
while (rs.next()) {
PARTNUMBEROBJECT_RSCOUNT++;
}
// 重新执行SQL语句,之前执行的查询操作在统计记录个数时已被用掉
rs = pss.executeQuery();
ArrayList objectArrayList = new ArrayList();// 获得产品结构类中每个属性对象的属性信息
if (rs.next()) {
//获得对象信息,保存在objectArrayList中
if (tablename.equals("W2PRODCT")) {// 产品
//获得产品信息
objectArrayList.add(rs.getString("PARTNUMBER"));// 物料编码
objectArrayList.add("产品");// 类
objectArrayList.add(rs.getString("PROJECTNAME"));// 项目名称
objectArrayList.add(rs.getString("NOMENCLATURE"));// 名称
} else if (tablename.equals("W2ASSM")) {// 部件
//获得部件信息
objectArrayList.add(rs.getString("PARTNUMBER"));
objectArrayList.add("部件");// 类
objectArrayList.add(rs.getString("PROJECTNAME"));
objectArrayList.add(rs.getString("NOMENCLATURE"));
}……
// 将每个物料的属性信息存到 PARTNUMBEROBJECTLIST 中
SearchResultTable o = new SearchResultTable();
o.setResultArrayList(objectArrayList);
PARTNUMBEROBJECTLIST.add(o);
obid = rs.getString("OBID");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
close(pss);
close(rs);
}
return obid;
}
/**
* 此方法用来递归实现展开产品结构的功能
* 其中的LEFT为父结点ID、RIGHT为子结点ID、CLASS2为子结点的表名(需进行表名转化)
*/
public List obtainPartNumber(String leftobid ,Connection con ) {
PreparedStatement ps
ResultSet rs = null;
String tableName = "";
String partnumber = "";
String obid = "";
try {
sql = "select /*+RULE*/ CLASS2,RIGHT from PDMM31A.ASSMSTRC where LEFT=?";
ps = con.prepareStatement(sql);
ps.setString(1, leftobid);
rs = ps.executeQuery();
while (rs.next()) {
//进行表名转化,真正的对象信息存放在对应的W2PRODCT(产品)、W2ASSM(部件)等 表中
if (rs.getString("CLASS2").equals("W2ProMtr")) tableName = "W2PRODCT";
if (rs.getString("CLASS2").equals("W2AsmMtr")) tableName = "W2ASSM";
……
string SSql = "select/*+RULE*/ PARTNUMBER from PDMM31A."+ rs.getString("CLASS2") + " where OBID=?";
ps = con.prepareStatement(SSql);
ps.setString(1, rs.getString("RIGHT"));
ResultSet rss = ps.executeQuery();
if (rss.next())
partnumber = rss.getString("PARTNUMBER");
close(rss);
close(ps);
//调用函数obtainPartNumberObjectInfo获取对象信息
obid = obtainPartNumberObjectInfo(partnumber, tableName,con);
/**
*
* 递归调用obtainPartNumber实现逐层展开功能
* <注意>ASSMSTRC表中RIGHT的值是与其CLASS2中的**Mtr表中某个属性的OBID相对应,
* 而表中的LEFT中值是与某个保存对象信息的表中的OBID相对应。
*/
obtainPartNumber(obid, newvalue);
close(rss);
close(ps);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
close(ps);
close(rs);
close(cstmt);
}
return null;
}
public String obtainPartNumberObjectInfo(String partnumber,
String tablename,
connection con
) {
PreparedStatement pss = null;
ResultSet rs = null;
String sql = null;
String obid = "";
try {
sql = "select /*+RULE*/* from PDMM31A." + tablename + " where PARTNUMBER=? ";
pss = con.prepareStatement(sql);
pss.setString(1, partnumber);
rs = pss.executeQuery();
// 计算满足条件的记录数,PARTNUMBEROBJECT_RSCOUNT是个全局变量充当计算器的作用
while (rs.next()) {
PARTNUMBEROBJECT_RSCOUNT++;
}
// 重新执行SQL语句,之前执行的查询操作在统计记录个数时已被用掉
rs = pss.executeQuery();
ArrayList objectArrayList = new ArrayList();// 获得产品结构类中每个属性对象的属性信息
if (rs.next()) {
//获得对象信息,保存在objectArrayList中
if (tablename.equals("W2PRODCT")) {// 产品
//获得产品信息
objectArrayList.add(rs.getString("PARTNUMBER"));// 物料编码
objectArrayList.add("产品");// 类
objectArrayList.add(rs.getString("PROJECTNAME"));// 项目名称
objectArrayList.add(rs.getString("NOMENCLATURE"));// 名称
} else if (tablename.equals("W2ASSM")) {// 部件
//获得部件信息
objectArrayList.add(rs.getString("PARTNUMBER"));
objectArrayList.add("部件");// 类
objectArrayList.add(rs.getString("PROJECTNAME"));
objectArrayList.add(rs.getString("NOMENCLATURE"));
}……
// 将每个物料的属性信息存到 PARTNUMBEROBJECTLIST 中
SearchResultTable o = new SearchResultTable();
o.setResultArrayList(objectArrayList);
PARTNUMBEROBJECTLIST.add(o);
obid = rs.getString("OBID");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
close(pss);
close(rs);
}
return obid;
}