| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- package xin.glue.ui.B.B01;
- import xin.glue.ui.B.B02.MutilConditionFind;
- 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.vo.PosParameter;
- import com.posdata.glue.dao.vo.PosRow;
- import com.posdata.glue.dao.vo.PosRowSet;
- /**
- * 查询成分现状(界面ID:UIB010020)
- * @author 梅贵平
- * @date 2008-9-27
- */
- public class FindChemState extends PosActivity
- {
- public String runActivity(PosContext context)
- {
- ///ready
- PosGenericDao dao = this.getDao("mesdao");
- MutilConditionFind mcf = new MutilConditionFind();
- //用于判断查询客户、规格、厂内成分
- String[] SelectedRadio = (String[])context.get("SelectedRadio");
- String[] CUSTCD = (String[])context.get("CUSTCD");//客户参数号
- String[] SSTLGRD = (String[])context.get("SSTLGRD");//标准钢号
- String[] FSTLGRD = (String[])context.get("FSTLGRD");//厂内钢号
-
- PosRowSet rowset = null;//存储最终查询结果
- PosRowSet prs = null; //存储临时查询结果
-
- String first = "";//“保存select的开头信息”
- String end = "";//保存select的结尾信息
- String mid = "";//保存select的中间信息
- String sql0 = "";//区分客户、厂内、规格信息
- StringBuffer sql = new StringBuffer(2000);
-
- String qMark = "";//用于替代问号
-
- PosParameter param = null;
- if(SelectedRadio != null)
- {
- if("1".equals(SelectedRadio[0]))//按客户参数号查询
- {
- first = "SELECT CUST_SPEC_NO IDX,CUST_NM ";
- 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";
- sql0 = getSql1();
-
- param = new PosParameter();
- qMark = CUSTCD[0]+"%";
- param.setWhereClauseParameter(0, qMark);
- prs= dao.find("UIB010020_05.SELECT", param);
- }
- if("2".equals(SelectedRadio[0]))//按标准号查询,模糊查询
- {
- first = "SELECT SPEC_STL_GRD IDX , SPEC_ABBSYM , THK_MIN , THK_MAX";
- 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";
- sql0 = getSql2();
-
- param = new PosParameter();
- qMark = SSTLGRD[0]+"%";
- param.setWhereClauseParameter(0, qMark);
- prs= dao.find("UIB010020_04.SELECT", param);
- }
- if("3".equals(SelectedRadio[0]))//按厂内钢号查询
- {
- first = "SELECT FAC_STL_GRD IDX, '热轧厂' PROCD";
- end = " FROM TBB01_FAC_INGR T WHERE T.FAC_STL_GRD LIKE ? GROUP BY FAC_STL_GRD, '热轧厂' ORDER BY IDX";
- sql0 = getSql3();
-
- param = new PosParameter();
- qMark = FSTLGRD[0]+"%";
- param.setWhereClauseParameter(0, qMark);
- prs = dao.find("UIB010020_06.SELECT", param);
- }
- if("4".equals(SelectedRadio[0]))//按厂内钢号查询
- {
- first = "SELECT TAFAC_STL_GRD IDX, '热轧厂' PROCD";
- end = " FROM TBB01_TAFAC_INGR T WHERE T.TAFAC_STL_GRD LIKE ? GROUP BY TAFAC_STL_GRD, '热轧厂' ORDER BY IDX";
- sql0 = getSql3();
-
- param = new PosParameter();
- qMark = FSTLGRD[0]+"%";
- param.setWhereClauseParameter(0, qMark);
- prs = dao.find("UIB010020_07.SELECT", param);
- }
- }//if(SelectedRadio != null) END
- context.put("ChemNM", prs);//用于成分项目的动态生成
-
- int i = 1;
- PosRow row = null;
- if(prs.count() > 0)
- {
- while(prs.hasNext())
- {
- row = prs.next();
- mid = sql0.replaceAll("[{]+[0]+[}]+", row.getAttribute("CHEM_CD").toString());
- mid = mid.replaceAll("[{]+[1]+[}]+", new Integer(i++).toString());
- sql = sql.append(mid);
- }
- }
- if(sql.length() > 0)
- {
- param = new PosParameter();
- param.setWhereClauseParameter(0, qMark);
- rowset = dao.findByQueryStatement(first+sql+end, param);
- context.put("ChemResult" , rowset);
- }
- return PosBizControlConstants.SUCCESS;
- }
- public String getSql3()//厂内成分
- {
- String sql = ", TO_NUMBER(MAX(CASE WHEN CHEM_CD = '{0}' THEN CHEM_AIM END) ) AIM{1} "+
- ", TO_NUMBER(MAX(CASE WHEN CHEM_CD = '{0}' THEN CHEM_MIN END)) MIN{1} "+
- ", TO_NUMBER(MAX(CASE WHEN CHEM_CD = '{0}' THEN CHEM_MAX END) ) MAX{1} , '{0}' CHEM_CD{1}";
- return sql;
- }
-
- public String getSql1()//客户成分
- {
- String sql = ", TO_NUMBER(MAX(CASE WHEN CHEM_CD = '{0}' THEN CHEM_MAX END) ) MAX{1} "+
- ", TO_NUMBER(MAX(CASE WHEN CHEM_CD = '{0}' THEN CHEM_MIN END)) MIN{1} ,'{0}' CHEM_CD{1}";
- return sql;
- }
-
- public String getSql2()//规格成分
- {
- String sql = ", TO_NUMBER(MAX(CASE WHEN CHEM_CD = '{0}' THEN CHEM_MAX END)) MAX{1} "+
- ", TO_NUMBER(MAX(CASE WHEN CHEM_CD = '{0}' THEN CHEM_MIN END)) MIN{1} ,'{0}' CHEM_CD{1}";
- return sql;
- }
- }
|