package xin.glue.nui.F.F02; import xin.glue.user.common.GlobalConstants; import xin.glue.user.common.LogGpError; 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 MILLSlabSeqChange (NIF024040) * Description MILL WORK INSTRUCTION SEQUENCE CHANGING * Write By KIM SUNG HO * Date 2008-11-12 */ public class MILLSlabSeqChange extends PosActivity implements GlobalConstants { public String runActivity(PosContext context) { long V_SLAB_EDT_SEQ = 0 ; long V_ROLL_SLAB_SEQ = 0 ; long V_SLAB_EDT_SEQ_ST = 0 ; long V_SLAB_EDT_SEQ_EN = 0 ; long V_SLAB_EDT_SEQ_TG = 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 ; long V_MOVE_HCR = 0 ; long V_STATUS_CNT = 0 ; long V_COIL_STAT_CNT = 0; long V_TG_HCR = 0 ; long V_TG_STATUS = 0 ; long V_HCR_SEQ_ST = 0 ; long V_HCR_SEQ_EN = 0 ; String V_ROLL_MANA_ST = "" ; String V_ROLL_MANA_EN = "" ; String V_ROLL_MANA_TG = "" ; String V_TABLE_ID = "" ; String V_TABLE_MODE = "" ; String V_ERR_DESC = "" ; String V_RTN_NAME = "" ; boolean v_moveable = false; PosMessage message = context.getMessage(); //SLAB_NO FROM/TO/TARGET String P_ST = (String)message.get("FROM"); String P_EN = (String)message.get("TO"); String P_TG = (String)message.get("TARGET"); String P_POS = (String)message.get("POS"); // try { //START ROLL_MANA_NO, SLAB_EDT_SEQ, ROLL_SLAB_SEQ CHECK PosParameter paramA = new PosParameter(); paramA.setWhereClauseParameter(0, P_ST); paramA.setWhereClauseParameter(1, P_EN); paramA.setWhereClauseParameter(2, P_TG); PosRowSet RollManaNoSTVO = getDao("mesdao").find("NIF024040_RollManaNo.select",paramA); RollManaNoSTVO.reset(); if (RollManaNoSTVO.hasNext()) { PosRow RollManaNoSTRow = RollManaNoSTVO.next(); V_ROLL_MANA_ST = (String)RollManaNoSTRow.getAttribute("ROLL_MANA_ST"); V_ROLL_MANA_EN = (String)RollManaNoSTRow.getAttribute("ROLL_MANA_EN"); V_ROLL_MANA_TG = (String)RollManaNoSTRow.getAttribute("ROLL_MANA_TG"); V_SLAB_EDT_SEQ_ST = Long.parseLong((RollManaNoSTRow.getAttribute("SLAB_EDT_SEQ_ST")==null? "0":RollManaNoSTRow.getAttribute("SLAB_EDT_SEQ_ST")).toString()); V_SLAB_EDT_SEQ_EN = Long.parseLong((RollManaNoSTRow.getAttribute("SLAB_EDT_SEQ_EN")==null? "0":RollManaNoSTRow.getAttribute("SLAB_EDT_SEQ_EN")).toString()); V_SLAB_EDT_SEQ_TG = Long.parseLong((RollManaNoSTRow.getAttribute("SLAB_EDT_SEQ_TG")==null? "0":RollManaNoSTRow.getAttribute("SLAB_EDT_SEQ_TG")).toString()); } else { V_ROLL_MANA_ST = ""; V_ROLL_MANA_EN = ""; V_ROLL_MANA_TG = ""; V_SLAB_EDT_SEQ_ST = 0; V_SLAB_EDT_SEQ_EN = 0; V_SLAB_EDT_SEQ_TG = 0; } if (V_ROLL_MANA_ST.equals("") || V_ROLL_MANA_EN.equals("") || V_ROLL_MANA_TG.equals("") || V_SLAB_EDT_SEQ_ST == 0 || V_SLAB_EDT_SEQ_EN == 0 || V_SLAB_EDT_SEQ_TG == 0){ //MESSAGE ERROR --> PROGRAM EXIT throw new PosException("MILLSlabSeqChange..ROLL_MANA ST/EN/TG IS NULL.."); } //ROLL_MANA_NO SAME CHECK if (!V_ROLL_MANA_ST.equals(V_ROLL_MANA_EN) || !V_ROLL_MANA_ST.equals(V_ROLL_MANA_TG)) { //MESSAGE ERROR --> PROGRAM EXIT throw new PosException("MILLSlabSeqChange..ROLL_MANA ST/EN/TG IS NOT EQUAL.."); } //ROLL IN ROLL_SLAB_SEQ RE-ARRANGE START 1 ~ PosParameter paramB = new PosParameter(); paramB.setWhereClauseParameter(0, V_ROLL_MANA_ST); PosRowSet RollSlabSeqVO = getDao("mesdao").find("NIF024040_RollSalbSeq.select",paramB); RollSlabSeqVO.reset(); V_CHG_SEQ = 0; while(RollManaNoSTVO.hasNext()) { PosRow RollSlabSeqRow = RollSlabSeqVO.next(); V_SLAB_EDT_SEQ = Long.parseLong((RollSlabSeqRow.getAttribute("SLAB_EDT_SEQ")==null? "0":RollSlabSeqRow.getAttribute("SLAB_EDT_SEQ")).toString()); ++V_CHG_SEQ; //RE-ARRANGE UPDATE TBF02_SPEC_MILL --> ROLL_SLAB_SEQ PosParameter paramC = new PosParameter(); paramC.setWhereClauseParameter(0, String.valueOf(V_CHG_SEQ)); paramC.setWhereClauseParameter(1, String.valueOf(V_SLAB_EDT_SEQ)); int UpdCnt2 = getDao("mesdao").update("NIF024040_RollSalbSeqUpd.update",paramC); if (UpdCnt2 == 0) { V_TABLE_ID = "TBF02_SPEC_MILL"; V_TABLE_MODE = "U"; V_ERR_DESC = "TBF02_SPEC_MILL UPDATE COUNT IS ZERO"; V_RTN_NAME = "MILLSlabSeqChange TBF02_SPEC_MILL UPDATE2 " + String.valueOf(V_SLAB_EDT_SEQ); LogGpError.logMessageToDB("MILLSlabSeqChange", V_TABLE_ID, V_TABLE_MODE, V_ERR_DESC, V_RTN_NAME); throw new PosException(V_RTN_NAME); } } //START ROLL_MANA_NO, SLAB_EDT_SEQ, ROLL_SLAB_SEQ CHECK PosParameter paramD = new PosParameter(); paramD.setWhereClauseParameter(0, P_ST); paramD.setWhereClauseParameter(1, P_EN); paramD.setWhereClauseParameter(2, P_TG); PosRowSet RollSlabSeqFindVO = getDao("mesdao").find("NIF024040_RollSlabSeqFind.select",paramD); RollSlabSeqFindVO.reset(); if (RollSlabSeqFindVO.hasNext()) { PosRow RollSlabSeqFindRow = RollSlabSeqFindVO.next(); V_SEQ_ST = Long.parseLong((RollSlabSeqFindRow.getAttribute("ROLL_SLAB_SEQ_ST")==null? "0":RollSlabSeqFindRow.getAttribute("ROLL_SLAB_SEQ_ST")).toString()); V_SEQ_EN = Long.parseLong((RollSlabSeqFindRow.getAttribute("ROLL_SLAB_SEQ_EN")==null? "0":RollSlabSeqFindRow.getAttribute("ROLL_SLAB_SEQ_EN")).toString()); V_SEQ_TG = Long.parseLong((RollSlabSeqFindRow.getAttribute("ROLL_SLAB_SEQ_TG")==null? "0":RollSlabSeqFindRow.getAttribute("ROLL_SLAB_SEQ_TG")).toString()); } else { V_SEQ_ST = 0; V_SEQ_EN = 0; V_SEQ_TG = 0; } //ROLL_SLAB_SEQ CHECK 1 CASE if (V_SEQ_ST > V_SEQ_EN || (V_SEQ_ST < V_SEQ_TG && V_SEQ_EN > V_SEQ_TG)) { //MESSAGE ERROR --> PROGRAM EXIT throw new PosException("MILLSlabSeqChange..ROLL_SLAB_SEQ EQ_ST > SEQ_EN OR EQ_ST < V_SEQ_TG < SEQ_EN.."); } //ROLL_SLAB_SEQ CHECK 2 CASE if ((P_POS.equals("A") && V_SEQ_ST == V_SEQ_TG) || (P_POS.equals("B") && V_SEQ_EN == V_SEQ_TG)) { //MESSAGE ERROR --> PROGRAM EXIT throw new PosException("MILLSlabSeqChange..ROLL_SLAB_SEQ EQ_ST = SEQ_TG,P_POS('A') OR EQ_EN = V_SEQ_TG,P_POS('B').."); } //STATUS_CD = 'B', HCR SLAB CHECK (MOVE) PosParameter paramF = new PosParameter(); paramF.setWhereClauseParameter(0, V_ROLL_MANA_ST); paramF.setWhereClauseParameter(1, String.valueOf(V_SEQ_ST)); paramF.setWhereClauseParameter(2, String.valueOf(V_SEQ_EN)); PosRowSet MoveChkFindVO = getDao("mesdao").find("NIF024040_MoveChkFind.select",paramF); MoveChkFindVO.reset(); if (MoveChkFindVO.hasNext()) { PosRow MoveChkFindRow = MoveChkFindVO.next(); V_MOVE_HCR = Long.parseLong((MoveChkFindRow.getAttribute("HCR_CNT")==null? "0":MoveChkFindRow.getAttribute("HCR_CNT")).toString()); V_STATUS_CNT = Long.parseLong((MoveChkFindRow.getAttribute("STATUS_CNT")==null? "0":MoveChkFindRow.getAttribute("STATUS_CNT")).toString()); V_COIL_STAT_CNT = Long.parseLong((MoveChkFindRow.getAttribute("COIL_STAT_CNT")==null? "0":MoveChkFindRow.getAttribute("COIL_STAT_CNT")).toString()); } else { V_MOVE_HCR = 0; V_STATUS_CNT = 0; } //STATUS_CD = 'B' RHT START if (V_STATUS_CNT != 0) { //MESSAGE ERROR --> PROGRAM EXIT throw new PosException("MILLSlabSeqChange..RHT WORK START.."); } //COIL_STAT = '0' RHT 已上料 if (V_COIL_STAT_CNT != 0){ //移动对象中含有轧制进行的板坯 //MESSAGE ERROR --> PROGRAM EXIT //throw new PosException("MILLRollSeqChange..STATUS_CD = 'B'.."); throw new PosException("移动对象已处于上料!"); } v_moveable = this.isMove(V_SEQ_ST, V_SEQ_TG, V_ROLL_MANA_ST,P_POS); if (V_MOVE_HCR != 0) { if (V_SEQ_ST > V_SEQ_TG) { if (P_POS.equals("B")) { V_HCR_SEQ_ST = V_SEQ_TG; } else { V_HCR_SEQ_ST = V_SEQ_TG + 1; } V_HCR_SEQ_EN = V_SEQ_ST - 1; } else { if (P_POS.equals("B")) { V_HCR_SEQ_EN = V_SEQ_TG - 1; } else { V_HCR_SEQ_EN = V_SEQ_TG; } V_HCR_SEQ_ST = V_SEQ_EN + 1; } //HCR SLAB CHECK (TARGET) PosParameter paramG = new PosParameter(); paramG.setWhereClauseParameter(0, V_ROLL_MANA_ST); paramG.setWhereClauseParameter(1, String.valueOf(V_HCR_SEQ_ST)); paramG.setWhereClauseParameter(2, String.valueOf(V_HCR_SEQ_EN)); PosRowSet TgtChkFindVO = getDao("mesdao").find("NIF024040_TgtChkFind.select",paramG); TgtChkFindVO.reset(); if (TgtChkFindVO.hasNext()) { PosRow TgtChkFindRow = TgtChkFindVO.next(); V_TG_HCR = Long.parseLong((TgtChkFindRow.getAttribute("HCR_CNT")==null? "0":TgtChkFindRow.getAttribute("HCR_CNT")).toString()); V_TG_STATUS = Long.parseLong((TgtChkFindRow.getAttribute("STATUS_CNT")==null? "0":TgtChkFindRow.getAttribute("STATUS_CNT")).toString()); } else { V_TG_HCR = 0; V_TG_STATUS = 0; } //comment by sunjiawang 090625 // if (V_TG_HCR != 0 || V_TG_STATUS != 0) { // // //MESSAGE ERROR --> PROGRAM EXIT // throw new PosException("MILLSlabSeqChange..ROLL_SLAB_SEQ TARGET HCR_CNT <> 0 OR STATUS_CD = 'B'.."); // // } if (V_TG_STATUS != 0) { //MESSAGE ERROR --> PROGRAM EXIT throw new PosException("MILLSlabSeqChange..ROLL_SLAB_SEQ TARGET STATUS_CD = 'B'.."); } } //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; } } /* //LAST COIL NO CHECK PosParameter paramH = new PosParameter(); paramH.setWhereClauseParameter(0, V_ROLL_MANA_ST); PosRowSet LastCoilNoFindVO = getDao("mesdao").find("NIF024040_LastCoilNoFind.select",paramH); LastCoilNoFindVO.reset(); if (LastCoilNoFindVO.hasNext()) { PosRow LastCoilNoFindRow = LastCoilNoFindVO.next(); V_COIL_NO = (String)LastCoilNoFindRow.getAttribute("COIL_NO"); } else { V_COIL_NO = new StringBuffer(13).append("R").append(currDate.substring(3, 4)).append("-000000A010").toString(); } */ //RE-ARRANGE ROLL_SLAB_SEQ, COIL_NO CHANGING PosParameter paramI = new PosParameter(); paramI.setWhereClauseParameter(0, V_ROLL_MANA_ST); PosRowSet ReRollSlabSeqVO = getDao("mesdao").find("NIF024040_ReRollSalbSeq.select",paramI); ReRollSlabSeqVO.reset(); while(ReRollSlabSeqVO.hasNext()) { PosRow ReRollSlabSeqRow = ReRollSlabSeqVO.next(); V_SLAB_EDT_SEQ = Long.parseLong((ReRollSlabSeqRow.getAttribute("SLAB_EDT_SEQ")==null? "0":ReRollSlabSeqRow.getAttribute("SLAB_EDT_SEQ")).toString()); V_ROLL_SLAB_SEQ = Long.parseLong((ReRollSlabSeqRow.getAttribute("ROLL_SLAB_SEQ")==null? "0":ReRollSlabSeqRow.getAttribute("ROLL_SLAB_SEQ")).toString()); //RE-ARRANGE ROLL_SLAB_SEQ if (V_ROLL_SLAB_SEQ >= V_SEQ_ST && V_ROLL_SLAB_SEQ <= V_SEQ_EN) { V_ROLL_SLAB_SEQ = V_ROLL_SLAB_SEQ + V_MOVE_CNT; } else if (V_ROLL_SLAB_SEQ >= V_SHIFT_FR_SEQ && V_ROLL_SLAB_SEQ <= V_SHIFT_TO_SEQ) { V_ROLL_SLAB_SEQ = V_ROLL_SLAB_SEQ + V_SHIFT_CNT; } //RE-ARRANGE COIL_NO ------------------------------ //V_COIL_NO_IC = StringUtils.calculateIntegerStringValue(V_COIL_NO.substring(3, 9), 1); //V_COIL_NO = new StringBuffer(13).append("R").append(V_COIL_NO.substring(1, 2)).append("-").append(V_COIL_NO_IC).append("A010").toString(); //RE-ARRANGE UPDATE TBF02_SPEC_MILL --> ROLL_SLAB_SEQ PosParameter paramJ = new PosParameter(); paramJ.setWhereClauseParameter(0, String.valueOf(V_ROLL_SLAB_SEQ)); //paramJ.setWhereClauseParameter(1, V_COIL_NO); paramJ.setWhereClauseParameter(1, String.valueOf(V_SLAB_EDT_SEQ)); int UpdCnt5 = getDao("mesdao").update("NIF024040_RollCoilNoUpd.update",paramJ); if (UpdCnt5 == 0) { V_TABLE_ID = "TBF02_SPEC_MILL"; V_TABLE_MODE = "U"; V_ERR_DESC = "TBF02_SPEC_MILL UPDATE COUNT IS ZERO"; V_RTN_NAME = "MILLSlabSeqChange TBF02_SPEC_MILL UPDATE5 " + String.valueOf(V_SLAB_EDT_SEQ); LogGpError.logMessageToDB("MILLSlabSeqChange", V_TABLE_ID, V_TABLE_MODE, V_ERR_DESC, V_RTN_NAME); throw new PosException(V_RTN_NAME); } } //ReRollSlabSeqVO while END //--------------------------------------------------------------------------------- //MILL INSTRUCTION LEVEL2 RE-SEND(UPDATE) PROCESS //TBH06_L2_RHT_INS RE-SEND PROCESS PosParameter paramK = new PosParameter(); paramK.setValueParamter(0, V_ROLL_MANA_ST); int InsertK = getDao("mesdao").insert("NIF024040_L2RHTReSend.insert",paramK); if (InsertK == 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 = "MILLSlabSeqChange TBH06_L2_RHT_INS INSERTK " + V_ROLL_MANA_ST; LogGpError.logMessageToDB("MILLSlabSeqChange", 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 PosParameter paramL = new PosParameter(); paramL.setValueParamter(0, V_ROLL_MANA_ST); int InsertL = getDao("mesdao").insert("NIF024040_L2MILLReSend.insert",paramL); if (InsertL == 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 = "MILLSlabSeqChange TBH06_L2_MILL_INS INSERT L " + V_ROLL_MANA_ST; LogGpError.logMessageToDB("MILLSlabSeqChange", V_TABLE_ID, V_TABLE_MODE, V_ERR_DESC, V_RTN_NAME); throw new PosException(V_RTN_NAME); } //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 paramN = new PosParameter(); paramN.setValueParamter(0, V_RESET_SEQ); paramN.setValueParamter(1, V_ROLL_MANA_ST); int InsertN = getDao("mesdao").insert("NIF024040_L2ROLLCOILReSend.insert",paramN); if (InsertN == 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 = "MILLSlabSeqChange TBH06_L2_COIL_NO_INS INSERT N " + V_ROLL_MANA_ST; LogGpError.logMessageToDB("MILLSlabSeqChange", V_TABLE_ID, V_TABLE_MODE, V_ERR_DESC, V_RTN_NAME); throw new PosException(V_RTN_NAME); } // } // 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 v_seq_st * @param v_seq_tg * @param p_pos * @return * @desc 不能够在轧制进行或者上料板坯中间插入对象 */ public boolean isMove(long v_seq_st,long v_seq_tg,String p_roll_mana_no,String p_pos) { boolean moveable = false; PosParameter param_move = new PosParameter(); param_move.setWhereClauseParameter(0, String.valueOf(v_seq_tg)); param_move.setWhereClauseParameter(1, String.valueOf(v_seq_st)); param_move.setWhereClauseParameter(2, p_roll_mana_no); long tgt_VO_V_COIL_STAT_CNT = 0; long tgt_VO_V_STATUS_CNT = 0; PosRowSet tgtVO ; if (p_pos.equals("A")) { tgtVO = this.getDao("mesdao").find("NIF024040_TgtChkFind_A.select",param_move); }else if(p_pos.equals("B")) { tgtVO = this.getDao("mesdao").find("NIF024040_TgtChkFind_B.select",param_move); }else { throw new PosException("isMove()... 没有位置信息..."); } tgtVO.reset(); if(tgtVO.hasNext()) { PosRow tgtRow = tgtVO.next(); tgt_VO_V_STATUS_CNT = Long.parseLong((tgtRow.getAttribute("B_STATUS_STAT_CNT")==null? "0":tgtRow.getAttribute("B_STATUS_STAT_CNT")).toString()); tgt_VO_V_COIL_STAT_CNT = Long.parseLong((tgtRow.getAttribute("COIL_STAT_CNT")==null? "0":tgtRow.getAttribute("COIL_STAT_CNT")).toString()); } if(tgt_VO_V_STATUS_CNT != 0) { throw new PosException("isMove()... tgt_VO_V_STATUS_CNT != 0 ... 不能够在轧制进行的坯料中插入对象"); }else if(tgt_VO_V_COIL_STAT_CNT != 0) { throw new PosException("isMove()... tgt_VO_V_COIL_STAT_CNT != 0 ... 不能够在上料的坯料中插入对象"); }else { moveable = true; } return moveable; } }