package xin.glue.ui.H.H05; import java.math.BigDecimal; import javax.sql.RowSet; //import xin.glue.ui.common.component.PosSiteConfig; import xin.glue.ui.common.component.PosSiteLog; 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-11-3 */ public class XinInsertCraneOrder extends PosActivity { public String runActivity(PosContext context) { //区域标志 String[] toAddr = (String[])context.get("TO_ADDR1"); //行车编号 String[] craneNo = (String[])context.get("CREAN_NO"); //原放置位置 String[] srcYardAddr = (String[])context.get("SRC_YARD_ADDR"); //钢卷编号 String[] coilNo = (String[])context.get("OLD_SAMPL_NO"); //存放位置 String[] yardAddr = (String[])context.get("YARD_ADDR"); //到放置位置 String[] DEST_YARD_ADDR2 = (String[])context.get("DEST_YARD_ADDR2"); //登录人 String[] REG_ID = (String[])context.get("REG_ID"); /*这里处理的是仓库之间的行车命令*/ //钢卷仓库位置是否锁定标志,分为来源是否锁定和去向是否锁定 String RESERV_FL1 = null; String RESERV_FL2 = null; //去向位置为辊道情况,辊道上的钢卷号 String COIL_NO_TO = null; //这里需要判断是辊道还是仓库中的库位,如果不同的话需要进行相应的处理 if(srcYardAddr[0].substring(0,1).equals("B")){ //这里是来源位置为B辊道的情况,所有的B0位置作为一个整体处理 //判断来源位置是否已经制定了行车命令还没有被执行 PosParameter param1 = new PosParameter(); param1.setWhereClauseParameter(0, srcYardAddr[0]); //来源位置可以定义到具体的B000200,所以调用具体的查询方法 PosRowSet rowset1 = getDao("mesdao").find("UIH050020_05.select", param1); if(rowset1.hasNext()){ //这里来源位置有具体的位置信息,所以结果只有一个位置存在 PosRow row1 = rowset1.next(); RESERV_FL1 = (String)row1.getAttribute("RESERV_FL"); //判断来源B辊道是否被锁定 if(RESERV_FL1 != null){ if(RESERV_FL1.equals("1")){ //如果钢卷仓库的该位置已经锁定,则向前台抛出异常情况 logger.logDebug("XinInsertCraneOrder 制订钢卷库行车命令B的时候来源位置已经锁定! "); String vtemp="RESERV_FL1"; context.put("rs", vtemp); } }else{ //如果来源B辊道没有被锁定,判断去向位置信息 if(DEST_YARD_ADDR2[0].substring(0,1).equals("B")){ //来源是辊道的情况下去向不可以在是辊道信息。如果是的话给予错误提示 logger.logDebug("XinInsertCraneOrder 制订钢卷库行车命令B的时候来源位置与去向位置B同时为辊道信息! "); String vtemp="SERROR"; context.put("rs", vtemp); }else if(DEST_YARD_ADDR2[0].substring(0,2).equals("C0")){ //来源是辊道的情况下去向不可以在是辊道信息。如果是的话给予错误提示 logger.logDebug("XinInsertCraneOrder 制订钢卷库行车命令B的时候来源位置与去向位置C0同时为辊道信息! "); String vtemp="SERROR"; context.put("rs", vtemp); }else{ //去向是仓库内的时候,才能具体的进行处理 //判断去向位置是否已经制定了行车命令还没有被执行 PosParameter param2 = new PosParameter(); param2.setWhereClauseParameter(0, DEST_YARD_ADDR2[0]); PosRowSet rowset2 = getDao("mesdao").find("UIH050020_05.select",param2); if(rowset2.hasNext()){ PosRow row2= rowset2.next(); RESERV_FL2 = (String)row2.getAttribute("RESERV_FL"); if(RESERV_FL2 != null){ if(RESERV_FL2.equals("1")){ //如果钢卷仓库的该位置已经锁定,则向前台抛出异常情况 logger.logDebug("XinInsertCraneOrder 制订钢卷库行车命令的时候去向位置已经锁定! "); String vtemp="RESERV_FL2"; context.put("rs", vtemp); } }else{ //如果来源位置和去向位置都没有锁定的情况才能进行相应的命令制订操作。 //并且需要更新来源位置和去向位置的锁定状态信息 PosParameter param0 = new PosParameter(); //这里行车命令制订的时候,SEQ必须调用COIL_CRANE_ORDER_SEQ.NEXTVAL //param0.setValueParamter(0, bb); param0.setValueParamter(0, toAddr[0]); param0.setValueParamter(1, craneNo[0]); //如果原放置位置为滚道的话,需要去除后面两个没有意义的00 param0.setValueParamter(2, srcYardAddr[0].substring(0, srcYardAddr[0].length()-2)); param0.setValueParamter(3, coilNo[0]); //这里使用到放置位置,不使用存放位置 param0.setValueParamter(4, DEST_YARD_ADDR2[0]); //命令制订人 param0.setValueParamter(5, REG_ID[0]); getDao("mesdao").insert("UIH050020_01.insert",param0); //进行相应的来源位置的状态更新操作 PosParameter param3 = new PosParameter(); param3.setWhereClauseParameter(0, srcYardAddr[0]); getDao("mesdao").update("UIH050020_01.update",param3); //进行相应的去向位置的状态更新操作 PosParameter param4 = new PosParameter(); param4.setWhereClauseParameter(0, DEST_YARD_ADDR2[0]); getDao("mesdao").update("UIH050020_01.update",param4); } } } } } }else if(srcYardAddr[0].substring(0,2).equals("C0")){ //这里是来源位置为C0辊道的情况,所有的C0位置作为一个整体处理 //判断来源位置是否已经制定了行车命令还没有被执行 PosParameter param1 = new PosParameter(); param1.setWhereClauseParameter(0, srcYardAddr[0]); //这里来源位置可以区到具体的CO辊道CO10100,所以调用具体的查询方法 PosRowSet rowset1 = getDao("mesdao").find("UIH050020_05.select", param1); if(rowset1.hasNext()){ //这里来源位置有具体的位置信息,所以结果只有一个位置存在 PosRow row1 = rowset1.next(); RESERV_FL1 = (String)row1.getAttribute("RESERV_FL"); //判断来源C0辊道是否被锁定 if(RESERV_FL1 != null){ if(RESERV_FL1.equals("1")){ //如果钢卷仓库的该位置已经锁定,则向前台抛出异常情况 logger.logDebug("XinInsertCraneOrder 制订钢卷库行车命令C0的时候来源位置已经锁定! "); String vtemp="RESERV_FL1"; context.put("rs", vtemp); } }else{ //如果C0辊道没有被锁定,判断去向位置信息 if(DEST_YARD_ADDR2[0].substring(0,1).equals("B")){ //来源是辊道的情况下去向不可以在是辊道信息。如果是的话给予错误提示 logger.logDebug("XinInsertCraneOrder 制订钢卷库行车命令C0的时候来源位置与去向位置B同时为辊道信息! "); String vtemp="SERROR"; context.put("rs", vtemp); }else if(DEST_YARD_ADDR2[0].substring(0,2).equals("C0")){ //来源是辊道的情况下去向不可以在是辊道信息。如果是的话给予错误提示 logger.logDebug("XinInsertCraneOrder 制订钢卷库行车命令C0的时候来源位置与去向位置C0同时为辊道信息! "); String vtemp="SERROR"; context.put("rs", vtemp); }else{ //判断去向位置是否被锁定 PosParameter param2 = new PosParameter(); param2.setWhereClauseParameter(0, DEST_YARD_ADDR2[0]); PosRowSet rowset2 = getDao("mesdao").find("UIH050020_05.select",param2); if(rowset2.hasNext()){ PosRow row2= rowset2.next(); RESERV_FL2 = (String)row2.getAttribute("RESERV_FL"); if(RESERV_FL2 != null){ if(RESERV_FL2.equals("1")){ //如果钢卷仓库的该位置已经锁定,则向前台抛出异常情况 logger.logDebug("XinInsertCraneOrder 制订钢卷库行车命令的时候去向位置已经锁定! "); String vtemp="RESERV_FL2"; context.put("rs", vtemp); } }else{ //如果来源位置和去向位置都没有锁定的情况才能进行相应的命令制订操作。 //并且需要更新来源位置和去向位置的锁定状态信息 PosParameter param0 = new PosParameter(); // 这里行车命令制订的时候,SEQ必须调用COIL_CRANE_ORDER_SEQ.NEXTVAL //param0.setValueParamter(0, bb); param0.setValueParamter(0, toAddr[0]); param0.setValueParamter(1, craneNo[0]); //如果原放置位置为慢速链的话,需要去除后面两个没有意义的00 param0.setValueParamter(2, srcYardAddr[0].substring(0,srcYardAddr[0].length()-2)); param0.setValueParamter(3, coilNo[0]); //这里使用到放置位置,不使用存放位置 param0.setValueParamter(4, DEST_YARD_ADDR2[0]); // 命令制订人 param0.setValueParamter(5, REG_ID[0]); getDao("mesdao").insert("UIH050020_01.insert",param0); //进行相应的来源位置的状态更新操作 PosParameter param3 = new PosParameter(); param3.setWhereClauseParameter(0, srcYardAddr[0]); getDao("mesdao").update("UIH050020_01.update",param3); //进行相应的去向位置的状态更新操作 PosParameter param4 = new PosParameter(); param4.setWhereClauseParameter(0, DEST_YARD_ADDR2[0]); getDao("mesdao").update("UIH050020_01.update",param4); } } } } } }else{ //这里来源位置为仓库的情况下,主要判断去向位置可以存在的情况并且作出相应的处理。 //判断来源位置是否已经制定了行车命令还没有被执行 PosParameter param1 = new PosParameter(); param1.setWhereClauseParameter(0, srcYardAddr[0]); PosRowSet rowset1 = getDao("mesdao").find("UIH050020_05.select", param1); if(rowset1.hasNext()){ PosRow row1= rowset1.next(); RESERV_FL1 = (String)row1.getAttribute("RESERV_FL"); if(RESERV_FL1 != null){ if(RESERV_FL1.equals("1")){ //如果钢卷仓库的该位置已经锁定,则向前台抛出异常情况 logger.logDebug("XinInsertCraneOrder 制订钢卷库行车命令的时候来源位置已经锁定! "); String vtemp="RESERV_FL1"; context.put("rs", vtemp); } }else{ //判断去向位置是辊道还是仓库内的情况,并作出相应的处理 if(DEST_YARD_ADDR2[0].substring(0,1).equals("B")){ //这里去向是辊道的情况先不处理,等和二级谈完后再添加 //logger.logDebug("暂时不处理去向是辊道的情况 "); //String vtemp="ERROR"; //context.put("rs", vtemp); //这里暂时把去向为辊道的情况处理为B0401,如果需要到区域的其它鞍坐位由业务人员手工录入 //这里去向位置是B辊道的情况 //判断去向位置是否已经制定了行车命令还没有被执行 PosParameter param2 = new PosParameter(); param2.setWhereClauseParameter(0, DEST_YARD_ADDR2[0]); PosRowSet rowset2 = getDao("mesdao").find("UIH050020_06.select",param2); //这里定位到具体区域的具体鞍坐位 if(rowset2.hasNext()){ //这里来源位置有具体的位置信息,所以结果只有一个位置存在 PosRow row2 = rowset2.next(); RESERV_FL2 = (String)row2.getAttribute("RESERV_FL"); COIL_NO_TO = (String)row2.getAttribute("COIL_NO"); //如果去向位置上存在钢卷,给出提示 if(COIL_NO_TO != null){ logger.logDebug("去向位置的B辊道上已经存在钢卷,UIH050020 XinInsertCraneOrder"); String vtemp="ERROR"; context.put("rs", vtemp); }else{ //B辊道上没有钢卷的情况下,判断去向B辊道是否被锁定 B0501 if(RESERV_FL2 != null){ if(RESERV_FL2.equals("1")){ //如果钢卷仓库的该位置已经锁定,则向前台抛出异常情况 logger.logDebug("XinInsertCraneOrder 制订钢卷库行车命令B的时候去向位置已经锁定! "); String vtemp="RESERV_FL2"; context.put("rs", vtemp); } }else{ //去向位置为B辊道,没有锁定的情况 PosParameter param0 = new PosParameter(); // 这里行车命令制订的时候,SEQ必须调用COIL_CRANE_ORDER_SEQ.NEXTVAL //param0.setValueParamter(0, bb); param0.setValueParamter(0, toAddr[0]); param0.setValueParamter(1, craneNo[0]); //原放置位置为库内的垛位 param0.setValueParamter(2, srcYardAddr[0]); param0.setValueParamter(3, coilNo[0]); //这里使用到放置位置,如果到放置位置为B辊道的情况。B0402不需要截断 param0.setValueParamter(4, DEST_YARD_ADDR2[0]); // 命令制订人 param0.setValueParamter(5, REG_ID[0]); getDao("mesdao").insert("UIH050020_01.insert",param0); //进行相应的来源位置的状态更新操作 PosParameter param3 = new PosParameter(); param3.setWhereClauseParameter(0, srcYardAddr[0]); getDao("mesdao").update("UIH050020_01.update",param3); //进行相应的去向位置的状态更新操作 PosParameter param4 = new PosParameter(); //去向位置为B0402,要在后面补“00” param4.setWhereClauseParameter(0, DEST_YARD_ADDR2[0]+"00"); getDao("mesdao").update("UIH050020_01.update",param4); } } } }else if(DEST_YARD_ADDR2[0].substring(0,2).equals("C0")){ //这里去向位置是C0辊道的情况 //这里去向是辊道的情况先不处理,等和二级谈完后再添加 //logger.logDebug("暂时不处理去向是辊道的情况 "); //String vtemp="ERROR"; //context.put("rs", vtemp); //这里暂时把去向为辊道的情况处理为C0401,如果需要到区域的其它鞍坐位由业务人员手工录入 //这里去向位置是C辊道的情况 //判断去向位置是否已经制定了行车命令还没有被执行 PosParameter param2 = new PosParameter(); param2.setWhereClauseParameter(0, DEST_YARD_ADDR2[0]); PosRowSet rowset2 = getDao("mesdao").find("UIH050020_06.select",param2); //这里定位到具体区域的具体鞍坐位 if(rowset2.hasNext()){ //这里来源位置有具体的位置信息,所以结果只有一个位置存在 PosRow row2 = rowset2.next(); RESERV_FL2 = (String)row2.getAttribute("RESERV_FL"); COIL_NO_TO = (String)row2.getAttribute("COIL_NO"); //如果去向位置上存在钢卷,给出提示 if(COIL_NO_TO != null){ logger.logDebug("去向位置的C0辊道上已经存在钢卷,UIH050020 XinInsertCraneOrder"); String vtemp="ERROR"; context.put("rs", vtemp); }else{ //C0辊道上没有钢卷的情况下,判断去向C0辊道是否被锁定 C0402 if(RESERV_FL2 != null){ if(RESERV_FL2.equals("1")){ //如果钢卷仓库的该位置已经锁定,则向前台抛出异常情况 logger.logDebug("XinInsertCraneOrder 制订钢卷库行车命令C0的时候去向位置已经锁定! "); String vtemp="RESERV_FL2"; context.put("rs", vtemp); } }else{ //去向位置为B辊道,没有锁定的情况 PosParameter param0 = new PosParameter(); // 这里行车命令制订的时候,SEQ必须调用COIL_CRANE_ORDER_SEQ.NEXTVAL //param0.setValueParamter(0, bb); param0.setValueParamter(0, toAddr[0]); param0.setValueParamter(1, craneNo[0]); //原放置位置为库内的垛位 param0.setValueParamter(2, srcYardAddr[0]); param0.setValueParamter(3, coilNo[0]); //这里使用到放置位置,如果到放置位置为B辊道的情况。C0402不需要截断 param0.setValueParamter(4, DEST_YARD_ADDR2[0]); // 命令制订人 param0.setValueParamter(5, REG_ID[0]); getDao("mesdao").insert("UIH050020_01.insert",param0); //进行相应的来源位置的状态更新操作 PosParameter param3 = new PosParameter(); param3.setWhereClauseParameter(0, srcYardAddr[0]); getDao("mesdao").update("UIH050020_01.update",param3); //进行相应的去向位置的状态更新操作 PosParameter param4 = new PosParameter(); //去向位置为C0402,要在后面补“00” param4.setWhereClauseParameter(0, DEST_YARD_ADDR2[0]+"00"); getDao("mesdao").update("UIH050020_01.update",param4); } } } }else{ //这里去向位置是仓库内的情况 //判断去向位置是否已经制定了行车命令还没有被执行 PosParameter param2 = new PosParameter(); param2.setWhereClauseParameter(0, DEST_YARD_ADDR2[0]); PosRowSet rowset2 = getDao("mesdao").find("UIH050020_05.select",param2); if(rowset2.hasNext()){ PosRow row2= rowset2.next(); RESERV_FL2 = (String)row2.getAttribute("RESERV_FL"); if(RESERV_FL2 != null){ if(RESERV_FL2.equals("1")){ //如果钢卷仓库的该位置已经锁定,则向前台抛出异常情况 logger.logDebug("XinInsertCraneOrder 制订钢卷库行车命令的时候去向位置已经锁定! "); String vtemp="RESERV_FL2"; context.put("rs", vtemp); } }else{ //如果来源位置和去向位置都没有锁定的情况才能进行相应的命令制订操作。 //并且需要更新来源位置和去向位置的锁定状态信息 PosParameter param0 = new PosParameter(); // 这里行车命令制订的时候,SEQ必须调用COIL_CRANE_ORDER_SEQ.NEXTVAL //param0.setValueParamter(0, bb); param0.setValueParamter(0, toAddr[0]); param0.setValueParamter(1, craneNo[0]); param0.setValueParamter(2, srcYardAddr[0]); param0.setValueParamter(3, coilNo[0]); //这里使用到放置位置,不使用存放位置 param0.setValueParamter(4, DEST_YARD_ADDR2[0]); // 命令制订人 param0.setValueParamter(5, REG_ID[0]); getDao("mesdao").insert("UIH050020_01.insert",param0); //进行相应的来源位置的状态更新操作 PosParameter param3 = new PosParameter(); param3.setWhereClauseParameter(0, srcYardAddr[0]); getDao("mesdao").update("UIH050020_01.update",param3); //进行相应的去向位置的状态更新操作 PosParameter param4 = new PosParameter(); param4.setWhereClauseParameter(0, DEST_YARD_ADDR2[0]); getDao("mesdao").update("UIH050020_01.update",param4); } } } } } } return PosBizControlConstants.SUCCESS; } }