diff --git a/modules/i3plus-pojo-base/pom.xml b/modules/i3plus-pojo-base/pom.xml
index 85a76cc..d790ef1 100644
--- a/modules/i3plus-pojo-base/pom.xml
+++ b/modules/i3plus-pojo-base/pom.xml
@@ -35,6 +35,10 @@
com.alibaba
fastjson
+
+ com.thoughtworks.xstream
+ xstream
+
diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/annotation/XStreamCDATA.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/annotation/XStreamCDATA.java
new file mode 100644
index 0000000..9ade29e
--- /dev/null
+++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/annotation/XStreamCDATA.java
@@ -0,0 +1,18 @@
+package cn.estsh.i3plus.pojo.base.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * @Description : XStream 数据转换的CDATA
+ * @Reference :
+ * @Author : wei.peng
+ * @CreateDate : 2019-07-23 下午5:52
+ * @Modify:
+ **/
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.FIELD)
+public @interface XStreamCDATA {
+}
diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/common/XStreamFactory.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/common/XStreamFactory.java
new file mode 100644
index 0000000..8709cb6
--- /dev/null
+++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/common/XStreamFactory.java
@@ -0,0 +1,227 @@
+package cn.estsh.i3plus.pojo.base.common;
+
+import cn.estsh.i3plus.pojo.base.annotation.XStreamCDATA;
+import com.thoughtworks.xstream.XStream;
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.core.util.QuickWriter;
+import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
+import com.thoughtworks.xstream.io.naming.NameCoder;
+import com.thoughtworks.xstream.io.naming.NoNameCoder;
+import com.thoughtworks.xstream.io.xml.PrettyPrintWriter;
+import com.thoughtworks.xstream.io.xml.XppDomDriver;
+
+import java.io.Writer;
+import java.lang.reflect.Field;
+
+/**
+ * @Description : Xml 工厂
+ * @Reference :
+ * @Author : wei.peng
+ * @CreateDate : 19-7-23 下午5:58
+ * @Modify:
+ **/
+public class XStreamFactory {
+
+ private static final XStream xStream = XStreamFactory.getXStream();
+
+ public static final String CDATA_PREFIX = "";
+
+ public static XStream getXStream() {
+ final NameCoder nameCoder = new NoNameCoder();
+ XStream xStream = new XStream(new XppDomDriver(nameCoder) {
+ @Override
+ public HierarchicalStreamWriter createWriter(Writer out) {
+ return new PrettyPrintWriter(out, nameCoder) {
+ boolean cdataFlag = false;
+ Class> targetClass = null;
+
+ @Override
+ public void startNode(String name, Class clazz) {
+ super.startNode(name, clazz);
+ if (targetClass == null) {
+ targetClass = clazz;
+ }
+ cdataFlag = isCDATA(targetClass, name);
+ }
+
+ @Override
+ public void writeText(QuickWriter writer, String text) {
+ if (cdataFlag) {
+ writer.write(CDATA_PREFIX);
+ writer.write(text);
+ writer.write(CDATA_SUFFIX);
+ } else {
+ writer.write(text);
+ }
+ }
+ };
+ }
+ });
+ return xStream;
+ }
+
+
+ private static boolean isCDATA(Class> clazz, String fieldAlias) {
+ //检查类本身
+ boolean cdataFlag = isExistCDATA(clazz, fieldAlias);
+ if (cdataFlag) {
+ return cdataFlag;
+ }
+ //继续检查父类
+ Class> superClazz = clazz.getSuperclass();
+ while (!superClazz.equals(Object.class)) {
+ cdataFlag = isExistCDATA(superClazz, fieldAlias);
+ if (cdataFlag) {
+ return cdataFlag;
+ }
+ superClazz = superClazz.getClass().getSuperclass();
+ }
+ return false;
+ }
+
+ /**
+ * 检查是否有 @XStreamCDATA 注解
+ *
+ * @param clazz clazz
+ * @param fieldAlias fieldAlias
+ * @return
+ */
+ private static boolean isExistCDATA(Class> clazz, String fieldAlias) {
+ Field[] fields = clazz.getDeclaredFields();
+ for (Field field : fields) {
+ if (field.getAnnotation(XStreamCDATA.class) != null) {
+ XStreamAlias xStreamAlias = field.getAnnotation(XStreamAlias.class);
+ if (xStreamAlias != null && fieldAlias.equals(xStreamAlias.value())) {
+ return true;
+ } else {
+ if (fieldAlias.equals(field.getName())) {
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+
+
+ /**
+ * Javabean 转XML
+ * @param
+ * @return xml字符串
+ */
+ public static String toXml(T t) {
+ xStream.processAnnotations(t.getClass());
+ String headLine = "\n";
+ return headLine + xStream.toXML(t);
+ }
+
+ /**
+ * XML字符串转javabean
+ *
+ * @param xmlStr xml字符串
+ * @param
+ * @return Java对象
+ */
+ public static T toJavaBean(String xmlStr) {
+ return (T) xStream.fromXML(xmlStr);
+ }
+//
+// public static void main(String[] args) {
+// User u = new User(0, "zhangsan0", "zhangsanpwd0");
+// User u1 = new User(1, "zhangsan1", "zhangsanpwd");
+// User u2 = new User(2, "zhangsan2", "zhangsanpwd");
+// User u3 = new User(3, "zhangsan3", "zhangsanpwd");
+//
+// Role r1 = new Role(1, "Admin", "Admin1");
+// Role r2 = new Role(2, "Admin", "Admin2");
+// Role r3 = new Role(3, "Admin", "Admin3");
+//
+// DataAdapter ad = new DataAdapter(10086L,UUID.randomUUID().toString(),"sssfwef",u1);
+// u1.setRole(r1);
+//
+// u2.getRoleList().add(r1);
+// u2.getRoleList().add(r2);
+// u2.getRoleList().add(r3);
+//
+// u3.setRole(r1);
+// u3.getRoleList().add(r2);
+// u3.getRoleList().add(r3);
+//
+// System.out.println(toXml(u) + "\n\n ");
+// System.out.println(toXml(u1) + "\n\n ");
+// System.out.println(toXml(u2) + "\n\n ");
+// System.out.println(toXml(u3) + "\n\n ");
+// System.out.println(toXml(ad) + "\n\n ");
+//
+// System.out.println(JSON.toJSONString(toJavaBean(toXml(ad))));
+//
+// }
+}
+//
+//@Data
+//@XStreamAlias("DataAdapter")
+////对应carInfos元素
+//class DataAdapter implements Serializable {
+//
+// @XStreamAsAttribute
+// private Long scId;
+// private String key;
+// @XStreamCDATA
+// private String resultData;
+//
+// private Object auth;
+//
+// public DataAdapter(Long scId, String key, String resultData, Object auth) {
+// this.scId = scId;
+// this.key = key;
+// this.resultData = resultData;
+// this.auth = auth;
+// }
+//}
+//
+//@Data
+//@XStreamAlias("user")
+////对应carInfos元素
+//class User implements Serializable {
+// private static final long serialVersionUID = -7554548655397869156L;
+//
+// @XStreamAsAttribute
+// private Integer id;
+// private String loginName;
+// private String loginPwd;
+//
+// private Role role;
+// private List roleList = new ArrayList();
+// private List roleArray;
+//
+// public User() {
+// }
+//
+// public User(Integer id, String loginName, String loginPwd) {
+// this.id = id;
+// this.loginName = loginName;
+// this.loginPwd = loginPwd;
+// }
+//}
+//
+//@Data
+//@XStreamAlias("role")
+////对应carInfos元素
+//class Role implements Serializable {
+// private static final long serialVersionUID = -3134157833696958743L;
+// @XStreamAsAttribute
+// private Integer id;
+// private String roleName;
+// private String roleCode;
+//
+// public Role() {
+// }
+//
+// public Role(Integer id, String roleName, String roleCode) {
+// this.id = id;
+// this.roleName = roleName;
+// this.roleCode = roleCode;
+// }
+//}
\ No newline at end of file
diff --git a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/WmsSapOrderLock.java b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/WmsSapOrderLock.java
index 853d848..645df63 100644
--- a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/WmsSapOrderLock.java
+++ b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/bean/WmsSapOrderLock.java
@@ -46,6 +46,6 @@ public class WmsSapOrderLock extends BaseBean {
@Column(name = "IS_SYNC")
@ApiParam("同步标识")
- public Integer isSync = 10;
+ public Integer isSync = 2;
}
diff --git a/pom.xml b/pom.xml
index 4cd2e03..71b6632 100644
--- a/pom.xml
+++ b/pom.xml
@@ -149,6 +149,11 @@
fastjson
1.2.49
+
+ com.thoughtworks.xstream
+ xstream
+ 1.4.11.1
+