package xin.glue.ui.G.G03; 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; /* * 炼钢工序管理修改工序类 * @author 王小炎 * @date 2008.08.11 */ public class PosSaveSmsProg 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); //从页面获取参数数据,供更新数据用 String[] status = (String[]) context.get("rowStuts"); String[] mChargeNo = (String[]) context.get("CHARGE_NO"); String[] mPlanChargeNo = (String[]) context.get("PLAN_CHARGE_NO"); String[] mEventCd = (String[]) context.get("SM_CD"); String[] mTreatDtime = (String[]) context.get("TREAT_DTIME"); String[] mProcCd = (String[]) context.get("PROC_CD"); if(mProcCd == null || mTreatDtime == null){ return PosBizControlConstants.SUCCESS; } //status为空,则前台没有数据传送过来,返回 if (status == null){ context.put("MESSAGES", "请选择工序"); return PosBizControlConstants.SUCCESS; } for (int i = 0; i < status.length; i++) { 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 sCastChargeSeq = null; BigDecimal sCastEdtChargeCnt = null; String sStlGrd = null; BigDecimal sPrevChargeWgt = null; //计划板坯号 if(mPlanChargeNo[i] == null || mPlanChargeNo[i].equals("")){ mPlanChargeNo[i] = "3" + mChargeNo[i].substring(1, 10); } param = new PosParameter(); param.setWhereClauseParameter(0,mPlanChargeNo[i]); PosRowSet L2Send = dao.find("UIG020020_L2_SEND_CHARGE.select", param); if(!L2Send.hasNext()){ context.put("MESSAGES", "指示没有下发2级,不能操作"); return PosBizControlConstants.SUCCESS; } if (chargeStat != null && chargeStat.equals("3")){ context.put("MESSAGES", "炉次已经结束,不能操作"); return PosBizControlConstants.SUCCESS; } param = new PosParameter(); param.setWhereClauseParameter(0, mPlanChargeNo[i]); rowset = dao.find("NIG020200_SPEC_CHARGE.select",param); if(rowset.hasNext()){ row = rowset.next(); sCastChargeSeq = (BigDecimal)row.getAttribute("CAST_CHARGE_SEQ"); //浇次内顺序 sCastEdtChargeCnt = (BigDecimal)row.getAttribute("CAST_EDT_CHARGE_CNT"); //浇次内炉次数 sStlGrd = (String)row.getAttribute("STL_GRD"); //牌号 sPrevChargeWgt = (BigDecimal)row.getAttribute("PREV_CHARGE_WGT"); } if (mEventCd[i].equals("B03")) {sBOF_STA_DTIME = mTreatDtime[i]; } else if (mEventCd[i].equals("B04")) {sBOF_END_DTIME = mTreatDtime[i]; } else if (mEventCd[i].equals("R03")) {sRH_STA_DTIME = mTreatDtime[i]; } else if (mEventCd[i].equals("R04")) {sRH_END_DTIME = mTreatDtime[i]; } else if (mEventCd[i].equals("L02")) {sLF_STA_DTIME = mTreatDtime[i]; } else if (mEventCd[i].equals("L03")) {sLF_END_DTIME = mTreatDtime[i]; } else if (mEventCd[i].equals("C02")) {sCAS_STA_DTIME = mTreatDtime[i]; } else if (mEventCd[i].equals("C03")) {sCAS_END_DTIME = mTreatDtime[i]; } else if (mEventCd[i].equals("J01")) {sLT_ARRV_DTIME = mTreatDtime[i];sCASTING_END_DTIME = mTreatDtime[i]; } else if (mEventCd[i].equals("J02")) {sCASTING_STA_DTIME = mTreatDtime[i];sCASTING_END_DTIME = mTreatDtime[i]; } else if (mEventCd[i].equals("J03")) {sCASTING_END_DTIME = mTreatDtime[i]; } else if (mEventCd[i].equals("J04")) { sCCM_DEP_DTIME = mTreatDtime[i];sCASTING_END_DTIME = mTreatDtime[i]; PosParameter pram = new PosParameter(); pram.setWhereClauseParameter(0, sCCM_DEP_DTIME); pram.setWhereClauseParameter(1,mChargeNo[i]); getDao("mesdao").update("NIG020200_LD_CCM_DEP_DTIME.update", pram); } //中包,结晶器修改 String TdNo = null; String MdNo1 = null; String MdNo2 = null; param = new PosParameter(); if (mProcCd[i].substring(0,1).equals("J")) { String sMC = mProcCd[i].substring(1,2); param.setWhereClauseParameter(0, "2"); param.setWhereClauseParameter(1, "2"); param.setWhereClauseParameter(2, sMC); param.setWhereClauseParameter(3, sMC); rowset = this.getDao("mesdao").find("NIG020200_TD_MD.select", param); if (rowset.hasNext() ) { row = rowset.next(); TdNo = (String)row.getAttribute("TD_NO"); MdNo1 = (String)row.getAttribute("MD_NO1"); MdNo2 = (String)row.getAttribute("MD_NO2"); } } // 回送炉次信息修改 String RtnChNo = null; Number RtnChWgt = null; if (mEventCd[i].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[i]); 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"); } } //检查炉次,板坯记录是否存在 String sql = "select * from tbg02_charge_comm where CHARGE_NO = ?"; param = new PosParameter(); param.setWhereClauseParameter(0, mChargeNo[i]); rowset = this.getDao("mesdao").findByQueryStatement(sql,param); if(!rowset.hasNext()){ xtbcm.CreateCharge(mPlanChargeNo[i]); xtbcm.CreateSlab(mPlanChargeNo[i]); }else{ row = rowset.next(); chargeStat = (String)row.getAttribute("CHARGE_STAT"); tappingWgt = (BigDecimal)row.getAttribute("BOF_TAPPING_WGT"); //转炉出钢量 chargeWgt = (BigDecimal)row.getAttribute("CHARGE_WGT"); //装入量 progCd = (String)row.getAttribute("CUR_PROG_CD"); befProgCd = (String)row.getAttribute("BEF_PROG_CD"); sBOF_STA_DTIME = (sBOF_STA_DTIME != null && !sBOF_STA_DTIME.equals(""))?sBOF_STA_DTIME:(String)row.getAttribute("BOF_STA_DTIME"); sBOF_END_DTIME = (sBOF_END_DTIME != null && !sBOF_END_DTIME.equals(""))?sBOF_END_DTIME:(String)row.getAttribute("BOF_STA_DTIME"); sRH_STA_DTIME = (sRH_STA_DTIME != null && !sRH_STA_DTIME.equals(""))?sRH_STA_DTIME:(String)row.getAttribute("BOF_STA_DTIME"); sRH_END_DTIME = (sRH_END_DTIME != null && !sRH_END_DTIME.equals(""))?sRH_END_DTIME:(String)row.getAttribute("BOF_STA_DTIME"); sLF_STA_DTIME = (sLF_STA_DTIME != null && !sLF_STA_DTIME.equals(""))?sLF_STA_DTIME:(String)row.getAttribute("BOF_STA_DTIME"); sLF_END_DTIME = (sLF_END_DTIME != null && !sLF_END_DTIME.equals(""))?sLF_END_DTIME:(String)row.getAttribute("BOF_STA_DTIME"); sCAS_STA_DTIME = (sCAS_STA_DTIME != null && !sCAS_STA_DTIME.equals(""))?sCAS_STA_DTIME:(String)row.getAttribute("BOF_STA_DTIME"); sCAS_END_DTIME = (sCAS_END_DTIME != null && !sCAS_END_DTIME.equals(""))?sCAS_END_DTIME:(String)row.getAttribute("BOF_STA_DTIME"); sLT_ARRV_DTIME = (sLT_ARRV_DTIME != null && !sLT_ARRV_DTIME.equals(""))?sLT_ARRV_DTIME:(String)row.getAttribute("BOF_STA_DTIME"); sCASTING_STA_DTIME = (sCASTING_STA_DTIME != null && !sCASTING_STA_DTIME.equals(""))?sCASTING_STA_DTIME:(String)row.getAttribute("BOF_STA_DTIME"); sCASTING_END_DTIME = (sCASTING_END_DTIME != null && !sCASTING_END_DTIME.equals(""))?sCASTING_END_DTIME:(String)row.getAttribute("BOF_STA_DTIME"); } //steel making progress table and Steel making tracking table update xtbgcom.steelEventUpt(mChargeNo[i], mProcCd[i], mEventCd[i], new BigDecimal(0), chargeWgt, mTreatDtime[i], "2", sStlGrd, sCastEdtChargeCnt, sCastChargeSeq); //炉次事件实绩修改 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[i]); this.getDao("mesdao").update("UIG030010_TREAT_DTIME_UPT_01", param); //炉次信息修改 String PgmId = null; if(mEventCd[i].equals("J02")) { PgmId = "XinCcmStart"; } else { PgmId = "ManSaveChargeProc"; } if(mEventCd[i].substring(0,1).equals("B")||mEventCd[i].substring(0,1).equals("J")){ if (mEventCd[i].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[i], "B", progCd); xtbgcom.specSlabProcUpt(mPlanChargeNo[i], "B"); xtbgcom.chargeProcUpt(mChargeNo[i], "2", progCd, PgmId); //进程调用 SendProg_NIE012070( mPlanChargeNo[i],befProgCd,progCd,sPrevChargeWgt,PgmId); SendProg_NIE012080(); } context.put("MESSAGES", "操作成功!"); 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; } }