package xin.glue.ui.D.D01; import java.util.ArrayList; import java.util.List; import java.util.Map; 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.vo.PosRow; import com.posdata.glue.dao.vo.PosRowSet; /** * 根据不同条件查询板坏设计结果,用于组合板坏 * * @author 王黎 * @date 2008-8-22 */ public class FindSlabDnResultBySum extends PosActivity { public String runActivity(PosContext context) { // 获取查询条件钢号、通过工序、排列标准、最大板坏宽度、最小板坏宽度、排列顺序 String[] COIL_WGT = (String[])context.get("COIL_WGT"); String[] PROC_PATH = (String[])context.get("PROC_PATH"); String[] ARRAY_NORM = (String[])context.get("ARRAY_NORM"); String[] SLAB_WTH_MIN = (String[])context.get("SLAB_WTH_MIN"); String[] SLAB_WTH_MAX = (String[])context.get("SLAB_WTH_MAX"); String[] slabAssRes = (String[])context.get("slabAssRes"); String[] ASC = (String[])context.get("ASC"); StringBuffer querySql = new StringBuffer(200); //增加特殊要求 10.15 wxy querySql.append("SELECT 'false' AS CHK,DECODE(K.DSN_KIND, '1', 'Y', 'N') AS INGR_YN, T.* FROM TBD01_SLABDN_RST T "); querySql.append(",(SELECT DISTINCT ORD_NO, ORD_SEQ, DSN_KIND FROM TBB01_ORD_INGR WHERE DSN_KIND = '1') K "); //根据参数的有无返回对应的数据 String COIL_WGT_PAR = ((COIL_WGT != null && !"all".equals(COIL_WGT[0])) ? COIL_WGT[0] : "%").toString(); String PROC_PATH_PAR = ((PROC_PATH != null && !"all".equals(PROC_PATH[0])) ? PROC_PATH[0] : "%").toString(); boolean SLAB_WTH_MIN_NOTNULL = (SLAB_WTH_MIN != null && !"".equals(SLAB_WTH_MIN[0]) && SLAB_WTH_MIN[0] != null); boolean SLAB_WTH_MAX_NOTNULL = (SLAB_WTH_MAX != null && !"".equals(SLAB_WTH_MAX[0]) && SLAB_WTH_MAX[0] != null); querySql.append(" WHERE T.ORD_NO = K.ORD_NO(+) AND T.ORD_SEQ = K.ORD_SEQ(+) AND FAC_STL_GRD LIKE '"+ COIL_WGT_PAR + "' AND PROC_PATH LIKE '%" + PROC_PATH_PAR + "%'"); //组合查询条件 //根据板坏宽度的最大最小值是否为空组合查询条件 if(SLAB_WTH_MIN_NOTNULL && SLAB_WTH_MAX_NOTNULL) { querySql.append( " AND SLAB_WTH > '" + SLAB_WTH_MIN[0] + "' AND SLAB_WTH <= '" +SLAB_WTH_MAX[0] + "'"); } else if(SLAB_WTH_MIN_NOTNULL && !SLAB_WTH_MAX_NOTNULL) { querySql.append(" AND SLAB_WTH > '" + SLAB_WTH_MIN[0] + "'"); } else if(!SLAB_WTH_MIN_NOTNULL && SLAB_WTH_MAX_NOTNULL) { querySql.append(" AND SLAB_WTH <= '" +SLAB_WTH_MAX[0] + "'"); } //如果slabAssRes为ture,则查询安批组合的结果信息 if(slabAssRes != null && "true".equals(slabAssRes[0])) { querySql.append(" AND COMB_YN = 'Y'"); } else { querySql.append(" AND SLAB_LEN >= 4500 AND SLAB_LEN <= 5300 AND COMB_YN = 'N'"); } if(ARRAY_NORM != null) { querySql.append(" order by T." + ARRAY_NORM[0]); } if(ASC != null && !"true".equals(ASC[0])) { querySql.append(" desc"); } // 获取DAO PosRowSet rowSet = getDao("mesdao").findByQueryStatement(querySql.toString()); //如果查询的是组合板坏,则需要把组成该组合板坏的单板坏一起查询出来 if(slabAssRes != null && "true".equals(slabAssRes[0])) { List list = new ArrayList(); PosRow row = null; PosRow row2 = null; Map map = null; Map map2 = null; String DSN_SLAB_NO = ""; String slabAssResSql = ""; PosRowSet rowSet2 = null; while(rowSet.hasNext()) { row = rowSet.next(); map = row.getAttributes(); DSN_SLAB_NO = (String)map.get("DSN_SLAB_NO"); slabAssResSql = "SELECT 'false' AS CHK, S.* FROM TBD01_SLABDN_RST S WHERE P_DSN_SLAB_NO = '"+ DSN_SLAB_NO + "'"; rowSet2 = getDao("mesdao").findByQueryStatement(slabAssResSql); list.add(map); while(rowSet2.hasNext()) { row2 = rowSet2.next(); map2 = row2.getAttributes(); list.add(map2); } } context.put("EmpListResult", list); } else { context.put("EmpListResult", rowSet); } return PosBizControlConstants.SUCCESS; } }