package xin.glue.nui.H.H02; import java.math.BigDecimal; import java.sql.CallableStatement; import java.sql.SQLException; import xin.glue.ui.common.PosDateFormat; import xin.glue.ui.common.ProduceFactory; import com.posdata.glue.PosException; 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.PosGenericDao; 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; public class XinSaveCoilReject extends PosActivity { public String runActivity(PosContext context) { logger.logInfo("XinSaveCoilReject START " ); PosMessage message = context.getMessage(); String MSG_SLAB_NO = (String)message.get("SLAB_NO"); String MISSNO_CAUSE_CD = (String)message.get("MISSNO_CAUSE_CD"); String MSG_MISSNO_OCR_DTIME = (String)message.get("MISSNO_OCR_DTIME"); //这里判断原因代码,1-4为轧回操作处理走SLABREJECT的处理方式。5-11以及FFF走轧废处理 if(MISSNO_CAUSE_CD.equals("01") || MISSNO_CAUSE_CD.equals("02") || MISSNO_CAUSE_CD.equals("03") || MISSNO_CAUSE_CD.equals("04")){ //轧回的情况走加回处理的方式 //这里需要通过轧回时间获取相应的班组信息,因此需要进行下列判断 PosDateFormat dateFormat = new PosDateFormat(); // String sShift = dateFormat.getShiftT(MSG_MISSNO_OCR_DTIME); String sShift = null; // 这里的班次的时间段就由基础表维护。可能存在2班或者3班的情况,那么就是有值的就进行判断没有的就是没有设定的。 PosParameter paramSA = new PosParameter(); PosParameter paramSB = new PosParameter(); PosParameter paramSC = new PosParameter(); //这里获取三个班次相应的时间 String sqlA = "SELECT to_number(A.SM_EFNM) SM_EFNM,to_number(A.SM_ESNM) SM_ESNM FROM TBZ00_COMMCD A WHERE A.LG_CD = 'H07001' AND A.SM_CD = '1'"; String sqlB = "SELECT to_number(A.SM_EFNM) SM_EFNM,to_number(A.SM_ESNM) SM_ESNM,A.SHRXM FROM TBZ00_COMMCD A WHERE A.LG_CD = 'H07001' AND A.SM_CD = '2'"; String sqlC = "SELECT to_number(A.SM_EFNM) SM_EFNM,to_number(A.SM_ESNM) SM_ESNM FROM TBZ00_COMMCD A WHERE A.LG_CD = 'H07001' AND A.SM_CD = '3'"; PosRowSet ShiftA = getDao("mesdao").findByQueryStatement(sqlA, paramSA); PosRowSet ShiftB = getDao("mesdao").findByQueryStatement(sqlB, paramSB); PosRowSet ShiftC = getDao("mesdao").findByQueryStatement(sqlC, paramSC); BigDecimal SM_EFNMA = null; BigDecimal SM_ESNMA = null; BigDecimal SM_EFNMB = null; BigDecimal SM_ESNMB = null; //这里是中班是否超过0点指标。如果超过0点就判断早班和晚班的情况,其它为中班。如果不超过0点就判断早班和中班的情况,其它为晚班 String SHRXM = null; BigDecimal SM_EFNMC = null; BigDecimal SM_ESNMC = null; if(ShiftA.hasNext()){ PosRow ShiftAA = ShiftA.next(); SM_EFNMA = (BigDecimal) ShiftAA.getAttribute("SM_EFNM"); SM_ESNMA = (BigDecimal) ShiftAA.getAttribute("SM_ESNM"); } if(ShiftB.hasNext()){ PosRow ShiftBB = ShiftB.next(); SM_EFNMB = (BigDecimal) ShiftBB.getAttribute("SM_EFNM"); SM_ESNMB = (BigDecimal) ShiftBB.getAttribute("SM_ESNM"); SHRXM = (String) ShiftBB.getAttribute("SHRXM"); } if(ShiftC.hasNext()){ PosRow ShiftCC = ShiftC.next(); SM_EFNMC = (BigDecimal) ShiftCC.getAttribute("SM_EFNM"); SM_ESNMC = (BigDecimal) ShiftCC.getAttribute("SM_ESNM"); } int SM_EFNMAA; int SM_ESNMAA; int SM_EFNMBB; int SM_ESNMBB; int SM_EFNMCC; int SM_ESNMCC; int hhmi = Integer.parseInt(MSG_MISSNO_OCR_DTIME.substring(8, 12)); if(SM_EFNMA == null){ SM_EFNMAA = 0; }else{ SM_EFNMAA = SM_EFNMA.intValue(); } if(SM_ESNMA == null){ SM_ESNMAA = 0; }else{ SM_ESNMAA = SM_ESNMA.intValue(); } if(SM_EFNMB == null){ SM_EFNMBB = 0; }else{ SM_EFNMBB = SM_EFNMB.intValue(); } if(SM_ESNMB == null){ SM_ESNMBB = 0; }else{ SM_ESNMBB = SM_ESNMB.intValue(); } if(SM_EFNMC == null){ SM_EFNMCC = 0; }else{ SM_EFNMCC = SM_EFNMC.intValue(); } if(SM_ESNMC == null){ SM_ESNMCC = 0; }else{ SM_ESNMCC = SM_ESNMC.intValue(); } //如果出现中班输入为空的情况,说明是三班两倒。就一定会存在早班和晚班,那么只要判断早班即可 if(SM_EFNMB == null || SM_ESNMB == null){ if(hhmi > SM_EFNMAA && hhmi < SM_ESNMAA){ //早班,这里只要判断符合不符合早班的情况即可 sShift = "1"; }else{ sShift = "3"; } }else{ if(null != SHRXM && SHRXM.equals("Y")){ //如果标志为Y,说明中班的结束时间超过0点,这时判断早班和晚班的情况。 if(hhmi > SM_EFNMAA && hhmi < SM_ESNMAA){ sShift = "1"; }else if(hhmi > SM_EFNMCC && hhmi < SM_ESNMCC){ sShift = "3"; }else{ sShift = "2"; } }else{ //如果标志不为Y,说明中班的结束时间没有超过0点,这时判断早班和中班的情况。 if(hhmi > SM_EFNMAA && hhmi < SM_ESNMAA){ sShift = "1"; }else if(hhmi > SM_EFNMBB && hhmi < SM_ESNMBB){ sShift = "2"; }else{ sShift = "3"; } } } //这里需要用到天数前移一天和后退一天的共用方法,因为对三班和两班而言中班和晚班都可能存在跨天的情况。跨天后取班组时就要把时间前移 // 这里需要获取昨天和明天的时间 String ZDate = null; String MDate = null; // 当前时间加一天 MDate = dateFormat.AddDateFunc(MSG_MISSNO_OCR_DTIME,1); //当前时间减一天 ZDate = dateFormat.AddDateFunc(MSG_MISSNO_OCR_DTIME,-1); String sGroup = null; //判断,跨天的班组需要前移时间,这样才能对得上班组 if(SM_EFNMB == null || SM_ESNMB == null){ //两班的情况,这里需要对时间进行前移。把产量计算的昨天晚班的产量 if(null != sShift && sShift.equals("3")){ //这里还需要判断,当前时间是大于晚班开始时间小于2400还是大于0000小于结束时间 if(hhmi >= SM_EFNMCC && hhmi <= 2400){ PosParameter paramA = new PosParameter(); paramA.setWhereClauseParameter(0, MSG_MISSNO_OCR_DTIME.substring(0,6)); paramA.setWhereClauseParameter(1, MSG_MISSNO_OCR_DTIME.substring(6,8)); paramA.setWhereClauseParameter(2, sShift); paramA.setWhereClauseParameter(3, "H"); PosRowSet groupVO = this.getDao("mesdao").find("NIG020210_SHIFT.select", paramA); if (groupVO.hasNext()){ PosRow groupROW = groupVO.next(); sGroup = (String)groupROW.getAttribute("GR_GROUP_CD"); } logger.logDebug(" 两班早班当前的班次班组!! "+sShift+":"+sGroup+"轧回时间:"+MSG_MISSNO_OCR_DTIME); }else if(hhmi >= 0000 && hhmi <= SM_ESNMCC){ PosParameter paramA = new PosParameter(); paramA.setWhereClauseParameter(0, ZDate.substring(0,6)); paramA.setWhereClauseParameter(1, ZDate.substring(6,8)); paramA.setWhereClauseParameter(2, sShift); paramA.setWhereClauseParameter(3, "H"); PosRowSet groupVO = this.getDao("mesdao").find("NIG020210_SHIFT.select", paramA); if (groupVO.hasNext()){ PosRow groupROW = groupVO.next(); sGroup = (String)groupROW.getAttribute("GR_GROUP_CD"); } logger.logDebug(" 两班晚班当前的班次班组!! "+sShift+":"+sGroup+"轧回前移时间:"+ZDate); } }else if(null != sShift && sShift.equals("1")){ PosParameter paramA = new PosParameter(); paramA.setWhereClauseParameter(0, MSG_MISSNO_OCR_DTIME.substring(0,6)); paramA.setWhereClauseParameter(1, MSG_MISSNO_OCR_DTIME.substring(6,8)); paramA.setWhereClauseParameter(2, sShift); paramA.setWhereClauseParameter(3, "H"); PosRowSet groupVO = this.getDao("mesdao").find("NIG020210_SHIFT.select", paramA); if (groupVO.hasNext()){ PosRow groupROW = groupVO.next(); sGroup = (String)groupROW.getAttribute("GR_GROUP_CD"); } logger.logDebug(" 两班早班当前的班次班组!! "+sShift+":"+sGroup+"轧回时间:"+MSG_MISSNO_OCR_DTIME); }else{ //不存在 logger.logDebug(" 两班班次班组不存在的情况!! "); } }else{ //三班的情况 if(null != SHRXM && SHRXM.equals("Y")){ if(null != sShift && sShift.equals("1")){ PosParameter paramA = new PosParameter(); paramA.setWhereClauseParameter(0, MSG_MISSNO_OCR_DTIME.substring(0,6)); paramA.setWhereClauseParameter(1, MSG_MISSNO_OCR_DTIME.substring(6,8)); paramA.setWhereClauseParameter(2, sShift); paramA.setWhereClauseParameter(3, "H"); PosRowSet groupVO = this.getDao("mesdao").find("NIG020210_SHIFT.select", paramA); if (groupVO.hasNext()){ PosRow groupROW = groupVO.next(); sGroup = (String)groupROW.getAttribute("GR_GROUP_CD"); } logger.logDebug(" 三班早班当前的班次班组!! "+sShift+":"+sGroup+"轧回时间:"+MSG_MISSNO_OCR_DTIME); }else if(null != sShift && sShift.equals("2")){ if(hhmi >= SM_EFNMBB && hhmi <= 2400){ PosParameter paramA = new PosParameter(); paramA.setWhereClauseParameter(0, MSG_MISSNO_OCR_DTIME.substring(0,6)); paramA.setWhereClauseParameter(1, MSG_MISSNO_OCR_DTIME.substring(6,8)); paramA.setWhereClauseParameter(2, sShift); paramA.setWhereClauseParameter(3, "H"); PosRowSet groupVO = this.getDao("mesdao").find("NIG020210_SHIFT.select", paramA); if (groupVO.hasNext()){ PosRow groupROW = groupVO.next(); sGroup = (String)groupROW.getAttribute("GR_GROUP_CD"); } logger.logDebug(" 三班中班当前的班次班组!! "+sShift+":"+sGroup+"轧回时间:"+MSG_MISSNO_OCR_DTIME); }else if(hhmi >= 0000 && hhmi <= SM_ESNMBB){ PosParameter paramA = new PosParameter(); paramA.setWhereClauseParameter(0, ZDate.substring(0,6)); paramA.setWhereClauseParameter(1, ZDate.substring(6,8)); paramA.setWhereClauseParameter(2, sShift); paramA.setWhereClauseParameter(3, "H"); PosRowSet groupVO = this.getDao("mesdao").find("NIG020210_SHIFT.select", paramA); if (groupVO.hasNext()){ PosRow groupROW = groupVO.next(); sGroup = (String)groupROW.getAttribute("GR_GROUP_CD"); } logger.logDebug(" 三班中班当前的班次班组!! "+sShift+":"+sGroup+"轧回前移时间:"+ZDate); } }else if(null != sShift && sShift.equals("3")){ //中班超过0点,晚班是从当日的凌晨开始的 PosParameter paramA = new PosParameter(); paramA.setWhereClauseParameter(0, MSG_MISSNO_OCR_DTIME.substring(0,6)); paramA.setWhereClauseParameter(1, MSG_MISSNO_OCR_DTIME.substring(6,8)); paramA.setWhereClauseParameter(2, sShift); paramA.setWhereClauseParameter(3, "H"); PosRowSet groupVO = this.getDao("mesdao").find("NIG020210_SHIFT.select", paramA); if (groupVO.hasNext()){ PosRow groupROW = groupVO.next(); sGroup = (String)groupROW.getAttribute("GR_GROUP_CD"); } logger.logDebug(" 三班晚班当前的班次班组!! "+sShift+":"+sGroup+"轧回时间:"+MSG_MISSNO_OCR_DTIME); } }else{ if(null != sShift && sShift.equals("1")){ PosParameter paramA = new PosParameter(); paramA.setWhereClauseParameter(0, MSG_MISSNO_OCR_DTIME.substring(0,6)); paramA.setWhereClauseParameter(1, MSG_MISSNO_OCR_DTIME.substring(6,8)); paramA.setWhereClauseParameter(2, sShift); paramA.setWhereClauseParameter(3, "H"); PosRowSet groupVO = this.getDao("mesdao").find("NIG020210_SHIFT.select", paramA); if (groupVO.hasNext()){ PosRow groupROW = groupVO.next(); sGroup = (String)groupROW.getAttribute("GR_GROUP_CD"); } logger.logDebug(" 三班早班当前的班次班组!! "+sShift+":"+sGroup+"轧回时间:"+MSG_MISSNO_OCR_DTIME); }else if(null != sShift && sShift.equals("2")){ PosParameter paramA = new PosParameter(); paramA.setWhereClauseParameter(0, MSG_MISSNO_OCR_DTIME.substring(0,6)); paramA.setWhereClauseParameter(1, MSG_MISSNO_OCR_DTIME.substring(6,8)); paramA.setWhereClauseParameter(2, sShift); paramA.setWhereClauseParameter(3, "H"); PosRowSet groupVO = this.getDao("mesdao").find("NIG020210_SHIFT.select", paramA); if (groupVO.hasNext()){ PosRow groupROW = groupVO.next(); sGroup = (String)groupROW.getAttribute("GR_GROUP_CD"); } logger.logDebug(" 三班中班当前的班次班组!! "+sShift+":"+sGroup+"轧回时间:"+MSG_MISSNO_OCR_DTIME); }else if(null != sShift && sShift.equals("3")){ if(hhmi >= 0000 && hhmi <= SM_ESNMCC){ PosParameter paramA = new PosParameter(); paramA.setWhereClauseParameter(0, MSG_MISSNO_OCR_DTIME.substring(0,6)); paramA.setWhereClauseParameter(1, MSG_MISSNO_OCR_DTIME.substring(6,8)); paramA.setWhereClauseParameter(2, sShift); paramA.setWhereClauseParameter(3, "H"); PosRowSet groupVO = this.getDao("mesdao").find("NIG020210_SHIFT.select", paramA); if (groupVO.hasNext()){ PosRow groupROW = groupVO.next(); sGroup = (String)groupROW.getAttribute("GR_GROUP_CD"); } logger.logDebug(" 三班晚班当前的班次班组!! "+sShift+":"+sGroup+"轧回时间:"+MSG_MISSNO_OCR_DTIME); }else if(hhmi >= SM_EFNMCC && hhmi <= 2400){ PosParameter paramA = new PosParameter(); paramA.setWhereClauseParameter(0, MDate.substring(0,6)); paramA.setWhereClauseParameter(1, MDate.substring(6,8)); paramA.setWhereClauseParameter(2, sShift); paramA.setWhereClauseParameter(3, "H"); PosRowSet groupVO = this.getDao("mesdao").find("NIG020210_SHIFT.select", paramA); if (groupVO.hasNext()){ PosRow groupROW = groupVO.next(); sGroup = (String)groupROW.getAttribute("GR_GROUP_CD"); } logger.logDebug(" 三班晚班当前的班次班组!! "+sShift+":"+sGroup+"轧回时间:"+MDate); } } } } String sysDate = dateFormat.getCurrentDate(); logger.logDebug("XinSaveCoilReject sShift:"+sShift ); PosParameter param0 = new PosParameter(); param0.setWhereClauseParameter(0,MSG_SLAB_NO ); PosRowSet specMillVo = getDao("mesdao").find("NIH020040_SPEC_MILL.select", param0); String CoilNo = null; Number SlabEdtSeq = null; if(specMillVo.hasNext()) { PosRow specMillROW = specMillVo.next(); CoilNo = (String)specMillROW.getAttribute("COIL_NO"); SlabEdtSeq = (Number)specMillROW.getAttribute("SLAB_EDT_SEQ"); //这里走加回的处理方式 PosParameter param00 = new PosParameter(); param00.setWhereClauseParameter(0,MSG_SLAB_NO ); param00.setWhereClauseParameter(1,CoilNo ); PosRowSet rejVo = getDao("mesdao").find("NIH020030_01.select", param00); PosParameter param11 = new PosParameter(); if(rejVo.hasNext()) { //这里参数不够 ROLL_UNIT_NO、SLAB_NO //这里的作用应该是通过报文自动收一次,如果没有收成功的情况下再通过界面手工录入 param11.setWhereClauseParameter(0, ""); //3为轧回的情况 param11.setWhereClauseParameter(1, "3"); param11.setWhereClauseParameter(2, MISSNO_CAUSE_CD); // 这里标志轧回与加回的不同。所以改时间字段为标志 param11.setWhereClauseParameter(3, sysDate); param11.setWhereClauseParameter(4, MSG_SLAB_NO); this.getDao("mesdao").update("NIH020030_REJ.update", param11); } else { param11.setValueParamter(0, MSG_SLAB_NO); param11.setValueParamter(1, CoilNo); param11.setValueParamter(2, ""); param11.setValueParamter(3, "3"); param11.setValueParamter(4, MISSNO_CAUSE_CD); //这里标志轧回与加回的不同。所以改时间字段为标志 param11.setValueParamter(5, sysDate); //删除作业班次 param11.setValueParamter(6, sShift); //删除作业班组 param11.setValueParamter(7, sGroup); //删除作业人 param11.setValueParamter(8, "NIH020040"); this.getDao("mesdao").insert("NIH020040_REJ.insert", param11); } //如果出现多次吊销的情况,只在第一次的时候给予处理 PosParameter param9 = new PosParameter(); String sql9 = "select RHF_STAT from TBH02_REHEATFUR where slab_no = ? and coil_no = ? "; param9.setWhereClauseParameter(0, MSG_SLAB_NO); param9.setWhereClauseParameter(1, CoilNo); //这里做为是否调用品质的标志 String RHF_STAT = null; PosRowSet rowset9 = getDao("mesdao").findByQueryStatement(sql9, param9); if(rowset9.hasNext()){ PosRow row9 = rowset9.next(); RHF_STAT = (String) row9.getAttribute("RHF_STAT"); logger.logDebug("XinSaveSlabReject---> 加热炉吊销的状态:"+RHF_STAT); } PosParameter param2 = new PosParameter(); param2.setWhereClauseParameter(0, "2"); param2.setWhereClauseParameter(1,"C"); param2.setWhereClauseParameter(2,MISSNO_CAUSE_CD); param2.setWhereClauseParameter(3,sysDate); param2.setWhereClauseParameter(4,"NIH020040"); param2.setWhereClauseParameter(5,MSG_SLAB_NO); //改变板坯公共表中的板坯状态信息 getDao("mesdao").update("UIH020020_04.update", param2); //把板坯数据放入C8辊道上 PosParameter param77 = new PosParameter(); param77.setWhereClauseParameter(0, MSG_SLAB_NO); param77.setWhereClauseParameter(1, "NIH020040"); param77.setWhereClauseParameter(2, "C8"); getDao("mesdao").update("UIH020020_10.update", param77); PosParameter param4 = new PosParameter(); param4.setWhereClauseParameter(0,"3"); param4.setWhereClauseParameter(1,MSG_SLAB_NO); param4.setWhereClauseParameter(2,CoilNo); //这个在UIH020020中,修改的是板坯缺号状态信息。这里为了回送板坯已板坯号和钢卷号做为联合主键 getDao("mesdao").update("UIH020020_07.update", param4); // TBH02_COIL_COMM UPDATE PosParameter param8 = new PosParameter(); param8.setWhereClauseParameter(0, ""); param8.setWhereClauseParameter(1,"S"); param8.setWhereClauseParameter(2,MISSNO_CAUSE_CD); param8.setWhereClauseParameter(3,sysDate); param8.setWhereClauseParameter(4, CoilNo); //改变板坯公共表中的板坯状态信息 getDao("mesdao").update("NIH020030_COIL.update", param8); //调用存货异动点存储过程 //ProduceFactory PD= new ProduceFactory(); //PD.ErpDataCover("HSLAB", MSG_SLAB_NO,"11AZ","0","O","热轧加热炉","加回轧回"); // 由计划修改,SendProg_NIF024060 // PosParameter param3 = new PosParameter(); // param3.setWhereClauseParameter(0, MSG_SLAB_NO ); // param3.setWhereClauseParameter(1, CoilNo ); // PosRowSet specMillVos = getDao("mesdao").find("NIH020020_SPEC_MILL.select", param3); // if (specMillVos.hasNext()) { // PosRow specMillROWs = specMillVos.next(); // Number SLAB_EDT_SEQ = (Number)specMillROWs.getAttribute("SLAB_EDT_SEQ"); // // PosParameter param5 = new PosParameter(); // param5.setWhereClauseParameter(0, "C" ); // param5.setWhereClauseParameter(1, MSG_SLAB_NO ); // param5.setWhereClauseParameter(2, CoilNo ); // getDao("mesdao").update("NIH020020_SPEC_MILL.update", param5); // // PosParameter param6 = new PosParameter(); // param6.setWhereClauseParameter(0, "C" ); // param6.setWhereClauseParameter(1, SLAB_EDT_SEQ ); // getDao("mesdao").update("NIH020020_SPEC_MILL_D.update", param6); // // PosParameter param7 = new PosParameter(); // param7.setWhereClauseParameter(0, "C" ); // param7.setWhereClauseParameter(1, SLAB_EDT_SEQ ); // getDao("mesdao").update("NIH020020_MILL_IDX.update", param7); // } //这里必须先调用求出状态,不然状态始终为3 if(!RHF_STAT.equals("3")){ //调用存货异动点存储过程 ProduceFactory PD= new ProduceFactory(); PD.ErpDataCover("HSLAB", MSG_SLAB_NO,"11AZ","0","O","热轧加热炉coil1","加回轧回"); //Mill schedule cancel request SendProg_NIF024060( MSG_SLAB_NO); //调用品质存储过程 logger.logDebug("XinSaveSlabReject---> NIB027010 TC sql call" ); CallableStatement PlRtn = getDao("mesdao").getCallableStatement("NIH020020_NIB027010"); logger.logDebug("XinSaveSlabReject---> NIB027010 TC try" ); try { if(PlRtn != null) { PlRtn.setString(1,CoilNo); //新增加一个字段,为了废弃的时候使用 PlRtn.setString(2,"S"); PlRtn.registerOutParameter(3, java.sql.Types.VARCHAR); PlRtn.registerOutParameter(4, java.sql.Types.VARCHAR); PlRtn.execute(); String sRetCode = PlRtn.getString(3); String sRetMsg = PlRtn.getString(4); logger.logDebug("XinSaveSlabReject---> NIB027010 TC PlRtn1:["+sRetCode+"]:"+ sRetMsg); } else { logger.logDebug("XinSaveSlabReject---> NIB027010 PlRtn2:"+PlRtn ); } } catch (SQLException e) { throw new PosException(e.getMessage()); }finally { if (PlRtn != null) { try { PlRtn.close(); } catch (SQLException e) { logger.logWarn(e.getMessage(), e); logger.logDebug("XinSaveSlabReject---> NIB027010 SQLException:"+e ); } } } }else{ //吊销过一次的板坯,不能再次调用品质和进程 logger.logDebug("XinSaveSlabReject---> 加热炉多次吊销时不允许调用品质和进程:"+RHF_STAT); } }else{ logger.logDebug("XinSaveCoilReject 通过板坯号查询不到计划中的钢卷号信息 "); } }else{ //走轧废处理的情况 PosDateFormat dateFormat = new PosDateFormat(); String sShift = dateFormat.getShiftT(MSG_MISSNO_OCR_DTIME); logger.logDebug("XinSaveCoilReject sShift:"+sShift ); PosParameter param0 = new PosParameter(); param0.setWhereClauseParameter(0,MSG_SLAB_NO ); PosRowSet specMillVo = getDao("mesdao").find("NIH020040_SPEC_MILL.select", param0); String CoilNo = null; Number SlabEdtSeq = null; if(specMillVo.hasNext()) { PosRow specMillROW = specMillVo.next(); CoilNo = (String)specMillROW.getAttribute("COIL_NO"); SlabEdtSeq = (Number)specMillROW.getAttribute("SLAB_EDT_SEQ"); } //如果出现多次吊销的情况,只在第一次的时候给予处理 PosParameter param9 = new PosParameter(); String sql9 = "select RHF_STAT from TBH02_REHEATFUR where slab_no = ? and coil_no = ? "; param9.setWhereClauseParameter(0, MSG_SLAB_NO); param9.setWhereClauseParameter(1, CoilNo); //这里做为是否调用品质的标志 String RHF_STAT = null; PosRowSet rowset9 = getDao("mesdao").findByQueryStatement(sql9, param9); if(rowset9.hasNext()){ PosRow row9 = rowset9.next(); RHF_STAT = (String) row9.getAttribute("RHF_STAT"); } if(!RHF_STAT.equals("3")){ //调用存货异动点存储过程 ProduceFactory PD= new ProduceFactory(); PD.ErpDataCover("HSLAB", MSG_SLAB_NO,"11AZ","0","O","热轧加热炉coil2","加回轧回"); } PosParameter param1 = new PosParameter(); param1.setWhereClauseParameter(0,MSG_SLAB_NO ); PosRowSet rejCoilVo = getDao("mesdao").find("NIH020040_COIL_COMM.select", param1); PosParameter param2 = new PosParameter(); if(rejCoilVo.hasNext()) { param2.setWhereClauseParameter(0, "1"); param2.setWhereClauseParameter(1, "5"); param2.setWhereClauseParameter(2, MISSNO_CAUSE_CD); param2.setWhereClauseParameter(3, MSG_SLAB_NO); this.getDao("mesdao").update("NIH020040_COIL.update", param2); } else { param2.setValueParamter(0, MSG_SLAB_NO); param2.setValueParamter(1, CoilNo); param2.setValueParamter(2, "1"); param2.setValueParamter(3, "5"); param2.setValueParamter(4, MISSNO_CAUSE_CD); this.getDao("mesdao").insert("NIH020040_COIL.insert", param2); } //修改板坯公共表,726TL PosParameter param66 = new PosParameter(); param66.setWhereClauseParameter(0, MSG_SLAB_NO); getDao("mesdao").update("UIH020020_08.update", param66); String SlabCurrProgCd = null; String SlabBefProgCd = null; String SlabOrdNo = null; String SlabOrdSeq = null; BigDecimal SlabWgt = null; PosParameter param3 = new PosParameter(); param3.setWhereClauseParameter(0, MSG_SLAB_NO); PosRowSet slabVo = getDao("mesdao").find("NIH020030_SLAB.select", param3); if(slabVo.hasNext()) { PosRow slabROW = slabVo.next(); SlabCurrProgCd = (String)slabROW.getAttribute("CUR_PROG_CD"); SlabBefProgCd = (String)slabROW.getAttribute("BEF_PROG_CD"); SlabOrdNo = (String)slabROW.getAttribute("ORD_NO"); SlabOrdSeq = (String)slabROW.getAttribute("ORD_SEQ"); SlabWgt = (BigDecimal)slabROW.getAttribute("SLAB_WGT"); } if (SlabEdtSeq != null) { PosParameter param4 = new PosParameter(); param4.setWhereClauseParameter(0, "C" ); param4.setWhereClauseParameter(1, MSG_SLAB_NO ); param4.setWhereClauseParameter(2, CoilNo ); getDao("mesdao").update("NIH020020_SPEC_MILL.update", param4); PosParameter param5 = new PosParameter(); param5.setWhereClauseParameter(0, "C" ); param5.setWhereClauseParameter(1, SlabEdtSeq ); getDao("mesdao").update("NIH020020_SPEC_MILL_D.update", param5); PosParameter param6 = new PosParameter(); param6.setWhereClauseParameter(0, "C" ); param6.setWhereClauseParameter(1, SlabEdtSeq ); getDao("mesdao").update("NIH020020_MILL_IDX.update", param6); } //调用存货异动点存储过程 //ProduceFactory PD= new ProduceFactory(); //PD.ErpDataCover("HSLAB", MSG_SLAB_NO,"11AZ","0","O","热轧加热炉","加回轧回"); SendProg_NIE012070( MSG_SLAB_NO ,SlabOrdNo,SlabOrdSeq,SlabCurrProgCd,SlabBefProgCd,"TM",SlabWgt ); SendProg_NIE012080(); logger.logDebug("XinSaveCoilReject---> NIB027010 TC sql call" ); CallableStatement PlRtn = getDao("mesdao").getCallableStatement("NIH020020_NIB027010"); logger.logDebug("XinSaveCoilReject---> NIB027010 TC try" ); try { if(PlRtn != null) { PlRtn.setString(1,CoilNo); //新增加一个字段,为了废弃的时候使用 PlRtn.setString(2,"C"); PlRtn.registerOutParameter(3, java.sql.Types.VARCHAR); PlRtn.registerOutParameter(4, java.sql.Types.VARCHAR); PlRtn.execute(); String sRetCode = PlRtn.getString(3); String sRetMsg = PlRtn.getString(4); logger.logDebug("XinSaveCoilReject---> NIB027010 TC PlRtn1:["+sRetCode+"]:"+ sRetMsg); } else { logger.logDebug("XinSaveCoilReject---> NIB027010 PlRtn2:"+PlRtn ); } } catch (SQLException e) { throw new PosException(e.getMessage()); }finally { if (PlRtn != null) { try { PlRtn.close(); } catch (SQLException e) { logger.logWarn(e.getMessage(), e); logger.logDebug("XinSaveCoilReject---> NIB027010 SQLException:"+e ); } } } } return PosBizControlConstants.SUCCESS; } public void SendProg_NIE012070(String MatNo,String sOrdNo,String sOrdSeq,String sProgCd,String sBefProgCd,String sKind,BigDecimal wgt ) { logger.logDebug("XinSaveCcmResult SendProg_NIE012070 " ); PosContext context = new PosContext(); PosMessage message = new PosMESMessageImpl(); String TcId = "NIE012070"; message.setTCID(TcId); message.setObject("MSG_ID",TcId); message.setObject("BEF_ORD_NO",null); message.setObject("BEF_ORD_SEQ",null); message.setObject("ORD_NO",sOrdNo); message.setObject("ORD_SEQ",sOrdSeq); message.setObject("BEF_PROG_CD",sBefProgCd); message.setObject("PROG_CD",sProgCd); message.setObject("MAT_TYPE",sKind); message.setObject("MAT_NO",MatNo); message.setObject("WGT", wgt ); message.setObject("PGMID","XinSaveCoilRject"); message.setObject("REG_ID", "MILL L2"); context.setMessage(message); this.processComponent(PosConstants.CREATE_MESSAGE, context); String transactionCode = context.getMessage().getTC(); 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); } 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); } public void SendProg_NIF024060(String SlabNo ) { logger.logDebug("PosSaveMissionNo SendProg_NIF024060 " ); PosContext context = new PosContext(); PosMessage message = new PosMESMessageImpl(); String TcId = "NIF024060"; message.setTCID(TcId); message.setObject("MSG_ID",TcId); message.setObject("TYPE","C"); message.setObject("FROM",SlabNo); message.setObject("TO",SlabNo); message.setObject("REG_ID","RHF L2"); context.setMessage(message); this.processComponent(PosConstants.CREATE_MESSAGE, context); String transactionCode = context.getMessage().getTC(); message.setTCID(TcId); String serviceName = "NIF024060"; String SERVICE_POSTFIX = "-service"; context.put(PosBizControlConstants.SERVICE_NAME, serviceName + SERVICE_POSTFIX); context.setMessage(message); PosBizControlIF controller = PosBizProvider.getController(); controller.doSubController(context,false); } }