package xin.glue.ui.common; import com.posdata.glue.biz.constants.PosBizControlConstants; import com.posdata.glue.context.PosContext; public class PosGridMultiSave extends PosDBEngine { /* * rowStatus:网格状态属性 * writeLog :是否需要记录到日志 * sqlkey-count:需要执行更新的表格数目 * allkey-count:级联执行更新的表格数目 * dao :所使用的DAO * 更新语句 :'sqlkey-u' + 序号,如 sqlkey-u0,sqlkey-u1,... * 参数 :'param-u' + 序号,多个参数以竖线分隔,如 REG_ID|REG_DATE * 插入语句 :'sqlkey-i' + 序号 * 参数 :'param-i' + 序号 * 删除语句 :'sqlkey-d' + 序号 * 参数 :'param-d' + 序号 */ public String runActivity(PosContext ctx) { int count = 1; if (getProperty("sqlkey-count") != null) count = Integer.parseInt(getProperty("sqlkey-count").trim()); int allcount = 1; if (getProperty("allkey-count") != null) allcount = Integer.parseInt(getProperty("allkey-count").trim()); String[] rowStatus = null; if (getProperty("rowStatus") == null) rowStatus = (String[]) ctx.get("rowStatus"); else rowStatus = (String[]) ctx.get(getProperty("rowStatus")); if (rowStatus == null || rowStatus.length == 0) return PosBizControlConstants.SUCCESS; Initialize(); int rowCount = rowStatus.length; // 2. Get Parameter( 各语句参数名获取 ) for (int i = 0; i < count; i++) { setParamMap(ctx, "sqlkey-u" + i, "param-u" + i, rowCount); setParamMap(ctx, "sqlkey-i" + i, "param-i" + i, rowCount); setParamMap(ctx, "sqlkey-d" + i, "param-d" + i, rowCount); } for (int i = 0; i < allcount; i++) { setParamMap(ctx, "sqlkey-au" + i, "param-au" + i, rowCount); setParamMap(ctx, "sqlkey-ai" + i, "param-ai" + i, rowCount); setParamMap(ctx, "sqlkey-ad" + i, "param-ad" + i, rowCount); } setParamIndex(); String allStatus = getProperty("allStatus"); if (allStatus == null || "".equals(allStatus)) allStatus = "uid"; for (int i = 0; i < rowCount; i++) { if (allStatus.indexOf(rowStatus[i]) > -1) { for (int j = 0; j < allcount; j++) { Execute(ctx, "sqlkey-au" + j, "param-au" + j, 'u'); Execute(ctx, "sqlkey-ai" + j, "param-ai" + j, 'i'); Execute(ctx, "sqlkey-ad" + j, "param-ad" + j, 'd'); } } if ("u".equals(rowStatus[i])) { for (int j = 0; j < count; j++) Execute(ctx, "sqlkey-u" + j, "param-u" + j, 'u'); } else if ("i".equals(rowStatus[i])) { for (int j = 0; j < count; j++) Execute(ctx, "sqlkey-i" + j, "param-i" + j, 'i'); } else if ("d".equals(rowStatus[i])) { for (int j = 0; j < count; j++) Execute(ctx, "sqlkey-d" + j, "param-d" + j, 'd'); } adjustParamIndex(); } return PosBizControlConstants.SUCCESS; } }