package xin.glue.nui.G.G02; import java.math.BigDecimal; import xin.glue.ui.G.G01.XTBGCOMM; import xin.glue.ui.G.G01.XTBGCreateMaterial; 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 XinSaveChargeProc extends PosActivity { public String runActivity(PosContext context) { PosGenericDao dao = getDao("mesdao"); PosParameter param; PosRowSet rowset; PosRow row; XTBGCOMM xtbgcom = new XTBGCOMM(dao); XTBGCreateMaterial xtbcm = new XTBGCreateMaterial(dao); PosMessage message = context.getMessage(); String mChargeNo = (String)message.get("CHARGE_NO"); // 炉次号 String mPlanChargeNo = (String)message.get("PLAN_CHARGE_NO"); // 计划炉次号 String mProcCd = (String)message.get("TREAT_NO"); // 处理站号 String mEventCd = (String)message.get("EVENT_CD"); // 工序号 String mTreatDtime = (String)message.get("EVENT_DTIME"); // 钢水重量 BigDecimal mEventQty = (BigDecimal)message.get("EVENT_WGT"); // 钢水重量 BigDecimal mTreatTemp = (BigDecimal)message.get("EVENT_TEMP"); // 处理温度 BigDecimal sCastChargeSeq = null; //浇次内顺序 BigDecimal sCastEdtChargeCnt = null; //板坯去向 BigDecimal sPrevChargeWgt = null; //炉次重量 String sStlGrd = null; String sBOF_STA_DTIME = null; String sBOF_END_DTIME = null; String sRH_STA_DTIME = null; String sRH_END_DTIME = null; String sLF_STA_DTIME = null; String sLF_END_DTIME = null; String sCAS_STA_DTIME = null; String sCAS_END_DTIME = null; String sLT_ARRV_DTIME = null; String sCASTING_STA_DTIME = null; String sCASTING_END_DTIME = null; String sCCM_DEP_DTIME = null; BigDecimal chargeWgt = null; //炉次重量 BigDecimal tappingWgt = null; //转炉出钢重量 String befProgCd = null; //前进程 String progCd = null; //当前进程 String chargeStat = null; BigDecimal ROW_BOF_TAPPING_WGT = null; BigDecimal ROW_CHARGE_WGT = null; if (mEventCd.equals("B01")) { if(sBOF_STA_DTIME == null ||sBOF_STA_DTIME.equals("")){ sBOF_STA_DTIME = mTreatDtime; } } else if (mEventCd.equals("B02")) { if(sBOF_STA_DTIME == null ||sBOF_STA_DTIME.equals("")){ sBOF_STA_DTIME = mTreatDtime; } } else if (mEventCd.equals("B03")) { if(sBOF_STA_DTIME == null ||sBOF_STA_DTIME.equals("")){ sBOF_STA_DTIME = mTreatDtime; } } else if (mEventCd.equals("B04")) { sBOF_END_DTIME = mTreatDtime; if(sBOF_STA_DTIME == null ||sBOF_STA_DTIME.equals("")){ sBOF_STA_DTIME = mTreatDtime; } } else if (mEventCd.equals("R03")) {sRH_STA_DTIME = mTreatDtime; } else if (mEventCd.equals("R04")) {sRH_END_DTIME = mTreatDtime; } else if (mEventCd.equals("L02")) {sLF_STA_DTIME = mTreatDtime; } else if (mEventCd.equals("L03")) {sLF_END_DTIME = mTreatDtime; } else if (mEventCd.equals("C02")) {sCAS_STA_DTIME = mTreatDtime; } else if (mEventCd.equals("C03")) {sCAS_END_DTIME = mTreatDtime; } else if (mEventCd.equals("J01")) {sLT_ARRV_DTIME = mTreatDtime;sCASTING_END_DTIME = mTreatDtime; } else if (mEventCd.equals("J02")) {sCASTING_STA_DTIME = mTreatDtime;sCASTING_END_DTIME = mTreatDtime; } else if (mEventCd.equals("J03")) {sCASTING_END_DTIME = mTreatDtime; } else if (mEventCd.equals("J04")) { sCCM_DEP_DTIME = mTreatDtime;sCASTING_END_DTIME = mTreatDtime; PosParameter pram = new PosParameter(); pram.setWhereClauseParameter(0, sCCM_DEP_DTIME); pram.setWhereClauseParameter(1,mChargeNo); getDao("mesdao").update("NIG020200_LD_CCM_DEP_DTIME.update", pram); } //通过电文中接收的炉次号查询炉次参数表 TBF01_SPEC_CHARGE 取得的数据项 ,修改炼钢公共表 TBF02_CHARGE_COMM rowset = context.getRowSet("specCharge"); if(rowset.hasNext()){ row = rowset.next(); sCastChargeSeq = (BigDecimal)row.getAttribute("CAST_CHARGE_SEQ"); //浇次内顺序 sCastEdtChargeCnt = (BigDecimal)row.getAttribute("CAST_EDT_CHARGE_CNT"); //浇次内炉次数 sPrevChargeWgt = (BigDecimal)row.getAttribute("PREV_CHARGE_WGT"); sStlGrd = (String)row.getAttribute("STL_GRD"); } String sql = "select * from tbg02_charge_comm where CHARGE_NO = ?"; param = new PosParameter(); param.setWhereClauseParameter(0, mChargeNo); rowset = this.getDao("mesdao").findByQueryStatement(sql,param); if(!rowset.hasNext()){ xtbcm.CreateCharge("3"+mChargeNo.substring(1, 10)); xtbcm.CreateSlab("3"+mChargeNo.substring(1, 10)); }else{ row = rowset.next(); ROW_BOF_TAPPING_WGT = (BigDecimal)row.getAttribute("BOF_TAPPING_WGT"); ROW_CHARGE_WGT = (BigDecimal)row.getAttribute("CHARGE_WGT"); chargeStat = (String)row.getAttribute("CHARGE_STAT"); if (chargeWgt == null) {chargeWgt = ROW_CHARGE_WGT;} if (tappingWgt == null) {tappingWgt = ROW_BOF_TAPPING_WGT;} if(chargeStat.equals("3")){ return PosBizControlConstants.SUCCESS; } } if (mEventQty != null ) {chargeWgt = mEventQty;} if (mEventCd.equals("B04")) {tappingWgt = mEventQty;} param = new PosParameter(); param.setWhereClauseParameter(0,"3" + mChargeNo.substring(1,10)); PosRowSet L2Send = dao.find("UIG020020_L2_SEND_CHARGE.select", param); if(!L2Send.hasNext()){ context.put("MESSAGES", "指示没有下发2级,不能操作"); return PosBizControlConstants.SUCCESS; } //if( mEventCd.equals("J01") || mEventCd.equals("J02") || mEventCd.equals("J03") || mEventCd.equals("J04"))return PosBizControlConstants.SUCCESS; int chLth = mChargeNo.trim().length(); if (chLth < 10 ) { return PosBizControlConstants.SUCCESS; } //steel making progress table and Steel making tracking table update xtbgcom.steelEventUpt(mChargeNo, mProcCd, mEventCd, mTreatTemp, chargeWgt, mTreatDtime, "2", sStlGrd, sCastEdtChargeCnt, sCastChargeSeq); //td md update String TdNo = null; String MdNo1 = null; String MdNo2 = null; if (mProcCd.substring(0,1).equals("J")) { param = new PosParameter(); String sMC = mProcCd.substring(1,2); param.setWhereClauseParameter(0, "2"); param.setWhereClauseParameter(1, "2"); param.setWhereClauseParameter(2, sMC); param.setWhereClauseParameter(3, sMC); PosRowSet TdMdVo = this.getDao("mesdao").find("NIG020200_TD_MD.select", param); if (TdMdVo.hasNext() ) { PosRow TdMdROW = TdMdVo.next(); TdNo = (String)TdMdROW.getAttribute("TD_NO"); MdNo1 = (String)TdMdROW.getAttribute("MD_NO1"); MdNo2 = (String)TdMdROW.getAttribute("MD_NO2"); } } //Return Charge Search for setting return charge and return weight to the new charge no String RtnChNo = null; Number RtnChWgt = null; if (mEventCd.substring(0,1).equals("B")) { PosParameter paramB = new PosParameter(); String sql1 = "select CHARGE_NO,RTN_CHARGE_WGT from tbg02_charge_comm where NEW_PLAN_CHARGE_NO = ?"; paramB.setWhereClauseParameter(0, mPlanChargeNo); PosRowSet rtnChVO = this.getDao("mesdao").findByQueryStatement(sql1,paramB); if(rtnChVO.hasNext()) { PosRow rtnChROW = rtnChVO.next(); RtnChNo = (String)rtnChROW.getAttribute("CHARGE_NO"); RtnChWgt = (Number)rtnChROW.getAttribute("RTN_CHARGE_WGT"); } } //炉次事件实绩修改 param = new PosParameter(); param.setWhereClauseParameter(0,TdNo); //中包号 param.setWhereClauseParameter(1,MdNo1); //结晶器1 param.setWhereClauseParameter(2,MdNo2); //结晶器2 param.setWhereClauseParameter(3,sBOF_STA_DTIME); param.setWhereClauseParameter(4,sBOF_END_DTIME); param.setWhereClauseParameter(5,sRH_STA_DTIME); param.setWhereClauseParameter(6,sRH_END_DTIME); param.setWhereClauseParameter(7,sCAS_STA_DTIME); param.setWhereClauseParameter(8,sCAS_END_DTIME); param.setWhereClauseParameter(9,sLF_STA_DTIME); param.setWhereClauseParameter(10,sLF_END_DTIME); param.setWhereClauseParameter(11,sLT_ARRV_DTIME); param.setWhereClauseParameter(12,sCASTING_STA_DTIME); param.setWhereClauseParameter(13,sCASTING_END_DTIME); param.setWhereClauseParameter(14,RtnChNo); //回送炉号 param.setWhereClauseParameter(15,RtnChWgt); //回送重量 param.setWhereClauseParameter(16,chargeWgt); //装入量 param.setWhereClauseParameter(17,tappingWgt); //转炉出钢重量 param.setWhereClauseParameter(18,mChargeNo); this.getDao("mesdao").update("UIG030010_TREAT_DTIME_UPT_01", param); //炉次信息修改 String PgmId = null; if(mEventCd.equals("J02")){ PgmId = "XinCcmStart"; }else{ PgmId = mEventCd+"|SaveChrgProc"; } if (mEventCd.substring(0,1).equals("L")){ progCd = "JLF"; }else if (mEventCd.substring(0,1).equals("R")){ progCd = "JRF"; }else if (mEventCd.substring(0,1).equals("V")){ progCd = "JVF"; }else if (mEventCd.substring(0,1).equals("C")){ progCd = "JCF"; } if(mEventCd.substring(0,1).equals("B")||mEventCd.substring(0,1).equals("J")){ if (mEventCd.substring(0,1).equals("B")){ if (progCd == null || progCd.equals("") || progCd.equals("JBB")){ progCd = "JBB"; befProgCd = "JBA"; } }else{ if (progCd == null || progCd.equals("")){ progCd = "JJB"; } } } //计划信息修改 xtbgcom.specChargeProcUpt(mPlanChargeNo, "B", progCd); xtbgcom.specSlabProcUpt(mPlanChargeNo, "B"); xtbgcom.chargeProcUpt(mChargeNo, "2", progCd, PgmId); //MODIFY BY WXY 20111121 //SendProg_NIE012070( mPlanChargeNo,befProgCd,progCd,sPrevChargeWgt,PgmId); //SendProg_NIE012080(); return PosBizControlConstants.SUCCESS; } public PosContext SendProg_NIE012070(String ChargeNo ,String befProgCd,String ProgCD,Number prevChargeWgt,String PgmId) { logger.logDebug("XinSaveChargeProc 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",null); message.setObject("ORD_SEQ",null); message.setObject("BEF_PROG_CD",befProgCd); message.setObject("PROG_CD",ProgCD); message.setObject("MAT_TYPE","CH"); message.setObject("MAT_NO",ChargeNo); message.setObject("WGT",prevChargeWgt); message.setObject("PGMID",PgmId); message.setObject("REG_ID","LEVEL2"); context.setMessage(message); this.processComponent(PosConstants.CREATE_MESSAGE, context); String transactionCode = context.getMessage().getTC(); logger.logDebug("XinSaveChargeProc---> 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.logDebug("XinSaveChargeProc---> NIE012070 TC SendProgress end" ); return null; } public PosContext SendProg_NIE012080() { logger.logDebug("XinSaveChargeProc 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(); logger.logDebug("XinSaveChargeProc---> transactionCode:("+transactionCode+")" ); 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); String SERVICE_ERR_MSG = (String) context.get("SERVICE_ERR_MSG"); logger.logDebug("XinSaveChargeProc SERVICE_ERR_MSG:"+SERVICE_ERR_MSG ); return null; } }