package xin.glue.nui.F.F02; import xin.glue.user.common.GlobalConstants; import xin.glue.user.common.LogGpError; import xin.glue.user.common.StringUtils; import com.posdata.glue.PosException; 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; import com.posdata.glue.msg.PosMessage; //import java.lang.Long; /* Program Name MILLRollSeqChange (NIF024030) * Description MILL WORK INSTRUCTION CHANGING ROLL SEQUENCE * Write By KIM SUNG HO * Date 2008-11-14 */ /************************************************************************/ /* CLASS MILLRollSeqChange Author: KIM SUNG HO */ /************************************************************************/ /* DESCRIPTION 轧制顺序调整 */ /************************************************************************/ /* UPD_TIME | WHO | PROGRAM | CONTTENT /* 090613 SUNJIAWANG 添加注释 /* 090613 SUNJIAWANG NIF024030_MILLStatusChk.select 增加对入炉辊道的处理 /* 090613 SUNJIAWANG NIF024030_MILLStatusChk.select add slab_stat /* 090815 SUNJIAWANG moveAble 轧辊单元不能够移动正在进行的轧辊之间 /************************************************************************/ public class MILLRollSeqChange extends PosActivity implements GlobalConstants { /** * 轧制顺序调整【M】 * 检查操作对象位置 * 检查移动对象中是否有进行的对象和已上料的板坯 * 检查操作对象 头尾轧辊 头尾板坯是否存在 * 进行轧辊位置移动跟换 使用临时表 TBF02_CHG_ROLL * 指示更新 TBH06_ROLL_INS TBH06_RHT_INS TBH06_MILL_INS TBH06_COIL_NO_INS * 更新TBF02_CHG_ROLL的状态 * 更新 TBF02_SPEC_ROLL TBF02_SPEC_MILL TBF02_MILL_IDX 的FL * !!! add function move hcr 热装HCR 不需要检查顺序 热送HCR 移动时需要检查顺序 */ String P_ROLL_MANA_ST = ""; String P_ROLL_MANA_EN = ""; String P_ROLL_MANA_TG = ""; String P_POS = ""; public String runActivity(PosContext context) { long V_MOV_STATUS_CNT = 0 ; long V_MOV_COIL_STAT_CNT = 0; long V_MOV_SLAB_STAT_CNT = 0; //已切割形成的板坯 long V_TAG_STATUS_CNT = 0 ; long V_MOV_HCR_CNT = 0 ; long V_TAG_HCR_CNT = 0 ; long V_TAG_COIL_STAT_CNT = 0; long V_TAG_HCR_SLAB_STAT_CNT = 0; long V_ORG_SEQ = 0 ; long V_CHG_SEQ = 0 ; long V_SEQ_ST = 0 ; long V_SEQ_EN = 0 ; long V_SEQ_TG = 0 ; long V_SHIFT_CNT = 0 ; long V_MOVE_CNT = 0 ; long V_SHIFT_FR_SEQ = 0 ; long V_SHIFT_TO_SEQ = 0 ; String V_ROLL_MANA_NO = "" ; String V_ROLL_MANA_IC = "" ; String V_BEF_ROLL_MANA_NO = "" ; String V_CHG_ROLL_MANA_NO = "" ; String V_ROLL_MANA_ST = "" ; String V_ROLL_MANA_EN = "" ; String V_BEF_ROLL_MANA_ST = "" ; String V_BEF_ROLL_MANA_EN = "" ; String V_AFT_ROLL_MANA_ST = "" ; String V_AFT_ROLL_MANA_EN = "" ; String V_BEF_SLAB_NO_ST = "" ; String V_BEF_SLAB_NO_EN = "" ; String V_AFT_SLAB_NO_ST = "" ; String V_AFT_SLAB_NO_EN = "" ; String V_CHG_FL = "" ; String V_TABLE_ID = "" ; String V_TABLE_MODE = "" ; String V_ERR_DESC = "" ; String V_RTN_NAME = "" ; PosMessage message = context.getMessage(); //ROLL_MANA_NO FROM/TO/TARGET P_ROLL_MANA_ST = (String)message.get("FROM"); P_ROLL_MANA_EN = (String)message.get("TO"); P_ROLL_MANA_TG = (String)message.get("TARGET"); P_POS = (String)message.get("POS"); // try { if (P_ROLL_MANA_ST.compareTo(P_ROLL_MANA_EN) > 0) { //P_MODE PARAMETER ERROR MESSAGE throw new PosException("MILLRollSeqChange..ROLL_MANA_ST > ROLL_MANA_EN.."); } else if (P_ROLL_MANA_ST.compareTo(P_ROLL_MANA_TG) < 0 && P_ROLL_MANA_EN.compareTo(P_ROLL_MANA_TG) > 0) { //P_MODE PARAMETER ERROR MESSAGE throw new PosException("MILLRollSeqChange..ROLL_MANA_ST < ROLL_MANA_TG < ROLL_MANA_EN.."); } else if (P_ROLL_MANA_ST.equals(P_ROLL_MANA_TG) && P_POS.equals("A")) { //P_MODE PARAMETER ERROR MESSAGE throw new PosException("MILLRollSeqChange..ROLL_MANA_ST = ROLL_MANA_TG, P_POS IS 'A'.."); } else if (P_ROLL_MANA_ST.equals(P_ROLL_MANA_TG) && P_POS.equals("B")) { //PROGRAM EXIT (SAME WORK) throw new PosException("MILLRollSeqChange..ROLL_MANA_ST = ROLL_MANA_TG, P_POS IS 'B'.."); } else if (P_ROLL_MANA_EN.equals(P_ROLL_MANA_TG) && P_POS.equals("A")) { //PROGRAM EXIT (SAME WORK) throw new PosException("MILLRollSeqChange..ROLL_MANA_EN = ROLL_MANA_TG, P_POS IS 'A'.."); } else if (P_ROLL_MANA_EN.equals(P_ROLL_MANA_TG) && P_POS.equals("B")) { //P_MODE PARAMETER ERROR MESSAGE throw new PosException("MILLRollSeqChange..ROLL_MANA_EN = ROLL_MANA_TG, P_POS IS 'B'.."); } //--------------------------------------------------------------------------------- //MOVE, TARGET ROLL HCR_CLF = 'H', STATUS_CD = 'B' CHECK PosParameter param1 = new PosParameter(); param1.setWhereClauseParameter(0, P_ROLL_MANA_ST); param1.setWhereClauseParameter(1, P_ROLL_MANA_EN); PosRowSet MILLStatusChkVO = getDao("mesdao").find("NIF024030_MILLStatusChk.select",param1); MILLStatusChkVO.reset(); if (MILLStatusChkVO.hasNext()) { PosRow MILLStatusChkRow = MILLStatusChkVO.next(); //移动对象中的STATUS个数 V_MOV_STATUS_CNT = Long.parseLong((MILLStatusChkRow.getAttribute("STATUS_CNT")==null? "0":MILLStatusChkRow.getAttribute("STATUS_CNT")).toString()); //移动对象中的HCR个数 V_MOV_HCR_CNT = Long.parseLong((MILLStatusChkRow.getAttribute("HCR_CNT")==null? "0":MILLStatusChkRow.getAttribute("HCR_CNT")).toString()); //移动对象中的已上料板坯的个数 V_MOV_COIL_STAT_CNT = Long.parseLong((MILLStatusChkRow.getAttribute("COIL_STAT_CNT")==null? "0":MILLStatusChkRow.getAttribute("COIL_STAT_CNT")).toString()); // //移动对象中的虚拟HCR板坯的个数 V_MOV_SLAB_STAT_CNT = Long.parseLong((MILLStatusChkRow.getAttribute("SLAB_STAT_CNT")==null? "0":MILLStatusChkRow.getAttribute("SLAB_STAT_CNT")).toString()); } else { V_MOV_STATUS_CNT = 0; V_MOV_HCR_CNT = 0; V_MOV_COIL_STAT_CNT = 0; V_MOV_SLAB_STAT_CNT = 0; } if (V_MOV_STATUS_CNT != 0){ //移动对象中含有轧制进行的板坯 //MESSAGE ERROR --> PROGRAM EXIT throw new PosException("MILLRollSeqChange..STATUS_CD = 'B'.."); //throw new PosException("移动对象已处于轧制进行中"); } if (V_MOV_COIL_STAT_CNT != 0){ //移动对象中含有轧制进行的板坯 //MESSAGE ERROR --> PROGRAM EXIT //throw new PosException("MILLRollSeqChange..STATUS_CD = 'B'.."); throw new PosException("移动对象已处于上料!"); } if (P_ROLL_MANA_ST.compareTo(P_ROLL_MANA_TG) > 0){ this.moveAble(P_POS, P_ROLL_MANA_EN, P_ROLL_MANA_TG); } /*************************************************************************************************************************/ /** * 处理含有HCR的移动对象 */ //MOVE ROLL IN HCR_CNT <> 0 //移动对象含有虚拟HCR if (V_MOV_HCR_CNT != 0 && V_MOV_SLAB_STAT_CNT != 0){ //AFTER MOVE ROLL START/END //移动对象位置在目标对象前 对象前移 if (P_ROLL_MANA_ST.compareTo(P_ROLL_MANA_TG) > 0) { //BEFORE TARGET if (P_POS.equals("B")) { V_ROLL_MANA_ST = P_ROLL_MANA_TG; } else { PosParameter param2 = new PosParameter(); param2.setWhereClauseParameter(0, P_ROLL_MANA_TG); PosRowSet RollManaNoAftVO = getDao("mesdao").find("NIF024030_RollManaNoAft.select",param2); RollManaNoAftVO.reset(); if (RollManaNoAftVO.hasNext()) { PosRow RollManaNoAftRow = RollManaNoAftVO.next(); V_ROLL_MANA_ST = (String)RollManaNoAftRow.getAttribute("ROLL_MANA_NO"); } else { V_ROLL_MANA_ST = ""; } } PosParameter param3 = new PosParameter(); param3.setWhereClauseParameter(0, P_ROLL_MANA_ST); PosRowSet RollManaNoAftVO = getDao("mesdao").find("NIF024030_RollManaNoBef.select",param3); RollManaNoAftVO.reset(); if (RollManaNoAftVO.hasNext()) { PosRow RollManaNoAftRow = RollManaNoAftVO.next(); V_ROLL_MANA_EN = (String)RollManaNoAftRow.getAttribute("ROLL_MANA_NO"); } else { V_ROLL_MANA_EN = ""; } } else if (P_ROLL_MANA_EN.compareTo(P_ROLL_MANA_TG) < 0 ) { //对象后移 //AFTER TARGET if (P_POS.equals("A")) { V_ROLL_MANA_EN = P_ROLL_MANA_TG; } else { PosParameter param4 = new PosParameter(); param4.setWhereClauseParameter(0, P_ROLL_MANA_TG); PosRowSet RollManaNoAftVO = getDao("mesdao").find("NIF024030_RollManaNoBef.select",param4); RollManaNoAftVO.reset(); if (RollManaNoAftVO.hasNext()) { PosRow RollManaNoAftRow = RollManaNoAftVO.next(); V_ROLL_MANA_EN = (String)RollManaNoAftRow.getAttribute("ROLL_MANA_NO"); } else { V_ROLL_MANA_EN = ""; } } PosParameter param5 = new PosParameter(); param5.setWhereClauseParameter(0, P_ROLL_MANA_EN); PosRowSet RollManaNoAftVO = getDao("mesdao").find("NIF024030_RollManaNoAft.select",param5); RollManaNoAftVO.reset(); if (RollManaNoAftVO.hasNext()) { PosRow RollManaNoAftRow = RollManaNoAftVO.next(); V_ROLL_MANA_ST = (String)RollManaNoAftRow.getAttribute("ROLL_MANA_NO"); } else { V_ROLL_MANA_ST = ""; } } PosParameter param6 = new PosParameter(); param6.setWhereClauseParameter(0, V_ROLL_MANA_ST); param6.setWhereClauseParameter(1, V_ROLL_MANA_EN); PosRowSet MILLStatusChkTgVO = getDao("mesdao").find("NIF024030_MILLStatusChk.select",param6); MILLStatusChkTgVO.reset(); if (MILLStatusChkTgVO.hasNext()) { PosRow MILLStatusChkTgRow = MILLStatusChkTgVO.next(); V_TAG_STATUS_CNT = Long.parseLong((MILLStatusChkTgRow.getAttribute("STATUS_CNT")==null? "0":MILLStatusChkTgRow.getAttribute("STATUS_CNT")).toString()); V_TAG_HCR_CNT = Long.parseLong((MILLStatusChkTgRow.getAttribute("HCR_CNT")==null? "0":MILLStatusChkTgRow.getAttribute("HCR_CNT")).toString()); V_TAG_COIL_STAT_CNT = Long.parseLong((MILLStatusChkTgRow.getAttribute("COIL_STAT_CNT")==null? "0":MILLStatusChkTgRow.getAttribute("COIL_STAT_CNT")).toString()); V_TAG_HCR_SLAB_STAT_CNT = Long.parseLong((MILLStatusChkTgRow.getAttribute("SLAB_STAT_CNT")==null? "0":MILLStatusChkTgRow.getAttribute("COIL_STAT_CNT")).toString()); } else { V_TAG_STATUS_CNT = 0; V_TAG_HCR_CNT = 0; V_TAG_HCR_SLAB_STAT_CNT =0; } //comment by sunjiawang 090625 if (V_TAG_STATUS_CNT != 0 ){ //MESSAGE ERROR --> PROGRAM EXIT throw new PosException("MILLRollSeqChange..STATUS_CD = 'B' 不能够移动到已轧制进行板坯前"); } if ( V_TAG_COIL_STAT_CNT != 0){ //MESSAGE ERROR --> PROGRAM EXIT throw new PosException("MILLRollSeqChange..COIL_STAT_CNT = '0' 不能移动到已上料板坯前.."); } //comment by sunjiawang 090625 // if (V_TAG_HCR_SLAB_STAT_CNT == 0 && V_TAG_HCR_CNT != 0 ){ // // //MESSAGE ERROR --> PROGRAM EXIT // throw new PosException(" MILLRollSeqChange.. V_TAG_HCR_SLAB_STAT_CNT == 0 && V_TAG_HCR_CNT != 0 虚拟HCR不能够移动到已切割HCR之前.."); // // } // //移动对象中含有虚拟的HCR 后移有已切割的HCR ADD BY SUNJIAWANG 090625 // if (V_MOV_HCR_CNT > 0 && V_MOV_SLAB_STAT_CNT == 0 && V_TAG_HCR_SLAB_STAT_CNT != 0 && P_POS =="A"){ // // //MESSAGE ERROR --> PROGRAM EXIT // throw new PosException(" MILLRollSeqChange.. V_TAG_HCR_SLAB_STAT_CNT == 0 && V_TAG_HCR_CNT != 0 虚拟HCR不能够移动到已切割HCR之前.."); // // } } //IF V_MOV_HCR_CNT != 0 END /*************************************************************************************************************************/ else { //取消HCR移动的限制 if ( V_TAG_STATUS_CNT != 0 || V_TAG_COIL_STAT_CNT != 0){ //MESSAGE ERROR --> PROGRAM EXIT throw new PosException("MILLRollSeqChange..STATUS_CD = 'B' OR V_TAG_COIL_STAT_CNT = 0.."); } } //add by sunjiwang 090625 //--------------------------------------------------------------------------------- //BEFORE MOVE ROLL FIRST SLAB_NO, LAST SLAB_NO SELECT //移动对象在目标位置后 : 移动对象前移 if (P_ROLL_MANA_ST.compareTo(P_ROLL_MANA_TG) > 0) { V_BEF_ROLL_MANA_EN = P_ROLL_MANA_EN; //ROLL_MANA_TG BEFORE/AFTER ROLL_MANA_NO SELECT if (P_POS.equals("B")) { V_BEF_ROLL_MANA_ST = P_ROLL_MANA_TG; } else { PosParameter param7 = new PosParameter(); param7.setWhereClauseParameter(0, P_ROLL_MANA_TG); PosRowSet RollManaNoAftVO = getDao("mesdao").find("NIF024030_RollManaNoAft.select",param7); RollManaNoAftVO.reset(); if (RollManaNoAftVO.hasNext()) { PosRow RollManaNoAftRow = RollManaNoAftVO.next(); V_BEF_ROLL_MANA_ST = (String)RollManaNoAftRow.getAttribute("ROLL_MANA_NO"); } else { V_BEF_ROLL_MANA_ST = ""; } } } //end (P_ROLL_MANA_ST.compareTo(P_ROLL_MANA_TG) > 0) 移动对象在目标位置后 : 移动对象前移 else if (P_ROLL_MANA_EN.compareTo(P_ROLL_MANA_TG) < 0 ) //移动对象在目标对象前 :移动对象后移 { V_BEF_ROLL_MANA_ST = P_ROLL_MANA_ST; //LAST ROLL_MANA_NO PosRowSet LastRollManaNoVO = getDao("mesdao").find("NIF024030_LastRollManaNo.select"); LastRollManaNoVO.reset(); if (LastRollManaNoVO.hasNext()) { PosRow LastRollManaNoRow = LastRollManaNoVO.next(); V_BEF_ROLL_MANA_EN = (String)LastRollManaNoRow.getAttribute("ROLL_MANA_NO"); } else { V_BEF_ROLL_MANA_EN = ""; } }//end (P_ROLL_MANA_EN.compareTo(P_ROLL_MANA_TG) < 0 ) 移动对象在目标对象前 :移动对象后移 if (V_BEF_ROLL_MANA_ST == "" || V_BEF_ROLL_MANA_EN == ""){ //MESSAGE ERROR --> PROGRAM EXIT throw new PosException("MILLRollSeqChange..BEF_ROLL_MANA ST/EN IS NULL.."); } //BEFORE CHANGE ROLL START/END SLAB_NO CHECK PosParameter param8 = new PosParameter(); param8.setWhereClauseParameter(0, V_BEF_ROLL_MANA_ST); param8.setWhereClauseParameter(1, V_BEF_ROLL_MANA_ST); param8.setWhereClauseParameter(2, V_BEF_ROLL_MANA_EN); param8.setWhereClauseParameter(3, V_BEF_ROLL_MANA_EN); PosRowSet RollSlabSeqVO = getDao("mesdao").find("NIF024030_SlabNoFind.select",param8); RollSlabSeqVO.reset(); //查找所有的移动板坯 if (RollSlabSeqVO.hasNext()) { PosRow RollSlabSeqRow = RollSlabSeqVO.next(); V_BEF_SLAB_NO_ST = (String)RollSlabSeqRow.getAttribute("SLAB_NO_ST"); V_BEF_SLAB_NO_EN = (String)RollSlabSeqRow.getAttribute("SLAB_NO_EN"); } else { V_BEF_SLAB_NO_ST = ""; V_BEF_SLAB_NO_EN = ""; }//对移动的头尾板坯赋值 //没有可操作的对象 if (V_BEF_SLAB_NO_ST == "" || V_BEF_SLAB_NO_EN == ""){ //MESSAGE ERROR --> PROGRAM EXIT // throw new PosException("MILLRollSeqChange..BEF_SLAB_NO ST/EN IS NULL.."); throw new PosException("没有可操作的对象 MILLRollSeqChange..BEF_SLAB_NO ST/EN IS NULL.."); } //end 没有可操作的对象 //-------------------------------------------------------------------------------------- //AFTER MOVE ROLL FIRST SLAB_NO, LAST SLAB_NO SELECT //对象前移 if (P_ROLL_MANA_ST.compareTo(P_ROLL_MANA_TG) > 0) { V_AFT_ROLL_MANA_ST = P_ROLL_MANA_ST; PosParameter param9 = new PosParameter(); param9.setWhereClauseParameter(0, P_ROLL_MANA_ST); PosRowSet RollManaNoBefVO = getDao("mesdao").find("NIF024030_RollManaNoBef.select",param9); RollManaNoBefVO.reset(); if (RollManaNoBefVO.hasNext()) { PosRow RollManaNoBefRow = RollManaNoBefVO.next(); V_AFT_ROLL_MANA_EN = (String)RollManaNoBefRow.getAttribute("ROLL_MANA_NO"); } else { V_AFT_ROLL_MANA_EN = ""; } } //end 对象前移 //对象后移 else if (P_ROLL_MANA_EN.compareTo(P_ROLL_MANA_TG) < 0 ) { PosParameter param10 = new PosParameter(); param10.setWhereClauseParameter(0, P_ROLL_MANA_EN); PosRowSet RollManaNoAftVO = getDao("mesdao").find("NIF024030_RollManaNoAft.select",param10); RollManaNoAftVO.reset(); //获取最小轧辊单元 赋值 V_AFT_ROLL_MANA_ST if (RollManaNoAftVO.hasNext()) { PosRow RollManaNoAftRow = RollManaNoAftVO.next(); V_AFT_ROLL_MANA_ST = (String)RollManaNoAftRow.getAttribute("ROLL_MANA_NO"); } else { V_AFT_ROLL_MANA_ST = ""; }//end //LAST ROLL_MANA_NO PosRowSet LastRollManaNoVO = getDao("mesdao").find("NIF024030_LastRollManaNo.select"); LastRollManaNoVO.reset(); //获取最大轧辊单元 赋值 V_AFT_ROLL_MANA_EN if (LastRollManaNoVO.hasNext()) { PosRow LastRollManaNoRow = LastRollManaNoVO.next(); V_AFT_ROLL_MANA_EN = (String)LastRollManaNoRow.getAttribute("ROLL_MANA_NO"); } else { V_AFT_ROLL_MANA_EN = ""; }//end if (P_POS.equals("A") && V_AFT_ROLL_MANA_EN.equals(P_ROLL_MANA_TG)) { V_AFT_ROLL_MANA_EN = P_ROLL_MANA_EN; } }//end 对象后移 //没有可以操作的对象 if (V_AFT_ROLL_MANA_ST == "" || V_AFT_ROLL_MANA_EN == ""){ //MESSAGE ERROR --> PROGRAM EXIT //throw new PosException("MILLRollSeqChange..AFT_ROLL_MANA ST/EN IS NULL.."); throw new PosException("没有可操作的对象 MILLRollSeqChange..AFT_ROLL_MANA ST/EN IS NULL.."); }//end 没有可以操作的对象 //MOVE AFTER CHANGE ROLL START/END SLAB_NO CHECK //获取移动之前的头尾板坯 PosParameter param11 = new PosParameter(); param11.setWhereClauseParameter(0, V_AFT_ROLL_MANA_ST); param11.setWhereClauseParameter(1, V_AFT_ROLL_MANA_ST); param11.setWhereClauseParameter(2, V_AFT_ROLL_MANA_EN); param11.setWhereClauseParameter(3, V_AFT_ROLL_MANA_EN); PosRowSet RollSlabSeqAftVO = getDao("mesdao").find("NIF024030_SlabNoFind.select",param11); RollSlabSeqAftVO.reset(); if (RollSlabSeqAftVO.hasNext()) { PosRow RollSlabSeqAftRow = RollSlabSeqAftVO.next(); V_AFT_SLAB_NO_ST = (String)RollSlabSeqAftRow.getAttribute("SLAB_NO_ST"); V_AFT_SLAB_NO_EN = (String)RollSlabSeqAftRow.getAttribute("SLAB_NO_EN"); } else { V_AFT_SLAB_NO_ST = ""; V_AFT_SLAB_NO_EN = ""; } if (V_AFT_SLAB_NO_ST == "" || V_AFT_SLAB_NO_EN == ""){ //MESSAGE ERROR --> PROGRAM EXIT //throw new PosException("MILLRollSeqChange..AFT_SLAB_NO ST/EN IS NULL.."); throw new PosException("缺少操作对象 MILLRollSeqChange..AFT_SLAB_NO ST/EN IS NULL.."); }//end 获取移动之前的头尾板坯 //DELETE TBF02_CHG_ROLL getDao("mesdao").delete("NIF024030_ChgRoll.delete"); //INSERT TEMP TABLE TBF02_CHG_ROLL getDao("mesdao").insert("NIF024030_TempRoll.insert"); //START ROLL_MANA_NO, SLAB_EDT_SEQ, ROLL_SLAB_SEQ CHECK PosParameter param12 = new PosParameter(); param12.setWhereClauseParameter(0, P_ROLL_MANA_ST); param12.setWhereClauseParameter(1, P_ROLL_MANA_EN); param12.setWhereClauseParameter(2, P_ROLL_MANA_TG); PosRowSet RollEdtSeqFindVO = getDao("mesdao").find("NIF024030_RollEdtSeqFind.select",param12); RollEdtSeqFindVO.reset(); if (RollEdtSeqFindVO.hasNext()) { PosRow RollEdtSeqFindRow = RollEdtSeqFindVO.next(); V_SEQ_ST = Long.parseLong((RollEdtSeqFindRow.getAttribute("SEQ_ST")==null? "0":RollEdtSeqFindRow.getAttribute("SEQ_ST")).toString()); V_SEQ_EN = Long.parseLong((RollEdtSeqFindRow.getAttribute("SEQ_EN")==null? "0":RollEdtSeqFindRow.getAttribute("SEQ_EN")).toString()); V_SEQ_TG = Long.parseLong((RollEdtSeqFindRow.getAttribute("SEQ_TG")==null? "0":RollEdtSeqFindRow.getAttribute("SEQ_TG")).toString()); } else { V_SEQ_ST = 0; V_SEQ_EN = 0; V_SEQ_TG = 0; } //进行轧辊移动操作 //CHANGE RANGE VALUE SETTING if (V_SEQ_ST > V_SEQ_TG) { if (P_POS.equals("B")) { V_SHIFT_CNT = V_SEQ_EN - V_SEQ_ST + 1; V_MOVE_CNT = V_SEQ_TG - V_SEQ_ST; V_SHIFT_FR_SEQ = V_SEQ_TG; V_SHIFT_TO_SEQ = V_SEQ_ST - 1; } else { V_SHIFT_CNT = V_SEQ_EN - V_SEQ_ST + 1; V_MOVE_CNT = V_SEQ_TG - V_SEQ_ST + 1; V_SHIFT_FR_SEQ = V_SEQ_TG + 1; V_SHIFT_TO_SEQ = V_SEQ_ST - 1; } } else { if (P_POS.equals("B")) { V_SHIFT_CNT = V_SEQ_ST - V_SEQ_EN - 1; V_MOVE_CNT = V_SEQ_TG - V_SEQ_EN - 1; V_SHIFT_FR_SEQ = V_SEQ_EN + 1; V_SHIFT_TO_SEQ = V_SEQ_TG - 1; } else { V_SHIFT_CNT = V_SEQ_ST - V_SEQ_EN - 1; V_MOVE_CNT = V_SEQ_TG - V_SEQ_EN; V_SHIFT_FR_SEQ = V_SEQ_EN + 1; V_SHIFT_TO_SEQ = V_SEQ_TG; } } //RE-ARRANGE ROLL_SEQ CHANGING PosRowSet TmpChgRollVO = getDao("mesdao").find("NIF024030_TmpChgRoll.select"); TmpChgRollVO.reset(); while(TmpChgRollVO.hasNext()) { PosRow TmpChgRollRow = TmpChgRollVO.next(); V_ORG_SEQ = Long.parseLong((TmpChgRollRow.getAttribute("ORG_SEQ")==null? "0":TmpChgRollRow.getAttribute("ORG_SEQ")).toString()); V_CHG_SEQ = V_ORG_SEQ; //CHECK SEQUENCE if (V_CHG_SEQ >= V_SEQ_ST && V_CHG_SEQ <= V_SEQ_EN) { V_CHG_SEQ = V_CHG_SEQ + V_MOVE_CNT; } else if (V_CHG_SEQ >= V_SHIFT_FR_SEQ && V_CHG_SEQ <= V_SHIFT_TO_SEQ) { V_CHG_SEQ = V_CHG_SEQ + V_SHIFT_CNT; } if (V_ORG_SEQ != V_CHG_SEQ) { V_CHG_FL = "Y"; } else { V_CHG_FL = "N"; } //RE-ARRANGE UPDATE TBF02_CHG_ROLL --> CHG_SEQ PosParameter param13 = new PosParameter(); param13.setWhereClauseParameter(0, String.valueOf(V_CHG_SEQ)); param13.setWhereClauseParameter(1, V_CHG_FL); param13.setWhereClauseParameter(2, String.valueOf(V_ORG_SEQ)); getDao("mesdao").update("NIF024030_TmpChgRoll.update",param13); } //TmpChgRollVO while END //RE-ARRANGE ROLL_MANA_NO CHANGING PosRowSet TmpChgRollChgVO = getDao("mesdao").find("NIF024030_TmpChgRollChg.select"); TmpChgRollChgVO.reset(); while(TmpChgRollChgVO.hasNext()) { PosRow TmpChgRollChgRow = TmpChgRollChgVO.next(); V_ORG_SEQ = Long.parseLong((TmpChgRollChgRow.getAttribute("ORG_SEQ")==null? "0":TmpChgRollChgRow.getAttribute("ORG_SEQ")).toString()); V_ROLL_MANA_NO = (String)TmpChgRollChgRow.getAttribute("ROLL_MANA_NO"); V_CHG_FL = (String)TmpChgRollChgRow.getAttribute("FL"); if (V_CHG_FL.equals("Y")) { if (V_BEF_ROLL_MANA_NO.equals("")) { V_ROLL_MANA_NO = "A0001"; } else { if (V_BEF_ROLL_MANA_NO.substring(1, 5).equals("9999")) {//20210124 == 调整为equals //ROLL_MANA_NO HEADER ALPHABET + 1 String nextSeqQr = "SELECT CHR(ASCII('" + V_BEF_ROLL_MANA_NO.substring(0, 1) + "')+1) ROLL_HEAD FROM DUAL"; PosRowSet nextSeqVO = getDao("mesdao").findByQueryStatement(nextSeqQr); nextSeqVO.reset(); PosRow nextSeqRow = nextSeqVO.next(); String V_ROLL_HEAD = (String)nextSeqRow.getAttribute("ROLL_HEAD"); V_ROLL_MANA_NO = V_ROLL_HEAD + "0001"; } else { V_ROLL_MANA_IC = StringUtils.calculateIntegerStringValue(V_BEF_ROLL_MANA_NO.substring(1, 5), 1); V_ROLL_MANA_NO = new StringBuffer(5).append(V_BEF_ROLL_MANA_NO.substring(0, 1)).append(V_ROLL_MANA_IC).toString(); } } } V_BEF_ROLL_MANA_NO = V_ROLL_MANA_NO; //RE-ARRANGE UPDATE TBF02_CHG_ROLL --> CHG_ROLL_MANA_NO PosParameter param14 = new PosParameter(); param14.setWhereClauseParameter(0, V_ROLL_MANA_NO); param14.setWhereClauseParameter(1, String.valueOf(V_ORG_SEQ)); getDao("mesdao").update("NIF024030_TmpChgRollManaNo.update",param14); } //TmpChgRollChgVO while END //------------------------------------------------------------------------------------------------------- //CHANGE ROLL_MANA_NO UPDATE PosRowSet ChgManaNoUpdVO = getDao("mesdao").find("NIF024030_ChgManaNoUpd.select"); ChgManaNoUpdVO.reset(); while(ChgManaNoUpdVO.hasNext()) { PosRow ChgManaNoUpdRow = ChgManaNoUpdVO.next(); V_ROLL_MANA_NO = (String)ChgManaNoUpdRow.getAttribute("ROLL_MANA_NO"); V_CHG_ROLL_MANA_NO = (String)ChgManaNoUpdRow.getAttribute("CHG_ROLL_MANA_NO"); //UPDATE TBF02_SPEC_ROLL (ROLL_MANA_NO) PosParameter param17 = new PosParameter(); param17.setWhereClauseParameter(0, V_CHG_ROLL_MANA_NO); param17.setWhereClauseParameter(1, V_ROLL_MANA_NO); int UpdCnt17 = getDao("mesdao").update("NIF024030_SpecRollUpd.update",param17); if (UpdCnt17 == 0) { V_TABLE_ID = "TBF02_SPEC_ROLL"; V_TABLE_MODE = "U"; V_ERR_DESC = "TBF02_SPEC_ROLL UPDATE COUNT IS ZERO"; V_RTN_NAME = "MILLRollSeqChange TBF02_SPEC_ROLL UPDATE17"; LogGpError.logMessageToDB("MILLRollSeqChange", V_TABLE_ID, V_TABLE_MODE, V_ERR_DESC, V_RTN_NAME); //throw new PosException(V_RTN_NAME); } //UPDATE TBF02_SPEC_MILL (ROLL_MANA_NO) PosParameter param18= new PosParameter(); param18.setWhereClauseParameter(0, V_CHG_ROLL_MANA_NO); param18.setWhereClauseParameter(1, V_ROLL_MANA_NO); int UpdCnt18 = getDao("mesdao").update("NIF024030_SpecMillUpd.update",param18); if (UpdCnt18 == 0) { V_TABLE_ID = "TBF02_SPEC_MILL"; V_TABLE_MODE = "U"; V_ERR_DESC = "TBF02_SPEC_MILL UPDATE COUNT IS ZERO"; V_RTN_NAME = "MILLRollSeqChange TBF02_SPEC_MILL UPDATE18"; LogGpError.logMessageToDB("MILLRollSeqChange", V_TABLE_ID, V_TABLE_MODE, V_ERR_DESC, V_RTN_NAME); //throw new PosException(V_RTN_NAME); } //UPDATE TBF02_MILL_IDX (ROLL_MANA_NO) PosParameter param19 = new PosParameter(); param19.setWhereClauseParameter(0, V_CHG_ROLL_MANA_NO); param19.setWhereClauseParameter(1, V_ROLL_MANA_NO); int UpdCnt19 = getDao("mesdao").update("NIF024030_MillIdxUpd.update",param19); if (UpdCnt19 == 0) { V_TABLE_ID = "TBF02_MILL_IDX"; V_TABLE_MODE = "U"; V_ERR_DESC = "TBF02_MILL_IDX UPDATE COUNT IS ZERO"; V_RTN_NAME = "MILLRollSeqChange TBF02_MILL_IDX UPDATE19"; LogGpError.logMessageToDB("MILLRollSeqChange", V_TABLE_ID, V_TABLE_MODE, V_ERR_DESC, V_RTN_NAME); //throw new PosException(V_RTN_NAME); } } //ChgRollManaNoVO while END //--------------------------------------------------------------------------------- //MILL INSTRUCTION LEVEL2 RE-SEND(UPDATE) PROCESS //TBH06_L2_ROLL_UNIT_INS SEND PROCESS int InsertA = getDao("mesdao").insert("NIF024030_L2ROLLReSend.insert"); if (InsertA == 0) { V_TABLE_ID = "TBH06_L2_ROLL_UNIT_INS"; V_TABLE_MODE = "I"; V_ERR_DESC = "TBH06_L2_ROLL_UNIT_INS INSERT COUNT IS ZERO"; V_RTN_NAME = "MILLRollSeqChange TBH06_L2_ROLL_UNIT_INS INSERTA"; LogGpError.logMessageToDB("MILLRollSeqChange", V_TABLE_ID, V_TABLE_MODE, V_ERR_DESC, V_RTN_NAME); throw new PosException(V_RTN_NAME); } //TBH06_L2_RHT_INS RE-SEND PROCESS int InsertB = getDao("mesdao").insert("NIF024030_L2RHTReSend.insert"); if (InsertB == 0) { V_TABLE_ID = "TBH06_L2_RHT_INS"; V_TABLE_MODE = "I"; V_ERR_DESC = "TBH06_L2_RHT_INS INSERT COUNT IS ZERO"; V_RTN_NAME = "MILLRollSeqChange TBH06_L2_RHT_INS INSERTB"; LogGpError.logMessageToDB("MILLRollSeqChange", V_TABLE_ID, V_TABLE_MODE, V_ERR_DESC, V_RTN_NAME); throw new PosException(V_RTN_NAME); } //TBH06_L2_MILL_INS RE-SEND PROCESS int InsertC = getDao("mesdao").insert("NIF024030_L2MILLReSend.insert"); if (InsertC == 0) { V_TABLE_ID = "TBH06_L2_MILL_INS"; V_TABLE_MODE = "I"; V_ERR_DESC = "TBH06_L2_MILL_INS INSERT COUNT IS ZERO"; V_RTN_NAME = "MILLRollSeqChange TBH06_L2_MILL_INS INSERTC"; LogGpError.logMessageToDB("MILLRollSeqChange", V_TABLE_ID, V_TABLE_MODE, V_ERR_DESC, V_RTN_NAME); throw new PosException(V_RTN_NAME); } //CHANGE ROLL_MANA_NO PosRowSet ChgRollManaNoVO = getDao("mesdao").find("NIF024030_ChgRollManaNo.select"); ChgRollManaNoVO.reset(); while(ChgRollManaNoVO.hasNext()) { PosRow ChgRollManaNoRow = ChgRollManaNoVO.next(); V_ROLL_MANA_NO = (String)ChgRollManaNoRow.getAttribute("CHG_ROLL_MANA_NO"); //SELECT NXET SET SEQUEANCE String RenextSeqQr = "SELECT L2_COIL_NO_SET_SEQ.NEXTVAL SET_SEQ FROM DUAL "; PosRowSet RenextSeqVO = getDao("mesdao").findByQueryStatement(RenextSeqQr); RenextSeqVO.reset(); PosRow RenextSeqRow = RenextSeqVO.next(); Number V_RESET_SEQ = (Number)RenextSeqRow.getAttribute("SET_SEQ"); //TBH06_L2_COIL_NO_INS RE-SEND PROCESS PosParameter paramD = new PosParameter(); paramD.setValueParamter(0, V_RESET_SEQ); paramD.setValueParamter(1, V_ROLL_MANA_NO); int InsertD = getDao("mesdao").insert("NIF024030_L2ROLLCOILReSend.insert",paramD); if (InsertD == 0) { V_TABLE_ID = "TBH06_L2_COIL_NO_INS"; V_TABLE_MODE = "I"; V_ERR_DESC = "TBH06_L2_COIL_NO_INS INSERT COUNT IS ZERO"; V_RTN_NAME = "MILLRollSeqChange TBH06_L2_COIL_NO_INS INSERT D " + V_ROLL_MANA_NO; LogGpError.logMessageToDB("MILLRollSeqChange", V_TABLE_ID, V_TABLE_MODE, V_ERR_DESC, V_RTN_NAME); throw new PosException(V_RTN_NAME); } } //ChgRollManaNoVO while END //MILL INSTRUCTION LEVEL2 RE-SEND(UPDATE) PROCESS END //--------------------------------------------------------------------------------- //LAST JOB DELETE TBF02_CHG_ROLL getDao("mesdao").delete("NIF024030_ChgRoll.delete"); //FL INIT TBF02_SPEC_ROLL getDao("mesdao").update("NIF024030_InitSpecRoll.update"); //FL INIT TBF02_SPEC_MILL getDao("mesdao").update("NIF024030_InitSpecMill.update"); //FL INIT TBF02_MILL_IDX getDao("mesdao").update("NIF024030_InitMillIdx.update"); // } // catch (PosException ex) // { // context.put(SERVICE_ERR_MSG, ex.getMessage()); // throw ex; // } // catch (Throwable t) // { // context.put(SERVICE_ERR_MSG, t.getMessage()); // throw new PosException(t.getMessage(), t); // } return PosBizControlConstants.SUCCESS; } /** * @param p_pos A : 后 B:前 * @param p_roll_st 轧辊单元起始位置 * @param p_roll_aim 轧辊单元目标位置 * @return moveable 是否可以移动 */ public boolean moveAble (String p_pos ,String p_roll_end,String p_aim) { boolean moveable = true; PosParameter param = new PosParameter(); param.setWhereClauseParameter(0,P_ROLL_MANA_EN); param.setWhereClauseParameter(0,P_ROLL_MANA_TG); long v_cnt_coil_stat = 0; long v_cnt_status = 0; PosRowSet rowset = null; PosRow row = null; if("A".equals(p_pos)) { rowset = this.getDao("mesdao").find("NIF024030_MILLStatusChkPosA.select", param); }else if("B".equals(p_pos)) { rowset = this.getDao("mesdao").find("NIF024030_MILLStatusChk.select", param); }else { throw new PosException("[MILLRollSeqChange]:[moveAble]:p_pos...位置没有输入..."); } while (rowset.hasNext()) { row = rowset.next(); v_cnt_coil_stat = Long.parseLong(row.getAttribute("COIL_STAT_CNT").toString()); v_cnt_status = Long.parseLong(row.getAttribute("STATUS_CNT").toString()); if(v_cnt_coil_stat > 0 || v_cnt_status > 0) { throw new PosException("[MILLRollSeqChange]:[moveAble]:v_cnt_coil_stat || v_cnt_status 不能够插入在已上料板坯间..."); } } return moveable; } }