package xin.glue.scheduling; import java.math.BigDecimal; import com.posdata.glue.biz.constants.PosBizControlConstants; import com.posdata.glue.context.PosContext; import com.posdata.glue.dao.vo.PosRow; import com.posdata.glue.dao.vo.PosRowSet; public class XinLabRecvDataL2 extends XinHandleDataL2 { public XinLabRecvDataL2() { } private void setLength(StringBuffer sMsg, int len) { for (int i = sMsg.length(); i < len; i++) sMsg.append(' '); sMsg.setLength(len); } public String runActivity(PosContext ctx) { logger.logDebug("XinLabRecvDataL2 runActivity START..."); String[] CHEM_CD = new String[35]; String[] CHEM_VAL = new String[35]; PosRowSet recvDataVO = getDao().find("RecvDataL2_C_RECV_DATA.Select"); if (recvDataVO.hasNext()) ctx.put("_hasRec_", "true"); while (recvDataVO.hasNext()) { PosRow chemROW = recvDataVO.next(); String PLAN_CHARGE_NO = (String) chemROW .getAttribute("PLAN_CHARGE_NO"); String RT_CD = ((String) chemROW.getAttribute("RT_CD")).substring( 0, 2); String TRAN_DTIME = (String) chemROW.getAttribute("TRAN_DTIME"); BigDecimal EXAMINE_SEQ = (BigDecimal) chemROW .getAttribute("EXAMINE_SEQ"); for (int i = 0; i < 35; i++) { CHEM_CD[i] = (String) chemROW.getAttribute("ELE_CD_" + (i + 1)); CHEM_VAL[i] = (String) chemROW.getAttribute("ELE_" + (i + 1)); } String PROC_CD = null; if (PLAN_CHARGE_NO.substring(0, 1).equals("J") && (RT_CD.equals("LD") || RT_CD.equals("YQ") || RT_CD.equals("LF") || RT_CD.equals("YH") || RT_CD.equals("CP") || RT_CD.equals("RH") || RT_CD.equals("YC") || RT_CD.equals("VD") || RT_CD.equals("FCP"))) { if (RT_CD.equals("LD")) PROC_CD = "JB"; else if (RT_CD.equals("YQ")) PROC_CD = "J1"; else if (RT_CD.equals("YH")) PROC_CD = "J2"; else if (RT_CD.equals("LF")) PROC_CD = "JL"; else if (RT_CD.equals("CP")) PROC_CD = "JJ"; else if (RT_CD.equals("RH")) PROC_CD = "JR"; else if (RT_CD.equals("YC")) PROC_CD = "SL";// 针对板坯 else if (RT_CD.equals("VD")) PROC_CD = "VD"; else if (RT_CD.equals("FCP")) PROC_CD = "JJ"; String TcId = "NIB027080"; StringBuffer sMsg = new StringBuffer(); sMsg.append(TcId); int iLen = 9; sMsg.append(TRAN_DTIME); iLen += 14; setLength(sMsg, iLen); sMsg.append(PLAN_CHARGE_NO).append('A'); iLen += 10; setLength(sMsg, iLen); sMsg.append(PROC_CD); iLen += 2; setLength(sMsg, iLen); sMsg.append(EXAMINE_SEQ); iLen += 2; setLength(sMsg, iLen); for (int j = 0; j < 35; j++) { // BY XB 2010.01.29 if (CHEM_CD[j] == null || CHEM_CD[j].equals("")) { sMsg.append(" "); // 10 个空格 iLen += 10; } else { sMsg.append(CHEM_CD[j]); iLen += 3; setLength(sMsg, iLen); if (CHEM_VAL[j] == null || CHEM_VAL[j].equals("")) { sMsg.append("0 ");// 6 个空格 iLen += 7; } else { sMsg.append(CHEM_VAL[j]); iLen += 7; setLength(sMsg, iLen); } } } String TcData = sMsg.toString(); try { if (!UpdateRec("RecvDataL2_C_RECV_DATA.Update", new Object[] { "C", chemROW.getAttribute("SEQ_NO"), TRAN_DTIME })) continue; TC_SEND(TcData, TcId); logger.logDebug(getMessage(TcData, TcId)); } catch (Exception e) { logger.logError("XinRecvDataL2 Chem Data format error!!!\n" + getMessage(TcData, TcId) + '\n' + e.getMessage()); UpdateRec("RecvDataL2_C_RECV_DATA.Update", new Object[] { "E", chemROW.getAttribute("SEQ_NO"), TRAN_DTIME }); } } else { UpdateRec("RecvDataL2_C_RECV_DATA.Update", new Object[] { "U", chemROW.getAttribute("SEQ_NO"), TRAN_DTIME }); } } return PosBizControlConstants.SUCCESS; } }