package xin.glue.ui.G.G04; import java.math.BigDecimal; import java.sql.CallableStatement; import java.sql.SQLException; import org.apache.commons.lang.StringUtils; import xin.glue.ui.common.component.PosSiteLog; import com.posdata.glue.PosException; 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 tangliang * @date 2008.11.05 */ public class SavePltBlabNo extends PosActivity { public String runActivity(PosContext context) { // 从页面获取数据供插入和更新使用 // 获得所选择的行数 String[] status = (String[]) context.get("rowStuts"); String[] hcrClf = (String[]) context.get("HCR_CLF"); // 车辆号 String[] PLT_TRS_CAR_NO = (String[]) context.get("PLT_TRS_CAR_NO"); // 移送货单_前半部分_日期 String[] PLT_TRS_INVOICE_NO = (String[]) context .get("PLT_TRS_INVOICE_NO"); // 移送货单_后半部分_编号,移送货单需要把两个数据拼起来做为一个整体插入数据库 String[] PLT_TRS_INVOICE_NO_MANUAL = (String[]) context .get("PLT_TRS_INVOICE_NO_MANUAL"); // 目的地,前台手工录入的 String[] PLT_PLANT_ARRV_LOC = (String[]) context.get("PLT_PLANT_ARRV_LOC"); // 班次 String[] PLT_TRS_WKSHIFT = (String[]) context.get("PLT_TRS_WKSHIFT"); // 组 String[] PLT_TRS_WKGROUP = (String[]) context.get("PLT_TRS_WKGROUP"); // 登录人 String[] PLT_TRS_EMP_ID = (String[]) context.get("PLT_TRS_EMP_ID"); String[] PLT_TRS_EMP_NM = (String[]) context.get("PLT_TRS_EMP_NM"); // 板坯号SLAB_NO String[] SLAB_NO = (String[]) context.get("SLAB_NO"); // 移送时间PLT_TRS_DTIME String[] PLT_TRS_DTIME = (String[]) context.get("PLT_TRS_DTIME"); // 选择项,如果选择响为Y的才让它更新数据库。在前台只要是点击过选择按钮的数据都会发到后台来 String[] CHK = (String[]) context.get("CHK"); // 从前台获取的,移送货单的值,这里的值肯定是存在的取的是选择项的 String[] CUR_LOAD_LOC = (String[]) context.get("CUR_LOAD_LOC"); // 炉次号 String[] CHARGE_NO = (String[]) context.get("CHARGE_NO"); // 外观等级 String[] EXTSHAPE_GRD = (String[]) context.get("EXTSHAPE_GRD"); // 成分等级 String[] SLAB_INGR_DEC_GRD = (String[]) context .get("SLAB_INGR_DEC_GRD"); // 瑕疵代码1 String[] CRK_CD1 = (String[]) context.get("CRK_CD1"); // 瑕疵代码2 String[] CRK_CD2 = (String[]) context.get("CRK_CD2"); // 瑕疵代码3 String[] CRK_CD3 = (String[]) context.get("CRK_CD3"); // 瑕疵代码4 String[] CRK_CD4 = (String[]) context.get("CRK_CD4"); // 合同号码 String[] ORD_NO = (String[]) context.get("L2_SCH_NO"); // 钢码 String[] STL_GRD = (String[]) context.get("STL_GRD"); // 板坯厚度 String[] SLAB_THK = (String[]) context.get("SLAB_THK"); // 板坯宽度 String[] SLAB_WTH = (String[]) context.get("SLAB_WTH"); // 板坯长度 String[] SLAB_LEN = (String[]) context.get("SLAB_LEN"); // 板坯重量 String[] SLAB_WGT = (String[]) context.get("SLAB_WGT"); //称重重量 String[] WEIGHT_WGT = (String[])context.get("WEIGHT_WGT"); String CC_DEVNO = ""; CallableStatement cstm = null; // 该炉次所对应的中厚板厂的板坯号 String[] dsnSlabNo = new String[SLAB_NO.length]; PosParameter param = null; PosRow rnm = null; for (int i = 0; i < SLAB_NO.length; i++) { param = new PosParameter(); param.setWhereClauseParameter(0, SLAB_NO[i]); PosRowSet rowSet = getDao("mesdao").find( "UIG040090_DSN_SLAB_NO.select", param); if (rowSet.hasNext()) { rnm = rowSet.next(); dsnSlabNo[i] = (String) rnm.getAttribute("DSN_SLAB_NO"); } } // 炉次对应的成份信息 BigDecimal C = null; BigDecimal SI = null; BigDecimal MN = null; BigDecimal P = null; BigDecimal S = null; BigDecimal NI = null; BigDecimal CR = null; BigDecimal CU = null; BigDecimal TI = null; BigDecimal V = null; BigDecimal MO = null; BigDecimal B = null; BigDecimal W = null; BigDecimal AL = null; BigDecimal ALS = null; BigDecimal ALT = null; BigDecimal ZN = null; BigDecimal PB = null; BigDecimal SN = null; BigDecimal CA = null; BigDecimal LA = null; BigDecimal SB = null; BigDecimal CE = null; BigDecimal SE = null; BigDecimal MG = null; BigDecimal NB = null; BigDecimal O = null; BigDecimal N = null; BigDecimal H = null; BigDecimal FE = null; BigDecimal AS = null; BigDecimal XTZ = null; BigDecimal CD = null; BigDecimal CS = null; BigDecimal ZR = null; BigDecimal PSR = null; BigDecimal L2AS = null; BigDecimal BI = null; // 这里必须取选中的记录才有意义,所以选择项必须为Y // 这里在后台不好处理,所以放在前台,如果选中的项为空就给予提示不准许提交。还是默认取第一个 // 在插入发送到中厚板的表时需要判断移送货单号是否存在,如果存在的话要给出提示。让插入失败 String sql = "select TRS_INVOICE_NO from tbg04_slab_transf where STAT_CD = '0' AND TRS_INVOICE_NO = ? and SLAB_NO = ? "; // 把现在的货单号为条件放入查询语句中,如果可以查出结果说明货单号存在,如果查不出结果说明可以插入 PosParameter param2 = new PosParameter(); // 如果行数不为空 if (status != null) { // 循环取出每一行的内容 // 更新表TBG02_SLAB_COMM for (int i = 0; i < status.length; i++) { param2 = new PosParameter(); param2.setWhereClauseParameter(0, PLT_TRS_INVOICE_NO[i] + PLT_TRS_INVOICE_NO_MANUAL[i]); param2.setWhereClauseParameter(1, SLAB_NO[i]); PosRowSet rows = getDao("mesdao").findByQueryStatement(sql, param2); if (rows.hasNext()) { context.put("MESSAGES", " 移送货单号已经存在! "); return PosBizControlConstants.SUCCESS; } // 在后台判断,如果选择标识为Y的才可以进行相关的数据库操作 if (CHK[i].equals("Y")) { // 取出需要发送中厚板的成分信息 PosParameter param3 = new PosParameter(); param3.setWhereClauseParameter(0,CHARGE_NO[i]); PosRowSet chemRows = getDao("mesdao").find( "UIG040090_05.select", param3); if(chemRows.hasNext()){ PosRow chemRow = chemRows.next(); CC_DEVNO = (String)chemRow.getAttribute("CC_DEVNO"); } param3 = new PosParameter(); param3.setWhereClauseParameter(0, CHARGE_NO[i]); // 成分数据对象为 chemRows = getDao("mesdao").find( "UIG040090_03.select", param3); PosRow chemRow = null; // 如果炉次不存在成分的情况 if (chemRows.hasNext()) { chemRow = chemRows.next(); // 获取具体的成分信息 C = (BigDecimal) chemRow.getAttribute("C"); MN = (BigDecimal) chemRow.getAttribute("MN"); S = (BigDecimal) chemRow.getAttribute("S"); P = (BigDecimal) chemRow.getAttribute("P"); SI = (BigDecimal) chemRow.getAttribute("SI"); CR = (BigDecimal) chemRow.getAttribute("CR"); NI = (BigDecimal) chemRow.getAttribute("NI"); CU = (BigDecimal) chemRow.getAttribute("CU"); MO = (BigDecimal) chemRow.getAttribute("MO"); V = (BigDecimal) chemRow.getAttribute("V"); TI = (BigDecimal) chemRow.getAttribute("TI"); ALS = (BigDecimal) chemRow.getAttribute("ALS"); ALT = (BigDecimal) chemRow.getAttribute("ALT"); NB = (BigDecimal) chemRow.getAttribute("NB"); AL = (BigDecimal) chemRow.getAttribute("AL"); N = (BigDecimal) chemRow.getAttribute("N"); AS = (BigDecimal) chemRow.getAttribute("AS"); SN = (BigDecimal) chemRow.getAttribute("SN"); CA = (BigDecimal) chemRow.getAttribute("CA"); B = (BigDecimal) chemRow.getAttribute("B"); PB = (BigDecimal) chemRow.getAttribute("PB"); ZN = (BigDecimal) chemRow.getAttribute("ZN"); XTZ = (BigDecimal) chemRow.getAttribute("XTZ"); LA = (BigDecimal) chemRow.getAttribute("LA"); SB = (BigDecimal) chemRow.getAttribute("SB"); SE = (BigDecimal) chemRow.getAttribute("SE"); MG = (BigDecimal) chemRow.getAttribute("MG"); CD = (BigDecimal) chemRow.getAttribute("CD"); O = (BigDecimal) chemRow.getAttribute("O"); H = (BigDecimal) chemRow.getAttribute("H"); FE = (BigDecimal) chemRow.getAttribute("FE"); CS = (BigDecimal) chemRow.getAttribute("CS"); ZR = (BigDecimal) chemRow.getAttribute("ZR"); PSR = (BigDecimal) chemRow.getAttribute("PSR"); W = (BigDecimal) chemRow.getAttribute("W"); L2AS = (BigDecimal) chemRow.getAttribute("L2AS"); BI = (BigDecimal) chemRow.getAttribute("BI"); /*配重自动审核*/ try { cstm = this.getDao("mesdao").getCallableStatement("WEIGHT_CHECK.CAL"); cstm.setString(1, SLAB_NO[i]); cstm.registerOutParameter(2, java.sql.Types.VARCHAR); cstm.execute(); String err = cstm.getString(2); }catch(Exception ex){ ex.printStackTrace(); } finally{ if(cstm != null){ try{ cstm.close(); }catch(Exception e) { e.printStackTrace(); } } } param2 = new PosParameter(); param2.setWhereClauseParameter(0, SLAB_NO[i]); PosRowSet SlabRows = getDao("mesdao").findByQueryStatement("SELECT NVL(WEIGHT_WGT*1000,0) WEIGHT_WGT FROM TBG02_SLAB_COMM T WHERE T.SLAB_NO = ?",param2); if (SlabRows.hasNext()) { PosRow slabRow = SlabRows.next(); WEIGHT_WGT[i] = ((BigDecimal)slabRow.getAttribute("WEIGHT_WGT")).intValue() + ""; } // 同时还需要把记录插入到发送中厚版工厂的表 PosParameter param1 = new PosParameter(); param1.setValueParamter(0, PLT_TRS_INVOICE_NO[i] + PLT_TRS_INVOICE_NO_MANUAL[i]); param1.setValueParamter(1, PLT_TRS_CAR_NO[i]); param1.setValueParamter(2, SLAB_NO[i]); // param1.setValueParamter(3, PLT_TRS_DTIME[i]); param1.setValueParamter(3, PLT_PLANT_ARRV_LOC[i]); param1.setValueParamter(4, CHARGE_NO[i]); param1.setValueParamter(5, ORD_NO[i]); param1.setValueParamter(6, STL_GRD[i]); param1.setValueParamter(7, SLAB_THK[i]); param1.setValueParamter(8, SLAB_WTH[i]); param1.setValueParamter(9, SLAB_LEN[i]); if(StringUtils.isBlank(WEIGHT_WGT[i]) || "0".equals(WEIGHT_WGT[i]) || WEIGHT_WGT[i] == null){ param1.setValueParamter(10, SLAB_WGT[i]); }else{ param1.setValueParamter(10, WEIGHT_WGT[i]); } param1.setValueParamter(11, SLAB_INGR_DEC_GRD[i]); param1.setValueParamter(12, EXTSHAPE_GRD[i]); // 瑕疵代码是把编号和内容一起传过来的,这里分别截取相应的位置 param1.setValueParamter(13, CRK_CD1[i].length() == 0 ? "" : CRK_CD1[i] .substring(0, 2)); param1.setValueParamter(14, CRK_CD1[i].length() == 0 ? "" : CRK_CD1[i] .substring(2, CRK_CD1[i].length())); param1.setValueParamter(15, CRK_CD2[i].length() == 0 ? "" : CRK_CD2[i] .substring(0, 2)); param1.setValueParamter(16, CRK_CD2[i].length() == 0 ? "" : CRK_CD2[i] .substring(2, CRK_CD2[i].length())); param1.setValueParamter(17, CRK_CD3[i].length() == 0 ? "" : CRK_CD3[i] .substring(0, 2)); param1.setValueParamter(18, CRK_CD3[i].length() == 0 ? "" : CRK_CD3[i] .substring(2, CRK_CD3[i].length())); param1.setValueParamter(19, CRK_CD4[i].length() == 0 ? "" : CRK_CD4[i] .substring(0, 2)); param1.setValueParamter(20, CRK_CD4[i].length() == 0 ? "" : CRK_CD4[i] .substring(2, CRK_CD4[i].length())); param1.setValueParamter(21, C); param1.setValueParamter(22, MN); param1.setValueParamter(23, S); param1.setValueParamter(24, P); param1.setValueParamter(25, SI); param1.setValueParamter(26, CR); param1.setValueParamter(27, NI); param1.setValueParamter(28, CU); param1.setValueParamter(29, MO); param1.setValueParamter(30, V); param1.setValueParamter(31, TI); param1.setValueParamter(32, ALS); param1.setValueParamter(33, ALT); param1.setValueParamter(34, NB); param1.setValueParamter(35, AL); param1.setValueParamter(36, N); param1.setValueParamter(37, AS); param1.setValueParamter(38, SN); param1.setValueParamter(39, CA); param1.setValueParamter(40, B); param1.setValueParamter(41, PB); param1.setValueParamter(42, ZN); param1.setValueParamter(43, XTZ); param1.setValueParamter(44, LA); param1.setValueParamter(45, SB); param1.setValueParamter(46, SE); param1.setValueParamter(47, MG); param1.setValueParamter(48, CD); param1.setValueParamter(49, O); param1.setValueParamter(50, H); param1.setValueParamter(51, FE); param1.setValueParamter(52, CS); param1.setValueParamter(53, ZR); param1.setValueParamter(54, PSR); param1.setValueParamter(55, W); param1.setValueParamter(56, hcrClf[i]); param1.setValueParamter(57, dsnSlabNo[i]); param1.setValueParamter(58, L2AS); param1.setValueParamter(59, BI); param1.setValueParamter(60, CC_DEVNO); getDao("mesdao").insert("UIG040090_01.insert", param1); // 打印日志 PosSiteLog.writeLog(context, getDao("mesdao"), "UIG040090_01.insert", param1 .getValueParameters()); // 更新表TBG02_SLAB_COMM,这里不传入板坯瑕疵信息。板坯公共表的瑕疵信息字段可能在别的地方使用。 PosParameter param0 = new PosParameter(); param0.setWhereClauseParameter(0, PLT_TRS_CAR_NO[i]); param0.setWhereClauseParameter(1, PLT_TRS_INVOICE_NO[i] + PLT_TRS_INVOICE_NO_MANUAL[i]); param0.setWhereClauseParameter(2,PLT_PLANT_ARRV_LOC[i]); param0.setWhereClauseParameter(3, PLT_TRS_WKSHIFT[i]); param0.setWhereClauseParameter(4, PLT_TRS_WKGROUP[i]); param0.setWhereClauseParameter(5, PLT_TRS_EMP_ID[i]); param0.setWhereClauseParameter(6, SLAB_NO[i]); // 从维护的公共表查出数据,供更新页面使用 getDao("mesdao").update("UIG040090_02.update", param0); param0 = new PosParameter(); param0.setWhereClauseParameter(0, SLAB_NO[i]); getDao("mesdao").update("UIG040090_SLAB_YARD.update", param0); /* * try { cstm = * getDao("mesdao").getCallableStatement("UIG040090_01.CALL" * ); cstm.setString(1, SLAB_NO[i]); * cstm.registerOutParameter(2, * java.sql.Types.VARBINARY); //cstm.execute(); * }catch(Exception ex) { ex.printStackTrace(); } * finally { if(cstm != null) { try { cstm.close(); } * catch(Exception e) { e.printStackTrace(); } } } * * BigDecimal SlabWgt = new BigDecimal(SLAB_WGT[i]); * * * //SendProg_NIE012070(SLAB_NO[i],"","","","","RGF","RGB" * ,"TM",SlabWgt); //SendProg_NIE012080(); */ // 打印日志 PosSiteLog.writeLog(context, getDao("mesdao"), "UIG040090_01.update", param0 .getValueParameters()); /*财务数据上抛*/ try{ cstm = this.getDao("mesdao").getCallableStatement("UPLOAD_DATA.CAL"); cstm.setString(1, SLAB_NO[i]); cstm.setString(2, "55A"); cstm.setString(3, "N"); cstm.setString(4, "板坯移送中厚板"); cstm.setString(5, StringUtils.isBlank(PLT_TRS_EMP_NM[0])?"3qAdmin00":PLT_TRS_EMP_NM[0]); cstm.registerOutParameter(6, java.sql.Types.VARCHAR); cstm.execute(); String err = cstm.getString(6); if(!org.apache.commons.lang.StringUtils.isBlank(cstm.getString(6))){ context.put("MESSAGES","数据上传失败:" + err); } }catch (Exception e) { // TODO: handle exception }finally{ if (cstm != null){ try{ cstm.close(); } catch (SQLException e){ logger.logWarn(e.getMessage(), e); } } } } else { logger.logDebug("UIG040090,查询tbb02_work_ingr表,炉次没有相应的成分信息!"); String vtemp = " 缺少炉次成份信息 !"; context.put("MESSAGES", vtemp); } } } } return PosBizControlConstants.SUCCESS; } public PosContext SendProg_NIE012070(String MatNo, String sOrdNo, String sOrdSeq, String sBefOrdNo, String sBefOrdSeq, String sProgCd, String BefProcCd, String sKind, BigDecimal nwgt) { PosContext context = new PosContext(); PosMessage message = new PosMESMessageImpl(); String TcId = "NIE012070"; message.setTCID(TcId); message.setObject("MSG_ID", TcId); message.setObject("BEF_ORD_NO", sBefOrdNo); message.setObject("BEF_ORD_SEQ", sBefOrdSeq); message.setObject("ORD_NO", sOrdNo); message.setObject("ORD_SEQ", sOrdSeq); message.setObject("BEF_PROG_CD", BefProcCd); message.setObject("PROG_CD", sProgCd); message.setObject("MAT_TYPE", sKind); message.setObject("MAT_NO", MatNo); message.setObject("WGT", nwgt); message.setObject("PGMID", "UIG040090"); message.setObject("REG_ID", "UIG040090"); message.setTCID(TcId); context.setMessage(message); // this.processComponent(PosConstants.CREATE_MESSAGE, context); // String transactionCode = context.getMessage().getTC(); String SERVICE_POSTFIX = "-service"; context .put(PosBizControlConstants.SERVICE_NAME, TcId + SERVICE_POSTFIX); // context.setMessage(message); PosBizControlIF controller = PosBizProvider.getController(); controller.doSubController(context, false); return null; } public String 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); message.setTCID(TcId); String SERVICE_POSTFIX = "-service"; context .put(PosBizControlConstants.SERVICE_NAME, TcId + SERVICE_POSTFIX); PosBizProvider.getController().doSubController(context, false); String SERVICE_ERR_MSG = (String) context.get("SERVICE_ERR_MSG"); logger.logInfo("PosSaveSlabCutting SendProg_NIE012080 SERVICE_ERR_MSG:" + SERVICE_ERR_MSG); if (SERVICE_ERR_MSG != null) { throw new PosException(SERVICE_ERR_MSG); } return null; } }