正在显示
9 个修改的文件
包含
501 行增加
和
0 行删除
.gitignore
0 → 100644
1 | +/target/ | ||
2 | +!.mvn/wrapper/maven-wrapper.jar | ||
3 | +/logs/ | ||
4 | +/out/ | ||
5 | +.mvn | ||
6 | +/xmlFromImf/ | ||
7 | +kakoRevice/ | ||
8 | +/errorLogs/ | ||
9 | +### STS ### | ||
10 | +.apt_generated | ||
11 | +.classpath | ||
12 | +.factorypath | ||
13 | +.project | ||
14 | +.settings | ||
15 | +.springBeans | ||
16 | +.sts4-cache | ||
17 | + | ||
18 | +### IntelliJ IDEA ### | ||
19 | +.idea | ||
20 | +*.iws | ||
21 | +*.iml | ||
22 | +*.ipr | ||
23 | + | ||
24 | +### NetBeans ### | ||
25 | +/nbproject/private/ | ||
26 | +/build/ | ||
27 | +/nbbuild/ | ||
28 | +/dist/ | ||
29 | +/nbdist/ | ||
30 | +/.nb-gradle/ |
pom.xml
0 → 100644
1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
2 | +<project xmlns="http://maven.apache.org/POM/4.0.0" | ||
3 | + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
4 | + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||
5 | + <modelVersion>4.0.0</modelVersion> | ||
6 | + | ||
7 | + <groupId>com.tianbo</groupId> | ||
8 | + <artifactId>util</artifactId> | ||
9 | + <version>1.0-SNAPSHOT</version> | ||
10 | + <dependencies> | ||
11 | + <dependency> | ||
12 | + <groupId>commons-io</groupId> | ||
13 | + <artifactId>commons-io</artifactId> | ||
14 | + <version>2.6</version> | ||
15 | + </dependency> | ||
16 | + <dependency> | ||
17 | + <groupId>commons-lang</groupId> | ||
18 | + <artifactId>commons-lang</artifactId> | ||
19 | + <version>2.6</version> | ||
20 | + </dependency> | ||
21 | + <!-- https://mvnrepository.com/artifact/org.dom4j/dom4j --> | ||
22 | + <dependency> | ||
23 | + <groupId>org.dom4j</groupId> | ||
24 | + <artifactId>dom4j</artifactId> | ||
25 | + <version>2.1.0</version> | ||
26 | + </dependency> | ||
27 | + </dependencies> | ||
28 | + | ||
29 | + | ||
30 | +</project> |
1 | +package com.tianbo.util.Date; | ||
2 | + | ||
3 | +import java.text.SimpleDateFormat; | ||
4 | +import java.time.LocalDateTime; | ||
5 | +import java.time.ZoneId; | ||
6 | +import java.time.format.DateTimeFormatter; | ||
7 | +import java.time.format.DateTimeParseException; | ||
8 | +import java.util.Date; | ||
9 | + | ||
10 | +public final class DateUtil { | ||
11 | + private static Date currentDate = new Date(); | ||
12 | + private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); | ||
13 | + private static SimpleDateFormat timesdf = new SimpleDateFormat("yyyyMMddHHmmss"); | ||
14 | + | ||
15 | + public static String getToday(){ | ||
16 | + return sdf.format(currentDate); | ||
17 | + } | ||
18 | + public static String getDDTM(){ | ||
19 | + return timesdf.format(currentDate); | ||
20 | + } | ||
21 | + | ||
22 | + public static Date formatByyyyyMMddHHmmss(String dateStr) throws DateTimeParseException{ | ||
23 | + //毫秒级的去掉 | ||
24 | + if(dateStr.length()>14){ | ||
25 | + dateStr= dateStr.substring(0,14); | ||
26 | + } | ||
27 | + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss"); | ||
28 | + LocalDateTime dateTime = LocalDateTime.parse(dateStr, formatter); | ||
29 | + return convertLDTToDate(dateTime); | ||
30 | + } | ||
31 | + | ||
32 | + //LocalDateTime转换为Date | ||
33 | + public static Date convertLDTToDate(LocalDateTime time) { | ||
34 | + return Date.from(time.atZone(ZoneId.systemDefault()).toInstant()); | ||
35 | + } | ||
36 | + | ||
37 | +} |
src/main/java/com/tianbo/util/Helper.java
0 → 100644
1 | +package com.tianbo.util; | ||
2 | + | ||
3 | + | ||
4 | + | ||
5 | +import java.math.BigDecimal; | ||
6 | +import java.math.BigInteger; | ||
7 | +import java.util.Map; | ||
8 | +import java.util.UUID; | ||
9 | + | ||
10 | +public class Helper { | ||
11 | + | ||
12 | + /** | ||
13 | + * Object转BigDecimal类型-MRZ-2018年5月14日09:56:26 | ||
14 | + * | ||
15 | + * @param value 要转的object类型 | ||
16 | + * @return 转成的BigDecimal类型数据 | ||
17 | + */ | ||
18 | + static public BigDecimal getBigDecimal(Object value) { | ||
19 | + BigDecimal ret = null; | ||
20 | + if (value != null) { | ||
21 | + if (value instanceof BigDecimal) { | ||
22 | + ret = (BigDecimal) value; | ||
23 | + } else if (value instanceof String) { | ||
24 | + ret = new BigDecimal((String) value); | ||
25 | + } else if (value instanceof BigInteger) { | ||
26 | + ret = new BigDecimal((BigInteger) value); | ||
27 | + } else if (value instanceof Number) { | ||
28 | + ret = new BigDecimal(((Number) value).doubleValue()); | ||
29 | + } else { | ||
30 | + throw new ClassCastException("Not possible to coerce [" + value + "] from class " + value.getClass() + " into a BigDecimal."); | ||
31 | + } | ||
32 | + } | ||
33 | + return ret; | ||
34 | + } | ||
35 | + | ||
36 | + | ||
37 | + | ||
38 | + public static String getUUID(){ | ||
39 | + return UUID.randomUUID().toString().replace("-", ""); | ||
40 | + } | ||
41 | +} |
1 | +package com.tianbo.util.IO; | ||
2 | + | ||
3 | +import com.tianbo.util.Date.DateUtil; | ||
4 | +import com.tianbo.util.Helper; | ||
5 | +import org.apache.commons.io.FileUtils; | ||
6 | + | ||
7 | +import java.io.*; | ||
8 | +import java.util.List; | ||
9 | +import java.util.Properties; | ||
10 | + | ||
11 | + | ||
12 | +public final class FileTool { | ||
13 | + private final static String errorRootDirectory = "errorLogs";//错误的根目录名 | ||
14 | + private final static String xmlRootDirectory = "xmlLog"; //记录已收到的报文目录 | ||
15 | + private final static String Cherector = "UTF-8"; | ||
16 | + | ||
17 | + /** | ||
18 | + * 写入文件 | ||
19 | + * @param path 二级目录 | ||
20 | + * @param content 写入内容 | ||
21 | + * @param rightOrwrong 是写入错误记录目录还是记录目录 | ||
22 | + */ | ||
23 | + public static void writeFile(String path,String content,boolean rightOrwrong){ | ||
24 | + StringBuffer stringBuffer = new StringBuffer(); | ||
25 | + | ||
26 | + if (rightOrwrong){ | ||
27 | + stringBuffer.append(xmlRootDirectory).append("/").append(path).append("/").append(DateUtil.getToday()).append("/").append(Helper.getUUID()).append(".log"); | ||
28 | + }else { | ||
29 | + stringBuffer.append(errorRootDirectory).append("/").append(path).append("/").append(DateUtil.getToday()).append("/").append(Helper.getUUID()).append(".log"); | ||
30 | + } | ||
31 | + | ||
32 | + File file = new File(stringBuffer.toString()); | ||
33 | + | ||
34 | + try{ | ||
35 | + FileUtils.writeStringToFile(file,content,Cherector); | ||
36 | + }catch (IOException e){ | ||
37 | + e.printStackTrace(); | ||
38 | + } | ||
39 | + | ||
40 | + } | ||
41 | + public static String readfile(File file) throws IOException{ | ||
42 | + String fileToString = FileUtils.readFileToString(file, "utf-8"); | ||
43 | + return fileToString; | ||
44 | + } | ||
45 | + | ||
46 | + public static List<File> readDirectoryFiles(File dir){ | ||
47 | + List<File> files = (List<File>)FileUtils.listFiles(dir,new String[]{"xml"},false); | ||
48 | + return files; | ||
49 | + } | ||
50 | + public static void writeWaybill(String path,String content,String waybillNo){ | ||
51 | + StringBuffer stringBuffer = new StringBuffer(); | ||
52 | + stringBuffer.append(xmlRootDirectory).append("/").append(path).append("/").append(DateUtil.getToday()).append("/").append(waybillNo).append(".log"); | ||
53 | + File file = new File(stringBuffer.toString()); | ||
54 | + try{ | ||
55 | + FileUtils.writeStringToFile(file,content,Cherector); | ||
56 | + }catch (IOException e){ | ||
57 | + e.printStackTrace(); | ||
58 | + } | ||
59 | + | ||
60 | + } | ||
61 | + | ||
62 | + public static void writeFileToBak(String content){ | ||
63 | + String bakDir = readProperties("bakDirectory"); | ||
64 | + StringBuffer stringBuffer = new StringBuffer(); | ||
65 | + stringBuffer.append(bakDir).append("/").append(Helper.getUUID()).append(".txt"); | ||
66 | + | ||
67 | + File file = new File(stringBuffer.toString()); | ||
68 | + | ||
69 | + try{ | ||
70 | + FileUtils.writeStringToFile(file,content,Cherector); | ||
71 | + }catch (IOException e){ | ||
72 | + e.printStackTrace(); | ||
73 | + } | ||
74 | + | ||
75 | + } | ||
76 | + | ||
77 | + public static String readProperties(String key){ | ||
78 | + Properties properties = new Properties(); | ||
79 | + String value = ""; | ||
80 | + try{ | ||
81 | + BufferedReader bufferedReader = new BufferedReader(new FileReader("config/config.properties")); | ||
82 | + properties.load(bufferedReader); | ||
83 | + //获取key对应的value值 | ||
84 | + value= properties.getProperty(key); | ||
85 | + }catch (Exception e){ | ||
86 | + e.printStackTrace(); | ||
87 | + } | ||
88 | + return value; | ||
89 | + | ||
90 | + } | ||
91 | + | ||
92 | + | ||
93 | +} |
1 | +package com.tianbo.util.IO; | ||
2 | + | ||
3 | +import org.apache.commons.lang.ArrayUtils; | ||
4 | + | ||
5 | +import java.util.Arrays; | ||
6 | +import java.util.stream.Stream; | ||
7 | + | ||
8 | +public abstract class StreamUtil implements Stream{ | ||
9 | + | ||
10 | + public static <T> Stream<T> streamOf(T[] array) { | ||
11 | + return ArrayUtils.isEmpty(array) ? Stream.empty() : Arrays.asList(array).stream(); | ||
12 | + } | ||
13 | +} |
1 | +package com.tianbo.util.XML; | ||
2 | + | ||
3 | +import org.dom4j.Document; | ||
4 | +import org.dom4j.DocumentException; | ||
5 | +import org.dom4j.DocumentHelper; | ||
6 | +import org.dom4j.Element; | ||
7 | +import org.dom4j.io.SAXReader; | ||
8 | +import org.xml.sax.SAXParseException; | ||
9 | + | ||
10 | +import java.io.ByteArrayInputStream; | ||
11 | +import java.io.File; | ||
12 | +import java.io.UnsupportedEncodingException; | ||
13 | + | ||
14 | +public class MakeImfMeta { | ||
15 | + | ||
16 | + public static String makeImfDocument(String SNDR,String RCVR,String TYPE,String STYP,String DDTM,String SEQN,File Content) throws DocumentException,UnsupportedEncodingException,SAXParseException{ | ||
17 | + Document document = DocumentHelper.createDocument(); | ||
18 | + Element root = document.addElement( "MSG" ); | ||
19 | + Element meta = root.addElement("META"); | ||
20 | + meta.addElement("SNDR").addText(SNDR); | ||
21 | + meta.addElement("RCVR").addText(RCVR); | ||
22 | + meta.addElement("SEQN").addText(SEQN); | ||
23 | + meta.addElement("DDTM").addText(DDTM); | ||
24 | + meta.addElement("TYPE").addText(TYPE); | ||
25 | + meta.addElement("STYP").addText(STYP); | ||
26 | + | ||
27 | + SAXReader saxReader = new SAXReader(); | ||
28 | +// saxReader.setEncoding("gb2312"); | ||
29 | + Document doc = saxReader.read(Content); | ||
30 | + Element contentRoot = doc.getRootElement(); | ||
31 | + root.add(contentRoot); | ||
32 | + | ||
33 | + | ||
34 | + return document.asXML(); | ||
35 | + } | ||
36 | +} |
1 | +package com.tianbo.util.XML; | ||
2 | + | ||
3 | +import java.util.ArrayList; | ||
4 | +import java.util.HashMap; | ||
5 | +import java.util.Iterator; | ||
6 | +import java.util.List; | ||
7 | +import java.util.Map; | ||
8 | + | ||
9 | +import org.dom4j.Attribute; | ||
10 | +import org.dom4j.Document; | ||
11 | +import org.dom4j.Element; | ||
12 | + | ||
13 | +public class XML2ENTITY { | ||
14 | + @SuppressWarnings("unchecked") | ||
15 | + /**取KEY的VALUE | ||
16 | + * | ||
17 | + */ | ||
18 | + public Map<String, Object> Dom2Map(Document doc){ | ||
19 | + Map<String, Object> map = new HashMap<String, Object>(); | ||
20 | + if(doc == null){ | ||
21 | + return map; | ||
22 | + } | ||
23 | + Element root = doc.getRootElement(); | ||
24 | + for (Iterator iterator = root.elementIterator(); iterator.hasNext();) { | ||
25 | + Element e = (Element) iterator.next(); | ||
26 | + List list = e.elements(); | ||
27 | + if(list.size() > 0){ | ||
28 | + map.put(e.getName(), Dom2Map(e)); | ||
29 | + }else{ | ||
30 | + map.put(e.getName(), e.getText());} | ||
31 | + } | ||
32 | + return map; | ||
33 | + } | ||
34 | + @SuppressWarnings("unchecked") | ||
35 | + public Map Dom2Map(Element e){ | ||
36 | + Map map = new HashMap(); | ||
37 | + List list = e.elements(); | ||
38 | + if(list.size() > 0){ | ||
39 | + for (int i = 0;i < list.size(); i++) { | ||
40 | + Element iter = (Element) list.get(i); | ||
41 | + List mapList = new ArrayList(); | ||
42 | + | ||
43 | + if(iter.elements().size() > 0){ | ||
44 | + Map m = Dom2Map(iter); | ||
45 | + if(map.get(iter.getName()) != null){ | ||
46 | + Object obj = map.get(iter.getName()); | ||
47 | + if(!obj.getClass().getName().equals("java.util.ArrayList")){ | ||
48 | + mapList = new ArrayList(); | ||
49 | + mapList.add(obj); | ||
50 | + mapList.add(m); | ||
51 | + } | ||
52 | + if(obj.getClass().getName().equals("java.util.ArrayList")){ | ||
53 | + mapList = (List) obj; | ||
54 | + mapList.add(m); | ||
55 | + } | ||
56 | + map.put(iter.getName(), mapList); | ||
57 | + }else{ | ||
58 | + map.put(iter.getName(), m);} | ||
59 | + } | ||
60 | + else{ | ||
61 | + if(map.get(iter.getName()) != null){ | ||
62 | + Object obj = map.get(iter.getName()); | ||
63 | + if(!obj.getClass().getName().equals("java.util.ArrayList")){ | ||
64 | + mapList = new ArrayList(); | ||
65 | + mapList.add(obj); | ||
66 | + mapList.add(iter.getText()); | ||
67 | + } | ||
68 | + if(obj.getClass().getName().equals("java.util.ArrayList")){ | ||
69 | + mapList = (List) obj; | ||
70 | + mapList.add(iter.getText()); | ||
71 | + } | ||
72 | + map.put(iter.getName(), mapList); | ||
73 | + }else{ | ||
74 | + map.put(iter.getName(), iter.getText());} | ||
75 | + } | ||
76 | + } | ||
77 | + }else{ | ||
78 | + map.put(e.getName(), e.getText());} | ||
79 | + return map; | ||
80 | + } | ||
81 | + | ||
82 | + public List<Map> attrOfElement(Element e){ | ||
83 | + List attList = new ArrayList(); | ||
84 | + List<Attribute> listAttr = e.attributes(); | ||
85 | + for(Attribute attr:listAttr){//遍历当前节点的所有属性 | ||
86 | + String name=attr.getName();//属性名称 | ||
87 | + String value=attr.getValue();//属性的值 | ||
88 | + Map<String, Object> attMap = new HashMap<String, Object>(); | ||
89 | + attMap.put(name,value); | ||
90 | + attList.add(attMap); | ||
91 | + } | ||
92 | + return attList; | ||
93 | + } | ||
94 | + @SuppressWarnings("unchecked") | ||
95 | + /**遍历所有节点的属性值 | ||
96 | + * | ||
97 | + */ | ||
98 | + public Map<String, Object> Dom2Map_propety(Document doc){ | ||
99 | + Map<String, Object> map = new HashMap<String, Object>(); | ||
100 | + if(doc == null) { | ||
101 | + return map; | ||
102 | + } | ||
103 | + Element root = doc.getRootElement(); | ||
104 | + for (Iterator iterator = root.elementIterator(); iterator.hasNext();) { | ||
105 | + Element e = (Element) iterator.next(); | ||
106 | + List list = e.elements(); | ||
107 | + if(list.size() > 0){ | ||
108 | + map.put(e.getName(), Dom2Map_propety(e)); | ||
109 | + }else { | ||
110 | + map.put(e.getName(), attrOfElement(e)); | ||
111 | + } | ||
112 | + } | ||
113 | + return map; | ||
114 | + } | ||
115 | + @SuppressWarnings("unchecked") | ||
116 | + public Map Dom2Map_propety(Element e){ | ||
117 | + Map map = new HashMap(); | ||
118 | + List list = e.elements(); | ||
119 | + if(list.size() > 0){ | ||
120 | + for (int i = 0;i < list.size(); i++) { | ||
121 | + Element iter = (Element) list.get(i); | ||
122 | + List mapList = new ArrayList(); | ||
123 | + | ||
124 | + if(iter.elements().size() > 0){ | ||
125 | + Map m = Dom2Map_propety(iter); | ||
126 | + if(map.get(iter.getName()) != null){ | ||
127 | + Object obj = map.get(iter.getName()); | ||
128 | + if(!obj.getClass().getName().equals("java.util.ArrayList")){ | ||
129 | + mapList = new ArrayList(); | ||
130 | + mapList.add(obj); | ||
131 | + mapList.add(m); | ||
132 | + } | ||
133 | + if(obj.getClass().getName().equals("java.util.ArrayList")){ | ||
134 | + mapList = (List) obj; | ||
135 | + mapList.add(m); | ||
136 | + } | ||
137 | + map.put(iter.getName(), mapList); | ||
138 | + }else { | ||
139 | + map.put(iter.getName(), m); | ||
140 | + } | ||
141 | + } | ||
142 | + else{ | ||
143 | + if(map.get(iter.getName()) != null){ | ||
144 | + Object obj = map.get(iter.getName()); | ||
145 | + if(!obj.getClass().getName().equals("java.util.ArrayList")){ | ||
146 | + mapList = new ArrayList(); | ||
147 | + mapList.add(obj); | ||
148 | + mapList.add(iter.getText()); | ||
149 | + } | ||
150 | + if(obj.getClass().getName().equals("java.util.ArrayList")){ | ||
151 | + mapList = (List) obj; | ||
152 | + mapList.add(iter.getText()); | ||
153 | + } | ||
154 | + map.put(iter.getName(), mapList); | ||
155 | + }else{ | ||
156 | + map.put(iter.getName(), attrOfElement(iter)); | ||
157 | + } | ||
158 | + | ||
159 | + | ||
160 | + } | ||
161 | + } | ||
162 | + }else { | ||
163 | + map.put(e.getName(), attrOfElement(e)); | ||
164 | + } | ||
165 | + return map; | ||
166 | + } | ||
167 | + | ||
168 | + /** | ||
169 | + * 判断map是否包含key,包含返回KEY值,不包含返回NULL | ||
170 | + * @param map | ||
171 | + * @param key | ||
172 | + * @return | ||
173 | + */ | ||
174 | + | ||
175 | + public static Object getMap(Map map, String key){ | ||
176 | + if(map!=null && key!=null && !key.isEmpty() && map.containsKey(key)){ | ||
177 | + return map.get(key); | ||
178 | + } else { | ||
179 | + return ""; | ||
180 | + } | ||
181 | + } | ||
182 | + | ||
183 | + | ||
184 | +} | ||
185 | + | ||
186 | + |
1 | +package com.tianbo.util.XML; | ||
2 | + | ||
3 | +import org.dom4j.Attribute; | ||
4 | +import org.dom4j.Document; | ||
5 | +import org.dom4j.Node; | ||
6 | + | ||
7 | +import java.util.Iterator; | ||
8 | +import java.util.List; | ||
9 | +import java.util.Map; | ||
10 | + | ||
11 | +public class XMLXPath { | ||
12 | + | ||
13 | + public static String getSingleValueByPath(Document document,String path){ | ||
14 | + Node node = document.selectSingleNode(path); | ||
15 | + if (node!=null){ | ||
16 | + String nodeValue = node.getStringValue(); | ||
17 | + return nodeValue; | ||
18 | + }else { | ||
19 | + return null; | ||
20 | + } | ||
21 | + | ||
22 | + } | ||
23 | + public static List<Node> getPathValues(Document document,String path){ | ||
24 | + List<Node> nodes= document.selectNodes(path); | ||
25 | + return nodes; | ||
26 | + } | ||
27 | + | ||
28 | + public static void getPathValues2(Document document,String path){ | ||
29 | + List list = document.selectNodes(path); | ||
30 | + for (Iterator it = list.iterator(); it.hasNext();) { | ||
31 | + Attribute attr = (Attribute) it.next(); | ||
32 | + //TODO | ||
33 | + } | ||
34 | + } | ||
35 | +} |
-
请 注册 或 登录 后发表评论