package xin.glue.ui.B.B02; import com.posdata.glue.biz.activity.PosActivity; import com.posdata.glue.biz.constants.PosBizControlConstants; import com.posdata.glue.context.PosContext; import com.posdata.glue.dao.PosGenericDao; import com.posdata.glue.dao.PosJdbcDao; import com.posdata.glue.dao.manager.PosQueryDefinition; import com.posdata.glue.dao.manager.PosQueryManager; import com.posdata.glue.dao.vo.PosParameter; import com.posdata.glue.dao.vo.PosRow; import com.posdata.glue.dao.vo.PosRowSet; /** * * @Description 复样,某检验项目做多次,读取REWORK中记录{界面ID:UIB020120} * @author 梅贵平{meiguiping} * @date 2008-12-30 下午07:25:57 * @JDK Version jdk1.4.2 */ public class FindRELotQltyAchievement extends PosActivity { public String runActivity(PosContext context) { PosGenericDao dao = this.getDao("mesdao"); PosParameter param = null; PosRowSet prs = null; ///get request data String[] SMP = (String[])context.get("SMP");//试样号 // String[] SEQ = (String[])context.get("SEQ");//序号 String[] startTime = (String[])context.get("startTime"); String[] endTime = (String[])context.get("endTime"); String[] PORGCD = (String[])context.get("PORGCD");//试样进程代码 ///get qlty_cd from rework param = new PosParameter(); param.setWhereClauseParameter(0, SMP[0]+"%"); prs = dao.find("UIB020120_04.SELECT" , param); context.put("Grid2QltyNM", prs); ///get the wanted sql StringBuffer sBuffer = new StringBuffer(10000); if( prs.count()==0) return PosBizControlConstants.SUCCESS; if(prs != null && prs.count() > 0) { int count = prs.count();//获得材质项目的个数 PosRow row = null; int i= 1; String start = getManagerSql("UIB020120_03START.SELECT").toString(); String mid = getManagerSql("UIB020120_0202MID.SELECT").toString(); String end = getManagerSql("UIB020120_03END.SELECT").toString(); String sql = "";//用于replace后的存储 StringBuffer sb = new StringBuffer(8000);//sb.append(sql) while(prs.hasNext()) { row = prs.next(); sql = mid.replaceAll("[{]+[0]+[}]+", row.getAttribute("QLTY_CD").toString());//将{0}处替换为查询出来的材质项目 sql = sql.replaceAll("[{]+[1]+[}]+", new Integer(i++).toString()); sb.append(sql); } StringBuffer ss01 = getManagerSql("UIB020120_03.SELECT"); sql = start+"\n"+sb.toString()+"\n"+end;//TBB02_WORK_QLTY部分生成 //无查询条件的最终SQL生成,自然连接方式的SQL sBuffer.append(ss01+" ( "+sql+ " ) Y WHERE X.SMP_NO = Y.SMP_NO"); } param = new PosParameter(); int j = 0; if(!"".equals(SMP[0]))//若试样号不为空 { sBuffer.append("\n AND x.SMP_NO LIKE ?"); param.setWhereClauseParameter(j++, SMP[0]+"%"); } if(!"0000".equals(startTime[0]) && !"9999".equals(endTime[0]))//若检验时间不为空 { sBuffer.append("\n AND x.SMP_WORK_DTIME BETWEEN ? AND ?"); param.setWhereClauseParameter(j++, startTime[0]); param.setWhereClauseParameter(j++, endTime[0]); } if("".equals(PORGCD[0]))//试样进程代码 { sBuffer.append("\n AND ( X.SMP_PROG_CD = 'C' OR X.SMP_PROG_CD = 'D' OR X.SMP_PROG_CD = 'E')"); } else if("C".equals(PORGCD[0]))//检验待机 { sBuffer.append("\n AND X.SMP_PROG_CD = 'C'"); } else if("D".equals(PORGCD[0]))//判定待机 { sBuffer.append("\n AND X.SMP_PROG_CD = 'D'"); } else if("E".equals(PORGCD[0]))//判定完成 { sBuffer.append("\n AND X.SMP_PROG_CD = 'E'"); } ///exec finded PosRowSet rowset = dao.findByQueryStatement(sBuffer.toString() , param); context.put("RELotAchievementResult", rowset); return PosBizControlConstants.SUCCESS; } public StringBuffer getManagerSql(String id) { PosJdbcDao dao = (PosJdbcDao)this.getDao("mesdao"); PosQueryManager ppt = dao.getQueryManager(); PosQueryDefinition x = ppt.getQueryDefinition(id); return new StringBuffer(x.getQueryStatement()); } }