|
三张表:JZTC_SCRWWTD,JCTC_SCRWWTDWJ,JZTC_SCRWWTJWJMX。JCTC_SCRWWTDWJ.WTDZBID = JZTC_SCRWWTD.FID,JZTC_SCRWWTJWJMX.WTDID = JZTC_SCRWWTD.FID.1、前端界面首先维护JZTC_SCRWWTD和JCTC_SCRWWTDWJ的数据,主子表关系。
2、点击保存按钮,调用JCTC_SCRWWTDWJ的AfterSave prcess执行后事件,在该事件中执行存储过程根据相关条件将数据插入到JZTC_SCRWWTJWJMX表中,同时在前端页面将JZTC_SCRWWTJWJMX刷新出来,刷新JZTC_SCRWWTJWJMX数据卸载mainData的AfterSave事件中。
存在问题:
点击保存后,JZTC_SCRWWTJWJMX的数据没有同步刷新到前端页面。原因可能是点击保存后JZTC_SCRWWTD和JCTC_SCRWWTDWJ的数据保存了,存储过程数据还没执行完,所以JZTC_SCRWWTJWJMX的数据没有刷新出来。
想实现:在AfterSave prcess执行后事件中执行存储过程结束后返回给前端mainData的AfterSave一个值,通过这个返回值判断刷新JZTC_SCRWWTJWJMX数据。
AfterSave prcess执行后事件中执行存储过程代码如下:
public static void mainActivityAfterSaveJZTC_SCRWWTDWJAction() throws Exception {
Table table = (Table)ContextHelper.getActionContext().getParameter("table");
//新增
Iterator<Row> newrows = table.iterator(com.justep.system.data.ModifyState.NEW );
// printTableColumns(table);
while (newrows.hasNext()) {
Row row = newrows.next();
String lbjth = row.getString("LBJTH");
int hjsl = row.getDecimal("HJSL").intValue();
String zbid = row.getString("WTDZBID");
String sfqtxj = row.getString("SFQTXJ");
String zbwjid = row.getString("JZTC_SCRWWTDWJ");
//调用插入数据存储过程
callProduce(zbid,zbwjid, lbjth , hjsl, sfqtxj);
}
//修改
Iterator<Row> editrows = table.iterator(com.justep.system.data.ModifyState.EDIT );
while (editrows.hasNext()) {
Row row = editrows.next();
String lbjth = row.getString("LBJTH");
int hjsl = row.getDecimal("HJSL").intValue();
String zbid = row.getString("WTDZBID");
String sfqtxj = row.getString("SFQTXJ");
String zbwjid = row.getString("JZTC_SCRWWTDWJ");
// System.out.printf("lbjth = %s, hjsl = %d, zbid = %s", lbjth, hjsl, zbid);
//1、首先调用删除
callDeleteProduce(zbwjid);
//2、调用插入数据存储过程
callProduce(zbid,zbwjid, lbjth , hjsl, sfqtxj);
System.out.println("执行存储过程");
}
}
//插入数据存储过程
public static Boolean callProduce(String zbid,String zbwjid, String lbjth, int sl, String qt) throws Exception {
java.sql.Connection conn = ModelUtils.getConnectionInTransaction("/tcgl/scrwwtd/data");
// 创建一个 CallableStatement对象来调用数据库存储过程
java.sql.CallableStatement stat = conn.prepareCall("{call up_getpdm_bom_scrwwtd(?, ?, ?, ?, ?)}");
try {
// 设置IN参数,参数以顺序匹配
stat.setString(1, zbid);
stat.setString(2, zbwjid);
stat.setString(3, lbjth);
stat.setInt(4, sl);
stat.setString(5, qt);
// 执行存储过程
stat.execute();
return true;
} catch(Exception e) {
e.printStackTrace();
return false;
} finally {
stat.close();
}
}
|
|