package xin.glue.nui.G.G02; import java.math.BigDecimal; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import xin.glue.ui.common.PosDateFormat; 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.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; /* * author:wangxiaoyan * Date:08-10-25 * desc:接收转炉实绩的电文信息 更新转炉实绩表 TBG02_BOF_RESULT */ public class XinSaveBofResult extends PosActivity { public String runActivity(PosContext context) { try{ PosMessage message = context.getMessage(); logger.logDebug("XinSaveBofResult start " ); // 从电文中获取的数据项 String RsvDate = (String)message.get("MSG_RSV_DATE"); String chargeNo = (String)message.get("CHARGE_NO"); //炉次号 String planChargeNo = (String)message.get("PLAN_CHARGE_NO"); //炉次计划号 String bofNo = (String)message.get("BOF_NO"); //转炉站号 // String stlGrd = (String)message.get("STL_GRD"); //钢号 String specAbbsym = (String)message.get("SPEC_ABBSYM"); //标准号 BigDecimal tappingWgt = (BigDecimal)message.get("TAPPING_WGT"); //出钢钢水重量 BigDecimal prodPlanWgt = (BigDecimal)message.get("PROD_PLAN_WGT"); //生产预定量 BigDecimal rateio = (BigDecimal)message.get("RATEIO"); //回收率 BigDecimal eptLdWgt = (BigDecimal)message.get("EPT_LD_WGT"); //空钢包重量 String treatRt = (String)message.get("TREAT_RT"); //处理路径 BigDecimal bofWkHour = (BigDecimal)message.get("BOF_WK_HOUR"); //转炉作业时间 BigDecimal chargeHour = (BigDecimal)message.get("CHARGE_HOUR"); //装入时间 BigDecimal o2blowHour = (BigDecimal)message.get("O2BLOW_HOUR"); //吹炼时间 BigDecimal tappingHour = (BigDecimal)message.get("TAPPING_HOUR"); //出钢时间 BigDecimal o2blowstepNo = (BigDecimal)message.get("O2BLOW_STEPNO"); //吹炼次数 BigDecimal o2blowAftTemp = (BigDecimal)message.get("O2BLOW_AFT_TEMP"); //吹炼后温度 String fstO2blowStaDtime = (String)message.get("FST_O2BLOW_STA_DTIME"); //1次吹炼开始时刻 String fstO2blowEndDtime = (String)message.get("FST_O2BLOW_END_DTIME"); //1次吹炼结束时刻 BigDecimal fstO2blowAftTemp = (BigDecimal)message.get("FST_O2BLOW_AFT_TEMP"); //1次吹炼后温度 BigDecimal fstO2blowAftO2Consume = (BigDecimal)message.get("FST_O2BLOW_AFT_O2_CONSUME"); //1次吹炼后吹氧量 String sndO2blowStaDtime = (String)message.get("SND_O2BLOW_STA_DTIME"); //2次吹炼开始时刻 String sndO2blowEndDtime = (String)message.get("SND_O2BLOW_END_DTIME"); //2次吹炼结束时刻 BigDecimal sndO2blowAftTemp = (BigDecimal)message.get("SND_O2BLOW_AFT_TEMP"); //2次吹炼后温度 BigDecimal sndO2blowAftO2Consume = (BigDecimal)message.get("SND_O2BLOW_AFT_O2_CONSUME"); //2次吹炼后吹氧量 String trdO2blowStaDtime = (String)message.get("TRD_O2BLOW_STA_DTIME"); //3次吹炼开始时刻 String trdO2blowEndDtime = (String)message.get("TRD_O2BLOW_END_DTIME"); //3次吹炼结束时刻 BigDecimal trdOwblowAftTemp = (BigDecimal)message.get("TRD_O2BLOW_AFT_TEMP"); //3次吹炼后温度 BigDecimal trdO2blowAftO2Consume = (BigDecimal)message.get("TRD_O2BLOW_AFT_O2_CONSUME"); //3次吹炼后吹氧量 String fthO2blowStaDtime = (String)message.get("FTH_O2BLOW_STA_DTIME"); //4次吹炼开始时刻 String fthO2blowEndDtime = (String)message.get("FTH_O2BLOW_END_DTIME"); //4次吹炼结束时刻 BigDecimal fthO2blowAftTemp = (BigDecimal)message.get("FTH_O2BLOW_AFT_TEMP"); //4次吹炼后温度 BigDecimal fthO2blowAftO2Consume = (BigDecimal)message.get("FTH_O2BLOW_AFT_O2_CONSUME"); //4次吹炼后吹氧量 BigDecimal chargeTemp = (BigDecimal)message.get("CHARGE_TEMP"); //装入铁水温度 BigDecimal tappingAftTemp = (BigDecimal)message.get("TAPPING_AFT_TEMP"); //出钢时温度 String scrapChargeStaDtime = (String)message.get("SCRAP_CHARGE_STA_DTIME"); //废钢装炉开始时刻 String ironChargeStaDtime = (String)message.get("IRON_CHARGE_STA_DTIME"); //铁水装炉开始时刻 String tappingStaDtime = (String)message.get("TAPPING_STA_DTIME"); //出钢开始时刻 String tappingEndDtime = (String)message.get("TAPPING_END_DTIME"); //出钢完成时刻 BigDecimal scrapZincChargeWgt = (BigDecimal)message.get("SCRAP_ZINC_CHARGE_WGT"); //生铁装入量 BigDecimal scrapChargeWgt = (BigDecimal)message.get("SCRAP_CHARGE_WGT"); //废钢装入量 BigDecimal ironChargeWgt = (BigDecimal)message.get("IRON_CHARGE_WGT"); //铁水装入量 BigDecimal subrawWgt = (BigDecimal)message.get("SUBRAW_WGT"); //副原料用量 BigDecimal O2LanceId = (BigDecimal)message.get("O2_LANCE_ID"); //氧枪号 BigDecimal O2LanceUseCnt = (BigDecimal)message.get("O2_LANCE_USE_CNT"); //枪龄 BigDecimal bofUseStepno = (BigDecimal)message.get("BOF_USE_STEPNO"); //转炉使用次数 BigDecimal tappingGateStepno = (BigDecimal)message.get("TAPPING_GATE_STEPNO"); //出刚口次数 BigDecimal O2consume = (BigDecimal)message.get("O2_CONSUME"); //氧气用量 BigDecimal arConsume = (BigDecimal)message.get("AR_CONSUME"); //氩气使用量 BigDecimal n2Consume = (BigDecimal)message.get("N2_CONSUME"); logger.logDebug("XinSaveBofResult tappingWgt:"+tappingWgt ); int chLth = chargeNo.trim().length(); if (chLth < 10 ) { logger.logError("XinSaveBofResult CHARGE_NO ERROR !!!!-->"+chargeNo ); return PosBizControlConstants.SUCCESS; } // 通过电文发送时间获取当前班次信息 String sShift = null; // 如果接收时间为空的话,就取当前时间 if ( RsvDate == null || RsvDate.equals("") ) { DateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss"); RsvDate = formatter.format(new Date()); logger.logDebug("XinSaveBofResult start RsvDate: "+RsvDate ); } sShift = PosDateFormat.getShift(RsvDate); // 查询班次组表获取工作组信息 PosParameter paramA = new PosParameter(); paramA.setWhereClauseParameter(0, RsvDate.substring(0,6)); paramA.setWhereClauseParameter(1, RsvDate.substring(6,8)); paramA.setWhereClauseParameter(2, sShift); paramA.setWhereClauseParameter(3, "S"); PosRowSet groupVO = this.getDao("mesdao").find("NIG020210_SHIFT.select", paramA); String sGroup = null; if (groupVO.hasNext()){ PosRow groupROW = groupVO.next(); sGroup = (String)groupROW.getAttribute("GR_GROUP_CD"); } PosParameter param0 = new PosParameter(); PosParameter param1 = new PosParameter(); PosParameter param2 = new PosParameter(); // PosParameter param3 = new PosParameter(); param0.setWhereClauseParameter(0, chargeNo); PosRowSet rowset0 = this.getDao("mesdao").find("NIG020210_01.select", param0); if(rowset0.hasNext()) { param1.setValueParamter(0,planChargeNo); //1 炉次计划号 param1.setValueParamter(1,bofNo); //2 转炉站号 param1.setValueParamter(2,specAbbsym); //3 标准号 param1.setValueParamter(3,tappingWgt); //4 出钢钢水重量 param1.setValueParamter(4,prodPlanWgt); //5 生产预定量 param1.setValueParamter(5,rateio); //6 回收率 param1.setValueParamter(6,eptLdWgt); //7 空钢包重量 param1.setValueParamter(7,treatRt); //8 处理路径 param1.setValueParamter(8,bofWkHour); //9 转炉 作业时间 param1.setValueParamter(9,chargeHour); //10装入时间 param1.setValueParamter(10,o2blowHour); //11吹? 妒奔? param1.setValueParamter(11,tappingHour); //12出钢时间 param1.setValueParamter(12,o2blowstepNo); //13吹炼次数 param1.setValueParamter(13,o2blowAftTemp); //14吹炼? 笪露? param1.setValueParamter(14,fstO2blowStaDtime); //151次吹炼开始时刻 param1.setValueParamter(15,fstO2blowEndDtime); //161? 未盗督崾笨? param1.setValueParamter(16,fstO2blowAftTemp); //171次 吹炼后温度 param1.setValueParamter(17,fstO2blowAftO2Consume); //181次吹炼后吹氧量 param1.setValueParamter(18,sndO2blowStaDtime); //192次吹炼开始时刻 param1.setValueParamter(19,sndO2blowEndDtime); //202次吹炼结束时刻 param1.setValueParamter(20,sndO2blowAftTemp); //212次吹炼后温度 param1.setValueParamter(21,sndO2blowAftO2Consume); //222次吹炼后吹氧量 param1.setValueParamter(22,trdO2blowStaDtime); //233次吹炼开始时刻 param1.setValueParamter(23,trdO2blowEndDtime); //243次吹炼结束时刻 param1.setValueParamter(24,trdOwblowAftTemp); //253次吹炼后温度 param1.setValueParamter(25,trdO2blowAftO2Consume); //263次吹炼后吹氧量 param1.setValueParamter(26,fthO2blowStaDtime); //274次吹炼开始时刻 param1.setValueParamter(27,fthO2blowEndDtime); //284次吹炼结束时刻 param1.setValueParamter(28,fthO2blowAftTemp); //294次吹炼后温度 param1.setValueParamter(29,fthO2blowAftO2Consume); //304次吹炼后吹氧量 param1.setValueParamter(30,chargeTemp); //31装入铁水温度 param1.setValueParamter(31,tappingAftTemp); //32出钢时温度 param1.setValueParamter(32,scrapChargeStaDtime); //33废钢装炉开始时刻 param1.setValueParamter(33,ironChargeStaDtime); //34铁水装炉开始时刻 param1.setValueParamter(34,tappingStaDtime); //35出钢开始时刻 param1.setValueParamter(35,tappingEndDtime); //36出钢完成时刻 param1.setValueParamter(36,scrapZincChargeWgt); //37生铁装入量 param1.setValueParamter(37,scrapChargeWgt); //38废钢装入量 param1.setValueParamter(38,ironChargeWgt); //39铁水装入量 param1.setValueParamter(39,subrawWgt); //40副原料用量 param1.setValueParamter(40,O2LanceId); //41氧枪号 param1.setValueParamter(41,O2LanceUseCnt); //42枪龄 param1.setValueParamter(42,bofUseStepno); //43转炉使用次数 param1.setValueParamter(43,tappingGateStepno); //44出刚口次数 param1.setValueParamter(44,O2consume); //45氧气用量 param1.setValueParamter(45,arConsume); //46氩气使用量 param1.setValueParamter(46,n2Consume); //47氮气使用量 param1.setValueParamter(47,sShift); //48炉次号 param1.setValueParamter(48,sGroup); //48炉次号 param1.setValueParamter(49,RsvDate.substring(0,8)); //48炉次号 param1.setValueParamter(50,chargeNo ); //48炉次号 this.getDao("mesdao").update("NIG020210_01.update",param1); } else { param1.setValueParamter(0,chargeNo); //1 炉次号 param1.setValueParamter(1,planChargeNo); //2 炉次计划号 param1.setValueParamter(2,bofNo); //3 转炉站号 param1.setValueParamter(3,specAbbsym); //4 标准号 param1.setValueParamter(4,tappingWgt); //5 出钢钢水重量 param1.setValueParamter(5,prodPlanWgt); //6 生产预定量 param1.setValueParamter(6,rateio); //7 回收率 param1.setValueParamter(7,eptLdWgt); //8 空钢包重量 param1.setValueParamter(8,treatRt); //9 处理路径 param1.setValueParamter(9,bofWkHour); //10转炉 作业时间 param1.setValueParamter(10,chargeHour); //11装入时间 param1.setValueParamter(11,o2blowHour); //12吹? 妒奔? param1.setValueParamter(12,tappingHour); //13出钢时间 param1.setValueParamter(13,o2blowstepNo); //14吹炼次数 param1.setValueParamter(14,o2blowAftTemp); //15吹炼? 笪露? param1.setValueParamter(15,fstO2blowStaDtime); //161次吹炼开始时刻 param1.setValueParamter(16,fstO2blowEndDtime); //171? 未盗督崾笨? param1.setValueParamter(17,fstO2blowAftTemp); //181次 吹炼后温度 param1.setValueParamter(18,fstO2blowAftO2Consume); //191次吹炼后吹氧量 param1.setValueParamter(19,sndO2blowStaDtime); //202次吹炼开始时刻 param1.setValueParamter(20,sndO2blowEndDtime); //212次吹炼结束时刻 param1.setValueParamter(21,sndO2blowAftTemp); //222次吹炼后温度 param1.setValueParamter(22,sndO2blowAftO2Consume); //232次吹炼后吹氧量 param1.setValueParamter(23,trdO2blowStaDtime); //243次吹炼开始时刻 param1.setValueParamter(24,trdO2blowEndDtime); //253次吹炼结束时刻 param1.setValueParamter(25,trdOwblowAftTemp); //263次吹炼后温度 param1.setValueParamter(26,trdO2blowAftO2Consume); //273次吹炼后吹氧量 param1.setValueParamter(27,fthO2blowStaDtime); //284次吹炼开始时刻 param1.setValueParamter(28,fthO2blowEndDtime); //294次吹炼结束时刻 param1.setValueParamter(29,fthO2blowAftTemp); //304次吹炼后温度 param1.setValueParamter(30,fthO2blowAftO2Consume); //314次吹炼后吹氧量 param1.setValueParamter(31,chargeTemp); //32装入铁水温度 param1.setValueParamter(32,tappingAftTemp); //33出钢时温度 param1.setValueParamter(33,scrapChargeStaDtime); //34废钢装炉开始时刻 param1.setValueParamter(34,ironChargeStaDtime); //35铁水装炉开始时刻 param1.setValueParamter(35,tappingStaDtime); //36出钢开始时刻 param1.setValueParamter(36,tappingEndDtime); //37出钢完成时刻 param1.setValueParamter(37,scrapZincChargeWgt); //38生铁装入量 param1.setValueParamter(38,scrapChargeWgt); //39废钢装入量 param1.setValueParamter(39,ironChargeWgt); //40铁水装入量 param1.setValueParamter(40,subrawWgt); //41副原料用量 param1.setValueParamter(41,O2LanceId); //42氧枪号 param1.setValueParamter(42,O2LanceUseCnt); //43枪龄 param1.setValueParamter(43,bofUseStepno); //44转炉使用次数 param1.setValueParamter(44,tappingGateStepno); //45出刚口次数 param1.setValueParamter(45,O2consume); //46氧气用量 param1.setValueParamter(46,arConsume); //47氩气使用量 param1.setValueParamter(47,n2Consume); //48氮气使用量 param1.setValueParamter(48,sShift); //48炉次号 param1.setValueParamter(49,sGroup); //48炉次号 param1.setValueParamter(50,RsvDate.substring(0,8)); //48炉次号 this.getDao("mesdao").insert("NIG020210_01.insert",param1); // 上一工序 String BefProg = "JBB"; /* param3.setWhereClauseParameter(0, chargeNo); // 判断炉次公共表是否有跟电文信息对应的数据,有则获取当前工序号 PosRowSet chargeVO = this.getDao("mesdao").find("NIG020210_03.select", param3); if(chargeVO.hasNext()) { PosRow chargeROW = chargeVO.next(); BefProg = (String)chargeROW.getAttribute("CUR_PROG_CD"); } */ // 下面的代码就是当转炉处理完成以后,修改指示相关的 炉次参数表,板坯参数表,板坯详细参数表 // 更新炉次公共表的工序为转炉处理,炉次状态为进行 String ChargeStat = null; String PlanhargeNo = null; PosParameter paramZ = new PosParameter(); paramZ.setWhereClauseParameter(0, chargeNo); PosRowSet chargeVO = this.getDao("mesdao").find("NIG020210_03.select", paramZ); if(chargeVO.hasNext()) { PosRow chargeROW = chargeVO.next(); ChargeStat = (String)chargeROW.getAttribute("CHARGE_STAT"); PlanhargeNo = (String)chargeROW.getAttribute("PLAN_CHARGE_NO"); } if (ChargeStat != null && ChargeStat.equals("2") && PlanhargeNo != null) { PosParameter param5 = new PosParameter(); String sProgCd = "JBF"; param5.setValueParamter(0, sProgCd); param5.setValueParamter(1, "B"); param5.setValueParamter(2, PlanhargeNo); // 修改炉次参数表的炉次状态为进行 this.getDao("mesdao").update("NIG020200_SPEC_PROG.update", param5); PosParameter param6 = new PosParameter(); param6.setValueParamter(0, "B" ); param6.setValueParamter(1, PlanhargeNo ); // 修改板坯参数表的状态为进行? 炉次状态还是板坯状态 this.getDao("mesdao").update("NIG020200_SPEC_CHARGE_IDX.update", param6); this.getDao("mesdao").update("NIG020610_SPEC_SLAB.update", param6); param2.setWhereClauseParameter(0, PlanhargeNo); // 获得板坯编制号,通过板坯编制号修改相应的板坯详细参数表 PosRowSet specslabVo = this.getDao("mesdao").find("NIG020210_SPEC_SLAB.select", param2); while(specslabVo.hasNext()) { PosRow specslabROW = specslabVo.next(); Number SlabEdtSeq = (Number)specslabROW.getAttribute("SLAB_EDT_SEQ"); PosParameter param7 = new PosParameter(); param7.setValueParamter(0, "B" ); param7.setValueParamter(1, SlabEdtSeq ); this.getDao("mesdao").update("NIG020610_SPEC_SLAB_D.update", param7); } } SendProg_NIE012070(planChargeNo,BefProg,tappingWgt); SendProg_NIE012080(); } }catch(Exception ex){ logger.logDebug("--------------------->" + ex); logger.logError("--------------------->" + ex); } return PosBizControlConstants.SUCCESS; } public PosContext SendProg_NIE012070(String ChargeNo,String BefProg,Number wgt ) { logger.logDebug("XinSaveBofResult wgt:"+wgt ); // 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",null); message.setObject("BEF_ORD_SEQ",null); message.setObject("ORD_NO",null); message.setObject("ORD_SEQ",null); message.setObject("BEF_PROG_CD","JBB"); message.setObject("PROG_CD","JBF"); message.setObject("MAT_TYPE","CH"); message.setObject("MAT_NO",ChargeNo); message.setObject("WGT", wgt ); message.setObject("PGMID","XinSaveBoFResult"); message.setObject("REG_ID","LEVEL2"); message.setTCID(TcId); context.setMessage(message); // this.processComponent(PosConstants.CREATE_MESSAGE, context); // String transactionCode = context.getMessage().getTC(); 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.logDebug("XinSaveBofResult---> NIE012070 TC SendProgress end" ); return null; } public PosContext SendProg_NIE012080() { logger.logDebug("XinSaveBofResult 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); message.setTCID(TcId); context.setMessage(message); // this.processComponent(PosConstants.CREATE_MESSAGE, context); // String transactionCode = context.getMessage().getTC(); 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); logger.logDebug("XinSaveBofResult---> NIE012080 TC SendProgress end" ); return null; } }