package xin.glue.ui.G.G04; import java.util.HashMap; 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.PosParameter; import com.posdata.glue.dao.vo.PosRow; import com.posdata.glue.dao.vo.PosRowSet; /* * desc: * author:王小炎 * date:2008-9-20 */ public class XinSaveCraneOrder extends PosActivity { public String runActivity(PosContext context) { // 从页面获取参数数据,供更新页面使用 // 制定行车命令所需: 原位置;目的位置;移动块数,行车编号 String[] fromAddress = (String[])context.get("FROM_ADDR"); String[] slabCnt = (String[])context.get("SLAB_CNT"); String[] craneNo = (String[])context.get("CRANE_NO"); String[] toAddress = (String[])context.get("TO_ADDR"); //String ordStat = "1"; //BigDecimal ordSeq = null; Map map = new HashMap(2); // 记录要移动的板坯的数组 String[] ArrSlabNo = new String[4]; // 记录要移动的板坯的数组 String[] ArrStorlay = new String[4]; // 行车命令选定移动的板坯块数 int intCnt = Integer.parseInt(slabCnt[0]); int i = 0; int j = 0; String OrdFlag ="0"; PosParameter param1 = new PosParameter(); param1.setWhereClauseParameter(0, fromAddress[0]); PosRowSet YardVO = getDao("mesdao").find("UIG040043_03.select", param1); // 获得要移动的板坯,一个跺位从上到下获取 intCnt 块板坯数 while(YardVO.hasNext()) { PosRow YardROW = YardVO.next(); ArrSlabNo[i] = (String)YardROW.getAttribute("SLAB_NO"); i++; if ( i == intCnt ) break; } param1 = new PosParameter(); param1.setWhereClauseParameter(0, toAddress[0]); YardVO = getDao("mesdao").find("UIG040043_toAddr_UPDATE.select", param1); //获得要放置板坯的层,一个跺位从下往上获取 inCnt 个层位置 while(YardVO.hasNext()) { PosRow YardROW = YardVO.next(); ArrStorlay[j] = (String)YardROW.getAttribute("STORELAY"); j++; if ( j == intCnt ) break; } for (int ii = 0; ii < intCnt; ii++) { PosParameter param0 = new PosParameter(); param0.setWhereClauseParameter(0, ArrSlabNo[ii]); param0.setWhereClauseParameter(1, fromAddress[0]); // 查询板坯库 fromAddress 位置 ArrSlabNo 板坯 行车命令状态为 ‘1’ 的记录是否存在,存在则不能编制记录 PosRowSet ChkOrdVO = getDao("mesdao").find("UIG040043_04.select", param0); if (ChkOrdVO.hasNext() ) { map.put("MSG_CON", "1"); OrdFlag = "1"; break; } } if (OrdFlag.equals("0")) { // 增加一条行车命令记录,则其序号加一,下面这段代码就是获得当前行车命令记录的最大序号 /* String sql2 = " select max(SEQ_NO) SEQ_NO from tbg04_slab_crane_order "; PosParameter param2 = new PosParameter(); PosRowSet rowset1 = getDao("mesdao").findByQueryStatement(sql2,param2); if(rowset1.hasNext()) { PosRow row0 = (PosRow)rowset1.next(); ordSeq = (BigDecimal)row0.getAttribute("SEQ_NO"); }else { ordSeq = new BigDecimal(0); } // 行车命令记录序号加一 int ordSeq2 = (ordSeq.intValue() + 1); BigDecimal ordSeq3 = new BigDecimal(ordSeq2); */ // 插入一条新命令 // param1.setValueParamter(0,ordSeq3); param1.setValueParamter(0,craneNo[0]); param1.setValueParamter(1,fromAddress[0]); param1.setValueParamter(2,toAddress[0]); param1.setValueParamter(3,slabCnt[0]); param1.setValueParamter(4,ArrSlabNo[0]); param1.setValueParamter(5,ArrSlabNo[1]); param1.setValueParamter(6,ArrSlabNo[2]); param1.setValueParamter(7,ArrSlabNo[3]); getDao("mesdao").insert("UIG040043_01.insert",param1); // 到上面为止,一条行车命令已经制定完成,下面对制定命令涉及到的 板坯原位置,目的位置 进行控制 制定行车命令,则状态为1 for ( int jj = 0; jj < intCnt ; jj++) { PosParameter param3 = new PosParameter(); param3.setValueParamter(0, "1"); param3.setValueParamter(1, ArrSlabNo[jj]); param3.setValueParamter(2, fromAddress[0]); getDao("mesdao").update("UIG040041_01.update", param3); param3 = new PosParameter(); param3.setValueParamter(0, "4"); param3.setValueParamter(1, ArrStorlay[jj]); param3.setValueParamter(2, toAddress[0]); getDao("mesdao").update("UIG040041_02.update", param3); } } context.put("ConfMsg",map); return PosBizControlConstants.SUCCESS; } }