这个写在client上面前端代码
前端代码自动带出表头表体之后根据字段值清空表头表体
package nc.ui.nc65px.ladana.ace.handler; import java.util.List; import nc.bs.framework.common.NCLocator; import nc.itf.uap.IUAPQueryBS; import nc.jdbc.framework.processor.BeanListProcessor; import nc.jdbc.framework.processor.BeanProcessor; import nc.ui.pubapp.uif2app.event.IAppEventHandler; import nc.ui.pubapp.uif2app.event.card.CardHeadTailAfterEditEvent; import nc.vo.nc65px.ladana.LaDanBvo; import nc.vo.nc65px.loanytlx.LoanYtlxBVO; import nc.vo.nc65px.loanytlx.LoanYtlxVO; import nc.vo.pub.BusinessException; import nc.vo.pub.lang.UFDouble; import nc.vo.pubapp.pattern.exception.ExceptionUtils; import nc.vo.utils.NullValueUtils; public class AceHeadTailAfterEditHandler implements IAppEventHandler{ @Override public void handleAppEvent(CardHeadTailAfterEditEvent e) { String key = e.getKey(); // 这个是判断那个这两个只要有一个就可以 equals(等于) ||(或者) try { if ("vdef35".equals(key) || "vdef38".equals(key)) { mnyAfter(e); } if ("vdef36".equals(key)) { ltlxdh(e); } } catch (BusinessException e1) { // TODO 自动生成的 catch 块 ExceptionUtils.wrappBusinessException(e1.getMessage()); } } private void mnyAfter(CardHeadTailAfterEditEvent e) { //获取面板获取表体获取的值 // 获取面板 获取表头(需要获取的值) 获取具体的值 UFDouble vdef35 = NullValueUtils.getNullUFdoubleValue(e .getBillCardPanel().getHeadItem("vdef38").getValueObject()); UFDouble vdef38 = NullValueUtils.getNullUFdoubleValue(e .getBillCardPanel().getHeadItem("vdef38") .getValueObject()); if (vdef35.equals("") || vdef38.equals("")) { e.getBillCardPanel().setHeadItem("ntotalytlxmny", null); } else { // 本币 = 本币汇率 乘 原币 UFDouble ntotalytlxmny = vdef35.multiply(vdef38); // 给表头本币字段赋值 头标签 字段 值 e.getBillCardPanel().setHeadItem("ntotalytlxmny", ntotalytlxmny); } } private void ltlxdh(CardHeadTailAfterEditEvent e) throws BusinessException { // 获取 预提利息单 预提利息单号主键 非空校验 给对象赋值 获取前端的值 String ltlxdh = NullValueUtils.getNullStringValue(e.getBillCardPanel() .getHeadItem("vdef36").getValueObject()); // 根据主键查询vo String sql = " select * from zyzy_loanytlx where pk_loanytlx='" + ltlxdh + "' and nvl(dr,0) = 0 "; // 去数据库查询数据,查出的数据用对象接收 IUAPQueryBS bs = NCLocator.getInstance().lookup(IUAPQueryBS.class); LoanYtlxVO headvo = (LoanYtlxVO) bs.executeQuery(sql, new BeanProcessor(LoanYtlxVO.class)); if (headvo != null) { // 预提开始日期 e.getBillCardPanel().setHeadItem("vdef40", headvo.getDstartdate()); // 预提截止日期 e.getBillCardPanel().setHeadItem("vdef39", headvo.getDenddate()); // 预提利息总额(原币) e.getBillCardPanel().setHeadItem( "vdef38", NullValueUtils.getNullStringValue(headvo .getNtotaloriytlxmny())); // 预提利息总额(本币) e.getBillCardPanel() .setHeadItem("vdef37",NullValueUtils.getNullStringValue(headvo.getNtotalytlxmny())); //预提利息本币汇率 e.getBillCardPanel().setHeadItem( "vdef35", NullValueUtils.getNullStringValue(headvo .getCurrate())); // 根据主键查询子表vo String strsql = "select * from zyzy_loanytlx_b where pk_loanytlx = '"+ ltlxdh + "' and nvl(dr,0) = 0"; // 获取子表数据 List executeQuery = (List ) bs.executeQuery(strsql, new BeanListProcessor(LoanYtlxBVO.class)); if (executeQuery != null && executeQuery.size() != 0) { // 获取页签编码为bodyvos表体总行数 int rowCount = e.getBillCardPanel().getBillModel("bodyvos").getRowCount(); int[] rows = new int[rowCount]; for (int i = 0; i < rows.length; i++) { rows[i] = i; } // 清空页签编码为id_LaDanVo表体 e.getBillCardPanel().getBillModel("bodyvos").delLine(rows); for (int i = 0; i < executeQuery.size(); i++) { LoanYtlxBVO appBVO = executeQuery.get(i); LaDanBvo ladanbvo = new LaDanBvo(); // 金额获取表体子表的数据可以显示在客户端表体中 ladanbvo.setVdef38(NullValueUtils.getNullStringValue(appBVO.getNrerate())); ladanbvo.setVdef39(NullValueUtils.getNullStringValue(appBVO.getNoriytlxmny())); // 页签编码为id_loanytlxbvo增行 //计息本金(本币) ladanbvo.setVdef40(NullValueUtils.getNullStringValue(appBVO.getNjxbjmny())); // 页签编码为id_loanytlxbvo增行 e.getBillCardPanel().getBillModel("bodyvos") .addLine(); // 获取到的数据set到页签编码为表体LaDanBvo e.getBillCardPanel().getBillModel("bodyvos") .setBodyRowVO(ladanbvo, i); // 给页签编码为id_loanytlxbvo行号赋值 e.getBillCardPanel().getBillModel("bodyvos") .setValueAt((i + 1) * 10 + "", i, "rowno"); } } } else { ltlxdh1(e); } } // 要是下面这个表为空的就清空这些表 private void ltlxdh1(CardHeadTailAfterEditEvent e) throws BusinessException { //预提开始日期 e.getBillCardPanel().setHeadItem("vdef40", null); // 预提截止日期 e.getBillCardPanel().setHeadItem("vdef39", null); // 预提利息总额(原币) e.getBillCardPanel().setHeadItem("vdef38", null); // 预提利息总额(本币) e.getBillCardPanel().setHeadItem("vdef37", null); //预提利息本币汇率 e.getBillCardPanel().setHeadItem("vdef35", null); // 获取表体总行数 id_loanytlxbvo是从前端的获取需要得到的网页的名字的值 int rowCount = e.getBillCardPanel().getBillModel("bodyvos") .getRowCount(); int[] rows = new int[rowCount]; // 这个是查询表体的行数 for (int i = 0; i < rowCount; i++) { // 给表体的行数排序 rows[i] = i; } // 清空表体 超过了这个行数清空表体表体是bodyvos e.getBillCardPanel().getBillModel("bodyvos").delLine(rows); } }
这个代码和上面这个相差不多做一个对比
package nc.ui.nc65px.loanytlx.ace.handler; import java.util.List; import nc.bcmanage.ui.NCLangRefPane; import nc.bs.framework.common.NCLocator; import nc.itf.uap.IUAPQueryBS; import nc.jdbc.framework.processor.BeanListProcessor; import nc.jdbc.framework.processor.BeanProcessor; import nc.ui.pubapp.uif2app.event.IAppEventHandler; import nc.ui.pubapp.uif2app.event.card.CardHeadTailAfterEditEvent; import nc.vo.nc65px.loanytlx.LoanYtlxBVO; import nc.vo.nc65px.loanytlx.LoanYtlxVO; import nc.vo.pub.BusinessException; import nc.vo.pub.lang.UFDouble; import nc.vo.pubapp.pattern.exception.ExceptionUtils; import nc.vo.utils.NullValueUtils; public class AceHeadTailAfterEditHandler implements IAppEventHandler{ @Override public void handleAppEvent(CardHeadTailAfterEditEvent e) { String key = e.getKey(); // 这个是判断那个这两个只要有一个就可以 equals(等于) ||(或者) try { if ("currate".equals(key) || "ntotaloriytlxmny".equals(key)) { mnyAfter(e); } if ("ltlxdh".equals(key)) { ltlxdh(e); } } catch (BusinessException e1) { // ExceptionUtils.wrappBusinessException(e1.getMessage()); } } private void mnyAfter(CardHeadTailAfterEditEvent e) { // 获取面板 获取表头(需要获取的值) 获取具体的值 UFDouble currate = NullValueUtils.getNullUFdoubleValue(e .getBillCardPanel().getHeadItem("currate").getValueObject()); UFDouble noriappmny = NullValueUtils.getNullUFdoubleValue(e .getBillCardPanel().getHeadItem("ntotaloriytlxmny") .getValueObject()); if (currate.equals("") || noriappmny.equals("")) { e.getBillCardPanel().setHeadItem("ntotalytlxmny", null); } else { // 本币 = 本币汇率 乘 原币 UFDouble ntotalytlxmny = currate.multiply(noriappmny); // 给表头本币字段赋值 头标签 字段 值 e.getBillCardPanel().setHeadItem("ntotalytlxmny", ntotalytlxmny); } } private void ltlxdh(CardHeadTailAfterEditEvent e) throws BusinessException { // 获取 预提利息单的字段 非空校验 给对象赋值 获取前端的值 String ltlxdh = NullValueUtils.getNullStringValue(e.getBillCardPanel() .getHeadItem("ltlxdh").getValueObject()); // 根据主键查询vo String sql = " select * from zyzy_loanytlx where pk_loanytlx='" + ltlxdh + "' "; // 去数据库查询数据,查出的数据用对象接收 IUAPQueryBS bs = NCLocator.getInstance().lookup(IUAPQueryBS.class); LoanYtlxVO headvo = (LoanYtlxVO) bs.executeQuery(sql, new BeanProcessor(LoanYtlxVO.class)); if (headvo != null) { // 预提开始日期 headvo.getDstartdate这个是把"dstartdate"这个字段赋值给headvo e.getBillCardPanel().setHeadItem("dstartdate",headvo.getDstartdate()); // 预提截止日期 e.getBillCardPanel().setHeadItem("denddate", headvo.getDenddate()); // 预提利息总额(原币) e.getBillCardPanel().setHeadItem("ntotaloriytlxmny",NullValueUtils.getNullStringValue(headvo.getNtotaloriytlxmny())); // 预提利息总额(本币) e.getBillCardPanel() .setHeadItem( "ntotalytlxmny", NullValueUtils.getNullStringValue(headvo .getNtotalytlxmny())); // 调整利息总额(原币) e.getBillCardPanel().setHeadItem( "ntotaloriadmny", NullValueUtils.getNullStringValue(headvo .getNtotaloriadmny())); // 调整利息总额(本币) e.getBillCardPanel().setHeadItem("ntotaladmny", NullValueUtils.getNullStringValue(headvo.getNtotaladmny())); // 实际预提利息金额(原币) e.getBillCardPanel().setHeadItem( "ntotalorisjytlxmny", NullValueUtils.getNullStringValue(headvo .getNtotalorisjytlxmny())); // 实际预提利息金额(本币) e.getBillCardPanel().setHeadItem( "ntotalsjytlxmn", NullValueUtils.getNullStringValue(headvo .getNtotalsjytlxmny())); // 根据主键查询子表vo String strsql = "select * from zyzy_loanytlx_b where pk_loanytlx = '" + ltlxdh + "' and nvl(dr,0) = 0"; // 获取子表数据 List executeQuery = (List ) bs .executeQuery(strsql, new BeanListProcessor( LoanYtlxBVO.class)); if (executeQuery != null && executeQuery.size() != 0) { // 获取页签编码为id_loanytlxbvo表体总行数 int rowCount = e.getBillCardPanel() .getBillModel("id_loanytlxbvo").getRowCount(); int[] rows = new int[rowCount]; for (int i = 0; i < rows.length; i++) { rows[i] = i; } // 清空页签编码为id_loanytlxbvo表体 e.getBillCardPanel().getBillModel("id_loanytlxbvo") .delLine(rows); for (int i = 0; i < executeQuery.size(); i++) { LoanYtlxBVO appBVO = executeQuery.get(i); LoanYtlxBVO LoanYtlxBVO = new LoanYtlxBVO(); // 金额获取表体子表的数据可以显示在客户端表体中 LoanYtlxBVO.setLoanctno(appBVO.getLoanctno()); LoanYtlxBVO.setNjxbjmny(appBVO.getNjxbjmny()); LoanYtlxBVO.setNorijxbjmny(appBVO.getNorijxbjmny()); LoanYtlxBVO.setNoriytlxmny(appBVO.getNoriytlxmny()); LoanYtlxBVO.setNadjustmny(appBVO.getNoriytlxmny()); // 页签编码为id_loanytlxbvo增行 e.getBillCardPanel().getBillModel("id_loanytlxbvo") .addLine(); // 获取到的数据set到页签编码为id_loanytlxbvo表体 e.getBillCardPanel().getBillModel("id_loanytlxbvo") .setBodyRowVO(LoanYtlxBVO, i); // 给页签编码为id_loanytlxbvo行号赋值 e.getBillCardPanel().getBillModel("id_loanytlxbvo") .setValueAt((i + 1) * 10 + "", i, "rowno"); } } } else { ltlxdh1(e); } } // 要是下面这个表为空的就清空这些表 private void ltlxdh1(CardHeadTailAfterEditEvent e) throws BusinessException { //获取e.getBillCardPanel().setHeadItem("dstartdate"这个字段之后为空 e.getBillCardPanel().setHeadItem("dstartdate", null); // 预提截止日期 e.getBillCardPanel().setHeadItem("denddate", null); // 预提利息总额(原币) e.getBillCardPanel().setHeadItem("ntotaloriytlxmny", null); // 预提利息总额(本币) e.getBillCardPanel().setHeadItem("ntotalytlxmny", null); // 调整利息总额(原币) e.getBillCardPanel().setHeadItem("ntotaloriadmny", null); // 调整利息总额(本币) e.getBillCardPanel().setHeadItem("ntotaladmny", null); // 实际预提利息金额(原币) e.getBillCardPanel().setHeadItem("ntotalorisjytlxmny", null); // 实际预提利息金额(本币) e.getBillCardPanel().setHeadItem("ntotalsjytlxmn", null); // 获取表体总行数 id_loanytlxbvo是从前端的获取需要得到的网页的名字的值 int rowCount = e.getBillCardPanel().getBillModel("id_loanytlxbvo") .getRowCount(); int[] rows = new int[rowCount]; // 这个是查询表体的行数 for (int i = 0; i < rowCount; i++) { // 给表体的行数排序 rows[i] = i; } // 清空表体 超过了这个行数清空表体表体是id_loanytlxbvo e.getBillCardPanel().getBillModel("id_loanytlxbvo").delLine(rows); } }



