package xin.glue.ui.H.H02; import com.posdata.glue.biz.activity.PosActivity; import com.posdata.glue.biz.constants.PosBizControlConstants; import com.posdata.glue.biz.control.PosBizControlIF; import com.posdata.glue.biz.control.PosBizProvider; import com.posdata.glue.component.PosConstants; 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.PosMESMessageImpl; import com.posdata.glue.msg.PosMessage; /* * desc:加热炉装炉操作,修改,插入 * author:王小炎 * date:2008-10-7 */ public class PosSaveInHeatFurnace extends PosActivity { public String runActivity(PosContext context) { // 从页面获取参数数据,供更新页面使用 String[] slabNo = (String[])context.get("SLAB_NO"); String[] CoilNo = (String[])context.get("COIL_NO"); String[] devNo = (String[])context.get("DEVNO"); String[] WkShift = (String[])context.get("WK_SHIFT1"); String[] WkGroup = (String[])context.get("WK_GROUP1"); String[] RegId = (String[])context.get("WK_EMP_NO1"); String[] charingDtime = (String[])context.get("CHARING_DTIME"); String[] chrgingBefWgt = (String[])context.get("CHRGING_BEF_WGT"); String[] chrgingBefTemp = (String[])context.get("CHRGING_BEF_TEMP"); Number SlabWgt = null; String BefProgCd = null; String OrdNo = null; String OrdSeq = null; String MsgChk = null; logger.logInfo("PosSaveInHeatFurnace slabNo[0] 1:("+slabNo[0]+")"+CoilNo[0]); //这里需要加控制,没有进行上料操作的。不能补录入炉实绩 PosParameter param33 = new PosParameter(); param33.setWhereClauseParameter(0, slabNo[0] ); param33.setWhereClauseParameter(1, CoilNo[0] ); PosRowSet coilVo = getDao("mesdao").find("UIH020020_06.select", param33); String OLD_SAMPL_NO = null; if(coilVo.hasNext()){ PosRow coilRow = coilVo.next(); OLD_SAMPL_NO = (String) coilRow.getAttribute("OLD_SAMPL_NO"); if(null == OLD_SAMPL_NO){ //如果不存在卷号,不能补录入炉实际 // 如果卷号为空的话,给出提示,不能进行取消操作。 logger.logInfo("PosSaveInHeatFurnace 没有获取到真实钢卷号信息! "+slabNo[0]+"流水号"+CoilNo[0]+"真实钢卷号 :"+OLD_SAMPL_NO); String vOLD_SAMPL_NO = "OLD_SAMPL_NO"; context.put("rs", vOLD_SAMPL_NO); }else{ //装入炉内位置,0是长板坯、1是西、2是东 String[] ROW_NUM = (String[])context.get("ROW_NUM"); if(ROW_NUM[0].equals("") || ROW_NUM[0] == null){ ROW_NUM[0] = "1"; } PosParameter param3 = new PosParameter(); param3.setWhereClauseParameter(0, slabNo[0] ); param3.setWhereClauseParameter(1, CoilNo[0] ); PosRowSet specMillVo = getDao("mesdao").find("NIH020020_SPEC_MILL.select", param3); if (specMillVo.hasNext()) { PosRow specMillROW = specMillVo.next(); Number SLAB_EDT_SEQ = (Number)specMillROW.getAttribute("SLAB_EDT_SEQ"); String STATUS_CD = (String)specMillROW.getAttribute("STATUS_CD"); //这里判断一次钢卷号与板坯号是否配对,如果输入的板坯号与钢卷号不是在轧制计划中配对的。给出错误提示 String Coil_No_Spec = (String)specMillROW.getAttribute("COIL_NO"); if(Coil_No_Spec.equals(CoilNo[0]) && Coil_No_Spec != null){ logger.logInfo("PosSaveInHeatFurnace STATUS_CD 1:("+STATUS_CD+")"); if(STATUS_CD != null && (STATUS_CD.equals("A") || STATUS_CD.equals("B")) ) { logger.logInfo("PosSaveInHeatFurnace STATUS_CD 2:("+STATUS_CD+")"); PosParameter param4 = new PosParameter(); param4.setWhereClauseParameter(0, "B" ); param4.setWhereClauseParameter(1, slabNo[0] ); param4.setWhereClauseParameter(2, CoilNo[0] ); getDao("mesdao").update("NIH020020_SPEC_MILL.update", param4); PosParameter param5 = new PosParameter(); param5.setWhereClauseParameter(0, "B" ); param5.setWhereClauseParameter(1, SLAB_EDT_SEQ ); getDao("mesdao").update("NIH020020_SPEC_MILL_D.update", param5); PosParameter param7 = new PosParameter(); param7.setWhereClauseParameter(0, "B" ); param7.setWhereClauseParameter(1, SLAB_EDT_SEQ ); getDao("mesdao").update("NIH020020_MILL_IDX.update", param7); PosParameter param6 = new PosParameter(); param6.setWhereClauseParameter(0,slabNo[0] ); PosRowSet rowset5 = getDao("mesdao").find("UIH020020_05.select", param6); while(rowset5.hasNext()) { PosRow row1 = rowset5.next(); SlabWgt = (Number)row1.getAttribute("SLAB_WGT"); BefProgCd = (String)row1.getAttribute("CUR_PROG_CD"); OrdNo = (String)row1.getAttribute("ORD_NO"); OrdSeq = (String)row1.getAttribute("ORD_SEQ"); } PosParameter param1 = new PosParameter(); PosParameter param2 = new PosParameter(); //更新tbg02_slab_comm表 ,这里可能会出现空值异常需要相应的处理 String sql1 = "select * from tbg02_slab_comm where slab_no = ? and slab_stat = '2' "; param2.setWhereClauseParameter(0, slabNo[0]); PosRowSet rowset1 = getDao("mesdao").findByQueryStatement(sql1, param2); //如果这块板坯在公共表中不存在,说明板坯号对应不上实物。因此抛出异常 if(rowset1.hasNext()){ //查询结果如果已经有值,则进行修改操作,否则插入 String sql = "select * from TBH02_REHEATFUR where slab_no = ? and coil_no = ? "; PosParameter param0 = new PosParameter(); param0.setWhereClauseParameter(0,slabNo[0] ); param0.setWhereClauseParameter(1,CoilNo[0] ); PosRowSet rowset0 = getDao("mesdao").findByQueryStatement(sql, param0); //这里为了处理板坯回炉的情况,用板坯号和钢卷号做为联合主键 if(rowset0.hasNext()){ param1.setWhereClauseParameter(0,charingDtime[0]); param1.setWhereClauseParameter(1,chrgingBefWgt[0]); param1.setWhereClauseParameter(2,chrgingBefTemp[0]); param1.setWhereClauseParameter(3,WkShift[0]); param1.setWhereClauseParameter(4,WkGroup[0]); param1.setWhereClauseParameter(5,RegId[0]); param1.setWhereClauseParameter(6,ROW_NUM[0]); param1.setWhereClauseParameter(7,slabNo[0]); param1.setWhereClauseParameter(8,CoilNo[0]); int updateResult = getDao("mesdao").update("UIH020020_01.update", param1); }else{ param1.setValueParamter(0,slabNo[0]); param1.setValueParamter(1, devNo[0]); param1.setValueParamter(2, CoilNo[0]); param1.setValueParamter(3,charingDtime[0]); param1.setValueParamter(4,chrgingBefWgt[0]); param1.setValueParamter(5,chrgingBefTemp[0]); param1.setValueParamter(6,WkShift[0]); param1.setValueParamter(7,WkGroup[0]); param1.setValueParamter(8,RegId[0]); param1.setValueParamter(9,ROW_NUM[0]); getDao("mesdao").insert("UIH020020_01.insert",param1); } //TBG02_SLAB_COMM UPDATE CUR_PROG_CD = 'RBB' PosParameter param8 = new PosParameter(); param8.setWhereClauseParameter(0, slabNo[0] ); getDao("mesdao").update("UIH020020_02.update", param8); //RHF ENTRY slab is cleared in Roller table address PosParameter param9 = new PosParameter(); param9.setWhereClauseParameter(0, slabNo[0] ); PosRowSet rollerVo = getDao("mesdao").find("NIH020010_ROLLER.select", param9); while(rollerVo.hasNext()) { PosRow rollerROW = rollerVo.next(); String YardAddr = (String)rollerROW.getAttribute("YARD_ADDR"); PosParameter paramD = new PosParameter(); paramD.setWhereClauseParameter(0, YardAddr ); getDao("mesdao").update("NIH020010_ROLLER.update", paramD); } //SendProg_NIE012070( slabNo[0] ,BefProgCd,OrdNo,OrdSeq,SlabWgt,RegId[0] ); //SendProg_NIE012080(); } else { //板坯不存在tbg02_slab_comm表中的时候,抛出异常告诉前台知道 logger.logDebug("PosSaveInHeatFurnace 输入的板坯号在板坯公共表 tbg02_slab_comm 中不存在! "); String vtemp="PosSaveInHeatFurnace"; context.put("rs", vtemp); } } else { logger.logInfo("PosSaveInHeatFurnace Failed TBF02_SPEC_MILL STATUS_CD:("+STATUS_CD+")"); MsgChk = "N"; } }else{ logger.logInfo("PosSaveInHeatFurnace Coil_No_Spec 1:("+Coil_No_Spec+")::::"+CoilNo[0]); //这里出现的异常情况是板坯号与钢卷号不匹配 String vtemp="InHeatFurnacePart"; context.put("rs", vtemp); } }else{ logger.logInfo("PosSaveInHeatFurnace Failed "); MsgChk = "NOT"; } } }else{ // 如果卷号为空的话,给出提示,不能进行取消操作。 logger.logInfo("PosSaveInHeatFurnace 没有获取到真实钢卷号信息! "+slabNo[0]+"流水号"+CoilNo[0]+"真实钢卷号 :"+OLD_SAMPL_NO); String vOLD_SAMPL_NO = "OLD_SAMPL_NO"; context.put("rs", vOLD_SAMPL_NO); } context.put("MsgChk",MsgChk); return PosBizControlConstants.SUCCESS; } public void SendProg_NIE012070(String SlabNo,String BefProg,String OrdNo,String OrdSeq,Number wgt,String RegId ) { // BigDecimal wgt = new BigDecimal(); PosContext context = new PosContext(); PosMessage message = new PosMESMessageImpl(); String TcId = "NIE012070"; message.setTCID(TcId); message.setObject("MSG_ID",TcId); message.setObject("BEF_ORD_NO",OrdNo); message.setObject("BEF_ORD_SEQ",OrdSeq); message.setObject("ORD_NO",OrdNo); message.setObject("ORD_SEQ",OrdSeq); message.setObject("BEF_PROG_CD",BefProg); message.setObject("PROG_CD","RAB"); message.setObject("MAT_TYPE","TM"); message.setObject("MAT_NO",SlabNo); message.setObject("WGT", wgt ); message.setObject("PGMID","PosSaveInHeatFur"); message.setObject("REG_ID",RegId); context.setMessage(message); this.processComponent(PosConstants.CREATE_MESSAGE, context); String transactionCode = context.getMessage().getTC(); logger.logInfo("PosSAveOutHeatFurnace---> transactionCode:("+transactionCode+")" ); message.setTCID(TcId); String serviceName = "NIE012070"; String SERVICE_POSTFIX = "-service"; context.put(PosBizControlConstants.SERVICE_NAME, serviceName + SERVICE_POSTFIX); context.setMessage(message); PosBizControlIF controller = PosBizProvider.getController(); controller.doSubController(context,false); logger.logInfo("PosSAveOutHeatFurnace---> NIE012070 TC SendProgress end" ); } public void SendProg_NIE012080() { PosContext context = new PosContext(); PosMessage message = new PosMESMessageImpl(); String TcId = "NIE012080"; message.setTCID(TcId); message.setObject("MSG_ID",TcId); message.setObject("AA",null); context.setMessage(message); this.processComponent(PosConstants.CREATE_MESSAGE, context); String transactionCode = context.getMessage().getTC(); message.setTCID(TcId); String serviceName = "NIE012080"; String SERVICE_POSTFIX = "-service"; context.put(PosBizControlConstants.SERVICE_NAME, serviceName + SERVICE_POSTFIX); context.setMessage(message); PosBizControlIF controller = PosBizProvider.getController(); controller.doSubController(context,false); } }