package UIM; import java.io.StringWriter; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; import org.w3c.dom.Element; import UIB.COM.XmlSqlParsersFactory; import UIM.UIM01.BEANS.YardArea; import CoreFS.SA01.CoreIComponent; import CoreFS.SA06.CoreReturnObject; /** * 冷轧中间库库存现况查询 * * @author siy * @date 2010-09-02 */ public class UIM010150 extends CoreIComponent { /** * 查询库存区域信息 * * @param areaType * @return * @throws SQLException */ public CoreReturnObject queryYardArea() throws SQLException { CoreReturnObject cro = new CoreReturnObject(); // 查询区域信息 String sql = XmlSqlParsersFactory.getSql("UIM010150_01.SELECT"); PreparedStatement prepStat = this.getDao("KgDao").getPreparedStatement( sql); ResultSet rs = prepStat.executeQuery(); List list = new ArrayList(); YardArea area = null; while (rs.next()) { area = new YardArea(); area.setAreaName(rs.getString("area_name")); // 查询区域下列信息 sql = XmlSqlParsersFactory.getSql("UIM010150_02.SELECT"); PreparedStatement prepStat2 = this.getDao("KgDao") .getPreparedStatement(sql.toString()); prepStat2.setInt(1, Integer.parseInt( area.getAreaName().split(" ")[0].split("-")[0], 10)); prepStat2.setInt(2, Integer.parseInt( area.getAreaName().split(" ")[0].split("-")[1], 10)); ResultSet rs2 = prepStat2.executeQuery(); List cols = new ArrayList(); while (rs2.next()) { cols.add(rs2.getString("clf_name")); } area.setYardCols(cols.toArray()); rs2.close(); Connection con2 = prepStat2.getConnection(); prepStat2.close(); con2.close(); list.add(area); } rs.close(); Connection con = prepStat.getConnection(); prepStat.close(); con.close(); String xmlStr = areaToXMLString(list); cro.setResult(xmlStr); return cro; } /** * 区域列信息转换成XML字符串 * * @param list * @return */ private String areaToXMLString(List list) { String xmlStr = null; if (null != list && 0 < list.size()) { try { DocumentBuilderFactory dbf = DocumentBuilderFactory .newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.newDocument(); Element root = doc.createElement("areas"); doc.appendChild(root); for (int i = 0; i < list.size(); i++) { YardArea area = list.get(i); Element areaEle = doc.createElement("area"); areaEle.setAttribute("name", area.getAreaName()); root.appendChild(areaEle); Object[] cols = area.getYardCols(); if (null != cols) { for (int j = 0; j < cols.length; j++) { Element colElement = doc.createElement("row"); colElement.setAttribute("name", cols[j].toString()); areaEle.appendChild(colElement); } } } TransformerFactory transFactory = TransformerFactory .newInstance(); Transformer transFormer = transFactory.newTransformer(); transFormer.setOutputProperty(OutputKeys.ENCODING, "GB2312"); DOMSource domSource = new DOMSource(doc); StringWriter sw = new StringWriter(); StreamResult xmlResult = new StreamResult(sw); transFormer.transform(domSource, xmlResult); xmlStr = sw.toString(); } catch (ParserConfigurationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (TransformerException te) { te.printStackTrace(); } } return xmlStr; } /** * 查询每行垛位数及钢卷数 * * @param areaType * @return * @throws SQLException */ public CoreReturnObject queryColCoils(Integer areaType) throws SQLException { CoreReturnObject cro = new CoreReturnObject(); String sql = XmlSqlParsersFactory.getSql("UIM010150_03.SELECT"); cro = this.getDao("KgDao").ExcuteQuery(sql, new Object[] { areaType.intValue() }); return cro; } /** * 查询钢卷总数及综合判定总数 * * @param areaType * @return * @throws SQLException */ public CoreReturnObject queryCoilCount(Integer areaType) throws SQLException { CoreReturnObject cro = new CoreReturnObject(); String sql = XmlSqlParsersFactory.getSql("UIM010150_04.SELECT"); cro = this.getDao("KgDao").ExcuteQuery(sql, new Object[] { areaType.intValue() }); return cro; } public CoreReturnObject queryYardCols(Integer areaType, String coilRow) { CoreReturnObject cro = new CoreReturnObject(); String sql = XmlSqlParsersFactory.getSql("UIM010150_05.SELECT"); cro = this.getDao("KgDao").ExcuteQuery(sql, new Object[] { areaType.intValue(), coilRow }); return cro; } /** * 查询区域下一行的垛位中钢卷信息 * * @param areaType * @param coilCol * @return */ public CoreReturnObject queryYardColCoils(Integer areaType, String coilRow) { CoreReturnObject cro = new CoreReturnObject(); String sql = XmlSqlParsersFactory.getSql("UIM010150_06.SELECT"); cro = this.getDao("KgDao").ExcuteQuery(sql, new Object[] { areaType.intValue(), coilRow }); return cro; } /** * 查询一行中编号最小的列 * * @param areaType * @param areaNo * @param coilCol * @return * @throws SQLException */ public CoreReturnObject queryMinYardCol(Integer areaType, String coilCol) throws SQLException { CoreReturnObject cro = new CoreReturnObject(); String sql = XmlSqlParsersFactory.getSql("UIM010150_07.SELECT"); PreparedStatement pSta = this.getDao("KgDao").getPreparedStatement(sql); pSta.setInt(1, areaType.intValue()); pSta.setString(2, coilCol); ResultSet rs = pSta.executeQuery(); int minRow = 1; if (rs.next()) { minRow = rs.getInt("CLF_COL"); } cro.setResult(minRow); rs.close(); Connection con = pSta.getConnection(); pSta.close(); con.close(); return cro; } }