package xin.glue.ui.H.H05; import xin.glue.ui.common.PosGridSave; //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; public class PosSaveWkBeam extends PosActivity{ public String runActivity(PosContext context) { String[] rowStatus = (String[]) context.get("rowStatus"); String[] WK_BEAM = (String[]) context.get("WK_BEAM"); //应该使用批次号 String[] COIL_NO = (String[]) context.get("OLD_SAMPL_NO"); String[] TO_ADDR = (String[]) context.get("TO_ADDR"); String[] CR_NO = (String[]) context.get("CR_NO"); String[] ORD_SEQ = (String[]) context.get("ORD_SEQ"); //登录人 String[] REG_ID = (String[])context.get("REG_ID"); logger.logInfo("PosSaveWkBeam---> rowStatus["+ rowStatus.length+"]" ); if(rowStatus != null){ for(int i=0;i ORD_SEQ["+ ORD_SEQ[i]+"]" ); PosParameter param1 = new PosParameter(); param1.setWhereClauseParameter(0, ORD_SEQ[i]); PosRowSet CrOrdVO = this.getDao("mesdao").find("UIH050050_CR_ORD.select", param1); if(CrOrdVO.hasNext()) { //这里做个限制,库内已经存在的卷不能再次进行入库操作 String sql1 = "SELECT A.COIL_NO FROM TBH05_COIL_YARD A WHERE A.COIL_NO = ?"; PosParameter paramAA = new PosParameter(); paramAA.setWhereClauseParameter(0, COIL_NO[i]); PosRowSet YardCoil = getDao("mesdao").findByQueryStatement(sql1, paramAA); if(!YardCoil.hasNext()){ //这里必须先判断新的去向位置是否已经上锁,如果已经被别的行车命令占用就不能制订相应的命令并且抛出异常 String sql = "SELECT RESERV_FL FROM tbh05_coil_yard WHERE YARD_CLF||STEP_CLF||STORELAY||STORE_SEQ = ?"; PosParameter paramA = new PosParameter(); paramA.setWhereClauseParameter(0, TO_ADDR[i]); PosRowSet YardReservFl = getDao("mesdao").findByQueryStatement(sql, paramA); if(YardReservFl.hasNext()){ //如果锁定结果存在抛出异常 PosRow YardReservFlRow = YardReservFl.next(); String RESERV_FL = (String)YardReservFlRow.getAttribute("RESERV_FL"); if(RESERV_FL !=null){ if(RESERV_FL.equals("1")){ //去向位置锁定的情况 logger.logDebug("PosSaveWkBeam 在辊道入库制定行车命令的时候,去向位置已经锁定! "); String vtemp="RESERV_FL1"; context.put("rs", vtemp); }else{ //去向位置锁定的情况 logger.logDebug("PosSaveWkBeam 未知的异常锁定情况! "); String vtemp="error"; context.put("rs", vtemp); } }else{ //没有锁定的情况才可以执行相应的更新操作 //这里取出第一次制定命令的去向位置,解除锁定状态 PosRow CrOrdROW = CrOrdVO.next(); String To_add_old = (String)CrOrdROW.getAttribute("TO_ADDR"); PosParameter param3 = new PosParameter(); param3.setValueParamter(0, ""); param3.setValueParamter(1, To_add_old); getDao("mesdao").update("NIH050010_RES_YARD.update",param3); //这里在更新命令的去向位置 PosParameter param2 = new PosParameter(); param2.setValueParamter(0, CR_NO[i]); param2.setValueParamter(1, COIL_NO[i]); param2.setValueParamter(2, WK_BEAM[i]); param2.setValueParamter(3, TO_ADDR[i]); param2.setValueParamter(4, REG_ID[0]); param2.setValueParamter(5, "1"); param2.setValueParamter(6, ORD_SEQ[i]); getDao("mesdao").update("UIH050050_CR_ORD.update",param2); //把命令的去向位置锁定起来 PosParameter param4 = new PosParameter(); param4.setValueParamter(0, "1"); param4.setValueParamter(1, TO_ADDR[i]); getDao("mesdao").update("NIH050010_RES_YARD.update",param4); } }else{ logger.logDebug("PosSaveWkBeam 锁定标志不存在 "); } }else{ //入库的钢卷在库内已经存在 logger.logDebug("PosSaveWkBeam 入库的钢卷在库存已经存在! "+COIL_NO[i]); String vtemp="COIL_NO"; context.put("rs", vtemp); } } } else { //这里做个限制,库内已经存在的卷不能再次进行入库操作 String sql1 = "SELECT A.COIL_NO FROM TBH05_COIL_YARD A WHERE A.COIL_NO = ?"; PosParameter paramAA = new PosParameter(); paramAA.setWhereClauseParameter(0, COIL_NO[i]); PosRowSet YardCoil = getDao("mesdao").findByQueryStatement(sql1, paramAA); if(!YardCoil.hasNext()){ //这里必须先判断新的去向位置是否已经上锁,如果已经被别的行车命令占用就不能制订相应的命令并且抛出异常 String sql = "SELECT RESERV_FL FROM tbh05_coil_yard WHERE YARD_CLF||STEP_CLF||STORELAY||STORE_SEQ = ?"; PosParameter paramA = new PosParameter(); paramA.setWhereClauseParameter(0, TO_ADDR[i]); PosRowSet YardReservFl = getDao("mesdao").findByQueryStatement(sql, paramA); if(YardReservFl.hasNext()){ //如果锁定结果存在抛出异常 PosRow YardReservFlRow = YardReservFl.next(); String RESERV_FL = (String)YardReservFlRow.getAttribute("RESERV_FL"); if(RESERV_FL != null){ if(RESERV_FL.equals("1")){ //去向位置锁定的情况 logger.logDebug("PosSaveWkBeam 在辊道入库制定行车命令的时候,去向位置已经锁定! "); String vtemp="RESERV_FL1"; context.put("rs", vtemp); }else{ //去向位置锁定的情况 logger.logDebug("PosSaveWkBeam 未知的异常锁定情况! "); String vtemp="error"; context.put("rs", vtemp); } }else{ //没有锁定的情况才可以执行相应的插入操作 PosParameter param2 = new PosParameter(); param2.setValueParamter(0, CR_NO[i]); param2.setValueParamter(1, COIL_NO[i]); param2.setValueParamter(2, WK_BEAM[i]); param2.setValueParamter(3, TO_ADDR[i]); param2.setValueParamter(4, TO_ADDR[i].substring(0,2)); param2.setValueParamter(5, REG_ID[0]); getDao("mesdao").update("UIH050050_CR_ORD.insert",param2); PosParameter param3 = new PosParameter(); param3.setValueParamter(0, "1"); param3.setValueParamter(1, TO_ADDR[i]); getDao("mesdao").update("NIH050010_RES_YARD.update",param3); PosParameter param4 = new PosParameter(); param4.setValueParamter(0, "1"); param4.setValueParamter(1, REG_ID[0]); param4.setValueParamter(2, WK_BEAM[i]); getDao("mesdao").update("UIH050050_WKBEAM_RESV.update",param4); } }else{ logger.logDebug("PosSaveWkBeam 锁定标志不存在 "); } }else{ //入库的钢卷在库内已经存在 logger.logDebug("PosSaveWkBeam 入库的钢卷在库存已经存在! "+COIL_NO[i]); String vtemp="COIL_NO"; context.put("rs", vtemp); return PosBizControlConstants.SUCCESS; } } } } return PosBizControlConstants.SUCCESS; } }