getxml.java
来源:互联网 发布:2016年网络星期一 编辑:程序博客网 时间:2024/06/04 17:43
- package server;
- import java.sql.*;
- import java.util.*;
- import java.io.*;
- import oracle.sql.*;
- import sun.misc.BASE64Decoder;
- import org.apache.log4j.*;
- import com.microsoft.jdbc.sqlserver.*;
- public class GetXmlFile {
- private DomXML DomXML = MainServer.DomXML;
- private EditXML editxml = MainServer.editxml;
- private JdbcWork ZzJw = new JdbcWork();
- private String dwdm = "";
- private String dwmc = "";
- private String tableName = "";
- private String SQLWhere = "";
- private String sjblx = "";
- private String bbh = "2.00";
- private int sjbJls = 100;
- private String encodeFlag = "0";
- private String xmlPath = ".";
- private String updateflag = "Y";
- private String sjbbh = "";
- private String getXmlType = "";
- private String zdexchangeflag = "";
- private String zdItem = "";
- private String undofield = "";
- private String dofield = "";
- private String newsjbbh = "";
- public GetXmlFile(String xmlNo) {
- try {
- DomXML.GetBeginItem("System");
- dwdm = DomXML.GetItemVal("dwdm").trim();
- dwmc = DomXML.GetItemVal("dwmc").trim();
- DomXML.GetBeginItem("GetXmlFile");
- getXmlType = DomXML.GetItemAttribute(xmlNo, "xmltype").trim();
- bbh = DomXML.GetItemAttribute(xmlNo, "bbh").trim();
- sjbJls = Integer.parseInt(DomXML.GetItemAttribute(xmlNo, "jls").trim());
- encodeFlag = DomXML.GetItemAttribute(xmlNo, "encode").trim();
- sjblx = DomXML.GetItemAttribute(xmlNo, "sjblx").trim();
- xmlPath = DomXML.GetItemAttribute(xmlNo, "path").trim();
- undofield = DomXML.GetItemAttribute(xmlNo, "undofield").toUpperCase().trim() + ",";
- dofield = DomXML.GetItemAttribute(xmlNo, "dofield").toUpperCase().trim();
- zdexchangeflag = DomXML.GetItemAttribute(xmlNo, "zdexchange").toLowerCase().trim();
- tableName = DomXML.GetItemAttribute(xmlNo, "tableName").trim();
- SQLWhere = DomXML.GetItemAttribute(xmlNo, "SQLWhere").trim();
- updateflag = DomXML.GetItemAttribute(xmlNo, "updateflag").toLowerCase().trim();
- newsjbbh = DomXML.GetItemAttribute(xmlNo, "newsjbbh").toLowerCase().trim();
- if (zdexchangeflag.equals("y")) {
- new ZdExchange();
- zdItem = ZdExchange.getZdItem().toUpperCase();
- }
- }
- catch (Exception ex) {
- SaveLog.SetInfo("GetXmlFile中初始化失败:" + ex, 2);
- }
- }
-
- public void Start() {
- if (newsjbbh.equals("y")) {
- CreateSjbbh();
- }
- else {
- HaveSjbbh();
- }
- }
-
- private void CreateSjbbh() {
- StringBuffer log = new StringBuffer();
- StringBuffer Sql = new StringBuffer();
- sun.misc.BASE64Encoder base64Encoder = new sun.misc.BASE64Encoder();
- String fssj = "";
- String fileName = "";
- String xmlFile = "";
- String fieldName = "";
- String fieldType = "";
- String fieldVal = "";
- String pc = "";
- String doFieldList = "";
- Vector fileNameList = new Vector();
- String tempStr = "";
- Statement jlStmt = null;
- ResultSet jlRs = null;
- ResultSetMetaData rsMd = null;
- int recSum = 0;
- int sjbSum = 0;
- int sjbMax = 0;
- try {
- if (tableName.length() < 1) {
- return;
- }
- Sql.setLength(0);
- Sql.append("select count(*) a from ").append(tableName)
- .append(" ").append(SQLWhere).append(" ");
-
- recSum = ZzJw.GetCount(Sql.toString());
- if (recSum < 1) {
- return;
- }
- Sql.setLength(0);
- if (updateflag.equals("y")) {
- tempStr = "rowid,";
- }
-
- doFieldList = GetFieldList(dofield, bbh);
- Sql.append("select ").append(tempStr).append(doFieldList).append(" from ").append(tableName)
- .append(" ").append(SQLWhere).append(" ");
-
- jlStmt = ZzJw.GetStatment();
- jlRs = jlStmt.executeQuery(Sql.toString());
- rsMd = jlRs.getMetaData();
- fssj = MyFunction.DataTimeStr("yyyyMMddHHmmss");
-
- pc = dwdm + fssj.substring(0, 8) + GetSxh(GetMaxBH(1));
- sjbMax = GetMaxBH(0);
-
- File bakdir = new File(xmlPath);
- if (!bakdir.exists()) {
- bakdir.mkdirs();
- }
- bakdir = new File(xmlPath);
- if (!bakdir.exists()) {
- bakdir.mkdirs();
- }
- jlRs.next();
- sjbSum = (int) Math.ceil( (double) recSum / sjbJls);
- for (int n = 1; n <= sjbSum; n++) {
-
- if (fssj.substring(0, 8).equals(MyFunction.DataTimeStr("yyyyMMdd"))) {
- sjbMax = sjbMax + 1;
- }
- else {
- sjbMax = 1;
- }
- fssj = MyFunction.DataTimeStr("yyyyMMddHHmmss");
- sjbbh = dwdm + fssj.substring(0, 8) + GetSxh(sjbMax);
- fileName = getXmlType + "_" + sjbbh + ".xml";
- xmlFile = xmlPath + "//" + fileName;
- WriteXml myxml = new WriteXml();
- myxml.WriteFile(xmlFile);
-
- myxml.AddRoot(0, "Package");
- myxml.AddRoot(1, "PackageHead");
- myxml.AddItem(1, "BBH", bbh);
- myxml.AddItem(1, "SJBBH", sjbbh);
- myxml.AddItem(1, "SJBLX", sjblx);
- myxml.AddItem(1, "DWDM", dwdm);
- myxml.AddItem(1, "DWMC", dwmc);
- if ( (recSum - sjbJls * n) > 0) {
- myxml.AddItem(1, "JLS", String.valueOf(sjbJls));
- }
- else {
- myxml.AddItem(1, "JLS", String.valueOf(recSum - sjbJls * (n - 1)));
- }
- myxml.AddItem(1, "FSSJ", fssj);
- myxml.AddRoot(1, "Data");
-
- for (int m = 0; m < sjbJls; m++) {
- myxml.AddRoot(2, "Record");
- for (int j = 1; j <= rsMd.getColumnCount(); j++) {
- fieldName = rsMd.getColumnName(j).toUpperCase();
- fieldType = rsMd.getColumnTypeName(j).toUpperCase();
- if (undofield.indexOf(fieldName + ",") == -1) {
- if (fieldType.equals("BLOB")) {
- try {
- Blob blob = jlRs.getBlob(fieldName);
- fieldVal = base64Encoder.encode(blob.getBytes(1, (int) blob.length()));
- myxml.AddItem(2, MyFunction.fmtStr(fieldName),
- MyFunction.GetNewBase64(fieldVal));
- }
- catch (Exception e) {
- myxml.AddItem(2, MyFunction.fmtStr(fieldName), "");
- }
- }
- else if (fieldType.toUpperCase().equals("DATE")) {
- fieldVal = MyFunction.DataTimeStr(jlRs.getTimestamp(fieldName));
- myxml.AddItem(2, MyFunction.fmtStr(fieldName), fieldVal);
- }
- else {
- if (zdexchangeflag.equals("y") && (zdItem.indexOf(fieldName + ",") > 0)) {
- fieldVal = ZdExchange.getGbZd(fieldName, jlRs.getString(fieldName));
- }
- else {
-
- fieldVal = jlRs.getString(fieldName);
-
- }
- myxml.AddItem(2, MyFunction.fmtStr(fieldName), fieldVal);
- }
- }
- }
-
- if (updateflag.equals("y")) {
- Sql.setLength(0);
- Sql.append("update ").append(tableName).append(" set sjbbh = '" + sjbbh +
- "',").append("pc = '" + pc + "',").append("fssj = '" + fssj + "'")
- .append(" where rowid = '").append(jlRs.getString(1)).append("'");
- ZzJw.PstmtExecSql(Sql.toString());
- }
- if (!jlRs.next()) {
- break;
- }
- }
-
- myxml.toSave(encodeFlag);
- fileNameList.add(fileName);
- log.setLength(0);
- log.append(xmlFile).append("文件生成完毕!");
- SetSxh(sjbbh, 0);
- SaveLog.SetInfo(log.toString(), 0);
- }
-
- ZzJw.PstmtCommit();
-
-
- }
- catch (Exception e) {
- log.setLength(0);
- log.append(xmlFile).append("文件生成异常:").append(e.toString());
- SaveLog.SetInfo(log.toString(), 1);
- }
- finally {
- try {
- if (jlRs != null) {
- jlRs.close();
- }
- if (jlStmt != null) {
- jlStmt.close();
- }
- }
- catch (Exception e) {
- }
- }
- }
-
- private void HaveSjbbh() {
- StringBuffer log = new StringBuffer();
- StringBuffer Sql = new StringBuffer();
- sun.misc.BASE64Encoder base64Encoder = new sun.misc.BASE64Encoder();
- String fssj = "";
- String fileName = "";
- String xmlFile = "";
- String fieldName = "";
- String fieldType = "";
- String fieldVal = "";
- String pc = "";
- String doFieldList = "";
- Vector fileNameList = new Vector();
- String tempStr = "";
- Statement sjbStmt = null;
- ResultSet sjbRs = null;
- Statement jlStmt = null;
- ResultSet jlRs = null;
- ResultSetMetaData rsMd = null;
- int recSum = 0;
- int sjbSum = 0;
- int sjbMax = 0;
- try {
- if (tableName.length() < 1) {
- return;
- }
- Sql.setLength(0);
- Sql.append("select distinct sjbbh from ").append(tableName)
- .append(" ").append(SQLWhere).append(" order by sjbbh");
-
- sjbStmt = ZzJw.GetStatment();
- sjbRs = sjbStmt.executeQuery(Sql.toString());
- fssj = MyFunction.DataTimeStr("yyyyMMdd");
-
- if (updateflag.equals("y")) {
- Sql.setLength(0);
- Sql.append("update ").append(tableName).append(" set fssj = '" + fssj + "' ").append(SQLWhere);
-
- ZzJw.PstmtExecSql(Sql.toString());
- ZzJw.PstmtCommit();
- }
- while (sjbRs.next()) {
- sjbbh = sjbRs.getString("sjbbh");
- Sql.setLength(0);
- if (updateflag.equals("y")) {
- tempStr = "rowid,";
- }
-
- if (SQLWhere.toLowerCase().indexOf("where") < 0) {
- SQLWhere = " where ";
- }
- else {
- SQLWhere = " " + SQLWhere + " and sjbbh = " + sjbbh + " ";
- }
- doFieldList = GetFieldList(dofield, bbh);
- Sql.append("select ").append(tempStr).append(doFieldList).append(" from ").append(tableName)
- .append(" where sjbbh = " + sjbbh + " ");
-
- jlStmt = ZzJw.GetStatment();
- jlRs = jlStmt.executeQuery(Sql.toString());
- rsMd = jlRs.getMetaData();
- Sql.setLength(0);
- sjbJls = ZzJw.GetCount(Sql.append("select count(*) a from ").append(tableName)
- .append(" where sjbbh = " + sjbbh + " ").toString());
-
- File bakdir = new File(xmlPath);
- if (!bakdir.exists()) {
- bakdir.mkdirs();
- }
- bakdir = new File(xmlPath);
- if (!bakdir.exists()) {
- bakdir.mkdirs();
- }
-
- fssj = MyFunction.DataTimeStr("yyyyMMddHHmmss");
- fileName = getXmlType + "_" + sjbbh + ".xml";
- xmlFile = xmlPath + "//" + fileName;
- WriteXml myxml = new WriteXml();
- myxml.WriteFile(xmlFile);
-
- myxml.AddRoot(0, "Package");
- myxml.AddRoot(1, "PackageHead");
- myxml.AddItem(1, "BBH", bbh);
- myxml.AddItem(1, "SJBBH", sjbbh);
- myxml.AddItem(1, "SJBLX", sjblx);
- myxml.AddItem(1, "DWDM", dwdm);
- myxml.AddItem(1, "DWMC", dwmc);
- myxml.AddItem(1, "JLS", String.valueOf(sjbJls));
- myxml.AddItem(1, "FSSJ", fssj);
- myxml.AddRoot(1, "Data");
-
- while (jlRs.next()) {
- myxml.AddRoot(2, "Record");
- for (int j = 1; j <= rsMd.getColumnCount(); j++) {
- fieldName = rsMd.getColumnName(j).toUpperCase();
- fieldType = rsMd.getColumnTypeName(j).toUpperCase();
- if (undofield.indexOf(fieldName + ",") == -1) {
- if (fieldType.equals("BLOB")) {
- try {
- Blob blob = jlRs.getBlob(fieldName);
- fieldVal = base64Encoder.encode(blob.getBytes(1, (int) blob.length()));
- myxml.AddItem(2, MyFunction.fmtStr(fieldName),
- MyFunction.GetNewBase64(fieldVal));
- }
- catch (Exception e) {
- myxml.AddItem(2, MyFunction.fmtStr(fieldName), "");
- }
- }
- else if (fieldType.toUpperCase().equals("DATE")) {
- fieldVal = MyFunction.DataTimeStr(jlRs.getTimestamp(fieldName));
- myxml.AddItem(2, MyFunction.fmtStr(fieldName), fieldVal);
- }
- else {
- if (zdexchangeflag.equals("y") && (zdItem.indexOf(fieldName + ",") > 0)) {
- fieldVal = ZdExchange.getGbZd(fieldName, jlRs.getString(fieldName));
- }
- else {
- fieldVal = jlRs.getString(fieldName);
- }
- myxml.AddItem(2, MyFunction.fmtStr(fieldName), fieldVal);
- }
- }
- }
-
- }
-
- myxml.toSave(encodeFlag);
- fileNameList.add(fileName);
- log.setLength(0);
- log.append(xmlFile).append("文件生成完毕!");
- SetSxh(sjbbh, 0);
- SaveLog.SetInfo(log.toString(), 0);
- jlRs.close();
- jlStmt.close();
-
- }
- sjbRs.close();
- sjbStmt.close();
- }
- catch (Exception e) {
- log.setLength(0);
- log.append(xmlFile).append("文件生成异常:").append(e.toString());
- SaveLog.SetInfo(log.toString(), 1);
- }
- finally {
- try {
- if (jlRs != null) {
- jlRs.close();
- }
- if (jlStmt != null) {
- jlStmt.close();
- }
- if (sjbRs != null) {
- sjbRs.close();
- }
- if (sjbStmt != null) {
- sjbStmt.close();
- }
- }
- catch (Exception e) {
- }
- }
- }
-
- private String GetFieldList(String dofieldstr, String bm) {
- String doFieldList = "";
- Statement jlStmt = null;
- ResultSet jlRs = null;
- if (dofieldstr.trim().equals("") || bm.trim().equals("")) {
- doFieldList = tableName + ".*";
- }
- else if (dofieldstr.toLowerCase().indexOf("select ") < 0) {
- doFieldList = dofieldstr;
- }
- else {
- try {
- jlStmt = ZzJw.GetStatment();
- jlRs = jlStmt.executeQuery(dofieldstr + " where ispk != 1 and tgbm='" + bm + "'");
- while (jlRs.next()) {
- doFieldList = doFieldList + jlRs.getString(1) + ",";
- }
- }
- catch (Exception ex) {
- }
- finally {
- try {
- if (jlRs != null) {
- jlRs.close();
- }
- if (jlStmt != null) {
- jlStmt.close();
- }
- }
- catch (Exception e) {
- }
- }
- doFieldList = doFieldList.substring(0, doFieldList.length() - 1);
- }
- return doFieldList;
- }
-
- private int GetPcXml(String path, String pc, Vector fileNameList) {
- StringBuffer log = new StringBuffer();
- String pcXmlFile = path + "//" + getXmlType.substring(0, 4) + "LIST_"
- + pc + ".xml";
- try {
- DomXML.GetBeginItem("System");
- WriteXml myxml = new WriteXml();
- myxml.WriteFile(pcXmlFile);
-
- myxml.AddRoot(0, "Package");
- myxml.AddRoot(1, "PackageHead");
- myxml.AddItem(1, "BBH", "2.00");
- myxml.AddItem(1, "SJBBH", pc);
- myxml.AddItem(1, "SJBLX", "09");
- myxml.AddItem(1, "DWDM", DomXML.GetItemVal("dwdm").trim());
- myxml.AddItem(1, "DWMC", DomXML.GetItemVal("dwmc").trim());
- myxml.AddItem(1, "JLS", String.valueOf(fileNameList.size()));
- myxml.AddItem(1, "FSSJ", MyFunction.DataTimeStr("yyyyMMddHHmmss"));
- myxml.AddRoot(1, "Data");
- myxml.AddRoot(2, "Record");
- int i;
- for (i = 0; i < fileNameList.size(); i++) {
- myxml.AddItem(2, fileNameList.get(i).toString().trim(), "");
- }
- myxml.toSave("0");
-
-
- log.append(pcXmlFile).append("文件生成完毕!");
- SaveLog.SetInfo(log.toString(), 0);
- return 0;
- }
- catch (Exception ex) {
- log.append(pcXmlFile).append("文件生成失败!");
- SaveLog.SetInfo(log.toString(), 1);
- return 1;
- }
- }
-
- private void SetSxh(String maxbh, int sjb_pc) {
- String setbh = "";
- try {
- setbh = maxbh.substring(maxbh.length() - 13, maxbh.length());
- }
- catch (Exception ex) {
- setbh = MyFunction.DataTimeStr("yyyyMMddHHmmss").substring(0, 8) + "00001";
- }
- try {
- if (sjb_pc == 0) {
- editxml.EditNodeAttr("System", "maxsxh", "maxbh", setbh);
- }
- else {
- editxml.EditNodeAttr("System", "maxsxh", "maxpc", setbh);
- }
- editxml.toSave("1");
- }
- catch (Exception ex) {
- SaveLog.SetInfo("GetXmlFile中SetSxh异常,写入最大包号失败:" + ex, 2);
- }
- }
-
- private int GetMaxBH(int sjb_pc) {
- String fssj = MyFunction.DataTimeStr("yyyyMMddHHmmss").substring(0, 8);
- String sjbbh = "";
- String maxbh = "";
- int maxbh_I = 0;
- try {
- DomXML.GetBeginItem("System");
- if (sjb_pc == 0) {
- sjbbh = DomXML.GetItemAttribute("maxsxh", "maxbh").trim();
- if (sjbbh.substring(0, 8).equals(fssj)) {
- maxbh = sjbbh.substring(8, 13);
- maxbh_I = Integer.parseInt(maxbh);
- }
- else {
- maxbh_I = 0;
- }
- }
- else {
- sjbbh = DomXML.GetItemAttribute("maxsxh", "maxpc").trim();
- if (sjbbh.substring(0, 8).equals(fssj)) {
- maxbh = sjbbh.substring(8, 13);
- maxbh_I = Integer.parseInt(maxbh) + 1;
- }
- else {
- maxbh_I = 1;
- }
- }
- return maxbh_I;
- }
- catch (Exception ex) {
- return 0;
- }
- }
-
- private String GetSxh(int maxbh) {
- String temp = "";
- for (int i = 0; i < (5 - String.valueOf(maxbh).length()); i++) {
- temp = "0" + temp;
- }
- return temp + maxbh;
- }
- public static void main(String[] args) {
- try {
- DomXML configXml = new DomXML("config.xml");
- System.out.println("XML配置文件读取成功!");
- }
- catch (Throwable t) {
- System.out.println("检验XML配置文件读取错误!");
- }
-
-
- GetXmlFile getXmlFile = new GetXmlFile("CSH_JBXX");
- getXmlFile.Start();
- for (int i = 0; i < 10; i++) {
-
- }
- Logger a = Logger.getLogger("dsfsf");
- a.debug("sdfsda");
- a.error("error");
- }
- }