d7c6f7c182e63cb0e73e13857b4028dfc5513fdd.svn-base 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. package xin.glue.ui.B.B02;
  2. import com.posdata.glue.biz.activity.PosActivity;
  3. import com.posdata.glue.biz.constants.PosBizControlConstants;
  4. import com.posdata.glue.context.PosContext;
  5. import com.posdata.glue.dao.PosGenericDao;
  6. import com.posdata.glue.dao.PosJdbcDao;
  7. import com.posdata.glue.dao.manager.PosQueryDefinition;
  8. import com.posdata.glue.dao.manager.PosQueryManager;
  9. import com.posdata.glue.dao.vo.PosParameter;
  10. import com.posdata.glue.dao.vo.PosRow;
  11. import com.posdata.glue.dao.vo.PosRowSet;
  12. /**
  13. * 试样材质实绩查询,材质动态生成
  14. * @Description {界面ID:UIB020120}
  15. * @author 梅贵平{meiguiping}
  16. * @date 2008-11-5 下午02:38:51
  17. * @JDK Version jdk1.4.2
  18. */
  19. public class FindLotQltyAchievement extends PosActivity
  20. {
  21. /*
  22. * 首先从材质表及试样信息中获取有实绩值的材质项目代码,
  23. * 然后动态生成所需要的SQL语句(动态部分就是材质实绩值、TYPE、材质名称处理)
  24. */
  25. public String runActivity(PosContext context)
  26. {
  27. ///readay
  28. PosGenericDao dao = this.getDao("mesdao");
  29. PosParameter param = null;
  30. ///GET REQUEST DATA
  31. String[] SMP = (String[])context.get("SMP");//试样号
  32. // String[] SEQ = (String[])context.get("SEQ");//序号
  33. String[] STime = (String[])context.get("startTime");
  34. String[] ETime = (String[])context.get("endTime");
  35. String[] PORGCD = (String[])context.get("PORGCD");//试样进程代码
  36. String[] COILNO1 = (String[])context.get("COILNO1");
  37. String[] COILNO2 = (String[])context.get("COILNO2");
  38. String[] STLGRD = (String[])context.get("STLGRD");//牌号
  39. ///find qlty and qlty's name
  40. param = new PosParameter();
  41. StringBuffer sbb = getManagerSql("UIB020120_01.SELECT");
  42. int jj = 0;
  43. if(!"".equals(COILNO1[0]))
  44. {
  45. param.setWhereClauseParameter(jj++, COILNO1[0]);
  46. param.setWhereClauseParameter(jj++, COILNO2[0]);
  47. sbb.append("\n AND CCM.OLD_SAMPL_NO BETWEEN ? || '000' AND ? || '999' ");
  48. // sbb.append("\n AND SUBSTR(CCM.OLD_SAMPL_NO , 1, 10 ) BETWEEN ? AND ?");
  49. }
  50. if(!"".equals(PORGCD[0]))
  51. {
  52. param.setWhereClauseParameter(jj++, PORGCD[0]);
  53. sbb.append("\n AND LCM.SMP_PROG_CD = ?");
  54. }
  55. if(!"0000".equals(STime[0]) && !"9999".equals(ETime[0]))
  56. {
  57. param.setWhereClauseParameter(jj++, STime[0]);
  58. param.setWhereClauseParameter(jj++, ETime[0]);
  59. sbb.append("\n AND LCM.SMP_WORK_DTIME BETWEEN ? AND ?");
  60. }
  61. sbb.append("\n ORDER BY SQ.DISPLAY_SEQ");
  62. PosRowSet prs = dao.findByQueryStatement(sbb.toString(), param);
  63. context.put("Grid1QltyNM", prs);
  64. if(prs.count()==0) return PosBizControlConstants.SUCCESS;
  65. // System.out.println("###################################"+prs.count());
  66. ///生成最终的SQL
  67. StringBuffer sBuffer = new StringBuffer(10000);
  68. if(prs != null && prs.count() > 0)
  69. {
  70. int count = prs.count();//获得材质项目的个数
  71. PosRow row = null;
  72. int i= 1;
  73. String start = getManagerSql("UIB020120_02START.SELECT").toString();
  74. String mid = getManagerSql("UIB020120_0201MID.SELECT").toString();
  75. String end = getManagerSql("UIB020120_0201END.SELECT").toString();
  76. String sql = "";//用于replace后的存储
  77. StringBuffer sb = new StringBuffer(8000);//sb.append(sql)
  78. while(prs.hasNext())
  79. {
  80. row = prs.next();
  81. sql = mid.replaceAll("[{]+[0]+[}]+", row.getAttribute("QLTY_CD").toString());//将{0}处替换为查询出来的材质项目
  82. sql = sql.replaceAll("[{]+[1]+[}]+", new Integer(i++).toString());
  83. sb.append(sql);
  84. }
  85. StringBuffer ss01 = getManagerSql("UIB020120_03.SELECT");
  86. sql = start+"\n"+sb.toString()+"\n"+end;//TBB02_WORK_QLTY部分生成
  87. //无查询条件的最终SQL生成,自然连接方式的SQL
  88. sBuffer.append(ss01+" ( "+sql+ " ) Y WHERE X.SMP_NO = Y.SMP_NO");
  89. }
  90. param = new PosParameter();
  91. int j = 0;
  92. // if(!"0000".equals(startTime[0]) && !"9999".equals(endTime[0]))//若检验时间不为空
  93. // {
  94. // sBuffer.append("\n AND X.SMP_WORK_DTIME BETWEEN ? AND ?");
  95. // param.setWhereClauseParameter(j++, startTime[0]);
  96. // param.setWhereClauseParameter(j++, endTime[0]);
  97. // }
  98. //
  99. if("".equals(PORGCD[0]))//试样进程代码
  100. {
  101. sBuffer.append("\n AND ( X.SMP_PROG_CD = 'C' OR X.SMP_PROG_CD = 'D' OR X.SMP_PROG_CD = 'E')");
  102. }
  103. else if("C".equals(PORGCD[0]))//检验待机
  104. {
  105. sBuffer.append("\n AND X.SMP_PROG_CD = 'C'");
  106. }
  107. else if("D".equals(PORGCD[0]))//判定待机
  108. {
  109. sBuffer.append("\n AND X.SMP_PROG_CD = 'D'");
  110. }
  111. else if("E".equals(PORGCD[0]))//判定完成
  112. {
  113. sBuffer.append("\n AND X.SMP_PROG_CD = 'E'");
  114. }
  115. if(!"".equals(COILNO1[0]))
  116. {
  117. param.setWhereClauseParameter(j++, COILNO1[0]);
  118. param.setWhereClauseParameter(j++, COILNO2[0]);
  119. sBuffer.append("\n AND X.OLD_SAMPL_NO BETWEEN ? || '000' AND ? || '999' ");
  120. // sBuffer.append("\n AND SUBSTR(X.OLD_SAMPL_NO , 1, 10 ) BETWEEN ? AND ?");
  121. }
  122. if(!"0000".equals(STime[0]) && !"9999".equals(ETime[0]))
  123. {
  124. param.setWhereClauseParameter(j++, STime[0]);
  125. param.setWhereClauseParameter(j++, ETime[0]);
  126. sBuffer.append("\n AND X.SMP_WORK_DTIME BETWEEN ? AND ?");
  127. }
  128. sBuffer.append("\n AND X.SPEC_STL_GRD LIKE ?||'%' ");
  129. param.setWhereClauseParameter(j++, STLGRD[0]);
  130. sBuffer.append(" ORDER BY X.OLD_SAMPL_NO");
  131. PosRowSet rowset = dao.findByQueryStatement(sBuffer.toString() , param);
  132. context.put("LotAchievementResult", rowset);
  133. return PosBizControlConstants.SUCCESS;
  134. }
  135. public StringBuffer getManagerSql(String id)
  136. {
  137. PosJdbcDao dao = (PosJdbcDao)this.getDao("mesdao");
  138. PosQueryManager ppt = dao.getQueryManager();
  139. PosQueryDefinition x = ppt.getQueryDefinition(id);
  140. return new StringBuffer(x.getQueryStatement());
  141. }
  142. }