zhuguifei
2026-03-10 58402bd5e762361363a0f7d7907153c77dbb819f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
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<String> 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<String> 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<String> getFileName(String path) {
        List<String> list=new ArrayList<String>();
        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();
    }*/
    
    
    
}