|
|
@@ -5,12 +5,9 @@ import java.io.FileInputStream;
|
|
|
import java.io.FileNotFoundException;
|
|
|
import java.io.IOException;
|
|
|
import java.io.InputStream;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Properties;
|
|
|
-import java.util.Scanner;
|
|
|
+import java.sql.Connection;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.*;
|
|
|
|
|
|
import org.apache.log4j.Logger;
|
|
|
import org.apache.log4j.PropertyConfigurator;
|
|
|
@@ -20,6 +17,10 @@ import org.dom4j.io.SAXReader;
|
|
|
|
|
|
|
|
|
public class BaseUtil {
|
|
|
+
|
|
|
+ public final static String REG_D = "\\d{4}-\\d{2}-\\d{2}";
|
|
|
+ public final static String REG_DT = "\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}";
|
|
|
+ public final static String REG_TS = "\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}.\\d{1}";
|
|
|
public static Logger logger;
|
|
|
|
|
|
/**
|
|
|
@@ -40,22 +41,17 @@ public class BaseUtil {
|
|
|
}
|
|
|
return logger;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* 解析xml文件,生成数据
|
|
|
* @param file xml文件
|
|
|
* @return
|
|
|
*/
|
|
|
@SuppressWarnings("unchecked")
|
|
|
- public static Map<String,Object> getDataAndSqlByXml(File file){
|
|
|
- Map<String,Object> map = new HashMap<String,Object>();
|
|
|
- String json = "";
|
|
|
- String sql = "";
|
|
|
- String condition = "";
|
|
|
- String code = "";
|
|
|
+ public static boolean getDataAndSqlByXml(Connection con , File file){
|
|
|
+ boolean bool = false;
|
|
|
+ List<String> sqls = new ArrayList<String>();
|
|
|
InputStream in = null;
|
|
|
- String hkSob =null;
|
|
|
-
|
|
|
try {
|
|
|
in = new FileInputStream(file);
|
|
|
} catch (FileNotFoundException e1) {
|
|
|
@@ -68,63 +64,121 @@ public class BaseUtil {
|
|
|
in.close();
|
|
|
} catch (Exception e1) {
|
|
|
e1.printStackTrace();
|
|
|
- }
|
|
|
+ }
|
|
|
Element root = doc.getRootElement();
|
|
|
-
|
|
|
List<Element> e = root.elements();
|
|
|
- for(Element el:e){
|
|
|
- String name = el.getName();
|
|
|
- if(name=="DocumentNumber"){
|
|
|
- json += ",\"FILENAME:\":\"" + el.getData() + "\"";
|
|
|
- }else if(name=="DocumentANSDateTime"){
|
|
|
- json += ",\"RESPONSEDATE:\":\"" + el.getData() + "\"";
|
|
|
- sql += "PI_LOGISTICSDATE=to_date('" + el.getData() + "','yyyymmddHH24:mi'),";
|
|
|
- }else if(name=="Status"){
|
|
|
- json += ",\"PI_LOGISTICSSTATUS:\":\"" + el.getData() + "\"";
|
|
|
- sql += "PI_LOGISTICSSTATUS='" + el.getData() + "',";
|
|
|
- }else if(name=="TrackingNo"){
|
|
|
- json += ",\"PI_LISTCODE:\":\"" + el.getData() + "\"";
|
|
|
- sql += "PI_LISTCODE='" + el.getData() + "',";
|
|
|
- }else if(name=="FreightCost"){
|
|
|
- json += ",\"PI_FREIGHT:\":\"" + el.getData() + "\"";
|
|
|
- sql += "PI_FREIGHT='" + el.getData() + "',";
|
|
|
- }else if(name=="RefNo"){
|
|
|
- code = el.getData().toString();
|
|
|
- if(code.trim().toUpperCase().startsWith("HK")){
|
|
|
- hkSob = "YHND_HK.";
|
|
|
- }else if (code.trim().toUpperCase().startsWith("YT")){
|
|
|
- hkSob = "YITOA_ZX.";
|
|
|
- }else {
|
|
|
- hkSob = "YHND_SZ.";
|
|
|
- }
|
|
|
- json += ",\"PI_INOUTNO:\":\"" + code + "\"";
|
|
|
- condition = "PI_INOUTNO='"+code+"'";
|
|
|
- }else if (name == "ExType"){
|
|
|
- json += ",\"PI_TRANSPORT:\":\"" + el.getData() + "\"";
|
|
|
- sql += "PI_TRANSPORT='" + el.getData() + "',";
|
|
|
- }else if(name == "ExNumber"){
|
|
|
- json += ",\"PI_LOGISTICSCODE:\":\"" + el.getData() + "\"";
|
|
|
- sql += "PI_LOGISTICSCODE='" + el.getData() + "',";
|
|
|
- }else if(name == "ExTime"){
|
|
|
- json += ",\"PI_GOODSDATE:\":\"" + el.getData() + "\"";
|
|
|
- sql += "PI_GOODSDATE=to_date('" + el.getData() + "','yyyymmddHH24:mi'),";
|
|
|
- }
|
|
|
- }
|
|
|
- if(!"".equals(json)){
|
|
|
- json = "{" + json.substring(1) + "}";
|
|
|
- }
|
|
|
- if(!"".equals(sql)&&hkSob != null){
|
|
|
- sql = "update " + hkSob + "prodinout set " + sql.substring(0, sql.lastIndexOf(",")) + " where " + condition;
|
|
|
- }
|
|
|
- map.put("json", json);
|
|
|
- map.put("sql", sql);
|
|
|
- map.put("code",code);
|
|
|
- map.put("hk",hkSob);
|
|
|
- return map;
|
|
|
+ List<Map<String, Object>> maps = new ArrayList<>();
|
|
|
+ Object DocumentANSDateTime =null;
|
|
|
+ Object DocumentNumber = null;
|
|
|
+ for(Element el:e){
|
|
|
+ String name = el.getName();
|
|
|
+ if(name=="Header"){
|
|
|
+ List<Element> elements = el.elements();
|
|
|
+ for (Element ee:elements) {
|
|
|
+ String name1 = ee.getName();
|
|
|
+ if(name1=="DocumentNumber"){
|
|
|
+ DocumentNumber=ee.getData();
|
|
|
+ }else if(name1=="DocumentANSDateTime"){
|
|
|
+ DocumentANSDateTime=ee.getData();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else if(name=="Detail"){
|
|
|
+ List<Element> elements = el.elements();
|
|
|
+ for (Element ee:elements) {
|
|
|
+ List<Element> elements1 = ee.elements();
|
|
|
+ String name1 = ee.getName();
|
|
|
+ if (name1=="Item") {
|
|
|
+ Map<String, Object> detailMap = new HashMap<>();
|
|
|
+ for (Element eel : elements1) {
|
|
|
+ String name2 = eel.getName();
|
|
|
+ if (name2 == "LineNo") {
|
|
|
+ detailMap.put("WDX_LineNo",eel.getData());
|
|
|
+ } else if (name2 == "WhouseType") {
|
|
|
+ detailMap.put("WDX_WhouseType",eel.getData());
|
|
|
+ } else if (name2 == "PrProdCode") {
|
|
|
+ detailMap.put("WDX_PrProdCode",eel.getData());
|
|
|
+ } else if (name2 == "PrDetail") {
|
|
|
+ detailMap.put("WDX_PrDetail",eel.getData());
|
|
|
+ } else if (name2 == "StcockDate") {
|
|
|
+ detailMap.put("WDX_StcockDate",eel.getData());
|
|
|
+ } else if (name2 == "StcockQty") {
|
|
|
+ detailMap.put("WDX_StcockQty",eel.getData());
|
|
|
+ } else if (name2 == "DC") {
|
|
|
+ detailMap.put("WDX_DC",eel.getData());
|
|
|
+ } else if (name2 == "ProductionDate") {
|
|
|
+ detailMap.put("WDX_ProductionDate",eel.getData());
|
|
|
+ } else if (name2 == "ProductionWeek") {
|
|
|
+ detailMap.put("WDX_ProductionWeek",eel.getData());
|
|
|
+ } else if (name2 == "LotNo") {
|
|
|
+ detailMap.put("WDX_LotNo",eel.getData());
|
|
|
+ } else if (name2 == "Brand") {
|
|
|
+ detailMap.put("WDX_Brand",eel.getData());
|
|
|
+ } else if (name2 == "Vender") {
|
|
|
+ detailMap.put("WDX_Vender",eel.getData());
|
|
|
+ } else if (name2 == "Origin") {
|
|
|
+ detailMap.put("WDX_Origin",eel.getData());
|
|
|
+ } else if (name2 == "WhouseName") {
|
|
|
+ detailMap.put("WDX_WhouseName",eel.getData());
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ detailMap.put("WDX_DocumentNumber",DocumentNumber);
|
|
|
+ detailMap.put("WDX_DocumentANSDateTime",DocumentANSDateTime);
|
|
|
+ maps.add(detailMap);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (maps!=null&&maps.size()>0){
|
|
|
+ sqls = getInsertSqlbyMaps(maps, "YHND_SZ.WAREHOUSE_DETAILS_XML");
|
|
|
+ bool = JdbcUtil.executeSqls(con, sqls);
|
|
|
+ }
|
|
|
+ return bool;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static List<String> getInsertSqlbyMaps(List<Map<String, Object>> maps, String table) {
|
|
|
+ List<String> sqls = new ArrayList<String>();
|
|
|
+ StringBuffer sb1 = null;
|
|
|
+ StringBuffer sb2 = null;
|
|
|
+ for (Map<String, Object> map : maps) {
|
|
|
+ Set<String> keys = map.keySet();
|
|
|
+ sb1 = new StringBuffer("INSERT into " + table + " (");
|
|
|
+ sb2 = new StringBuffer(" ");
|
|
|
+ for (Object key : keys) {
|
|
|
+ String field = (String) key;
|
|
|
+ Object value = map.get(key);
|
|
|
+ sb1.append(field);
|
|
|
+ sb1.append(",");
|
|
|
+ if (value != null) {
|
|
|
+ String val = value.toString();
|
|
|
+ if (val.matches(REG_D)) {// 判断是否是形如yyyy-mm-dd格式的日期类型数据
|
|
|
+ sb2.append(parseDateToOracleString("yyyy-MM-dd", val));
|
|
|
+ } else if (val.matches(REG_DT)) {
|
|
|
+ sb2.append(parseDateToOracleString("yyyy-MM-dd HH:mm", val));
|
|
|
+ } else if (val.matches(REG_TS)) {
|
|
|
+ sb2.append(parseDateToOracleString("yyyy-MM-dd HH:mm:ss", val.substring(0, val.lastIndexOf("."))));
|
|
|
+ } else if ("null".equals(val)) {
|
|
|
+ sb2.append("null");
|
|
|
+ } else if ("".equals(val.trim())) {
|
|
|
+ sb2.append("''");
|
|
|
+ } else if (val.contains("%n")) {
|
|
|
+ sb2.append("'" + val.replaceAll("%n", "\n") + "'");
|
|
|
+ } else if (val.contains("'")) {
|
|
|
+ sb2.append("'" + value.toString().replaceAll("'", "''") + "'");
|
|
|
+ } else {
|
|
|
+ sb2.append("'" + value + "'");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ sb2.append("null");
|
|
|
+ }
|
|
|
+ sb2.append(",");
|
|
|
+ }
|
|
|
+ sqls.add(sb1.substring(0, sb1.length() - 1) + ") VALUES (" + sb2.substring(0, sb2.length() - 1) + ")");
|
|
|
+ }
|
|
|
+ return sqls;
|
|
|
}
|
|
|
-
|
|
|
public static String getStringByFile(File file){
|
|
|
- String content = "";
|
|
|
+ String content = "";
|
|
|
try {
|
|
|
content = new Scanner(file).useDelimiter("\\Z").next();
|
|
|
content.replace("'", "''");
|
|
|
@@ -135,10 +189,10 @@ public class BaseUtil {
|
|
|
} catch (FileNotFoundException e) {
|
|
|
e.printStackTrace();
|
|
|
BaseUtil.getLogger().error(e.toString());
|
|
|
- }
|
|
|
+ }
|
|
|
return content;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
public static String splitAndConcat(String str, int length, String prevStr, String subStr, String concatStr) {
|
|
|
int strLen = str.length();
|
|
|
int len = (int) Math.ceil((double) strLen / length);
|
|
|
@@ -150,4 +204,28 @@ public class BaseUtil {
|
|
|
}
|
|
|
return buffer.toString();
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 日期转化成oracle格式to_date('2012-12-12', 'yyyy-MM-dd')
|
|
|
+ *
|
|
|
+ * @param format
|
|
|
+ * format type,for example: 'yyyy-MM-dd', 'yyyy-MM-dd HH:mm:ss'
|
|
|
+ * @param dateString
|
|
|
+ * date{type=string}
|
|
|
+ */
|
|
|
+ public static String parseDateToOracleString(String format, String dateString) {
|
|
|
+ if (format == null) {
|
|
|
+ format = "yyyy-MM-dd";
|
|
|
+ }
|
|
|
+ if (dateString == null || "".equals(dateString) || "null".equals(dateString)) {
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat(format);
|
|
|
+ dateString = sdf.format(new Date());
|
|
|
+ }
|
|
|
+ if ("yyyy-MM-dd HH:mm".toUpperCase().equals(format.toUpperCase())) {
|
|
|
+ format = "yyyy-MM-dd HH24:mi";
|
|
|
+ } else {
|
|
|
+ format = "yyyy-MM-dd";
|
|
|
+ }
|
|
|
+ return "to_date('" + dateString + "','" + format + "')";
|
|
|
+ }
|
|
|
}
|