package xin.glue.ui.B.B02; import java.util.ArrayList; import java.util.HashMap; 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; /** * * @Description 获得不合格钢号信息{界面ID:UIB020050} * @author 梅贵平{meiguiping} * @date 2009-1-9 下午05:21:12 * @JDK Version jdk1.4.2 */ public class FindErrorCharge extends PosActivity { public String runActivity(PosContext context) { PosRowSet rowset = context.getRowSet("ChemNM");//成分名 PosRowSet rowset1 = context.getRowSet("ChargeInfo");//炉次号等信息 PosRow row = null; PosRow row1 = null; List list = new ArrayList(); String chem = "";//用于保存第一次成分查询时候查询出来的成分名 String chem1 = "";//用于保存在查询炉次号信息时获的得成分名 String charge = "start";//用于保存炉次号信息,因为一个炉次号(工序已定,不再考虑)只会对应一组成分 String value = ""; int w = 0; int num = 0;//用于存储hashmap的数量 Map[] map = new HashMap[100]; Object xxx = "";//用于存储row1.getAttribute("CHEM_VAL"),因为row1.getAttribute("CHEM_VAL")可能是null while(rowset.hasNext()) { row = rowset.next(); chem = row.getAttribute("CHEM_CD").toString(); w++; while(rowset1.hasNext()) { row1 = rowset1.next(); if("start".equals(charge))//第一次进入 { charge = row1.getAttribute("CHARGE_NO").toString(); map[num]= new HashMap(); list.add(map[num]);//防止炉次号只有一个的情况,所以需要在这里add一次 } if(!charge.equals(row1.getAttribute("CHARGE_NO")))//在上一个炉次和下一个炉次的交接处有用 { charge = row1.getAttribute("CHARGE_NO").toString(); num++;//更换一个炉次时,需要变换一个hashmap来存储信息 list.add(map[num]);//每次new一个hashmap后再add一次 } xxx = row1.getAttribute("CHEM_VAL"); chem1 = row1.getAttribute("CHEM_CD").toString();//成分名 value = ((xxx==null)? "" : xxx).toString();//.toString();//成分值 // map[num].put("CHEM_VAL"+w, "");//先保存空值,在下面条件为假时,改chem+w(即key)才会存在 //成分相同并且炉次号和上一次的炉次号一样时候 if(chem.equals(chem1) && charge.equals(row1.getAttribute("CHARGE_NO"))) { map[num].put("CHEM_VAL"+w, value); // xxx = chem+w; } }//while(rowset1.hasNext()) end rowset1.reset(); } context.put("ErrorCharge", list); return PosBizControlConstants.SUCCESS; } }