1703631bb58ae8406ec7bbf85a68b9e5df3a5fcd.svn-base 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. package xin.glue.ui.B.B01;
  2. import xin.glue.ui.B.B02.MutilConditionFind;
  3. import com.posdata.glue.biz.activity.PosActivity;
  4. import com.posdata.glue.biz.constants.PosBizControlConstants;
  5. import com.posdata.glue.context.PosContext;
  6. import com.posdata.glue.dao.PosGenericDao;
  7. import com.posdata.glue.dao.vo.PosParameter;
  8. import com.posdata.glue.dao.vo.PosRow;
  9. import com.posdata.glue.dao.vo.PosRowSet;
  10. /**
  11. * 查询成分现状(界面ID:UIB010020)
  12. * @author 梅贵平
  13. * @date 2008-9-27
  14. */
  15. public class FindChemState extends PosActivity
  16. {
  17. public String runActivity(PosContext context)
  18. {
  19. ///ready
  20. PosGenericDao dao = this.getDao("mesdao");
  21. MutilConditionFind mcf = new MutilConditionFind();
  22. //用于判断查询客户、规格、厂内成分
  23. String[] SelectedRadio = (String[])context.get("SelectedRadio");
  24. String[] CUSTCD = (String[])context.get("CUSTCD");//客户参数号
  25. String[] SSTLGRD = (String[])context.get("SSTLGRD");//标准钢号
  26. String[] FSTLGRD = (String[])context.get("FSTLGRD");//厂内钢号
  27. PosRowSet rowset = null;//存储最终查询结果
  28. PosRowSet prs = null; //存储临时查询结果
  29. String first = "";//“保存select的开头信息”
  30. String end = "";//保存select的结尾信息
  31. String mid = "";//保存select的中间信息
  32. String sql0 = "";//区分客户、厂内、规格信息
  33. StringBuffer sql = new StringBuffer(2000);
  34. String qMark = "";//用于替代问号
  35. PosParameter param = null;
  36. if(SelectedRadio != null)
  37. {
  38. if("1".equals(SelectedRadio[0]))//按客户参数号查询
  39. {
  40. first = "SELECT CUST_SPEC_NO IDX,CUST_NM ";
  41. end = " FROM TBB01_CUST_INGR T,TBZ00_CUSTOMER T1 WHERE SUBSTR(T.CUST_SPEC_NO,1,6) = T1.CUST_CD AND SUBSTR(T.CUST_SPEC_NO,1,6) LIKE ? GROUP BY CUST_SPEC_NO,CUST_NM ORDER BY IDX";
  42. sql0 = getSql1();
  43. param = new PosParameter();
  44. qMark = CUSTCD[0]+"%";
  45. param.setWhereClauseParameter(0, qMark);
  46. prs= dao.find("UIB010020_05.SELECT", param);
  47. }
  48. if("2".equals(SelectedRadio[0]))//按标准号查询,模糊查询
  49. {
  50. first = "SELECT SPEC_STL_GRD IDX , SPEC_ABBSYM , THK_MIN , THK_MAX";
  51. end = " FROM TBB01_SPEC_INGR T WHERE T.SPEC_STL_GRD LIKE ? GROUP BY (SPEC_STL_GRD , SPEC_ABBSYM , THK_MIN , THK_MAX) ORDER BY IDX";
  52. sql0 = getSql2();
  53. param = new PosParameter();
  54. qMark = SSTLGRD[0]+"%";
  55. param.setWhereClauseParameter(0, qMark);
  56. prs= dao.find("UIB010020_04.SELECT", param);
  57. }
  58. if("3".equals(SelectedRadio[0]))//按厂内钢号查询
  59. {
  60. first = "SELECT FAC_STL_GRD IDX, '热轧厂' PROCD";
  61. end = " FROM TBB01_FAC_INGR T WHERE T.FAC_STL_GRD LIKE ? GROUP BY FAC_STL_GRD, '热轧厂' ORDER BY IDX";
  62. sql0 = getSql3();
  63. param = new PosParameter();
  64. qMark = FSTLGRD[0]+"%";
  65. param.setWhereClauseParameter(0, qMark);
  66. prs = dao.find("UIB010020_06.SELECT", param);
  67. }
  68. if("4".equals(SelectedRadio[0]))//按厂内钢号查询
  69. {
  70. first = "SELECT TAFAC_STL_GRD IDX, '热轧厂' PROCD";
  71. end = " FROM TBB01_TAFAC_INGR T WHERE T.TAFAC_STL_GRD LIKE ? GROUP BY TAFAC_STL_GRD, '热轧厂' ORDER BY IDX";
  72. sql0 = getSql3();
  73. param = new PosParameter();
  74. qMark = FSTLGRD[0]+"%";
  75. param.setWhereClauseParameter(0, qMark);
  76. prs = dao.find("UIB010020_07.SELECT", param);
  77. }
  78. }//if(SelectedRadio != null) END
  79. context.put("ChemNM", prs);//用于成分项目的动态生成
  80. int i = 1;
  81. PosRow row = null;
  82. if(prs.count() > 0)
  83. {
  84. while(prs.hasNext())
  85. {
  86. row = prs.next();
  87. mid = sql0.replaceAll("[{]+[0]+[}]+", row.getAttribute("CHEM_CD").toString());
  88. mid = mid.replaceAll("[{]+[1]+[}]+", new Integer(i++).toString());
  89. sql = sql.append(mid);
  90. }
  91. }
  92. if(sql.length() > 0)
  93. {
  94. param = new PosParameter();
  95. param.setWhereClauseParameter(0, qMark);
  96. rowset = dao.findByQueryStatement(first+sql+end, param);
  97. context.put("ChemResult" , rowset);
  98. }
  99. return PosBizControlConstants.SUCCESS;
  100. }
  101. public String getSql3()//厂内成分
  102. {
  103. String sql = ", TO_NUMBER(MAX(CASE WHEN CHEM_CD = '{0}' THEN CHEM_AIM END) ) AIM{1} "+
  104. ", TO_NUMBER(MAX(CASE WHEN CHEM_CD = '{0}' THEN CHEM_MIN END)) MIN{1} "+
  105. ", TO_NUMBER(MAX(CASE WHEN CHEM_CD = '{0}' THEN CHEM_MAX END) ) MAX{1} , '{0}' CHEM_CD{1}";
  106. return sql;
  107. }
  108. public String getSql1()//客户成分
  109. {
  110. String sql = ", TO_NUMBER(MAX(CASE WHEN CHEM_CD = '{0}' THEN CHEM_MAX END) ) MAX{1} "+
  111. ", TO_NUMBER(MAX(CASE WHEN CHEM_CD = '{0}' THEN CHEM_MIN END)) MIN{1} ,'{0}' CHEM_CD{1}";
  112. return sql;
  113. }
  114. public String getSql2()//规格成分
  115. {
  116. String sql = ", TO_NUMBER(MAX(CASE WHEN CHEM_CD = '{0}' THEN CHEM_MAX END)) MAX{1} "+
  117. ", TO_NUMBER(MAX(CASE WHEN CHEM_CD = '{0}' THEN CHEM_MIN END)) MIN{1} ,'{0}' CHEM_CD{1}";
  118. return sql;
  119. }
  120. }