package xin.glue.nui.G.G02; import java.text.DateFormat; import java.text.NumberFormat; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.math.*; import java.text.*; 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.PosGenericDao; import com.posdata.glue.dao.vo.PosRowSet; import com.posdata.glue.dao.vo.PosRow; import com.posdata.glue.dao.vo.PosParameter; import com.posdata.glue.msg.PosMESMessageImpl; import com.posdata.glue.msg.PosMessage; //import com.sun.org.apache.xpath.internal.operations.Number; /* * 连铸实绩的插入与保存 * @author 王小炎 * @data 2008.12.20 * @desc 切割完成 板坯入库行车命令自动制定 * 堆垛原则:首先按同炉号堆放 其次 按同规格(范围)同牌号 再次随机选择一个空的垛位 */ public class XinDecToPosition extends PosActivity { private String currDate = null; private String R_SLAB_RT = null; private String R_HCR_CLF = null; private Number R_SLAB_WTH = null; private Number R_SLAB_LEN = null; private String R_ORD_NO = null; private String R_PRODNM_CD = null; private String R_NONORD_CAUSE_CD = null; private String YD_SLAB_NO = null; private String YD_STL_GRD = null; private String YD_PRODNM_CD = null; private String YD_ORD_NO = null; private Number YD_SLAB_LEN = null; private Number YD_SLAB_WTH = null; private String YD_YARD_ADDR = null; private String YD_STORELAY = null; public String runActivity(PosContext context) { logger.logInfo("XinDecToPosition runActivity START..."); PosGenericDao dao = this.getDao("mesdao"); PosMessage message = context.getMessage(); DateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss"); currDate = formatter.format(new Date()); String MSG_SLAB_NO = (String) message.get("SLAB_NO" ); String MSG_STL_GRD = (String) message.get("STL_GRD" ); String SLAB_LOC = (String) message.get("SLAB_LOC" ); String sEmpLoc = null; String sEmpClf = null; String sTrue = null; // PosRowSet SlabSpecVo = (PosRowSet) context.get("SlabSpec"); PosParameter param = new PosParameter(); PosRowSet RsltSlabCommVo = (PosRowSet) context.get("RsltSlabComm"); RsltSlabCommVo.reset(); // SlabSpecVo.reset(); logger.logInfo("XinDecToPosition---> RsltSlabCommVo:"+RsltSlabCommVo ); if (RsltSlabCommVo.hasNext() ) { logger.logInfo("XinDecToPosition---> SpecVo HASnext " ); PosRow RsltSlabCommRow = RsltSlabCommVo.next(); R_SLAB_RT = (String)RsltSlabCommRow.getAttribute("SLAB_RT"); R_HCR_CLF = (String)RsltSlabCommRow.getAttribute("HCR_CLF"); R_SLAB_WTH = (Number)RsltSlabCommRow.getAttribute("SLAB_WTH"); R_SLAB_LEN = (Number)RsltSlabCommRow.getAttribute("SLAB_LEN"); R_ORD_NO = (String)RsltSlabCommRow.getAttribute("ORD_NO"); R_PRODNM_CD = (String)RsltSlabCommRow.getAttribute("PRODNM_CD"); R_NONORD_CAUSE_CD = (String)RsltSlabCommRow.getAttribute("NONORD_CAUSE_CD"); logger.logInfo("XinDecToPosition--->R_SLAB_RT:"+R_SLAB_RT ); String Sel_YARD = null; // 中厚板的坯料 余材(nonord_cause_cd is not null) if ((R_SLAB_RT != null && (R_SLAB_RT.equals("P") || R_SLAB_RT.equals("Z"))) || (R_NONORD_CAUSE_CD != null && !R_NONORD_CAUSE_CD.equals("")) || SLAB_LOC.equals("5") ) { Sel_YARD = SMS_YARD(MSG_SLAB_NO,MSG_STL_GRD,R_SLAB_WTH ,R_SLAB_LEN); CreCrComand("A001",Sel_YARD,MSG_SLAB_NO); } else { // 热轧坯料 Sel_YARD = HM_YARD(MSG_SLAB_NO,MSG_STL_GRD,R_SLAB_WTH ,R_SLAB_LEN); CreCrComand("A001",Sel_YARD,MSG_SLAB_NO); } } return PosBizControlConstants.SUCCESS; } // 查询库存地址 public String SMS_YARD(String sSlabNo,String StlGrd ,Number SlabWth,Number SlabLen) { String YardAddr = null; String StoreLay = null; PosParameter param1 = new PosParameter(); param1.setWhereClauseParameter(0, sSlabNo.substring(0,10)); param1.setWhereClauseParameter(1, "L"); PosRowSet SmsYardVo = getDao("mesdao").find("NIG020640_SMS_YARD.select", param1); if (SmsYardVo.hasNext()) { PosRow SmsYardROW = SmsYardVo.next(); YardAddr = (String)SmsYardROW.getAttribute("YARD_ADDR"); } if (YardAddr != null) return YardAddr; PosParameter param2 = new PosParameter(); param2.setWhereClauseParameter(0, SlabWth); param2.setWhereClauseParameter(1, SlabLen); param2.setWhereClauseParameter(2, "L"); param2.setWhereClauseParameter(3, StlGrd); PosRowSet SameGrdVo = getDao("mesdao").find("NIG020640_SAME_GRD.select", param2); if (SameGrdVo.hasNext()) { PosRow SameGrdROW = SameGrdVo.next(); YardAddr = (String)SameGrdROW.getAttribute("YARD_ADDR"); } if (YardAddr != null) return YardAddr; PosParameter param3 = new PosParameter(); param3.setWhereClauseParameter(0, "L"); PosRowSet EmpGrdVo = getDao("mesdao").find("NIG020640_EMPTY_YARD.select",param3 ); if (EmpGrdVo.hasNext()) { PosRow EmpGrdVoROW = EmpGrdVo.next(); YardAddr = (String)EmpGrdVoROW.getAttribute("YARD_ADDR"); } return YardAddr; } public String HM_YARD(String sSlabNo,String StlGrd ,Number SlabWth,Number SlabLen) { String YardAddr = null; String StoreLay = null; PosParameter param1 = new PosParameter(); param1.setWhereClauseParameter(0, sSlabNo.substring(0,10)); param1.setWhereClauseParameter(1, "Z"); PosRowSet SmsYardVo = getDao("mesdao").find("NIG020640_SMS_YARD.select", param1); if (SmsYardVo.hasNext()) { PosRow SmsYardROW = SmsYardVo.next(); YardAddr = (String)SmsYardROW.getAttribute("YARD_ADDR"); } if (YardAddr != null) return YardAddr; PosParameter param2 = new PosParameter(); param2.setWhereClauseParameter(0, SlabWth); param2.setWhereClauseParameter(1, SlabLen); param2.setWhereClauseParameter(2, "Z"); param2.setWhereClauseParameter(3, StlGrd); PosRowSet SameGrdVo = getDao("mesdao").find("NIG020640_SAME_GRD.select", param2); if (SameGrdVo.hasNext()) { PosRow SameGrdROW = SameGrdVo.next(); YardAddr = (String)SameGrdROW.getAttribute("YARD_ADDR"); } if (YardAddr != null) return YardAddr; PosParameter param3 = new PosParameter(); param3.setWhereClauseParameter(0, "Z"); PosRowSet EmpGrdVo = getDao("mesdao").find("NIG020640_EMPTY_YARD.select",param3 ); if (EmpGrdVo.hasNext()) { PosRow EmpGrdVoROW = EmpGrdVo.next(); YardAddr = (String)EmpGrdVoROW.getAttribute("YARD_ADDR"); } return YardAddr; } public void CreCrComand( String FrYardAddr ,String ToYardAddr,String SlabNo ) { logger.logInfo("XinDecToPosition--->CreCrComand: start" ); String nOrdSeq = null; int iSeq = 0; PosParameter param1 = new PosParameter(); param1.setWhereClauseParameter(0, FrYardAddr); param1.setWhereClauseParameter(1, ToYardAddr); param1.setWhereClauseParameter(2, SlabNo); PosRowSet CrCmdVo = getDao("mesdao").find("NIG020640_CR_CMD.select", param1); if (CrCmdVo.hasNext()) { PosRow CrCmdROW = CrCmdVo.next(); Number SeqNo = (Number)CrCmdROW.getAttribute("SEQ_NO"); PosParameter param2 = new PosParameter(); param2.setValueParamter(0, SeqNo ); this.getDao("mesdao").update("NIG020640_CR_CMD.delete", param2); } PosParameter param3 = new PosParameter(); param3.setValueParamter(0, FrYardAddr ); param3.setValueParamter(1, ToYardAddr ); param3.setValueParamter(2, SlabNo ); this.getDao("mesdao").update("NIG020640_CR_CMD.insert", param3); } public void SlabWayUpd(String SlabWay) { String LineArea = SlabWay.substring(1,2); PosParameter param3 = new PosParameter(); param3.setValueParamter(0, LineArea ); getDao("mesdao").update("NIG020610_SLAB_WAY.update",param3); } }