package com.shlanbao.tzsc.base.interceptor; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.Reader; import java.io.Writer; import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; import org.dom4j.Document; import org.dom4j.io.SAXReader; public class QualityManagementMESInterface { protected Logger log = Logger.getLogger(this.getClass());//日志 private SAXReader reader=null; private final String xml_error="C:\\RECEIVEENTY\\XML_ERROR\\"; //错误文档保存路径 private final String xml_copy="C:\\RECEIVEENTY\\XML_COPY\\"; //解析完成后,备份路径 private final String factoryCalendar="C:\\RECEIVEENTY\\FactoryCalendar\\"; //工厂日历 private final String selfTest="C:\\RECEIVEENTY\\SelfTest\\"; //自检 private final String sendEntryCancel="C:\\RECEIVEENTY\\SendEntryCancel\\"; //工单撤销 private final String sendEntry="C:\\RECEIVEENTY\\SendEntry\\"; //工单下发 private final String sendMatmas="C:\\RECEIVEENTY\\SendMatmas\\"; //物料主数据 public void cgListType(List filenames,String fileTyname,String typename){ boolean flag=false; if(filenames.size()>0 && filenames!=null){ Document doc=null; String path=""; for(String name:filenames){ try { path=fileTyname+name; //将xml转换document doc= this.parse(path); //异常数据处理 // if(doc==null){ // ParsingXmlDataInterceptor.getInstance().addLog(name,0,null);//写入日志 // removeXML(path,xml_error+name);//备份异常XML // } if("FactoryCalendar".equalsIgnoreCase(typename)){ PMSXmlDataInterceptor.getInstance().alalyMESSendParameterSetToDAS(null,null,doc); } //日志保存 //ParsingXmlDataInterceptor.getInstance().addLog("解析XML:"+path,flag==true?1:0); //备份xml /*if(flag){ removeXML(path,xml_copy+name); }*/ } catch (Exception e) { //异常将xml文件拷贝异常文件夹 //removeXML(path,xml_error+name);//移除 e.printStackTrace(); } } } } /** * 【功能说明】:质量管理数据接口 - mes向dis服务端发送数据,dis客户端将xml数据转发服务器 * 再由本方法读取xml解析保存相关数据 * @author wanchanghuang * @createTime 2015年11月25日14:07:28 */ public void ReadAndWriteXML(){ List filenames=null; try { //工厂日历 filenames=getFileName(factoryCalendar); cgListType(filenames,factoryCalendar,"FactoryCalendar"); } catch (Exception e) { e.printStackTrace(); } } /** * 功能描述:解析过的xml拷贝 * C:\\RECEIVEENTY\\XML_COPY\\ * 并保存解析日志 qmPathName:开始路径 copyPathName:备份路径 * @author wanchanghuang * @createTime 2015年11月27日11:36:32 *//* public void removeXML(String qmPath,String copyPath){ FileInputStream is=null; FileOutputStream out=null; Reader r=null; Writer w=null; try { is=new FileInputStream(qmPath); out=new FileOutputStream(copyPath); r=new InputStreamReader(is, "UTF-8"); w=new OutputStreamWriter(out,"UTF-8"); char[] b = new char[8192]; int len = 0; while ((len = r.read(b, 0, 8192)) != -1) { w.write(b, 0, len); } } catch (Exception e) { e.printStackTrace(); }finally{ try { w.flush(); r.close(); w.close(); is.close(); out.close(); } catch (IOException e) { e.printStackTrace(); } } //解析过后的xml备份完成并删除 File f = new File(qmPath); f.delete(); } *//** * [功能说明]:获取文件夹下所有文件名称 * @author wanchanghuang * @createTime 2015年12月29日09:29:06 */ public List getFileName(String path) { List list=new ArrayList(); File f = new File(path); if (!f.exists()) { System.out.println(path + " not exists"); return null; } File fa[] = f.listFiles(); for (int i = 0; i < fa.length; i++) { File fs = fa[i]; if (!fs.isDirectory()) { list.add(fs.getName()); System.out.println(fs.getName() + " [目录]"); } } return list; } /** * [功能说明]:获取Document * @author shisihai * @param url * createTime 2015年12月13日上午10:22:53 */ private Document parse(String url) throws Exception { Document document=null; FileInputStream is=null; try { is=new FileInputStream(url); if(reader==null){ reader = new SAXReader(); } document = reader.read(is); } catch (Exception e) { e.printStackTrace(); }finally{ is.close(); } document = reader.read(new File(url)); return document; } //测试入口 /*public static void main(String[] args) { new QualityManagementMESInterface().ReadAndWriteXML(); }*/ }