From bcb1aaaadad892fe02e4de9a1fdb10cb99fea9bc Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期一, 08 四月 2024 12:01:46 +0800
Subject: [PATCH] Func工具类添加

---
 Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/Func.java                           |    4 
 Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/ConvertUtil.java                    |   81 +
 Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/ClassUtil.java                      |  130 +++
 Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/beans/BladeBeanMapEmitter.java      |  192 ++++
 Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/function/CheckedFunction.java       |   40 
 Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/function/CheckedComparator.java     |   38 
 Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/beans/BladeBeanCopier.java          |  404 +++++++++
 Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/convert/BladeConverter.java         |   77 +
 Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/convert/EnumToStringConverter.java  |  126 +++
 Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/BeanUtil.java                       |  424 ++++++++++
 Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/function/CheckedRunnable.java       |   35 
 .idea/modules.xml                                                                                          |    4 
 Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/UIEngineServiceImpl.java    |    1 
 Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/convert/BladeConversionService.java |   51 +
 Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/Unchecked.java                      |  106 ++
 Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/beans/CopyProperty.java             |   26 
 Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/UrlUtil.java                        |   92 ++
 Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/beans/BladeBeanMapKey.java          |   16 
 Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/beans/BladeBeanMap.java             |  125 +++
 Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/function/CheckedConsumer.java       |   39 
 Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/function/CheckedSupplier.java       |   39 
 /dev/null                                                                                                  |    0 
 Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/ReflectUtil.java                    |  180 ++++
 Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/convert/StringToEnumConverter.java  |  126 +++
 Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/beans/BeanProperty.java             |   16 
 Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/beans/BladeBeanCopierKey.java       |   20 
 Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/function/CheckedCallable.java       |   38 
 27 files changed, 2,426 insertions(+), 4 deletions(-)

diff --git a/.idea/modules.xml b/.idea/modules.xml
index 2b810a8..bcd21f1 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -3,6 +3,10 @@
   <component name="ProjectModuleManager">
     <modules>
       <module fileurl="file://$PROJECT_DIR$/.idea/PLTWEB.iml" filepath="$PROJECT_DIR$/.idea/PLTWEB.iml" />
+      <module fileurl="file://$PROJECT_DIR$/Source/platformProject/platform-parent.iml" filepath="$PROJECT_DIR$/Source/platformProject/platform-parent.iml" />
+      <module fileurl="file://$PROJECT_DIR$/Source/platformProject/vci-platform-server-starter/vci-platform-server-starter.iml" filepath="$PROJECT_DIR$/Source/platformProject/vci-platform-server-starter/vci-platform-server-starter.iml" />
+      <module fileurl="file://$PROJECT_DIR$/Source/platformProject/vci-platform-starter/vci-platform-starter.iml" filepath="$PROJECT_DIR$/Source/platformProject/vci-platform-starter/vci-platform-starter.iml" />
+      <module fileurl="file://$PROJECT_DIR$/Source/platformProject/vci-platform-web/vci-platform-web.iml" filepath="$PROJECT_DIR$/Source/platformProject/vci-platform-web/vci-platform-web.iml" />
     </modules>
   </component>
 </project>
\ No newline at end of file
diff --git a/Bin/lib/client/flatlaf-2.3.jar b/Bin/lib/client/flatlaf-2.3.jar
deleted file mode 100644
index 9f292d2..0000000
--- a/Bin/lib/client/flatlaf-2.3.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/client/icegridgui.jar b/Bin/lib/client/icegridgui.jar
deleted file mode 100644
index d9ede54..0000000
--- a/Bin/lib/client/icegridgui.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/client/jgoodies-common-1.8.1.jar b/Bin/lib/client/jgoodies-common-1.8.1.jar
deleted file mode 100644
index f6a256e..0000000
--- a/Bin/lib/client/jgoodies-common-1.8.1.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/client/jgoodies-looks-2.5.3.jar b/Bin/lib/client/jgoodies-looks-2.5.3.jar
deleted file mode 100644
index 3339053..0000000
--- a/Bin/lib/client/jgoodies-looks-2.5.3.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/client/jgraph.jar b/Bin/lib/client/jgraph.jar
deleted file mode 100644
index 9af266c..0000000
--- a/Bin/lib/client/jgraph.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/client/jgraphx-3.1.0.0.jar b/Bin/lib/client/jgraphx-3.1.0.0.jar
deleted file mode 100644
index 6637aac..0000000
--- a/Bin/lib/client/jgraphx-3.1.0.0.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/client/nativeskin.jar b/Bin/lib/client/nativeskin.jar
deleted file mode 100644
index acacc56..0000000
--- a/Bin/lib/client/nativeskin.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/client/pinyin4j-2.5.0.jar b/Bin/lib/client/pinyin4j-2.5.0.jar
deleted file mode 100644
index e8ede13..0000000
--- a/Bin/lib/client/pinyin4j-2.5.0.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/client/plt-client.jar b/Bin/lib/client/plt-client.jar
deleted file mode 100644
index d4286a6..0000000
--- a/Bin/lib/client/plt-client.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/client/plt-clientbase.jar b/Bin/lib/client/plt-clientbase.jar
deleted file mode 100644
index 50330af..0000000
--- a/Bin/lib/client/plt-clientbase.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/client/poi-3.9-20121203.jar b/Bin/lib/client/poi-3.9-20121203.jar
deleted file mode 100644
index 0f46288..0000000
--- a/Bin/lib/client/poi-3.9-20121203.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/client/poi-ooxml-3.9-20121203.jar b/Bin/lib/client/poi-ooxml-3.9-20121203.jar
deleted file mode 100644
index 8792d46..0000000
--- a/Bin/lib/client/poi-ooxml-3.9-20121203.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/client/poi-ooxml-schemas-3.9-20121203.jar b/Bin/lib/client/poi-ooxml-schemas-3.9-20121203.jar
deleted file mode 100644
index eda4ef4..0000000
--- a/Bin/lib/client/poi-ooxml-schemas-3.9-20121203.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/client/poi-scratchpad-3.9-20121203.jar b/Bin/lib/client/poi-scratchpad-3.9-20121203.jar
deleted file mode 100644
index 1520855..0000000
--- a/Bin/lib/client/poi-scratchpad-3.9-20121203.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/client/protege35.jar b/Bin/lib/client/protege35.jar
deleted file mode 100644
index 8e99a2e..0000000
--- a/Bin/lib/client/protege35.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/client/skinlf.jar b/Bin/lib/client/skinlf.jar
deleted file mode 100644
index 9bdb00f..0000000
--- a/Bin/lib/client/skinlf.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/client/swingx-1.6.1.jar b/Bin/lib/client/swingx-1.6.1.jar
deleted file mode 100644
index b0bcc87..0000000
--- a/Bin/lib/client/swingx-1.6.1.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/client/swixml.jar b/Bin/lib/client/swixml.jar
deleted file mode 100644
index 2f0fa2b..0000000
--- a/Bin/lib/client/swixml.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/client/uitheme-1.3.1.jar b/Bin/lib/client/uitheme-1.3.1.jar
deleted file mode 100644
index caacb71..0000000
--- a/Bin/lib/client/uitheme-1.3.1.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/commons-lang3-3.1.jar b/Bin/lib/common/commons-lang3-3.1.jar
deleted file mode 100644
index a85e539..0000000
--- a/Bin/lib/common/commons-lang3-3.1.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/dom4j-1.6.1.jar b/Bin/lib/common/dom4j-1.6.1.jar
deleted file mode 100644
index c8c4dbb..0000000
--- a/Bin/lib/common/dom4j-1.6.1.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/fastjson-1.2.83.jar b/Bin/lib/common/fastjson-1.2.83.jar
deleted file mode 100644
index fd843ae..0000000
--- a/Bin/lib/common/fastjson-1.2.83.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/freemarker.jar b/Bin/lib/common/freemarker.jar
deleted file mode 100644
index b13671d..0000000
--- a/Bin/lib/common/freemarker.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/icegridgui.jar b/Bin/lib/common/icegridgui.jar
deleted file mode 100644
index d9ede54..0000000
--- a/Bin/lib/common/icegridgui.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/junit-4.8.jar b/Bin/lib/common/junit-4.8.jar
deleted file mode 100644
index efdaa58..0000000
--- a/Bin/lib/common/junit-4.8.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/log4j-api-2.12.4.jar b/Bin/lib/common/log4j-api-2.12.4.jar
deleted file mode 100644
index d427c18..0000000
--- a/Bin/lib/common/log4j-api-2.12.4.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/log4j-core-2.12.4.jar b/Bin/lib/common/log4j-core-2.12.4.jar
deleted file mode 100644
index 53b1e9a..0000000
--- a/Bin/lib/common/log4j-core-2.12.4.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/mail.jar b/Bin/lib/common/mail.jar
deleted file mode 100644
index 463a64b..0000000
--- a/Bin/lib/common/mail.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common.jar b/Bin/lib/common/plt-common.jar
deleted file mode 100644
index 4a83711..0000000
--- a/Bin/lib/common/plt-common.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/META-INF/MANIFEST.MF b/Bin/lib/common/plt-common/META-INF/MANIFEST.MF
deleted file mode 100644
index 461db2a..0000000
--- a/Bin/lib/common/plt-common/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,8 +0,0 @@
-Manifest-Version: 1.0
-Ant-Version: Apache Ant 1.10.12
-Created-By: 17.0.8.1+1 (Eclipse Adoptium)
-Built-By: Jason
-Implementation-Title: platform-Common
-Built-Time: 2024.03.01.10.09
-platform-version: 2024
-
diff --git a/Bin/lib/common/plt-common/com/vci/common/ServiceNames.class b/Bin/lib/common/plt-common/com/vci/common/ServiceNames.class
deleted file mode 100644
index b2e46b2..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/ServiceNames.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/annotaion/CustomAnnotaion.class b/Bin/lib/common/plt-common/com/vci/common/annotaion/CustomAnnotaion.class
deleted file mode 100644
index c6a27af..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/annotaion/CustomAnnotaion.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/annotaion/CustomAnnotaionHelper.class b/Bin/lib/common/plt-common/com/vci/common/annotaion/CustomAnnotaionHelper.class
deleted file mode 100644
index d3479ac..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/annotaion/CustomAnnotaionHelper.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/annotaion/MethodTypeAnnotation.class b/Bin/lib/common/plt-common/com/vci/common/annotaion/MethodTypeAnnotation.class
deleted file mode 100644
index 1ed2599..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/annotaion/MethodTypeAnnotation.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/exception/LocaleCommonDisplay.class b/Bin/lib/common/plt-common/com/vci/common/exception/LocaleCommonDisplay.class
deleted file mode 100644
index 1b2a09b..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/exception/LocaleCommonDisplay.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/exception/ORAUniqueProperties.class b/Bin/lib/common/plt-common/com/vci/common/exception/ORAUniqueProperties.class
deleted file mode 100644
index 877ddb5..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/exception/ORAUniqueProperties.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/exception/VciException.class b/Bin/lib/common/plt-common/com/vci/common/exception/VciException.class
deleted file mode 100644
index c86f613..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/exception/VciException.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/exception/VciExceptionTool.class b/Bin/lib/common/plt-common/com/vci/common/exception/VciExceptionTool.class
deleted file mode 100644
index 2b99d29..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/exception/VciExceptionTool.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/file/FileDigest.class b/Bin/lib/common/plt-common/com/vci/common/file/FileDigest.class
deleted file mode 100644
index e302177..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/file/FileDigest.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/locale/LocaleDisplay.class b/Bin/lib/common/plt-common/com/vci/common/locale/LocaleDisplay.class
deleted file mode 100644
index f66fce5..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/locale/LocaleDisplay.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/log/LogByType.class b/Bin/lib/common/plt-common/com/vci/common/log/LogByType.class
deleted file mode 100644
index ce4df3e..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/log/LogByType.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/log/LogType.class b/Bin/lib/common/plt-common/com/vci/common/log/LogType.class
deleted file mode 100644
index c2f4b28..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/log/LogType.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/log/ServerWithLog4j.class b/Bin/lib/common/plt-common/com/vci/common/log/ServerWithLog4j.class
deleted file mode 100644
index 1c1f373..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/log/ServerWithLog4j.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/objects/AbstractEntity.class b/Bin/lib/common/plt-common/com/vci/common/objects/AbstractEntity.class
deleted file mode 100644
index 431e754..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/objects/AbstractEntity.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/objects/AbstractHistorizable.class b/Bin/lib/common/plt-common/com/vci/common/objects/AbstractHistorizable.class
deleted file mode 100644
index 3399c3d..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/objects/AbstractHistorizable.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/objects/Historizable.class b/Bin/lib/common/plt-common/com/vci/common/objects/Historizable.class
deleted file mode 100644
index 39073e8..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/objects/Historizable.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/objects/QueryParam.class b/Bin/lib/common/plt-common/com/vci/common/objects/QueryParam.class
deleted file mode 100644
index 7d159b6..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/objects/QueryParam.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/objects/QueryResult.class b/Bin/lib/common/plt-common/com/vci/common/objects/QueryResult.class
deleted file mode 100644
index 6bf326c..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/objects/QueryResult.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/objects/UserEntity.class b/Bin/lib/common/plt-common/com/vci/common/objects/UserEntity.class
deleted file mode 100644
index c8f9f13..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/objects/UserEntity.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/portal/constants/PLDefinationConstants.class b/Bin/lib/common/plt-common/com/vci/common/portal/constants/PLDefinationConstants.class
deleted file mode 100644
index 953f51d..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/portal/constants/PLDefinationConstants.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/portal/constants/PRMConstants.class b/Bin/lib/common/plt-common/com/vci/common/portal/constants/PRMConstants.class
deleted file mode 100644
index 6a67d38..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/portal/constants/PRMConstants.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/portal/constants/TemplateTypeConstants.class b/Bin/lib/common/plt-common/com/vci/common/portal/constants/TemplateTypeConstants.class
deleted file mode 100644
index ae18078..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/portal/constants/TemplateTypeConstants.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/portal/enums/AreaType.class b/Bin/lib/common/plt-common/com/vci/common/portal/enums/AreaType.class
deleted file mode 100644
index 7f722b5..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/portal/enums/AreaType.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/portal/enums/ComponentType.class b/Bin/lib/common/plt-common/com/vci/common/portal/enums/ComponentType.class
deleted file mode 100644
index 974a875..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/portal/enums/ComponentType.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/portal/enums/ControlType.class b/Bin/lib/common/plt-common/com/vci/common/portal/enums/ControlType.class
deleted file mode 100644
index a81e131..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/portal/enums/ControlType.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/portal/enums/GetByType.class b/Bin/lib/common/plt-common/com/vci/common/portal/enums/GetByType.class
deleted file mode 100644
index 6c5e569..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/portal/enums/GetByType.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/portal/enums/PortalVIType.class b/Bin/lib/common/plt-common/com/vci/common/portal/enums/PortalVIType.class
deleted file mode 100644
index 862d7be..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/portal/enums/PortalVIType.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/portal/enums/PortalVITypeFlag.class b/Bin/lib/common/plt-common/com/vci/common/portal/enums/PortalVITypeFlag.class
deleted file mode 100644
index 5cadb30..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/portal/enums/PortalVITypeFlag.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/portal/utils/PortalUtil.class b/Bin/lib/common/plt-common/com/vci/common/portal/utils/PortalUtil.class
deleted file mode 100644
index f031b6f..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/portal/utils/PortalUtil.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/qt/interfaces/IParserFactory.class b/Bin/lib/common/plt-common/com/vci/common/qt/interfaces/IParserFactory.class
deleted file mode 100644
index 6713304..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/qt/interfaces/IParserFactory.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/qt/object/CItemRelation.class b/Bin/lib/common/plt-common/com/vci/common/qt/object/CItemRelation.class
deleted file mode 100644
index 3cfe931..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/qt/object/CItemRelation.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/qt/object/ChildrenInfo.class b/Bin/lib/common/plt-common/com/vci/common/qt/object/ChildrenInfo.class
deleted file mode 100644
index 4447873..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/qt/object/ChildrenInfo.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/qt/object/ComparatorOrderInfo.class b/Bin/lib/common/plt-common/com/vci/common/qt/object/ComparatorOrderInfo.class
deleted file mode 100644
index c320dbe..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/qt/object/ComparatorOrderInfo.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/qt/object/Condition.class b/Bin/lib/common/plt-common/com/vci/common/qt/object/Condition.class
deleted file mode 100644
index f4cb735..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/qt/object/Condition.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/qt/object/ConditionItem.class b/Bin/lib/common/plt-common/com/vci/common/qt/object/ConditionItem.class
deleted file mode 100644
index b12f1d3..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/qt/object/ConditionItem.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/qt/object/Connector.class b/Bin/lib/common/plt-common/com/vci/common/qt/object/Connector.class
deleted file mode 100644
index 3d5655a..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/qt/object/Connector.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/qt/object/LeafInfo.class b/Bin/lib/common/plt-common/com/vci/common/qt/object/LeafInfo.class
deleted file mode 100644
index 26e7390..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/qt/object/LeafInfo.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/qt/object/LeafValue.class b/Bin/lib/common/plt-common/com/vci/common/qt/object/LeafValue.class
deleted file mode 100644
index 52c8f77..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/qt/object/LeafValue.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/qt/object/Operator.class b/Bin/lib/common/plt-common/com/vci/common/qt/object/Operator.class
deleted file mode 100644
index 6e94988..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/qt/object/Operator.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/qt/object/OrderInfo.class b/Bin/lib/common/plt-common/com/vci/common/qt/object/OrderInfo.class
deleted file mode 100644
index 3e18529..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/qt/object/OrderInfo.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/qt/object/PageInfo.class b/Bin/lib/common/plt-common/com/vci/common/qt/object/PageInfo.class
deleted file mode 100644
index 759561b..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/qt/object/PageInfo.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/qt/object/ParserHelper.class b/Bin/lib/common/plt-common/com/vci/common/qt/object/ParserHelper.class
deleted file mode 100644
index 52d4fa3..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/qt/object/ParserHelper.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/qt/object/QTConstants.class b/Bin/lib/common/plt-common/com/vci/common/qt/object/QTConstants.class
deleted file mode 100644
index 3cbd16e..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/qt/object/QTConstants.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/qt/object/QueryTemplate.class b/Bin/lib/common/plt-common/com/vci/common/qt/object/QueryTemplate.class
deleted file mode 100644
index 0d113e1..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/qt/object/QueryTemplate.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/qt/object/Symbol.class b/Bin/lib/common/plt-common/com/vci/common/qt/object/Symbol.class
deleted file mode 100644
index 525f52f..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/qt/object/Symbol.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/qt/object/Version.class b/Bin/lib/common/plt-common/com/vci/common/qt/object/Version.class
deleted file mode 100644
index e323986..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/qt/object/Version.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/resource/CommonProperties.class b/Bin/lib/common/plt-common/com/vci/common/resource/CommonProperties.class
deleted file mode 100644
index 09d819f..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/resource/CommonProperties.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/resource/IceClientProperties.class b/Bin/lib/common/plt-common/com/vci/common/resource/IceClientProperties.class
deleted file mode 100644
index 101d91e..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/resource/IceClientProperties.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/timer/VCITimeInterface.class b/Bin/lib/common/plt-common/com/vci/common/timer/VCITimeInterface.class
deleted file mode 100644
index 7d53756..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/timer/VCITimeInterface.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/util/CollectionUtils$EnumerationIterator.class b/Bin/lib/common/plt-common/com/vci/common/util/CollectionUtils$EnumerationIterator.class
deleted file mode 100644
index 681559e..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/util/CollectionUtils$EnumerationIterator.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/util/CollectionUtils.class b/Bin/lib/common/plt-common/com/vci/common/util/CollectionUtils.class
deleted file mode 100644
index 65637ba..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/util/CollectionUtils.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/util/IceProxyUtility.class b/Bin/lib/common/plt-common/com/vci/common/util/IceProxyUtility.class
deleted file mode 100644
index 1f560d3..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/util/IceProxyUtility.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/utility/ClassLoaderUtil.class b/Bin/lib/common/plt-common/com/vci/common/utility/ClassLoaderUtil.class
deleted file mode 100644
index e9a5bd8..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/utility/ClassLoaderUtil.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/utility/Converter.class b/Bin/lib/common/plt-common/com/vci/common/utility/Converter.class
deleted file mode 100644
index 0992bac..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/utility/Converter.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/utility/ObjectUtility.class b/Bin/lib/common/plt-common/com/vci/common/utility/ObjectUtility.class
deleted file mode 100644
index 7f52978..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/utility/ObjectUtility.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/utility/RandomGUID20.class b/Bin/lib/common/plt-common/com/vci/common/utility/RandomGUID20.class
deleted file mode 100644
index 3da5006..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/utility/RandomGUID20.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/utility/RandomGUID36.class b/Bin/lib/common/plt-common/com/vci/common/utility/RandomGUID36.class
deleted file mode 100644
index 8d609e1..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/utility/RandomGUID36.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/utility/RandomGUID8.class b/Bin/lib/common/plt-common/com/vci/common/utility/RandomGUID8.class
deleted file mode 100644
index b2f6632..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/utility/RandomGUID8.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/common/utility/SnowFlake.class b/Bin/lib/common/plt-common/com/vci/common/utility/SnowFlake.class
deleted file mode 100644
index 957ee22..0000000
--- a/Bin/lib/common/plt-common/com/vci/common/utility/SnowFlake.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/mw/ClientContextVariable.class b/Bin/lib/common/plt-common/com/vci/mw/ClientContextVariable.class
deleted file mode 100644
index 7409b6b..0000000
--- a/Bin/lib/common/plt-common/com/vci/mw/ClientContextVariable.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/mw/IInvocationContext.class b/Bin/lib/common/plt-common/com/vci/mw/IInvocationContext.class
deleted file mode 100644
index a1c1a6c..0000000
--- a/Bin/lib/common/plt-common/com/vci/mw/IInvocationContext.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/mw/InvocationUtility.class b/Bin/lib/common/plt-common/com/vci/mw/InvocationUtility.class
deleted file mode 100644
index 57a3da1..0000000
--- a/Bin/lib/common/plt-common/com/vci/mw/InvocationUtility.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/mw/LaunchModeEnum.class b/Bin/lib/common/plt-common/com/vci/mw/LaunchModeEnum.class
deleted file mode 100644
index 360be95..0000000
--- a/Bin/lib/common/plt-common/com/vci/mw/LaunchModeEnum.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/omd/constants/AttributeConstants.class b/Bin/lib/common/plt-common/com/vci/omd/constants/AttributeConstants.class
deleted file mode 100644
index 185bbbd..0000000
--- a/Bin/lib/common/plt-common/com/vci/omd/constants/AttributeConstants.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/omd/constants/BusinessConstants.class b/Bin/lib/common/plt-common/com/vci/omd/constants/BusinessConstants.class
deleted file mode 100644
index 2d8af9f..0000000
--- a/Bin/lib/common/plt-common/com/vci/omd/constants/BusinessConstants.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/omd/constants/FileObjectType.class b/Bin/lib/common/plt-common/com/vci/omd/constants/FileObjectType.class
deleted file mode 100644
index 4017c24..0000000
--- a/Bin/lib/common/plt-common/com/vci/omd/constants/FileObjectType.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/omd/constants/LinkConstants.class b/Bin/lib/common/plt-common/com/vci/omd/constants/LinkConstants.class
deleted file mode 100644
index dfe3a1c..0000000
--- a/Bin/lib/common/plt-common/com/vci/omd/constants/LinkConstants.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/omd/constants/LinkTypeConstants.class b/Bin/lib/common/plt-common/com/vci/omd/constants/LinkTypeConstants.class
deleted file mode 100644
index 9387bb0..0000000
--- a/Bin/lib/common/plt-common/com/vci/omd/constants/LinkTypeConstants.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/omd/constants/OmdConstants.class b/Bin/lib/common/plt-common/com/vci/omd/constants/OmdConstants.class
deleted file mode 100644
index d5be5d1..0000000
--- a/Bin/lib/common/plt-common/com/vci/omd/constants/OmdConstants.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/omd/constants/SystemAttribute.class b/Bin/lib/common/plt-common/com/vci/omd/constants/SystemAttribute.class
deleted file mode 100644
index 74fe7d7..0000000
--- a/Bin/lib/common/plt-common/com/vci/omd/constants/SystemAttribute.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/omd/dataType/VTDataType.class b/Bin/lib/common/plt-common/com/vci/omd/dataType/VTDataType.class
deleted file mode 100644
index 4608634..0000000
--- a/Bin/lib/common/plt-common/com/vci/omd/dataType/VTDataType.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/omd/objects/OtherInfo.class b/Bin/lib/common/plt-common/com/vci/omd/objects/OtherInfo.class
deleted file mode 100644
index 20374bc..0000000
--- a/Bin/lib/common/plt-common/com/vci/omd/objects/OtherInfo.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/omd/utils/AbComparator.class b/Bin/lib/common/plt-common/com/vci/omd/utils/AbComparator.class
deleted file mode 100644
index 155d061..0000000
--- a/Bin/lib/common/plt-common/com/vci/omd/utils/AbComparator.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/omd/utils/BTComparator.class b/Bin/lib/common/plt-common/com/vci/omd/utils/BTComparator.class
deleted file mode 100644
index 2bde5ef..0000000
--- a/Bin/lib/common/plt-common/com/vci/omd/utils/BTComparator.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/omd/utils/LinkTypeComparator.class b/Bin/lib/common/plt-common/com/vci/omd/utils/LinkTypeComparator.class
deleted file mode 100644
index 826ccbf..0000000
--- a/Bin/lib/common/plt-common/com/vci/omd/utils/LinkTypeComparator.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/com/vci/omd/utils/ObjectTool.class b/Bin/lib/common/plt-common/com/vci/omd/utils/ObjectTool.class
deleted file mode 100644
index 1d03cbd..0000000
--- a/Bin/lib/common/plt-common/com/vci/omd/utils/ObjectTool.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/plt-common/properties/conf.properties b/Bin/lib/common/plt-common/properties/conf.properties
deleted file mode 100644
index 9098410..0000000
--- a/Bin/lib/common/plt-common/properties/conf.properties
+++ /dev/null
@@ -1,116 +0,0 @@
-#conf.properties version by Eclipse
-#Sat Oct 19 14:06:56 CST 2013
-
-
-#鏂囦欢浼犺緭鍧楀ぇ灏�
-blockLength=32
-
-########################################### 骞冲彴UIF 闇�瑕佺殑閰嶇疆  BEGIN ###########################################
-#浜哄憳淇℃伅鍏ユ椂,鏄惁闇�瑕佸瘑绾у瓧娈�
-exportSecretGrade=false
-
-# 鍔犲瘑瀵嗛挜
-encrypt.key=www.liming.portal.comwww.liming.portal.com
-# 鐧诲綍绐楀彛锛屾槸鍚︽樉绀衡�樹繚瀛樷�欏閫夋
-logon.saveBut=false
-# 绯荤粺鐢ㄦ埛鐧诲綍瓒呮椂鏃堕棿(鍗曚綅鍒嗗垎閽燂級
-logon.loginovertime=1000
-# 涓绘鏋朵笂锛屾槸鍚︽樉绀洪《閮ㄥ浘鐗�
-top.logon.image.show=false
-# 涓绘鏋朵笂锛岄《閮ㄥ浘鐗囧悕绉帮紙璇ュ浘鐗囦綅浜� com.vci.rmip.logon.client 鍖呬笅锛�
-top.logon.image.name=title.jpg
-# 涓绘鏋朵笂锛屾槸鍚︽樉绀鸿彍鍗� true:鏄剧ず false:涓嶆樉绀�
-top.menuBar.show=true
-# 涓昏彍鍗曚笅锛屾槸鍚︽樉绀衡�橀噸鏂扮櫥褰曗��  true:鏄剧ず false:涓嶆樉绀�
-top.menuBar.menuItem.relogin=true
-# 涓昏彍鍗曚笅锛屾槸鍚︽樉绀衡�樹慨鏀瑰瘑鐮佲��  true:鏄剧ず false:涓嶆樉绀�
-top.menuBar.menuItem.changePassword=true
-
-# 绯荤粺鍏充簬閰嶇疆,淇敼閰嶇疆鏄娉ㄦ剰涓枃瀛楃鐨勭紪鐮佷娇鐢╱tf-8
-system.about.title = \u5173\u4E8E
-# 鏈�浣冲浘鐗囧昂瀵�400*90锛岄粯璁ゅ�间负about.png
-system.about.imageName=about.png
-# 浜у搧鍚嶇О
-system.about.softNameProduct= VCI Innovation 2022
-# 鐗堟潈_涓枃
-system.about.softNameCopyrightC = \u5B8F\u535A\u8FDC\u8FBE \u7248\u6743\u6240\u6709
-# 鐗堟潈_鑻辨枃
-system.about.softNameCopyrightE = Copyright(C) 2011-2022 Contributors. All rights reserved.
-# 椤圭洰鍚嶇О 
-system.about.softName = \u5317\u4EAC\u5B8F\u535A\u8FDC\u8FBE\u79D1\u6280\u6709\u9650\u516C\u53F8 - \u7CFB\u7EDF\u5F00\u53D1\u5E73\u53F0
-# 骞冲彴鐗堟湰 
-system.about.version = v2022.01.15
-# 鍏徃缃戝潃 
-system.about.visit = http://www.vci-tech.com
-
-
-# 绠$悊鍛樼敤鎴峰悕
-user.admin=admin
-# 瓒呯骇绠$悊鍛樼敤鎴峰悕
-user.developer=developer
-# 瀹夊叏绠$悊鍛樿鑹插悕绉�
-user.Sysadmin=\u5b89\u5168\u7ba1\u7406\u5458
-user.rooter=root
-
-# 鏃ュ織妯″潡锛屾槸鍚﹀惎鐢ㄦ煡璇� on:鍚敤 off:绂佺敤
-log.query.switch=off
-period=1
-# 鏃ュ織妯″潡锛屽畾鏈熷垹闄ゆ棩蹇楁椂锛屾敮鎸佺殑鍙�夊�硷紙
-log.save.periods=\ufeff1\#\u4e00\u4e2a\u6708\:\:2\#\u4e24\u4e2a\u6708\:\:3\#\u4e09\u4e2a\u6708\:\:6\#\u534a\u5e74\:\:12\#\u4e00\u5e74\:\:18\#\u4e00\u5e74\u534a\:\:24\#\u4e24\u5e74
-# 鏃ュ織妯″潡锛屽垎椤垫煡璇㈡椂锛岄〉鏁版嵁澶у皬
-log.query.pagesize=30
-# 鏃ュ織妯″潡锛屾槸鍚﹀惎鐢ㄥ畾鏃跺垹闄ゆ棩蹇� Y:鍚敤 N:绂佺敤
-log.delete.auto=N
-# 鏃ュ織妯″潡锛屽畾鏃跺垹闄ゆ棩蹇楁椂锛岃淇濈暀鏈�杩戠殑澶╂暟
-log.autoDelete.rate=7
-# 鏃ュ織鍒犻櫎鏃堕棿
-log.autoDelete.time=0\:\:0\:\:0
-
-########################################### 骞冲彴UIF 闇�瑕佺殑閰嶇疆  BEGIN ###########################################
-#鏁版嵁鏉冮檺鏄惁鐢熸晥 on:寮�鍚� off锛氬叧闂�
-right.switch=off
-#鍔熻兘妯″潡鎺堟潈楠岃瘉鏄惁璁� on锛氬紑鍚�  off锛氬叧闂�
-function.right.swith=on
-#UI鎺堟潈鏄惁鐢熸晥 on:寮�鎴� off锛氬叧闂�
-ui.right.swith=on
-# tablePanel 榛樿鏀寔鐨刾ageSize鍒楄〃
-tablePanel.pageSizeList=100,200,300,500,800,1000
-#鍙傜収鎺т欢锛屽湪闆嗘垚鏃讹紝鍙嚜瀹氫箟鍙傜収鏂瑰紡锛屽�间负绫�
-engin.refObjectChoose = 
-# 绯荤粺淇℃伅鎻愮ず妗嗘樉绀烘柟寮� popup:寮瑰嚭妗� ;lowerRight:鍙充笅瑙掋�� 榛樿涓哄彸涓嬭
-PromptMessage.DisplayModes=popup
-# 濡傛灉鍦ㄥ彸涓嬭鏄剧ず绯荤粺娑堟伅鏃讹紝璁剧疆娑堟伅绐楀彛鐨勬樉绀烘椂闂达紝姣銆傞粯璁や负3000姣
-PromptMessage.DisplayTime=3000
-#鍒嗙被鏍戝鑸椂锛屾敮鎸佺殑浜嬩欢鍚嶇О
-uidesign.eventKey=SelectionEvent,DBClickEvent,ClickEvent
-# 棣栭〉鑷畾涔夌被锛屽彲浠ユ湁澶氱粍锛屾瘡缁勪箣闂寸敤鍒嗗彿;鍒嗛殧锛岃嚜瀹氫箟绫讳笌鏍囬涔嬮棿鐢ㄩ�楀彿,鍒嗛殧
-# 鏍煎紡锛氳嚜瀹氫箟绫诲畬鏁磋矾寰�1,鏍囬1锛圲NOCIDE鏍煎紡锛�,鍥炬爣鏂囦欢瀹屾暣璺緞.;鑷畾涔夌被瀹屾暣璺緞2,鏍囬2锛圲NOCIDE鏍煎紡锛�,鍥炬爣鏂囦欢瀹屾暣璺緞;
-# 绀轰緥锛歱lm617.engine.HomePageForTaskMessagePanel,\u6211\u7684\u6d88\u606f\u0096\u0087,
-#HomePageClasses=plm.uif.engine.client.UILayoutPanel?type=workitem&context=workItemHomePage,\u6211\u7684\u6d88\u606f\u0096\u0087,/com/vci/base/ui/image/email.png
-########################################### 骞冲彴UIF 闇�瑕佺殑閰嶇疆  END ###########################################
-
-
-
-########################################### CS绯荤粺涓绘瀯鏋舵敮鎸佺殑鎵╁睍鏈嶅姟 BEGIN ########################################### 
-# 鐧诲綍鎴愬姛鍚庝娇鐢ㄥ弽灏勬満鍒讹紝鑷姩鎵ц璇ョ被涓殑鍏叡鎺ュ彛 showMessage() 锛堟棤鍙傛暟浼犻�掞級
-# 浠ユ敮鎸佺櫥褰曟垚鍔熷悗绔嬪嵆鎵ц鐩稿叧鑷畾涔夋墿灞曢�昏緫# 
-#e.g:extendservice.0=xxx.xx.xx
-extendservicecount=0
-#extendservice.0=
-#extendservice.1=
-#extendservice.1=
-########################################### CS绯荤粺涓绘瀯鏋舵敮鎸佺殑鎵╁睍鏈嶅姟 END ###########################################
-
-
-########################################### UI&鍏冩暟鎹紙妯″瀷锛夌紦瀛樼浉鍏崇殑閰嶇疆 BEGIN ###########################################
-#鍚敤UI缂撳瓨鍙婄紦瀛樺畾鏃跺埛鏂版湇鍔�
-UI.cache.enable=true
-#鏄惁姣忔璁块棶閮藉埛鏂版暟鎹簱锛宼rue浠g爜鍒锋柊锛屽惁鍒欎笉鍒锋柊
-UI.cache.refreshEveryTime=true
-#瀹氭椂鍣紝鍦ㄦ湇鍔″惎鍔ㄦ椂寮�鍚�
-time_schedule_count=2
-#鍔犺浇鏁版嵁妯″瀷鍒扮紦瀛�
-time_schedule_0=com.vci.cache.server.util.DataModelCacheTimer
-#鍔犺浇UI閰嶇疆鍒扮紦瀛�
-time_schedule_1=plm.portal.tools.UICacheTimer
-########################################### UI&鍏冩暟鎹紙妯″瀷锛夌紦瀛樼浉鍏崇殑閰嶇疆 END ###########################################
diff --git a/Bin/lib/common/plt-common/properties/log4j2.xml b/Bin/lib/common/plt-common/properties/log4j2.xml
deleted file mode 100644
index 0c48fc2..0000000
--- a/Bin/lib/common/plt-common/properties/log4j2.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Configuration status="WARN">
-    <Appenders>
-        <Console name="Console" target="SYSTEM_OUT">
-            <PatternLayout pattern="[%-5p] %d{YYYY-MM-dd HH:mm:ss} [%t] %c{1}:%L - %msg%n" />
-        </Console>
- 
-        <RollingFile name="RollingFile" filename="./logs/server_log.log" filepattern="${logPath}/server_%d{YYYYMMddHHmmss}.log">
-            <PatternLayout pattern="[%-5p] %d{YYYY-MM-dd HH:mm:ss} [%t] %c{1}:%L - %msg%n" />
-            <Policies>
-                <SizeBasedTriggeringPolicy size="10 MB" />
-            </Policies>
-            <DefaultRolloverStrategy max="20" />
-        </RollingFile>
- 
-    </Appenders>
-    <Loggers>
-        <Logger name="ServerLog" level="DEBUG" additivity="true">
-        	<AppenderRef ref="Console" />
-            <AppenderRef ref="RollingFile" />
-        </Logger>
-        <Root level="ERROR">
-            <AppenderRef ref="Console" />
-            <AppenderRef ref="RollingFile" />
-        </Root>
-    </Loggers>
-</Configuration>
diff --git a/Bin/lib/common/plt-slice.jar b/Bin/lib/common/plt-slice.jar
deleted file mode 100644
index 96264cf..0000000
--- a/Bin/lib/common/plt-slice.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/common/spring-core-3.2.0.RELEASE.jar b/Bin/lib/common/spring-core-3.2.0.RELEASE.jar
deleted file mode 100644
index 1d4dffb..0000000
--- a/Bin/lib/common/spring-core-3.2.0.RELEASE.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/BOFService.jar b/Bin/lib/service/BOFService.jar
deleted file mode 100644
index 02856bd..0000000
--- a/Bin/lib/service/BOFService.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/CacheService.jar b/Bin/lib/service/CacheService.jar
deleted file mode 100644
index 28856b3..0000000
--- a/Bin/lib/service/CacheService.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/FrameService.jar b/Bin/lib/service/FrameService.jar
deleted file mode 100644
index e8bf9a2..0000000
--- a/Bin/lib/service/FrameService.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/OMDService.jar b/Bin/lib/service/OMDService.jar
deleted file mode 100644
index a4a1419..0000000
--- a/Bin/lib/service/OMDService.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/OQService.jar b/Bin/lib/service/OQService.jar
deleted file mode 100644
index 64cc1fe..0000000
--- a/Bin/lib/service/OQService.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/ServiceBase.jar b/Bin/lib/service/ServiceBase.jar
deleted file mode 100644
index 9b3cc0d..0000000
--- a/Bin/lib/service/ServiceBase.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService.jar b/Bin/lib/service/UIService.jar
deleted file mode 100644
index 3bdfbb9..0000000
--- a/Bin/lib/service/UIService.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/META-INF/MANIFEST.MF b/Bin/lib/service/UIService/META-INF/MANIFEST.MF
deleted file mode 100644
index 2de5caa..0000000
--- a/Bin/lib/service/UIService/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,8 +0,0 @@
-Manifest-Version: 1.0
-Ant-Version: Apache Ant 1.10.12
-Created-By: 17.0.8.1+1 (Eclipse Adoptium)
-Built-By: Jason
-Implementation-Title: platform-UIService
-Built-Time: 2024.03.01.10.07
-platform-version: 2024
-
diff --git a/Bin/lib/service/UIService/com/vci/server/UIBoxService.class b/Bin/lib/service/UIService/com/vci/server/UIBoxService.class
deleted file mode 100644
index 85ddb65..0000000
--- a/Bin/lib/service/UIService/com/vci/server/UIBoxService.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/PortalServiceImpl.class b/Bin/lib/service/UIService/com/vci/server/portal/PortalServiceImpl.class
deleted file mode 100644
index 13a505b..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/PortalServiceImpl.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/cache/ActionCacheUtil.class b/Bin/lib/service/UIService/com/vci/server/portal/cache/ActionCacheUtil.class
deleted file mode 100644
index 6eb1393..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/cache/ActionCacheUtil.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/cache/ActionClsCacheUtil.class b/Bin/lib/service/UIService/com/vci/server/portal/cache/ActionClsCacheUtil.class
deleted file mode 100644
index 16fde02..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/cache/ActionClsCacheUtil.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/cache/ActionParamCacheUtil.class b/Bin/lib/service/UIService/com/vci/server/portal/cache/ActionParamCacheUtil.class
deleted file mode 100644
index 2936363..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/cache/ActionParamCacheUtil.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/cache/ButtonParamCacheUtil.class b/Bin/lib/service/UIService/com/vci/server/portal/cache/ButtonParamCacheUtil.class
deleted file mode 100644
index 92ae338..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/cache/ButtonParamCacheUtil.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/cache/ComponentBtnCacheUtil.class b/Bin/lib/service/UIService/com/vci/server/portal/cache/ComponentBtnCacheUtil.class
deleted file mode 100644
index d0e8ece..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/cache/ComponentBtnCacheUtil.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/cache/ComponentCacheUtil.class b/Bin/lib/service/UIService/com/vci/server/portal/cache/ComponentCacheUtil.class
deleted file mode 100644
index e0b8eff..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/cache/ComponentCacheUtil.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/cache/PortalVICacheUtil.class b/Bin/lib/service/UIService/com/vci/server/portal/cache/PortalVICacheUtil.class
deleted file mode 100644
index d922d81..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/cache/PortalVICacheUtil.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/cache/TabPageCacheUtil.class b/Bin/lib/service/UIService/com/vci/server/portal/cache/TabPageCacheUtil.class
deleted file mode 100644
index 35e35b5..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/cache/TabPageCacheUtil.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/cache/UICacheBaseUtil.class b/Bin/lib/service/UIService/com/vci/server/portal/cache/UICacheBaseUtil.class
deleted file mode 100644
index 1b3589d..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/cache/UICacheBaseUtil.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/cache/UICacheNames.class b/Bin/lib/service/UIService/com/vci/server/portal/cache/UICacheNames.class
deleted file mode 100644
index 6173b65..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/cache/UICacheNames.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/cache/UIContextCacheUtil.class b/Bin/lib/service/UIService/com/vci/server/portal/cache/UIContextCacheUtil.class
deleted file mode 100644
index d3d9641..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/cache/UIContextCacheUtil.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/dao/PLActionClsEntityDao.class b/Bin/lib/service/UIService/com/vci/server/portal/dao/PLActionClsEntityDao.class
deleted file mode 100644
index 42d80a7..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/dao/PLActionClsEntityDao.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/dao/PLActionEntityDao.class b/Bin/lib/service/UIService/com/vci/server/portal/dao/PLActionEntityDao.class
deleted file mode 100644
index 58163bc..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/dao/PLActionEntityDao.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/dao/PLActionParamEntityDao.class b/Bin/lib/service/UIService/com/vci/server/portal/dao/PLActionParamEntityDao.class
deleted file mode 100644
index 652f400..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/dao/PLActionParamEntityDao.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/dao/PLCommandParameterEntityDao.class b/Bin/lib/service/UIService/com/vci/server/portal/dao/PLCommandParameterEntityDao.class
deleted file mode 100644
index d88be2a..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/dao/PLCommandParameterEntityDao.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/dao/PLPageDefinationEntityDao.class b/Bin/lib/service/UIService/com/vci/server/portal/dao/PLPageDefinationEntityDao.class
deleted file mode 100644
index d5bc4ba..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/dao/PLPageDefinationEntityDao.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/dao/PLTabButtonEntityDao.class b/Bin/lib/service/UIService/com/vci/server/portal/dao/PLTabButtonEntityDao.class
deleted file mode 100644
index 8c3e617..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/dao/PLTabButtonEntityDao.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/dao/PLTabPageEntityDao.class b/Bin/lib/service/UIService/com/vci/server/portal/dao/PLTabPageEntityDao.class
deleted file mode 100644
index d29abfa..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/dao/PLTabPageEntityDao.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/dao/PLTypeActionEntityDao.class b/Bin/lib/service/UIService/com/vci/server/portal/dao/PLTypeActionEntityDao.class
deleted file mode 100644
index 0d24a0b..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/dao/PLTypeActionEntityDao.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/dao/PLUILayoutEntityDao.class b/Bin/lib/service/UIService/com/vci/server/portal/dao/PLUILayoutEntityDao.class
deleted file mode 100644
index 2e060f8..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/dao/PLUILayoutEntityDao.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/dao/PortalVIEntityDao.class b/Bin/lib/service/UIService/com/vci/server/portal/dao/PortalVIEntityDao.class
deleted file mode 100644
index c172d0c..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/dao/PortalVIEntityDao.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/dao/impl/PLActionClsEntityDaoImp.class b/Bin/lib/service/UIService/com/vci/server/portal/dao/impl/PLActionClsEntityDaoImp.class
deleted file mode 100644
index 98835d2..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/dao/impl/PLActionClsEntityDaoImp.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/dao/impl/PLActionEntityDaoImpl.class b/Bin/lib/service/UIService/com/vci/server/portal/dao/impl/PLActionEntityDaoImpl.class
deleted file mode 100644
index 295f483..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/dao/impl/PLActionEntityDaoImpl.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/dao/impl/PLActionParamEntityDaoImp.class b/Bin/lib/service/UIService/com/vci/server/portal/dao/impl/PLActionParamEntityDaoImp.class
deleted file mode 100644
index e18be54..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/dao/impl/PLActionParamEntityDaoImp.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/dao/impl/PLCommandParameterEntityDaoImpl.class b/Bin/lib/service/UIService/com/vci/server/portal/dao/impl/PLCommandParameterEntityDaoImpl.class
deleted file mode 100644
index 45c00dc..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/dao/impl/PLCommandParameterEntityDaoImpl.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/dao/impl/PLPageDefinationEntityDaoImpl.class b/Bin/lib/service/UIService/com/vci/server/portal/dao/impl/PLPageDefinationEntityDaoImpl.class
deleted file mode 100644
index b02b06c..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/dao/impl/PLPageDefinationEntityDaoImpl.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/dao/impl/PLTabButtonEntityDaoImpl.class b/Bin/lib/service/UIService/com/vci/server/portal/dao/impl/PLTabButtonEntityDaoImpl.class
deleted file mode 100644
index a5d7315..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/dao/impl/PLTabButtonEntityDaoImpl.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/dao/impl/PLTabPageEntityDaoImpl.class b/Bin/lib/service/UIService/com/vci/server/portal/dao/impl/PLTabPageEntityDaoImpl.class
deleted file mode 100644
index ac6816e..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/dao/impl/PLTabPageEntityDaoImpl.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/dao/impl/PLTypeActionEntityDaoImpl.class b/Bin/lib/service/UIService/com/vci/server/portal/dao/impl/PLTypeActionEntityDaoImpl.class
deleted file mode 100644
index cd7a92c..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/dao/impl/PLTypeActionEntityDaoImpl.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/dao/impl/PLUILayoutEntityDaoImpl.class b/Bin/lib/service/UIService/com/vci/server/portal/dao/impl/PLUILayoutEntityDaoImpl.class
deleted file mode 100644
index 87aec58..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/dao/impl/PLUILayoutEntityDaoImpl.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/dao/impl/PortalVIEntityDaoImpl.class b/Bin/lib/service/UIService/com/vci/server/portal/dao/impl/PortalVIEntityDaoImpl.class
deleted file mode 100644
index 41f13d8..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/dao/impl/PortalVIEntityDaoImpl.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/delegate/IPortalServiceDelegate.class b/Bin/lib/service/UIService/com/vci/server/portal/delegate/IPortalServiceDelegate.class
deleted file mode 100644
index 768075f..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/delegate/IPortalServiceDelegate.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/delegate/PortalServiceDelegate$1.class b/Bin/lib/service/UIService/com/vci/server/portal/delegate/PortalServiceDelegate$1.class
deleted file mode 100644
index 74ecfc4..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/delegate/PortalServiceDelegate$1.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/delegate/PortalServiceDelegate$2.class b/Bin/lib/service/UIService/com/vci/server/portal/delegate/PortalServiceDelegate$2.class
deleted file mode 100644
index 9601359..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/delegate/PortalServiceDelegate$2.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/delegate/PortalServiceDelegate.class b/Bin/lib/service/UIService/com/vci/server/portal/delegate/PortalServiceDelegate.class
deleted file mode 100644
index 2ca9bf2..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/delegate/PortalServiceDelegate.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/entity/PLActionClsEntity.class b/Bin/lib/service/UIService/com/vci/server/portal/entity/PLActionClsEntity.class
deleted file mode 100644
index 2b74723..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/entity/PLActionClsEntity.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/entity/PLActionEntity.class b/Bin/lib/service/UIService/com/vci/server/portal/entity/PLActionEntity.class
deleted file mode 100644
index 90c8a6f..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/entity/PLActionEntity.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/entity/PLActionParamEntity.class b/Bin/lib/service/UIService/com/vci/server/portal/entity/PLActionParamEntity.class
deleted file mode 100644
index 9d4cb62..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/entity/PLActionParamEntity.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/entity/PLCommandParameterEntity.class b/Bin/lib/service/UIService/com/vci/server/portal/entity/PLCommandParameterEntity.class
deleted file mode 100644
index 41cb0c7..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/entity/PLCommandParameterEntity.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/entity/PLPageDefinationEntity.class b/Bin/lib/service/UIService/com/vci/server/portal/entity/PLPageDefinationEntity.class
deleted file mode 100644
index 61d52b5..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/entity/PLPageDefinationEntity.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/entity/PLTabButtonEntity.class b/Bin/lib/service/UIService/com/vci/server/portal/entity/PLTabButtonEntity.class
deleted file mode 100644
index 516ee6d..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/entity/PLTabButtonEntity.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/entity/PLTabPageEntity.class b/Bin/lib/service/UIService/com/vci/server/portal/entity/PLTabPageEntity.class
deleted file mode 100644
index 5cf7cb9..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/entity/PLTabPageEntity.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/entity/PLTypeActionEntity.class b/Bin/lib/service/UIService/com/vci/server/portal/entity/PLTypeActionEntity.class
deleted file mode 100644
index 3faca4e..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/entity/PLTypeActionEntity.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/entity/PLUILayoutEntity.class b/Bin/lib/service/UIService/com/vci/server/portal/entity/PLUILayoutEntity.class
deleted file mode 100644
index 8481fe1..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/entity/PLUILayoutEntity.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/entity/PortalVIEntity.class b/Bin/lib/service/UIService/com/vci/server/portal/entity/PortalVIEntity.class
deleted file mode 100644
index 8232ff5..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/entity/PortalVIEntity.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/hbm/PLActionClsEntity.hbm.xml b/Bin/lib/service/UIService/com/vci/server/portal/hbm/PLActionClsEntity.hbm.xml
deleted file mode 100644
index e978830..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/hbm/PLActionClsEntity.hbm.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
-"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
-<hibernate-mapping package="">
-    <class name="com.vci.server.portal.entity.PLActionClsEntity" table="PLACTIONCLS" 
-    dynamic-update="true" dynamic-insert="true">
-    	<id name="oid" type="java.lang.String">
-            <column name="OID" not-null="true"/>
-            <generator class="assigned" />
-        </id>
-        <property name="name" type="java.lang.String">
-            <column name="NAME"/>
-        </property>
-        <property name="pid" type="java.lang.String">
-            <column name="PID"/>
-        </property>
-        <property name="description" type="java.lang.String">
-            <column name="DESCRIPTION"/>
-        </property>
-        <property name="creator" type="java.lang.String">
-            <column name="CREATOR"/>
-        </property>
-        <property name="createTime" type="java.util.Date">
-            <column name="CREATETIME"/>
-        </property>
-        <property name="serialNo" type="java.lang.Short">
-            <column name="SERIALNO"/>
-        </property>              
-    </class>
-</hibernate-mapping>
\ No newline at end of file
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/hbm/PLActionEntity.hbm.xml b/Bin/lib/service/UIService/com/vci/server/portal/hbm/PLActionEntity.hbm.xml
deleted file mode 100644
index 2009e52..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/hbm/PLActionEntity.hbm.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
-"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
-<hibernate-mapping package="">
-    <class name="com.vci.server.portal.entity.PLActionEntity" table="PLACTION" 
-    dynamic-update="true" dynamic-insert="true">
-    	<id name="plOId" type="java.lang.String">
-            <column name="PLOID" not-null="true" />
-            <generator class="assigned" />
-        </id>
-        <property name="plCode" type="java.lang.String">
-            <column name="PLCODE" not-null="true" />
-        </property>
-        <property name="plName" type="java.lang.String">
-            <column name="PLNAME" not-null="true" />
-        </property>
-        <property name="plBSUrl" type="java.lang.String">
-            <column name="PLBSURL" not-null="false" />
-        </property>
-        <property name="plCSClass" type="java.lang.String">
-            <column name="PLCSCLASS" not-null="false" />
-        </property>
-        <property name="plDesc" type="java.lang.String">
-            <column name="plDesc" not-null="false" />
-        </property>
-        <property name="plTypeType" type="java.lang.String">
-            <column name="plTypeType" not-null="true" />
-        </property>
-        <property name="plCreateTime" type="java.util.Date">
-            <column name="plCreateTime" not-null="true" />
-        </property>
-        <property name="plCreateUser" type="java.lang.String">
-            <column name="plCreateUser" not-null="true" />
-        </property>
-        <property name="plModifyTime" type="java.util.Date">
-            <column name="plModifyTime" not-null="true" />
-        </property>
-        <property name="plModifyUser" type="java.lang.String">
-            <column name="plModifyUser" not-null="true" />
-        </property>
-        <property name="plLicensOrs" type="java.lang.String">
-            <column name="plLicensOrs" not-null="false" />
-        </property>
-        <property name="plActionCls" type="java.lang.String">
-            <column name="plActionCls" not-null="false" />
-        </property>
-    </class>
-</hibernate-mapping>
\ No newline at end of file
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/hbm/PLActionParamEntity.hbm.xml b/Bin/lib/service/UIService/com/vci/server/portal/hbm/PLActionParamEntity.hbm.xml
deleted file mode 100644
index 0f5b318..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/hbm/PLActionParamEntity.hbm.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
-"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
-<hibernate-mapping package="">
-    <class name="com.vci.server.portal.entity.PLActionParamEntity" table="PLACTIONPARAM" 
-    dynamic-update="true" dynamic-insert="true">
-    	<id name="oid" type="java.lang.String">
-            <column name="OID" not-null="true"/>
-            <generator class="assigned" />
-        </id>
-        <property name="name" type="java.lang.String">
-            <column name="NAME"/>
-        </property>
-        <property name="defaultValue" type="java.lang.String">
-            <column name="DEFAULTVALUE"/>
-        </property>
-        <property name="description" type="java.lang.String">
-            <column name="DESCRIPTION"/>
-        </property>  
-        <property name="action" type="java.lang.String">
-            <column name="ACTION"/>
-        </property>              
-    </class>
-</hibernate-mapping>
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/hbm/PLCommandParameterEntity.hbm.xml b/Bin/lib/service/UIService/com/vci/server/portal/hbm/PLCommandParameterEntity.hbm.xml
deleted file mode 100644
index 673d4b2..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/hbm/PLCommandParameterEntity.hbm.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
-"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
-<hibernate-mapping package="">
-    <class name="com.vci.server.portal.entity.PLCommandParameterEntity" table="PLCommandParameter" 
-    dynamic-update="true" dynamic-insert="true">
-    	<id name="plOId" type="java.lang.String">
-            <column name="PLOID" not-null="true" />
-            <generator class="assigned" />
-        </id>
-        <property name="plCommandOId" type="java.lang.String">
-            <column name="plCommandOId" not-null="true" />
-        </property>
-        <property name="plKey" type="java.lang.String">
-            <column name="plKey" not-null="true" />
-        </property>
-        <property name="plValue" type="java.lang.String">
-            <column name="plValue" not-null="true" />
-        </property>
-        <property name="plCreateTime" type="java.util.Date">
-            <column name="plCreateTime" not-null="true" />
-        </property>
-        <property name="plCreateUser" type="java.lang.String">
-            <column name="plCreateUser" not-null="true" />
-        </property>
-        <property name="plModifyTime" type="java.util.Date">
-            <column name="plModifyTime" not-null="true" />
-        </property>
-        <property name="plModifyUser" type="java.lang.String">
-            <column name="plModifyUser" not-null="true" />
-        </property>
-        <property name="plLicensOrs" type="java.lang.String">
-            <column name="plLicensOrs" not-null="false" />
-        </property>
-    </class>
-</hibernate-mapping>
\ No newline at end of file
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/hbm/PLPageDefinationEntity.hbm.xml b/Bin/lib/service/UIService/com/vci/server/portal/hbm/PLPageDefinationEntity.hbm.xml
deleted file mode 100644
index 94c824b..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/hbm/PLPageDefinationEntity.hbm.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
-"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
-<hibernate-mapping package="">
-    <class name="com.vci.server.portal.entity.PLPageDefinationEntity" table="PLPAGEDEFINATION" 
-    dynamic-update="true" dynamic-insert="true">
-    	<id name="plOId" type="java.lang.String">
-            <column name="PLOID" not-null="true" />
-            <generator class="assigned" />
-        </id>
-        <property name="plTabPageOId" type="java.lang.String">
-            <column name="plPageContextOId" not-null="true" />
-        </property>
-        <property name="plType" type="java.lang.Short">
-            <column name="plType" not-null="true" />
-        </property>
-        <property name="plDefination" type="text">
-            <column name="plDefination" not-null="false" />
-        </property>
-        <property name="name" type="java.lang.String">
-            <column name="plname" not-null="false" />
-        </property>
-        <property name="desc" type="java.lang.String">
-            <column name="pldesc" not-null="false" />
-        </property>
-        <property name="seq" type="java.lang.Short">
-            <column name="plseq" not-null="false" />
-        </property>
-    </class>
-</hibernate-mapping>
\ No newline at end of file
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/hbm/PLTabButtonEntity.hbm.xml b/Bin/lib/service/UIService/com/vci/server/portal/hbm/PLTabButtonEntity.hbm.xml
deleted file mode 100644
index 966c7f6..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/hbm/PLTabButtonEntity.hbm.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
-"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
-<hibernate-mapping package="">
-    <class name="com.vci.server.portal.entity.PLTabButtonEntity" table="PLTabButton" 
-    dynamic-update="true" dynamic-insert="true">
-    	<id name="plOId" type="java.lang.String">
-            <column name="PLOID" not-null="true" />
-            <generator class="assigned" />
-        </id>
-         <property name="plTableOId" type="java.lang.String">
-            <column name="plTableOId" not-null="false" />
-        </property>
-        <property name="plPageOId" type="java.lang.String">
-            <column name="plPageOId" not-null="false" />
-        </property>
-        <property name="plActionOId" type="java.lang.String">
-            <column name="plActionOId" not-null="false" />
-        </property>
-        <property name="plLabel" type="java.lang.String">
-            <column name="plLabel" not-null="false" />
-        </property>
-        <property name="plAreaType" type="java.lang.String">
-            <column name="PLAREATYPE" not-null="false" />
-        </property>
-        <property name="plDesc" type="java.lang.String">
-            <column name="plDesc" not-null="false" />
-        </property>
-        <property name="plSeq" type="java.lang.Short">
-            <column name="plSeq" not-null="true" />
-        </property>
-        <property name="plCreateTime" type="java.util.Date">
-            <column name="plCreateTime" not-null="true" />
-        </property>
-        <property name="plCreateUser" type="java.lang.String">
-            <column name="plCreateUser" not-null="true" />
-        </property>
-        <property name="plModifyTime" type="java.util.Date">
-            <column name="plModifyTime" not-null="true" />
-        </property>
-        <property name="plModifyUser" type="java.lang.String">
-            <column name="plModifyUser" not-null="true" />
-        </property>
-        <property name="plLicensOrs" type="java.lang.String">
-            <column name="plLicensOrs" not-null="false" />
-        </property>
-        <property name="plParentOid" type="java.lang.String">
-            <column name="PLPARENTOID" not-null="false" />
-        </property>
-        <property name="displayMode" type="java.lang.String">
-            <column name="PLDISPLAYMODE" not-null="false" />
-        </property>
-        <property name="iconPath" type="java.lang.String">
-            <column name="PLICONPATH" not-null="false" />
-        </property>
-        <property name="authorization" type="java.lang.String">
-            <column name="AUTHORIZATION" not-null="false" />
-        </property>
-        <property name="show" type="java.lang.String">
-            <column name="PLSHOW" not-null="false" />
-        </property>
-    </class>
-</hibernate-mapping>
\ No newline at end of file
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/hbm/PLTabPageEntity.hbm.xml b/Bin/lib/service/UIService/com/vci/server/portal/hbm/PLTabPageEntity.hbm.xml
deleted file mode 100644
index b13cde7..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/hbm/PLTabPageEntity.hbm.xml
+++ /dev/null
@@ -1,61 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
-"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
-<hibernate-mapping package="">
-    <class name="com.vci.server.portal.entity.PLTabPageEntity" table="PLTabPage" 
-    dynamic-update="true" dynamic-insert="true">
-    	<id name="plOId" type="java.lang.String">
-            <column name="PLOID" not-null="true" />
-            <generator class="assigned" />
-        </id>
-        <property name="plCode" type="java.lang.String">
-            <column name="PLCODE" not-null="true" />
-        </property>
-        <property name="plName" type="java.lang.String">
-            <column name="PLNAME" not-null="true" />
-        </property>
-        <property name="plIsOpen" type="java.lang.Short">
-            <column name="plIsOpen" not-null="true" />
-        </property>
-        <property name="plLabel" type="java.lang.String">
-            <column name="plLabel" not-null="false" />
-        </property>
-        <property name="plDesc" type="java.lang.String">
-            <column name="plDesc" not-null="false" />
-        </property>
-        <property name="plSeq" type="java.lang.Short">
-            <column name="plSeq" not-null="true" />
-        </property>
-        <property name="plContextOId" type="java.lang.String">
-            <column name="plPageDefinationOId" not-null="true" />
-        </property>
-        <property name="areaType" type="java.lang.Short">
-            <column name="PLAREATYPE" not-null="true" />
-        </property>
-        <property name="plCreateTime" type="java.util.Date">
-            <column name="plCreateTime" not-null="true" />
-        </property>
-        <property name="plCreateUser" type="java.lang.String">
-            <column name="plCreateUser" not-null="true" />
-        </property>
-        <property name="plModifyTime" type="java.util.Date">
-            <column name="plModifyTime" not-null="true" />
-        </property>
-        <property name="plModifyUser" type="java.lang.String">
-            <column name="plModifyUser" not-null="true" />
-        </property>
-        <property name="plLicensOrs" type="java.lang.String">
-            <column name="plLicensOrs" not-null="false" />
-        </property>
-        <property name="plOpenExpression" type="java.lang.String">
-            <column name="plopenexpression" not-null="false" />
-        </property>
-        
-        <property name="plUIParser" type="java.lang.String">
-            <column name="PLUIPARSER" not-null="false" />
-        </property>
-        <property name="plExtAttr" type="java.lang.String">
-            <column name="PLEXTATTR" not-null="false" />
-        </property>
-    </class>
-</hibernate-mapping>
\ No newline at end of file
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/hbm/PLTypeActionEntity.hbm.xml b/Bin/lib/service/UIService/com/vci/server/portal/hbm/PLTypeActionEntity.hbm.xml
deleted file mode 100644
index d60adac..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/hbm/PLTypeActionEntity.hbm.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
-"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
-<hibernate-mapping package="">
-    <class name="com.vci.server.portal.entity.PLTypeActionEntity" table="PLTYPEACTION" 
-    dynamic-update="true" dynamic-insert="true">
-    	<id name="plOId" type="java.lang.String">
-            <column name="PLOID" not-null="true" />
-            <generator class="assigned" />
-        </id>
-        <property name="typeName" type="java.lang.String">
-            <column name="typeName" not-null="true" />
-        </property>
-        <property name="actionoId" type="java.lang.String">
-            <column name="actionoId" not-null="true" />
-        </property>
-    </class>
-</hibernate-mapping>
\ No newline at end of file
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/hbm/PLUILayoutEntity.hbm.xml b/Bin/lib/service/UIService/com/vci/server/portal/hbm/PLUILayoutEntity.hbm.xml
deleted file mode 100644
index 2208118..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/hbm/PLUILayoutEntity.hbm.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
-"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
-<hibernate-mapping package="">
-    <class name="com.vci.server.portal.entity.PLUILayoutEntity" table="PLUILayout" 
-    dynamic-update="true" dynamic-insert="true">
-    	<id name="plOId" type="java.lang.String">
-            <column name="PLOID" not-null="true" />
-            <generator class="assigned" />
-        </id>
-        <property name="plCode" type="java.lang.String">
-            <column name="PLCODE" not-null="true" />
-        </property>
-        <property name="plName" type="java.lang.String">
-            <column name="PLNAME" not-null="true" />
-        </property>
-        <property name="plRelatedType" type="java.lang.String">
-            <column name="plRelatedType" not-null="true" />
-        </property>
-        <property name="plStyle" type="java.lang.String">
-            <column name="plStyle" />
-        </property>
-        <property name="plDesc" type="java.lang.String">
-            <column name="plDesc" not-null="false" />
-        </property>
-        <property name="plIsShowTab" type="java.lang.Short">
-            <column name="plIsShowTab" not-null="false" />
-        </property>
-        <property name="plIsShowForm" type="java.lang.Short">
-            <column name="plIsShowForm" not-null="false" />
-        </property>
-        <property name="plIsShowNavigator" type="java.lang.Short">
-            <column name="plIsShowNavigator" not-null="false" />
-        </property>
-        <property name="plCreateTime" type="java.util.Date">
-            <column name="plCreateTime" not-null="true" />
-        </property>
-        <property name="plCreateUser" type="java.lang.String">
-            <column name="plCreateUser" not-null="true" />
-        </property>
-        <property name="plModifyTime" type="java.util.Date">
-            <column name="plModifyTime" not-null="true" />
-        </property>
-        <property name="plModifyUser" type="java.lang.String">
-            <column name="plModifyUser" not-null="true" />
-        </property>
-        <property name="plLicensOrs" type="java.lang.String">
-            <column name="plLicensOrs" not-null="false" />
-        </property>
-    </class>
-</hibernate-mapping>
\ No newline at end of file
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/hbm/PortalVIEntity.hbm.xml b/Bin/lib/service/UIService/com/vci/server/portal/hbm/PortalVIEntity.hbm.xml
deleted file mode 100644
index b204158..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/hbm/PortalVIEntity.hbm.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
-"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
-<hibernate-mapping package="">
-    <class name="com.vci.server.portal.entity.PortalVIEntity" table="PLPORTALVI" 
-    dynamic-update="true" dynamic-insert="true">
-    	<id name="id" type="java.lang.String">
-            <column name="ID" not-null="true" />
-            <generator class="assigned" />
-        </id>
-        <property name="typeFlag" type="java.lang.Short">
-            <column name="TYPEFLAG" not-null="false" />
-        </property>
-        <property name="typeName" type="java.lang.String">
-            <column name="TYPENAME" not-null="true" />
-        </property>
-        <property name="viName" type="java.lang.String">
-            <column name="VINAME" not-null="true" />
-        </property>
-        <property name="viType" type="java.lang.Short">
-            <column name="VITYPE" not-null="true" />
-        </property>
-        <property name="prm" type="text">
-            <column name="PRM" not-null="false" />
-        </property>
-    </class>
-</hibernate-mapping>
\ No newline at end of file
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/service/PLActionEntityService.class b/Bin/lib/service/UIService/com/vci/server/portal/service/PLActionEntityService.class
deleted file mode 100644
index ebaa4ce..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/service/PLActionEntityService.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/service/PLCommandParameterEntityService.class b/Bin/lib/service/UIService/com/vci/server/portal/service/PLCommandParameterEntityService.class
deleted file mode 100644
index f87e36d..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/service/PLCommandParameterEntityService.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/service/PLPageDefinationEntityService.class b/Bin/lib/service/UIService/com/vci/server/portal/service/PLPageDefinationEntityService.class
deleted file mode 100644
index a872214..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/service/PLPageDefinationEntityService.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/service/PLTabButtonEntityService.class b/Bin/lib/service/UIService/com/vci/server/portal/service/PLTabButtonEntityService.class
deleted file mode 100644
index 37429b2..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/service/PLTabButtonEntityService.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/service/PLTabPageEntityService.class b/Bin/lib/service/UIService/com/vci/server/portal/service/PLTabPageEntityService.class
deleted file mode 100644
index c9fa05e..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/service/PLTabPageEntityService.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/service/PLTypeActionEntityService.class b/Bin/lib/service/UIService/com/vci/server/portal/service/PLTypeActionEntityService.class
deleted file mode 100644
index caaf19b..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/service/PLTypeActionEntityService.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/service/PLUILayoutEntityService.class b/Bin/lib/service/UIService/com/vci/server/portal/service/PLUILayoutEntityService.class
deleted file mode 100644
index b5ca96f..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/service/PLUILayoutEntityService.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/service/PortalVIEntityService.class b/Bin/lib/service/UIService/com/vci/server/portal/service/PortalVIEntityService.class
deleted file mode 100644
index 865bf8d..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/service/PortalVIEntityService.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/service/UIDeleteService.class b/Bin/lib/service/UIService/com/vci/server/portal/service/UIDeleteService.class
deleted file mode 100644
index 136aac0..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/service/UIDeleteService.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/com/vci/server/portal/tools/ServerTool.class b/Bin/lib/service/UIService/com/vci/server/portal/tools/ServerTool.class
deleted file mode 100644
index 6feeafb..0000000
--- a/Bin/lib/service/UIService/com/vci/server/portal/tools/ServerTool.class
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/UIService/properties/PLMUIService.properties b/Bin/lib/service/UIService/properties/PLMUIService.properties
deleted file mode 100644
index f61a78b..0000000
--- a/Bin/lib/service/UIService/properties/PLMUIService.properties
+++ /dev/null
@@ -1,54 +0,0 @@
-P0010UIService-00001=\u4fdd\u5b58\u89c6\u56fe\u51fa\u9519\uff1a{0}
-P0010UIService-00002=\u66f4\u65b0\u89c6\u56fe\u51fa\u9519\uff1a{0}
-P0010UIService-00003=\u5220\u9664\u89c6\u56fe\u51fa\u9519\uff1a{0}
-P0010UIService-00004=\u83b7\u53d6\u6307\u5b9a\u7c7b\u578b\u4e0b\u7684\u6240\u6709\u89c6\u56fe\u51fa\u9519\uff1a{0}
-P0010UIService-00005=\u83b7\u53d6\u6307\u5b9aID\u7684\u89c6\u56fe\u51fa\u9519\uff1a{0}
-P0010UIService-00006=\u4fdd\u5b58Action\u51fa\u9519\uff1a{0}
-P0010UIService-00007=\u66f4\u65b0Action\u51fa\u9519\uff1a{0}
-P0010UIService-00008=\u5220\u9664Action\u51fa\u9519\uff1a{0}
-P0010UIService-00009=\u4fdd\u5b58command\u53c2\u6570\u51fa\u9519\uff1a{0}
-P0010UIService-00010=\u66f4\u65b0command\u53c2\u6570\u51fa\u9519\uff1a{0}
-P0010UIService-00011=\u5220\u9664command\u53c2\u6570\u51fa\u9519\uff1a{0}
-P0010UIService-00012=\u4fdd\u5b58\u9875\u9762\u5e03\u5c40\u51fa\u9519\uff1a{0}
-P0010UIService-00013=\u66f4\u65b0\u9875\u9762\u5e03\u5c40\u51fa\u9519\uff1a{0}
-P0010UIService-00014=\u5220\u9664\u9875\u9762\u5e03\u5c40\u51fa\u9519\uff1a{0}
-P0010UIService-00015=\u4fdd\u5b58\u9875\u7b7e\u6309\u94ae\u51fa\u9519\uff1a{0}
-P0010UIService-00016=\u66f4\u65b0\u9875\u7b7e\u6309\u94ae\u51fa\u9519\uff1a{0}
-P0010UIService-00017=\u5220\u9664\u9875\u7b7e\u6309\u94ae\u51fa\u9519\uff1a{0}
-P0010UIService-00018=\u4fdd\u5b58\u9875\u7b7e\u51fa\u9519\uff1a{0}
-P0010UIService-00019=\u66f4\u65b0\u9875\u7b7e\u51fa\u9519\uff1a{0}
-P0010UIService-00020=\u5220\u9664\u9875\u7b7e\u51fa\u9519\uff1a{0}
-P0010UIService-00021=\u6839\u636eID\u83b7\u53d6\u6307\u5b9a\u7684PLAction\u51fa\u9519\uff1a{0}
-P0010UIService-00022=\u83b7\u53d6\u6240\u6709PLAction\u51fa\u9519\uff1a{0}
-P0010UIService-00023=\u6839\u636eID\u83b7\u53d6\u6307\u5b9a\u7684PLCommandParameter\u51fa\u9519\uff1a{0}
-P0010UIService-00024=\u6839\u636eplCommandOId\u83b7\u53d6PLCommandParameterArray\u51fa\u9519\uff1a{0}
-P0010UIService-00025=\u6839\u636eID\u83b7\u53d6\u6307\u5b9a\u7684PLPageLayoutDefination\u51fa\u9519\uff1a{0}
-P0010UIService-00026=\u6839\u636e\u5173\u8054\u7c7b\u578b\u83b7\u53d6PLPageLayoutDefinationArray\u51fa\u9519\uff1a{0}
-P0010UIService-00027=\u6839\u636eID\u83b7\u53d6\u6307\u5b9a\u7684PLTabPage\u51fa\u9519\uff1a{0}
-P0010UIService-00028=\u6839\u636eplPageDefinationOId\u83b7\u53d6PLPageLayoutDefinationArray\u51fa\u9519\uff1a{0}
-P0010UIService-00029=\u6839\u636eID\u83b7\u53d6\u6307\u5b9a\u7684PLTabButton\u51fa\u9519\uff1a{0}
-P0010UIService-00030=\u6839\u636eplTableOId\u83b7\u53d6PLTabButtonArray\u51fa\u9519\uff1a{0}
-P0010UIService-00031=\u4fdd\u5b58\u754c\u9762\u51fa\u9519\uff1a{0}
-P0010UIService-00032=\u66f4\u65b0\u754c\u9762\u51fa\u9519\uff1a{0}
-P0010UIService-00033=\u5220\u9664\u754c\u9762\u51fa\u9519\uff1a{0}
-P0010UIService-00034=\u6839\u636eID\u83b7\u53d6\u6307\u5b9a\u7684PLPageDefination\u51fa\u9519\uff1a{0}
-P0010UIService-00035=\u6839\u636eplPageContextOId\u83b7\u53d6\u6307\u5b9a\u7684PLPageDefinationArray\u51fa\u9519\uff1a{0}
-P0010UIService-00036=\u6839\u636etype,code\u83b7\u53d6\u6307\u5b9a\u7684PLTabPage\u51fa\u9519\uff1a{0}
-P0010UIService-00037=\u6839\u636e\u7c7b\u578b\u540d\u548c\u89c6\u56fe\u540d\u83b7\u53d6\u89c6\u56fe\u51fa\u9519\uff1a{0}
-P0010UIService-00038=\u6839\u636e\u7ea6\u675f\u6761\u4ef6\u7ec4\u67e5\u8be2\u6570\u7ec4, \u67e5\u8be2PLActions\u51fa\u9519\uff1a{0}
-P0010UIService-00039=\u6839\u636e\u7ed9\u5b9a\u503c\u6a21\u7cca\u67e5\u8be2\u6570\u7ec4, \u67e5\u8be2PLPageDefinationArray\u51fa\u9519\uff1a{0}
-P0010UIService-00040=\u4fdd\u5b58\u7c7b\u578b\u4e0eaction\u5173\u7cfb\u65f6\u51fa\u9519\uff1a{0}
-P0010UIService-00041=\u5220\u9664\u7c7b\u578b\u4e0eaction\u5173\u7cfb\u65f6\u51fa\u9519\uff1a{0}
-P0010UIService-00042=\u901a\u8fc7\u7c7b\u578b\u67e5\u8be2\u6240\u6709\u7684action\u5bf9\u8c61\u65f6\u51fa\u9519\uff1a{0}
-P0010UIService-00043=\u5224\u65ad\u8868\u5355\u8868\u683c\u4fee\u6539\u540d\u79f0\u65f6\u662f\u5426\u5df2\u7ecf\u88ab\u5f15\u7528\uff1a{0}
-P0010UIService-00044=\u5224\u65ad\u5220\u9664\u8868\u5355\u65f6\u8be5\u8868\u5355\u662f\u5426\u5df2\u7ecf\u88ab\u8868\u683c\u5f15\u7528\uff1a{0}
-P0010UIService-00045=\u6839\u636e\u5173\u8054\u7c7b\u578b\u548c\u7f16\u53f7\u83b7\u53d6PLPageLayoutDefinationArray\u51fa\u9519\uff1a{0}
-P0010UIService-00046=\u91cd\u65b0\u52a0\u8f7d\u7f13\u5b58\u51fa\u73b0\u9519\u8bef\uff0c\u8bf7\u518d\u6b21\u52a0\u8f7d\u6216\u8054\u7cfb\u7ba1\u7406\u5458\u3002{0}
-
-P0010UIService-00047=\u590d\u5236\u9875\u7b7e\u5230\u4e0a\u4e0b\u6587\u65f6\u53d1\u751f\u9519\u8bef\uff01{0}
-P0010UIService-00048=\u590d\u5236\u7ec4\u4ef6\u5230\u9875\u7b7e\u65f6\u53d1\u751f\u9519\u8bef\uff01{0}
-
-common.msg.executingHasError=\u6267\u884c{0}\u65f6\u53d1\u751f\u9519\u8bef\uff01\n{1}
-common.msg.pleaseChooseData=\u8bf7\u5148\u9009\u62e9\u6570\u636e\uff01{0}
-common.msg.onlyChooseOneDataToSomeOpt=\u4e00\u6b21\u53ea\u80fd\u9009\u62e9\u4e00\u6761\u6570\u636e\u8fdb\u884c\u6b64\u64cd\u4f5c\uff01{0}
-common.msg.confirmDelete=\u786e\u5b9a\u8981\u6267\u884c\u5220\u9664\u5417\uff1f{0}
\ No newline at end of file
diff --git a/Bin/lib/service/UIService/properties/PLMUIService_zh.properties b/Bin/lib/service/UIService/properties/PLMUIService_zh.properties
deleted file mode 100644
index f61a78b..0000000
--- a/Bin/lib/service/UIService/properties/PLMUIService_zh.properties
+++ /dev/null
@@ -1,54 +0,0 @@
-P0010UIService-00001=\u4fdd\u5b58\u89c6\u56fe\u51fa\u9519\uff1a{0}
-P0010UIService-00002=\u66f4\u65b0\u89c6\u56fe\u51fa\u9519\uff1a{0}
-P0010UIService-00003=\u5220\u9664\u89c6\u56fe\u51fa\u9519\uff1a{0}
-P0010UIService-00004=\u83b7\u53d6\u6307\u5b9a\u7c7b\u578b\u4e0b\u7684\u6240\u6709\u89c6\u56fe\u51fa\u9519\uff1a{0}
-P0010UIService-00005=\u83b7\u53d6\u6307\u5b9aID\u7684\u89c6\u56fe\u51fa\u9519\uff1a{0}
-P0010UIService-00006=\u4fdd\u5b58Action\u51fa\u9519\uff1a{0}
-P0010UIService-00007=\u66f4\u65b0Action\u51fa\u9519\uff1a{0}
-P0010UIService-00008=\u5220\u9664Action\u51fa\u9519\uff1a{0}
-P0010UIService-00009=\u4fdd\u5b58command\u53c2\u6570\u51fa\u9519\uff1a{0}
-P0010UIService-00010=\u66f4\u65b0command\u53c2\u6570\u51fa\u9519\uff1a{0}
-P0010UIService-00011=\u5220\u9664command\u53c2\u6570\u51fa\u9519\uff1a{0}
-P0010UIService-00012=\u4fdd\u5b58\u9875\u9762\u5e03\u5c40\u51fa\u9519\uff1a{0}
-P0010UIService-00013=\u66f4\u65b0\u9875\u9762\u5e03\u5c40\u51fa\u9519\uff1a{0}
-P0010UIService-00014=\u5220\u9664\u9875\u9762\u5e03\u5c40\u51fa\u9519\uff1a{0}
-P0010UIService-00015=\u4fdd\u5b58\u9875\u7b7e\u6309\u94ae\u51fa\u9519\uff1a{0}
-P0010UIService-00016=\u66f4\u65b0\u9875\u7b7e\u6309\u94ae\u51fa\u9519\uff1a{0}
-P0010UIService-00017=\u5220\u9664\u9875\u7b7e\u6309\u94ae\u51fa\u9519\uff1a{0}
-P0010UIService-00018=\u4fdd\u5b58\u9875\u7b7e\u51fa\u9519\uff1a{0}
-P0010UIService-00019=\u66f4\u65b0\u9875\u7b7e\u51fa\u9519\uff1a{0}
-P0010UIService-00020=\u5220\u9664\u9875\u7b7e\u51fa\u9519\uff1a{0}
-P0010UIService-00021=\u6839\u636eID\u83b7\u53d6\u6307\u5b9a\u7684PLAction\u51fa\u9519\uff1a{0}
-P0010UIService-00022=\u83b7\u53d6\u6240\u6709PLAction\u51fa\u9519\uff1a{0}
-P0010UIService-00023=\u6839\u636eID\u83b7\u53d6\u6307\u5b9a\u7684PLCommandParameter\u51fa\u9519\uff1a{0}
-P0010UIService-00024=\u6839\u636eplCommandOId\u83b7\u53d6PLCommandParameterArray\u51fa\u9519\uff1a{0}
-P0010UIService-00025=\u6839\u636eID\u83b7\u53d6\u6307\u5b9a\u7684PLPageLayoutDefination\u51fa\u9519\uff1a{0}
-P0010UIService-00026=\u6839\u636e\u5173\u8054\u7c7b\u578b\u83b7\u53d6PLPageLayoutDefinationArray\u51fa\u9519\uff1a{0}
-P0010UIService-00027=\u6839\u636eID\u83b7\u53d6\u6307\u5b9a\u7684PLTabPage\u51fa\u9519\uff1a{0}
-P0010UIService-00028=\u6839\u636eplPageDefinationOId\u83b7\u53d6PLPageLayoutDefinationArray\u51fa\u9519\uff1a{0}
-P0010UIService-00029=\u6839\u636eID\u83b7\u53d6\u6307\u5b9a\u7684PLTabButton\u51fa\u9519\uff1a{0}
-P0010UIService-00030=\u6839\u636eplTableOId\u83b7\u53d6PLTabButtonArray\u51fa\u9519\uff1a{0}
-P0010UIService-00031=\u4fdd\u5b58\u754c\u9762\u51fa\u9519\uff1a{0}
-P0010UIService-00032=\u66f4\u65b0\u754c\u9762\u51fa\u9519\uff1a{0}
-P0010UIService-00033=\u5220\u9664\u754c\u9762\u51fa\u9519\uff1a{0}
-P0010UIService-00034=\u6839\u636eID\u83b7\u53d6\u6307\u5b9a\u7684PLPageDefination\u51fa\u9519\uff1a{0}
-P0010UIService-00035=\u6839\u636eplPageContextOId\u83b7\u53d6\u6307\u5b9a\u7684PLPageDefinationArray\u51fa\u9519\uff1a{0}
-P0010UIService-00036=\u6839\u636etype,code\u83b7\u53d6\u6307\u5b9a\u7684PLTabPage\u51fa\u9519\uff1a{0}
-P0010UIService-00037=\u6839\u636e\u7c7b\u578b\u540d\u548c\u89c6\u56fe\u540d\u83b7\u53d6\u89c6\u56fe\u51fa\u9519\uff1a{0}
-P0010UIService-00038=\u6839\u636e\u7ea6\u675f\u6761\u4ef6\u7ec4\u67e5\u8be2\u6570\u7ec4, \u67e5\u8be2PLActions\u51fa\u9519\uff1a{0}
-P0010UIService-00039=\u6839\u636e\u7ed9\u5b9a\u503c\u6a21\u7cca\u67e5\u8be2\u6570\u7ec4, \u67e5\u8be2PLPageDefinationArray\u51fa\u9519\uff1a{0}
-P0010UIService-00040=\u4fdd\u5b58\u7c7b\u578b\u4e0eaction\u5173\u7cfb\u65f6\u51fa\u9519\uff1a{0}
-P0010UIService-00041=\u5220\u9664\u7c7b\u578b\u4e0eaction\u5173\u7cfb\u65f6\u51fa\u9519\uff1a{0}
-P0010UIService-00042=\u901a\u8fc7\u7c7b\u578b\u67e5\u8be2\u6240\u6709\u7684action\u5bf9\u8c61\u65f6\u51fa\u9519\uff1a{0}
-P0010UIService-00043=\u5224\u65ad\u8868\u5355\u8868\u683c\u4fee\u6539\u540d\u79f0\u65f6\u662f\u5426\u5df2\u7ecf\u88ab\u5f15\u7528\uff1a{0}
-P0010UIService-00044=\u5224\u65ad\u5220\u9664\u8868\u5355\u65f6\u8be5\u8868\u5355\u662f\u5426\u5df2\u7ecf\u88ab\u8868\u683c\u5f15\u7528\uff1a{0}
-P0010UIService-00045=\u6839\u636e\u5173\u8054\u7c7b\u578b\u548c\u7f16\u53f7\u83b7\u53d6PLPageLayoutDefinationArray\u51fa\u9519\uff1a{0}
-P0010UIService-00046=\u91cd\u65b0\u52a0\u8f7d\u7f13\u5b58\u51fa\u73b0\u9519\u8bef\uff0c\u8bf7\u518d\u6b21\u52a0\u8f7d\u6216\u8054\u7cfb\u7ba1\u7406\u5458\u3002{0}
-
-P0010UIService-00047=\u590d\u5236\u9875\u7b7e\u5230\u4e0a\u4e0b\u6587\u65f6\u53d1\u751f\u9519\u8bef\uff01{0}
-P0010UIService-00048=\u590d\u5236\u7ec4\u4ef6\u5230\u9875\u7b7e\u65f6\u53d1\u751f\u9519\u8bef\uff01{0}
-
-common.msg.executingHasError=\u6267\u884c{0}\u65f6\u53d1\u751f\u9519\u8bef\uff01\n{1}
-common.msg.pleaseChooseData=\u8bf7\u5148\u9009\u62e9\u6570\u636e\uff01{0}
-common.msg.onlyChooseOneDataToSomeOpt=\u4e00\u6b21\u53ea\u80fd\u9009\u62e9\u4e00\u6761\u6570\u636e\u8fdb\u884c\u6b64\u64cd\u4f5c\uff01{0}
-common.msg.confirmDelete=\u786e\u5b9a\u8981\u6267\u884c\u5220\u9664\u5417\uff1f{0}
\ No newline at end of file
diff --git a/Bin/lib/service/UIService/properties/PLMUIService_zhNative.properties b/Bin/lib/service/UIService/properties/PLMUIService_zhNative.properties
deleted file mode 100644
index 1333aa1..0000000
--- a/Bin/lib/service/UIService/properties/PLMUIService_zhNative.properties
+++ /dev/null
@@ -1,54 +0,0 @@
-P0010UIService-00001=淇濆瓨瑙嗗浘鍑洪敊锛歿0}
-P0010UIService-00002=鏇存柊瑙嗗浘鍑洪敊锛歿0}
-P0010UIService-00003=鍒犻櫎瑙嗗浘鍑洪敊锛歿0}
-P0010UIService-00004=鑾峰彇鎸囧畾绫诲瀷涓嬬殑鎵�鏈夎鍥惧嚭閿欙細{0}
-P0010UIService-00005=鑾峰彇鎸囧畾ID鐨勮鍥惧嚭閿欙細{0}
-P0010UIService-00006=淇濆瓨Action鍑洪敊锛歿0}
-P0010UIService-00007=鏇存柊Action鍑洪敊锛歿0}
-P0010UIService-00008=鍒犻櫎Action鍑洪敊锛歿0}
-P0010UIService-00009=淇濆瓨command鍙傛暟鍑洪敊锛歿0}
-P0010UIService-00010=鏇存柊command鍙傛暟鍑洪敊锛歿0}
-P0010UIService-00011=鍒犻櫎command鍙傛暟鍑洪敊锛歿0}
-P0010UIService-00012=淇濆瓨椤甸潰甯冨眬鍑洪敊锛歿0}
-P0010UIService-00013=鏇存柊椤甸潰甯冨眬鍑洪敊锛歿0}
-P0010UIService-00014=鍒犻櫎椤甸潰甯冨眬鍑洪敊锛歿0}
-P0010UIService-00015=淇濆瓨椤电鎸夐挳鍑洪敊锛歿0}
-P0010UIService-00016=鏇存柊椤电鎸夐挳鍑洪敊锛歿0}
-P0010UIService-00017=鍒犻櫎椤电鎸夐挳鍑洪敊锛歿0}
-P0010UIService-00018=淇濆瓨椤电鍑洪敊锛歿0}
-P0010UIService-00019=鏇存柊椤电鍑洪敊锛歿0}
-P0010UIService-00020=鍒犻櫎椤电鍑洪敊锛歿0}
-P0010UIService-00021=鏍规嵁ID鑾峰彇鎸囧畾鐨凱LAction鍑洪敊锛歿0}
-P0010UIService-00022=鑾峰彇鎵�鏈塒LAction鍑洪敊锛歿0}
-P0010UIService-00023=鏍规嵁ID鑾峰彇鎸囧畾鐨凱LCommandParameter鍑洪敊锛歿0}
-P0010UIService-00024=鏍规嵁plCommandOId鑾峰彇PLCommandParameterArray鍑洪敊锛歿0}
-P0010UIService-00025=鏍规嵁ID鑾峰彇鎸囧畾鐨凱LPageLayoutDefination鍑洪敊锛歿0}
-P0010UIService-00026=鏍规嵁鍏宠仈绫诲瀷鑾峰彇PLPageLayoutDefinationArray鍑洪敊锛歿0}
-P0010UIService-00027=鏍规嵁ID鑾峰彇鎸囧畾鐨凱LTabPage鍑洪敊锛歿0}
-P0010UIService-00028=鏍规嵁plPageDefinationOId鑾峰彇PLPageLayoutDefinationArray鍑洪敊锛歿0}
-P0010UIService-00029=鏍规嵁ID鑾峰彇鎸囧畾鐨凱LTabButton鍑洪敊锛歿0}
-P0010UIService-00030=鏍规嵁plTableOId鑾峰彇PLTabButtonArray鍑洪敊锛歿0}
-P0010UIService-00031=淇濆瓨鐣岄潰鍑洪敊锛歿0}
-P0010UIService-00032=鏇存柊鐣岄潰鍑洪敊锛歿0}
-P0010UIService-00033=鍒犻櫎鐣岄潰鍑洪敊锛歿0}
-P0010UIService-00034=鏍规嵁ID鑾峰彇鎸囧畾鐨凱LPageDefination鍑洪敊锛歿0}
-P0010UIService-00035=鏍规嵁plPageContextOId鑾峰彇鎸囧畾鐨凱LPageDefinationArray鍑洪敊锛歿0}
-P0010UIService-00036=鏍规嵁type,code鑾峰彇鎸囧畾鐨凱LTabPage鍑洪敊锛歿0}
-P0010UIService-00037=鏍规嵁绫诲瀷鍚嶅拰瑙嗗浘鍚嶈幏鍙栬鍥惧嚭閿欙細{0}
-P0010UIService-00038=鏍规嵁绾︽潫鏉′欢缁勬煡璇㈡暟缁�, 鏌ヨPLActions鍑洪敊锛歿0}
-P0010UIService-00039=鏍规嵁缁欏畾鍊兼ā绯婃煡璇㈡暟缁�, 鏌ヨPLPageDefinationArray鍑洪敊锛歿0}
-P0010UIService-00040=淇濆瓨绫诲瀷涓巃ction鍏崇郴鏃跺嚭閿欙細{0}
-P0010UIService-00041=鍒犻櫎绫诲瀷涓巃ction鍏崇郴鏃跺嚭閿欙細{0}
-P0010UIService-00042=閫氳繃绫诲瀷鏌ヨ鎵�鏈夌殑action瀵硅薄鏃跺嚭閿欙細{0}
-P0010UIService-00043=鍒ゆ柇琛ㄥ崟琛ㄦ牸淇敼鍚嶇О鏃舵槸鍚﹀凡缁忚寮曠敤锛歿0}
-P0010UIService-00044=鍒ゆ柇鍒犻櫎琛ㄥ崟鏃惰琛ㄥ崟鏄惁宸茬粡琚〃鏍煎紩鐢細{0}
-P0010UIService-00045=鏍规嵁鍏宠仈绫诲瀷鍜岀紪鍙疯幏鍙朠LPageLayoutDefinationArray鍑洪敊锛歿0}
-P0010UIService-00046=閲嶆柊鍔犺浇缂撳瓨鍑虹幇閿欒锛岃鍐嶆鍔犺浇鎴栬仈绯荤鐞嗗憳銆倇0}
-
-P0010UIService-00047=澶嶅埗椤电鍒颁笂涓嬫枃鏃跺彂鐢熼敊璇紒{0}
-P0010UIService-00048=澶嶅埗缁勪欢鍒伴〉绛炬椂鍙戠敓閿欒锛亄0}
-
-common.msg.executingHasError=鎵ц{0}鏃跺彂鐢熼敊璇紒\n{1}
-common.msg.pleaseChooseData=璇峰厛閫夋嫨鏁版嵁锛亄0}
-common.msg.onlyChooseOneDataToSomeOpt=涓�娆″彧鑳介�夋嫨涓�鏉℃暟鎹繘琛屾鎿嶄綔锛亄0}
-common.msg.confirmDelete=纭畾瑕佹墽琛屽垹闄ゅ悧锛焮0}
\ No newline at end of file
diff --git a/Bin/lib/service/UIService/properties/hibernate.map.xml b/Bin/lib/service/UIService/properties/hibernate.map.xml
deleted file mode 100644
index 74f90a9..0000000
--- a/Bin/lib/service/UIService/properties/hibernate.map.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<hbmfiles>
-	<!-- portal_START-->
-	<mapping resource="com/vci/server/portal/hbm/PLActionClsEntity.hbm.xml"/>
- 	<mapping resource="com/vci/server/portal/hbm/PLActionParamEntity.hbm.xml"/>
- 	<mapping resource="com/vci/server/portal/hbm/PLTypeActionEntity.hbm.xml"/>
- 	<mapping resource="com/vci/server/portal/hbm/PortalVIEntity.hbm.xml"/>
- 	<mapping resource="com/vci/server/portal/hbm/PLActionEntity.hbm.xml"/>
- 	<mapping resource="com/vci/server/portal/hbm/PLUILayoutEntity.hbm.xml"/>
- 	<mapping resource="com/vci/server/portal/hbm/PLTabPageEntity.hbm.xml"/>
- 	<mapping resource="com/vci/server/portal/hbm/PLTabButtonEntity.hbm.xml"/>
- 	<mapping resource="com/vci/server/portal/hbm/PLCommandParameterEntity.hbm.xml"/>
- 	<mapping resource="com/vci/server/portal/hbm/PLPageDefinationEntity.hbm.xml"/>
-</hbmfiles>
\ No newline at end of file
diff --git a/Bin/lib/service/VciServiceMain.jar b/Bin/lib/service/VciServiceMain.jar
deleted file mode 100644
index e4bd80e..0000000
--- a/Bin/lib/service/VciServiceMain.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/VolumeService.jar b/Bin/lib/service/VolumeService.jar
deleted file mode 100644
index ab4afc4..0000000
--- a/Bin/lib/service/VolumeService.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/WFPlugins.jar b/Bin/lib/service/WFPlugins.jar
deleted file mode 100644
index 8042853..0000000
--- a/Bin/lib/service/WFPlugins.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/service/WFService.jar b/Bin/lib/service/WFService.jar
deleted file mode 100644
index 25dbf09..0000000
--- a/Bin/lib/service/WFService.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/IKAnalyzer2012FF_u1.jar b/Bin/lib/thrid/IKAnalyzer2012FF_u1.jar
deleted file mode 100644
index 9ec77c8..0000000
--- a/Bin/lib/thrid/IKAnalyzer2012FF_u1.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/XmlSchema-1.1.jar b/Bin/lib/thrid/XmlSchema-1.1.jar
deleted file mode 100644
index a52c562..0000000
--- a/Bin/lib/thrid/XmlSchema-1.1.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/activation.jar b/Bin/lib/thrid/activation.jar
deleted file mode 100644
index df8003b..0000000
--- a/Bin/lib/thrid/activation.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/antlr-2.7.6.jar b/Bin/lib/thrid/antlr-2.7.6.jar
deleted file mode 100644
index 3702b64..0000000
--- a/Bin/lib/thrid/antlr-2.7.6.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/avalon-framework-4.1.5.jar b/Bin/lib/thrid/avalon-framework-4.1.5.jar
deleted file mode 100644
index a24b1c7..0000000
--- a/Bin/lib/thrid/avalon-framework-4.1.5.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/axis-ant.jar b/Bin/lib/thrid/axis-ant.jar
deleted file mode 100644
index 17527ff..0000000
--- a/Bin/lib/thrid/axis-ant.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/axis.jar b/Bin/lib/thrid/axis.jar
deleted file mode 100644
index 20b09a5..0000000
--- a/Bin/lib/thrid/axis.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/bsf-2.3.0.jar b/Bin/lib/thrid/bsf-2.3.0.jar
deleted file mode 100644
index caa4dea..0000000
--- a/Bin/lib/thrid/bsf-2.3.0.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/bsh.jar b/Bin/lib/thrid/bsh.jar
deleted file mode 100644
index e326510..0000000
--- a/Bin/lib/thrid/bsh.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/c3p0-0.9.1.jar b/Bin/lib/thrid/c3p0-0.9.1.jar
deleted file mode 100644
index 693667a..0000000
--- a/Bin/lib/thrid/c3p0-0.9.1.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/commons-codec-1.3.jar b/Bin/lib/thrid/commons-codec-1.3.jar
deleted file mode 100644
index 957b675..0000000
--- a/Bin/lib/thrid/commons-codec-1.3.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/commons-collections-3.1.jar b/Bin/lib/thrid/commons-collections-3.1.jar
deleted file mode 100644
index 41e230f..0000000
--- a/Bin/lib/thrid/commons-collections-3.1.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/commons-dbcp-1.1.jar b/Bin/lib/thrid/commons-dbcp-1.1.jar
deleted file mode 100644
index c3c4d1f..0000000
--- a/Bin/lib/thrid/commons-dbcp-1.1.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/commons-discovery-0.2.jar b/Bin/lib/thrid/commons-discovery-0.2.jar
deleted file mode 100644
index b885548..0000000
--- a/Bin/lib/thrid/commons-discovery-0.2.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/commons-fileupload-1.2.2.jar b/Bin/lib/thrid/commons-fileupload-1.2.2.jar
deleted file mode 100644
index 131f192..0000000
--- a/Bin/lib/thrid/commons-fileupload-1.2.2.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/commons-httpclient-3.0.jar b/Bin/lib/thrid/commons-httpclient-3.0.jar
deleted file mode 100644
index 54a9300..0000000
--- a/Bin/lib/thrid/commons-httpclient-3.0.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/commons-io-2.0.1.jar b/Bin/lib/thrid/commons-io-2.0.1.jar
deleted file mode 100644
index 5b64b7d..0000000
--- a/Bin/lib/thrid/commons-io-2.0.1.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/commons-logging-1.0.4.jar b/Bin/lib/thrid/commons-logging-1.0.4.jar
deleted file mode 100644
index b73a80f..0000000
--- a/Bin/lib/thrid/commons-logging-1.0.4.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/commons-net-1.4.1.jar b/Bin/lib/thrid/commons-net-1.4.1.jar
deleted file mode 100644
index 9666a92..0000000
--- a/Bin/lib/thrid/commons-net-1.4.1.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/commons-pool2-2.6.2.jar b/Bin/lib/thrid/commons-pool2-2.6.2.jar
deleted file mode 100644
index 4233f08..0000000
--- a/Bin/lib/thrid/commons-pool2-2.6.2.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/geronimo-stax-api_1.0_spec-1.0.jar b/Bin/lib/thrid/geronimo-stax-api_1.0_spec-1.0.jar
deleted file mode 100644
index 0d6d374..0000000
--- a/Bin/lib/thrid/geronimo-stax-api_1.0_spec-1.0.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/guava-20.0.jar b/Bin/lib/thrid/guava-20.0.jar
deleted file mode 100644
index 632772f..0000000
--- a/Bin/lib/thrid/guava-20.0.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/hibernate-jpa-2.0-api-1.0.1.Final.jar b/Bin/lib/thrid/hibernate-jpa-2.0-api-1.0.1.Final.jar
deleted file mode 100644
index 1e9f71b..0000000
--- a/Bin/lib/thrid/hibernate-jpa-2.0-api-1.0.1.Final.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/hibernate3.jar b/Bin/lib/thrid/hibernate3.jar
deleted file mode 100644
index 73df7b1..0000000
--- a/Bin/lib/thrid/hibernate3.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/inforbroker-core-5.1.0.jar b/Bin/lib/thrid/inforbroker-core-5.1.0.jar
deleted file mode 100644
index 352b2a5..0000000
--- a/Bin/lib/thrid/inforbroker-core-5.1.0.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/javassist-3.12.0.GA.jar b/Bin/lib/thrid/javassist-3.12.0.GA.jar
deleted file mode 100644
index 8f692f4..0000000
--- a/Bin/lib/thrid/javassist-3.12.0.GA.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/jaxen-1.1-beta-9.jar b/Bin/lib/thrid/jaxen-1.1-beta-9.jar
deleted file mode 100644
index e290706..0000000
--- a/Bin/lib/thrid/jaxen-1.1-beta-9.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/jaxrpc.jar b/Bin/lib/thrid/jaxrpc.jar
deleted file mode 100644
index a2c13d9..0000000
--- a/Bin/lib/thrid/jaxrpc.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/jbpm-4.3.2.jar b/Bin/lib/thrid/jbpm-4.3.2.jar
deleted file mode 100644
index 21ccd58..0000000
--- a/Bin/lib/thrid/jbpm-4.3.2.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/jcalendar-1.3.3.jar b/Bin/lib/thrid/jcalendar-1.3.3.jar
deleted file mode 100644
index 2e13b77..0000000
--- a/Bin/lib/thrid/jcalendar-1.3.3.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/jcommon-1.0.17.jar b/Bin/lib/thrid/jcommon-1.0.17.jar
deleted file mode 100644
index f1bd165..0000000
--- a/Bin/lib/thrid/jcommon-1.0.17.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/jdom-1.0.jar b/Bin/lib/thrid/jdom-1.0.jar
deleted file mode 100644
index 30d3977..0000000
--- a/Bin/lib/thrid/jdom-1.0.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/jdsl.jar b/Bin/lib/thrid/jdsl.jar
deleted file mode 100644
index c225421..0000000
--- a/Bin/lib/thrid/jdsl.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/jedis-2.9.0.jar b/Bin/lib/thrid/jedis-2.9.0.jar
deleted file mode 100644
index f4d27d3..0000000
--- a/Bin/lib/thrid/jedis-2.9.0.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/jee-management-1.1.jar b/Bin/lib/thrid/jee-management-1.1.jar
deleted file mode 100644
index 1911f08..0000000
--- a/Bin/lib/thrid/jee-management-1.1.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/jfreechart-1.0.14.jar b/Bin/lib/thrid/jfreechart-1.0.14.jar
deleted file mode 100644
index 0e4d020..0000000
--- a/Bin/lib/thrid/jfreechart-1.0.14.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/jms-1.1.jar b/Bin/lib/thrid/jms-1.1.jar
deleted file mode 100644
index dad227f..0000000
--- a/Bin/lib/thrid/jms-1.1.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/jta-1.1.jar b/Bin/lib/thrid/jta-1.1.jar
deleted file mode 100644
index 6d225b7..0000000
--- a/Bin/lib/thrid/jta-1.1.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/juel-engine.jar b/Bin/lib/thrid/juel-engine.jar
deleted file mode 100644
index d1de8a7..0000000
--- a/Bin/lib/thrid/juel-engine.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/juel-impl.jar b/Bin/lib/thrid/juel-impl.jar
deleted file mode 100644
index 53c3522..0000000
--- a/Bin/lib/thrid/juel-impl.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/juel.jar b/Bin/lib/thrid/juel.jar
deleted file mode 100644
index 6fda56c..0000000
--- a/Bin/lib/thrid/juel.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/livetribe-jsr223.jar b/Bin/lib/thrid/livetribe-jsr223.jar
deleted file mode 100644
index 8d38ba1..0000000
--- a/Bin/lib/thrid/livetribe-jsr223.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/logkit-1.2.jar b/Bin/lib/thrid/logkit-1.2.jar
deleted file mode 100644
index 67d4866..0000000
--- a/Bin/lib/thrid/logkit-1.2.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/ognl-2.6.11.jar b/Bin/lib/thrid/ognl-2.6.11.jar
deleted file mode 100644
index 19cd379..0000000
--- a/Bin/lib/thrid/ognl-2.6.11.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/ojdbc8.jar b/Bin/lib/thrid/ojdbc8.jar
deleted file mode 100644
index bf41243..0000000
--- a/Bin/lib/thrid/ojdbc8.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/picocontainer-1.2.jar b/Bin/lib/thrid/picocontainer-1.2.jar
deleted file mode 100644
index fbb1c92..0000000
--- a/Bin/lib/thrid/picocontainer-1.2.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/plugin.jar b/Bin/lib/thrid/plugin.jar
deleted file mode 100644
index 52a401b..0000000
--- a/Bin/lib/thrid/plugin.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/poi-3.9-20121203.jar b/Bin/lib/thrid/poi-3.9-20121203.jar
deleted file mode 100644
index 0f46288..0000000
--- a/Bin/lib/thrid/poi-3.9-20121203.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/poi-ooxml-3.9-20121203.jar b/Bin/lib/thrid/poi-ooxml-3.9-20121203.jar
deleted file mode 100644
index 8792d46..0000000
--- a/Bin/lib/thrid/poi-ooxml-3.9-20121203.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/poi-ooxml-schemas-3.9-20121203.jar b/Bin/lib/thrid/poi-ooxml-schemas-3.9-20121203.jar
deleted file mode 100644
index eda4ef4..0000000
--- a/Bin/lib/thrid/poi-ooxml-schemas-3.9-20121203.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/poi-scratchpad-3.9-20121203.jar b/Bin/lib/thrid/poi-scratchpad-3.9-20121203.jar
deleted file mode 100644
index 1520855..0000000
--- a/Bin/lib/thrid/poi-scratchpad-3.9-20121203.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/portalcustom.jar b/Bin/lib/thrid/portalcustom.jar
deleted file mode 100644
index 2c0af22..0000000
--- a/Bin/lib/thrid/portalcustom.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/proxool-0.8.3.jar b/Bin/lib/thrid/proxool-0.8.3.jar
deleted file mode 100644
index c4f700c..0000000
--- a/Bin/lib/thrid/proxool-0.8.3.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/quartz-all-1.8.6.jar b/Bin/lib/thrid/quartz-all-1.8.6.jar
deleted file mode 100644
index 86901d1..0000000
--- a/Bin/lib/thrid/quartz-all-1.8.6.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/rsyntax.jar b/Bin/lib/thrid/rsyntax.jar
deleted file mode 100644
index 6903d1a..0000000
--- a/Bin/lib/thrid/rsyntax.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/saaj.jar b/Bin/lib/thrid/saaj.jar
deleted file mode 100644
index 4ea696e..0000000
--- a/Bin/lib/thrid/saaj.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/sapjco.jar b/Bin/lib/thrid/sapjco.jar
deleted file mode 100644
index e18912e..0000000
--- a/Bin/lib/thrid/sapjco.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/slf4j-api-1.7.14.jar b/Bin/lib/thrid/slf4j-api-1.7.14.jar
deleted file mode 100644
index d5d64c4..0000000
--- a/Bin/lib/thrid/slf4j-api-1.7.14.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/slf4j-jdk14-1.7.14.jar b/Bin/lib/thrid/slf4j-jdk14-1.7.14.jar
deleted file mode 100644
index 720f7fd..0000000
--- a/Bin/lib/thrid/slf4j-jdk14-1.7.14.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/xml-apis.jar b/Bin/lib/thrid/xml-apis.jar
deleted file mode 100644
index d42c0ea..0000000
--- a/Bin/lib/thrid/xml-apis.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/xmlbeans-2.3.0.jar b/Bin/lib/thrid/xmlbeans-2.3.0.jar
deleted file mode 100644
index ccd8163..0000000
--- a/Bin/lib/thrid/xmlbeans-2.3.0.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/xmlsec-1.3.0.jar b/Bin/lib/thrid/xmlsec-1.3.0.jar
deleted file mode 100644
index 6b69b80..0000000
--- a/Bin/lib/thrid/xmlsec-1.3.0.jar
+++ /dev/null
Binary files differ
diff --git a/Bin/lib/thrid/xstream-1.3.1.jar b/Bin/lib/thrid/xstream-1.3.1.jar
deleted file mode 100644
index 4ef4219..0000000
--- a/Bin/lib/thrid/xstream-1.3.1.jar
+++ /dev/null
Binary files differ
diff --git a/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/UIEngineServiceImpl.java b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/UIEngineServiceImpl.java
index e5d8d37..0141b1b 100644
--- a/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/UIEngineServiceImpl.java
+++ b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/UIEngineServiceImpl.java
@@ -1571,5 +1571,6 @@
 		//return UIContentDO2VO(context,true);
 		return UIContentDO2VO(null,true);
 	}
+
 }
 
diff --git a/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/BeanUtil.java b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/BeanUtil.java
new file mode 100644
index 0000000..da93b8c
--- /dev/null
+++ b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/BeanUtil.java
@@ -0,0 +1,424 @@
+/*
+ *      Copyright (c) 2018-2028, DreamLu All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: DreamLu 鍗㈡槬姊� (596392912@qq.com)
+ */
+package com.vci.web.util;
+
+
+import com.vci.web.util.beans.BeanProperty;
+import com.vci.web.util.beans.BladeBeanCopier;
+import com.vci.web.util.convert.BladeConverter;
+import com.vci.web.util.beans.BladeBeanMap;
+import org.springframework.beans.BeanWrapper;
+import org.springframework.beans.BeansException;
+import org.springframework.beans.PropertyAccessorFactory;
+import org.springframework.cglib.beans.BeanGenerator;
+import org.springframework.lang.Nullable;
+
+import java.util.*;
+
+/**
+ * 瀹炰綋宸ュ叿绫�
+ *
+ * @author L.cm
+ */
+public class BeanUtil extends org.springframework.beans.BeanUtils {
+
+	/**
+	 * 瀹炰緥鍖栧璞�
+	 *
+	 * @param clazz 绫�
+	 * @param <T>   娉涘瀷鏍囪
+	 * @return 瀵硅薄
+	 */
+	@SuppressWarnings("unchecked")
+	public static <T> T newInstance(Class<?> clazz) {
+		return (T) instantiateClass(clazz);
+	}
+
+	/**
+	 * 瀹炰緥鍖栧璞�
+	 *
+	 * @param clazzStr 绫诲悕
+	 * @param <T>      娉涘瀷鏍囪
+	 * @return 瀵硅薄
+	 */
+	public static <T> T newInstance(String clazzStr) {
+		try {
+			Class<?> clazz = ClassUtil.forName(clazzStr, null);
+			return newInstance(clazz);
+		} catch (ClassNotFoundException e) {
+			throw new RuntimeException(e);
+		}
+	}
+
+	/**
+	 * 鑾峰彇Bean鐨勫睘鎬�, 鏀寔 propertyName 澶氱骇 锛歵est.user.name
+	 *
+	 * @param bean         bean
+	 * @param propertyName 灞炴�у悕
+	 * @return 灞炴�у��
+	 */
+	@Nullable
+	public static Object getProperty(@Nullable Object bean, String propertyName) {
+		if (bean == null) {
+			return null;
+		}
+		BeanWrapper beanWrapper = PropertyAccessorFactory.forBeanPropertyAccess(bean);
+		return beanWrapper.getPropertyValue(propertyName);
+	}
+
+	/**
+	 * 璁剧疆Bean灞炴��, 鏀寔 propertyName 澶氱骇 锛歵est.user.name
+	 *
+	 * @param bean         bean
+	 * @param propertyName 灞炴�у悕
+	 * @param value        灞炴�у��
+	 */
+	public static void setProperty(Object bean, String propertyName, Object value) {
+		Objects.requireNonNull(bean, "bean Could not null");
+		BeanWrapper beanWrapper = PropertyAccessorFactory.forBeanPropertyAccess(bean);
+		beanWrapper.setPropertyValue(propertyName, value);
+	}
+
+	/**
+	 * 娣卞鍒�
+	 *
+	 * <p>
+	 * 鏀寔 map bean
+	 * </p>
+	 *
+	 * @param source 婧愬璞�
+	 * @param <T>    娉涘瀷鏍囪
+	 * @return T
+	 */
+	@SuppressWarnings("unchecked")
+	@Nullable
+	public static <T> T clone(@Nullable T source) {
+		if (source == null) {
+			return null;
+		}
+		return (T) BeanUtil.copy(source, source.getClass());
+	}
+
+	/**
+	 * copy 瀵硅薄灞炴�э紝榛樿涓嶄娇鐢–onvert
+	 *
+	 * <p>
+	 * 鏀寔 map bean copy
+	 * </p>
+	 *
+	 * @param source 婧愬璞�
+	 * @param clazz  绫诲悕
+	 * @param <T>    娉涘瀷鏍囪
+	 * @return T
+	 */
+	@Nullable
+	public static <T> T copy(@Nullable Object source, Class<T> clazz) {
+		if (source == null) {
+			return null;
+		}
+		return BeanUtil.copy(source, source.getClass(), clazz);
+	}
+
+	/**
+	 * copy 瀵硅薄灞炴�э紝榛樿涓嶄娇鐢–onvert
+	 *
+	 * <p>
+	 * 鏀寔 map bean copy
+	 * </p>
+	 *
+	 * @param source      婧愬璞�
+	 * @param sourceClazz 婧愮被鍨�
+	 * @param targetClazz 杞崲鎴愮殑绫诲瀷
+	 * @param <T>         娉涘瀷鏍囪
+	 * @return T
+	 */
+	@Nullable
+	public static <T> T copy(@Nullable Object source, Class sourceClazz, Class<T> targetClazz) {
+		if (source == null) {
+			return null;
+		}
+		BladeBeanCopier copier = BladeBeanCopier.create(sourceClazz, targetClazz, false);
+		T to = newInstance(targetClazz);
+		copier.copy(source, to, null);
+		return to;
+	}
+
+	/**
+	 * copy 鍒楄〃瀵硅薄锛岄粯璁や笉浣跨敤Convert
+	 *
+	 * <p>
+	 * 鏀寔 map bean copy
+	 * </p>
+	 *
+	 * @param sourceList  婧愬垪琛�
+	 * @param targetClazz 杞崲鎴愮殑绫诲瀷
+	 * @param <T>         娉涘瀷鏍囪
+	 * @return T
+	 */
+	public static <T> List<T> copy(@Nullable Collection<?> sourceList, Class<T> targetClazz) {
+		if (sourceList == null || sourceList.isEmpty()) {
+			return Collections.emptyList();
+		}
+		List<T> outList = new ArrayList<>(sourceList.size());
+		Class<?> sourceClazz = null;
+		for (Object source : sourceList) {
+			if (source == null) {
+				continue;
+			}
+			if (sourceClazz == null) {
+				sourceClazz = source.getClass();
+			}
+			T bean = BeanUtil.copy(source, sourceClazz, targetClazz);
+			outList.add(bean);
+		}
+		return outList;
+	}
+
+	/**
+	 * 鎷疯礉瀵硅薄
+	 *
+	 * <p>
+	 * 鏀寔 map bean copy
+	 * </p>
+	 *
+	 * @param source     婧愬璞�
+	 * @param targetBean 闇�瑕佽祴鍊肩殑瀵硅薄
+	 */
+	public static void copy(@Nullable Object source, @Nullable Object targetBean) {
+		if (source == null || targetBean == null) {
+			return;
+		}
+		BladeBeanCopier copier = BladeBeanCopier
+			.create(source.getClass(), targetBean.getClass(), false);
+
+		copier.copy(source, targetBean, null);
+	}
+
+	/**
+	 * 鎷疯礉瀵硅薄锛宻ource 灞炴�у仛 null 鍒ゆ柇锛孧ap 涓嶆敮鎸侊紝map 浼氬仛 instanceof 鍒ゆ柇锛屼笉浼�
+	 *
+	 * <p>
+	 * 鏀寔 bean copy
+	 * </p>
+	 *
+	 * @param source     婧愬璞�
+	 * @param targetBean 闇�瑕佽祴鍊肩殑瀵硅薄
+	 */
+	public static void copyNonNull(@Nullable Object source, @Nullable Object targetBean) {
+		if (source == null || targetBean == null) {
+			return;
+		}
+		BladeBeanCopier copier = BladeBeanCopier
+			.create(source.getClass(), targetBean.getClass(), false, true);
+
+		copier.copy(source, targetBean, null);
+	}
+
+	/**
+	 * 鎷疯礉瀵硅薄骞跺涓嶅悓绫诲瀷灞炴�ц繘琛岃浆鎹�
+	 *
+	 * <p>
+	 * 鏀寔 map bean copy
+	 * </p>
+	 *
+	 * @param source 婧愬璞�
+	 * @param targetClazz 杞崲鎴愮殑绫�
+	 * @param <T>    娉涘瀷鏍囪
+	 * @return T
+	 */
+	@Nullable
+	public static <T> T copyWithConvert(@Nullable Object source, Class<T> targetClazz) {
+		if (source == null) {
+			return null;
+		}
+		return BeanUtil.copyWithConvert(source, source.getClass(), targetClazz);
+	}
+
+	/**
+	 * 鎷疯礉瀵硅薄骞跺涓嶅悓绫诲瀷灞炴�ц繘琛岃浆鎹�
+	 *
+	 * <p>
+	 * 鏀寔 map bean copy
+	 * </p>
+	 *
+	 * @param source 婧愬璞�
+	 * @param sourceClazz 婧愮被
+	 * @param targetClazz 杞崲鎴愮殑绫�
+	 * @param <T>    娉涘瀷鏍囪
+	 * @return T
+	 */
+	@Nullable
+	public static <T> T copyWithConvert(@Nullable Object source, Class<?> sourceClazz, Class<T> targetClazz) {
+		if (source == null) {
+			return null;
+		}
+		BladeBeanCopier copier = BladeBeanCopier.create(sourceClazz, targetClazz, true);
+		T to = newInstance(targetClazz);
+		copier.copy(source, to, new BladeConverter(sourceClazz, targetClazz));
+		return to;
+	}
+
+	/**
+	 * 鎷疯礉鍒楄〃骞跺涓嶅悓绫诲瀷灞炴�ц繘琛岃浆鎹�
+	 *
+	 * <p>
+	 * 鏀寔 map bean copy
+	 * </p>
+	 *
+	 * @param sourceList 婧愬璞″垪琛�
+	 * @param targetClazz 杞崲鎴愮殑绫�
+	 * @param <T>    娉涘瀷鏍囪
+	 * @return List
+	 */
+	public static <T> List<T> copyWithConvert(@Nullable Collection<?> sourceList, Class<T> targetClazz) {
+		if (sourceList == null || sourceList.isEmpty()) {
+			return Collections.emptyList();
+		}
+		List<T> outList = new ArrayList<>(sourceList.size());
+		Class<?> sourceClazz = null;
+		for (Object source : sourceList) {
+			if (source == null) {
+				continue;
+			}
+			if (sourceClazz == null) {
+				sourceClazz = source.getClass();
+			}
+			T bean = BeanUtil.copyWithConvert(source, sourceClazz, targetClazz);
+			outList.add(bean);
+		}
+		return outList;
+	}
+
+	/**
+	 * Copy the property values of the given source bean into the target class.
+	 * <p>Note: The source and target classes do not have to match or even be derived
+	 * from each other, as long as the properties match. Any bean properties that the
+	 * source bean exposes but the target bean does not will silently be ignored.
+	 * <p>This is just a convenience method. For more complex transfer needs,
+	 *
+	 * @param source the source bean
+	 * @param targetClazz the target bean class
+	 * @param <T>    娉涘瀷鏍囪
+	 * @return T
+	 * @throws BeansException if the copying failed
+	 */
+	@Nullable
+	public static <T> T copyProperties(@Nullable Object source, Class<T> targetClazz) throws BeansException {
+		if (source == null) {
+			return null;
+		}
+		T to = newInstance(targetClazz);
+		BeanUtil.copyProperties(source, to);
+		return to;
+	}
+
+	/**
+	 * Copy the property values of the given source bean into the target class.
+	 * <p>Note: The source and target classes do not have to match or even be derived
+	 * from each other, as long as the properties match. Any bean properties that the
+	 * source bean exposes but the target bean does not will silently be ignored.
+	 * <p>This is just a convenience method. For more complex transfer needs,
+	 *
+	 * @param sourceList the source list bean
+	 * @param targetClazz the target bean class
+	 * @param <T>    娉涘瀷鏍囪
+	 * @return List
+	 * @throws BeansException if the copying failed
+	 */
+	public static <T> List<T> copyProperties(@Nullable Collection<?> sourceList, Class<T> targetClazz) throws BeansException {
+		if (sourceList == null || sourceList.isEmpty()) {
+			return Collections.emptyList();
+		}
+		List<T> outList = new ArrayList<>(sourceList.size());
+		for (Object source : sourceList) {
+			if (source == null) {
+				continue;
+			}
+			T bean = BeanUtil.copyProperties(source, targetClazz);
+			outList.add(bean);
+		}
+		return outList;
+	}
+
+	/**
+	 * 灏嗗璞¤鎴恗ap褰㈠紡
+	 *
+	 * @param bean 婧愬璞�
+	 * @return {Map}
+	 */
+	@SuppressWarnings("unchecked")
+	public static Map<String, Object> toMap(@Nullable Object bean) {
+		if (bean == null) {
+			return new HashMap<>(0);
+		}
+		return BladeBeanMap.create(bean);
+	}
+
+	/**
+	 * 灏唌ap 杞负 bean
+	 *
+	 * @param beanMap   map
+	 * @param valueType 瀵硅薄绫诲瀷
+	 * @param <T>       娉涘瀷鏍囪
+	 * @return {T}
+	 */
+	public static <T> T toBean(Map<String, Object> beanMap, Class<T> valueType) {
+		Objects.requireNonNull(beanMap, "beanMap Could not null");
+		T to = newInstance(valueType);
+		if (beanMap.isEmpty()) {
+			return to;
+		}
+		BeanUtil.copy(beanMap, to);
+		return to;
+	}
+
+	/**
+	 * 缁欎竴涓狟ean娣诲姞瀛楁
+	 *
+	 * @param superBean 鐖剁骇Bean
+	 * @param props     鏂板灞炴��
+	 * @return {Object}
+	 */
+	@Nullable
+	public static Object generator(@Nullable Object superBean, BeanProperty... props) {
+		if (superBean == null) {
+			return null;
+		}
+		Class<?> superclass = superBean.getClass();
+		Object genBean = generator(superclass, props);
+		BeanUtil.copy(superBean, genBean);
+		return genBean;
+	}
+
+	/**
+	 * 缁欎竴涓猚lass娣诲姞瀛楁
+	 *
+	 * @param superclass 鐖剁骇
+	 * @param props      鏂板灞炴��
+	 * @return {Object}
+	 */
+	public static Object generator(Class<?> superclass, BeanProperty... props) {
+		BeanGenerator generator = new BeanGenerator();
+		generator.setSuperclass(superclass);
+		generator.setUseCache(true);
+		for (BeanProperty prop : props) {
+			generator.addProperty(prop.getName(), prop.getType());
+		}
+		return generator.create();
+	}
+
+}
diff --git a/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/ClassUtil.java b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/ClassUtil.java
new file mode 100644
index 0000000..23d23b2
--- /dev/null
+++ b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/ClassUtil.java
@@ -0,0 +1,130 @@
+/*
+ *      Copyright (c) 2018-2028, DreamLu All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: DreamLu 鍗㈡槬姊� (596392912@qq.com)
+ */
+package com.vci.web.util;
+
+import org.springframework.core.BridgeMethodResolver;
+import org.springframework.core.DefaultParameterNameDiscoverer;
+import org.springframework.core.MethodParameter;
+import org.springframework.core.ParameterNameDiscoverer;
+import org.springframework.core.annotation.AnnotatedElementUtils;
+import org.springframework.core.annotation.SynthesizingMethodParameter;
+import org.springframework.web.method.HandlerMethod;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+
+/**
+ * 绫绘搷浣滃伐鍏�
+ *
+ * @author L.cm
+ */
+public class ClassUtil extends org.springframework.util.ClassUtils {
+
+	private static final ParameterNameDiscoverer PARAMETER_NAME_DISCOVERER = new DefaultParameterNameDiscoverer();
+
+	/**
+	 * 鑾峰彇鏂规硶鍙傛暟淇℃伅
+	 *
+	 * @param constructor    鏋勯�犲櫒
+	 * @param parameterIndex 鍙傛暟搴忓彿
+	 * @return {MethodParameter}
+	 */
+	public static MethodParameter getMethodParameter(Constructor<?> constructor, int parameterIndex) {
+		MethodParameter methodParameter = new SynthesizingMethodParameter(constructor, parameterIndex);
+		methodParameter.initParameterNameDiscovery(PARAMETER_NAME_DISCOVERER);
+		return methodParameter;
+	}
+
+	/**
+	 * 鑾峰彇鏂规硶鍙傛暟淇℃伅
+	 *
+	 * @param method         鏂规硶
+	 * @param parameterIndex 鍙傛暟搴忓彿
+	 * @return {MethodParameter}
+	 */
+	public static MethodParameter getMethodParameter(Method method, int parameterIndex) {
+		MethodParameter methodParameter = new SynthesizingMethodParameter(method, parameterIndex);
+		methodParameter.initParameterNameDiscovery(PARAMETER_NAME_DISCOVERER);
+		return methodParameter;
+	}
+
+	/**
+	 * 鑾峰彇Annotation
+	 *
+	 * @param method         Method
+	 * @param annotationType 娉ㄨВ绫�
+	 * @param <A>            娉涘瀷鏍囪
+	 * @return {Annotation}
+	 */
+	public static <A extends Annotation> A getAnnotation(Method method, Class<A> annotationType) {
+		Class<?> targetClass = method.getDeclaringClass();
+		// The method may be on an interface, but we need attributes from the target class.
+		// If the target class is null, the method will be unchanged.
+		Method specificMethod = ClassUtil.getMostSpecificMethod(method, targetClass);
+		// If we are dealing with method with generic parameters, find the original method.
+		specificMethod = BridgeMethodResolver.findBridgedMethod(specificMethod);
+		// 鍏堟壘鏂规硶锛屽啀鎵炬柟娉曚笂鐨勭被
+		A annotation = AnnotatedElementUtils.findMergedAnnotation(specificMethod, annotationType);
+		;
+		if (null != annotation) {
+			return annotation;
+		}
+		// 鑾峰彇绫讳笂闈㈢殑Annotation锛屽彲鑳藉寘鍚粍鍚堟敞瑙o紝鏁呴噰鐢╯pring鐨勫伐鍏风被
+		return AnnotatedElementUtils.findMergedAnnotation(specificMethod.getDeclaringClass(), annotationType);
+	}
+
+	/**
+	 * 鑾峰彇Annotation
+	 *
+	 * @param handlerMethod  HandlerMethod
+	 * @param annotationType 娉ㄨВ绫�
+	 * @param <A>            娉涘瀷鏍囪
+	 * @return {Annotation}
+	 */
+	public static <A extends Annotation> A getAnnotation(HandlerMethod handlerMethod, Class<A> annotationType) {
+		// 鍏堟壘鏂规硶锛屽啀鎵炬柟娉曚笂鐨勭被
+		A annotation = handlerMethod.getMethodAnnotation(annotationType);
+		if (null != annotation) {
+			return annotation;
+		}
+		// 鑾峰彇绫讳笂闈㈢殑Annotation锛屽彲鑳藉寘鍚粍鍚堟敞瑙o紝鏁呴噰鐢╯pring鐨勫伐鍏风被
+		Class<?> beanType = handlerMethod.getBeanType();
+		return AnnotatedElementUtils.findMergedAnnotation(beanType, annotationType);
+	}
+
+
+	/**
+	 * 鍒ゆ柇鏄惁鏈夋敞瑙� Annotation
+	 *
+	 * @param method         Method
+	 * @param annotationType 娉ㄨВ绫�
+	 * @param <A>            娉涘瀷鏍囪
+	 * @return {boolean}
+	 */
+	public static <A extends Annotation> boolean isAnnotated(Method method, Class<A> annotationType) {
+		// 鍏堟壘鏂规硶锛屽啀鎵炬柟娉曚笂鐨勭被
+		boolean isMethodAnnotated = AnnotatedElementUtils.isAnnotated(method, annotationType);
+		if (isMethodAnnotated) {
+			return true;
+		}
+		// 鑾峰彇绫讳笂闈㈢殑Annotation锛屽彲鑳藉寘鍚粍鍚堟敞瑙o紝鏁呴噰鐢╯pring鐨勫伐鍏风被
+		Class<?> targetClass = method.getDeclaringClass();
+		return AnnotatedElementUtils.isAnnotated(targetClass, annotationType);
+	}
+
+}
diff --git a/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/ConvertUtil.java b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/ConvertUtil.java
new file mode 100644
index 0000000..77556a0
--- /dev/null
+++ b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/ConvertUtil.java
@@ -0,0 +1,81 @@
+package com.vci.web.util;
+
+import com.vci.web.util.convert.BladeConversionService;
+import org.springframework.core.convert.TypeDescriptor;
+import org.springframework.core.convert.support.GenericConversionService;
+import org.springframework.lang.Nullable;
+
+/**
+ * 鍩轰簬 spring ConversionService 绫诲瀷杞崲
+ *
+ * @author L.cm
+ */
+@SuppressWarnings("unchecked")
+public class ConvertUtil {
+
+	/**
+	 * Convenience operation for converting a source object to the specified targetType.
+	 * {@link TypeDescriptor#forObject(Object)}.
+	 * @param source the source object
+	 * @param targetType the target type
+	 * @param <T> 娉涘瀷鏍囪
+	 * @return the converted value
+	 * @throws IllegalArgumentException if targetType is {@code null},
+	 * or sourceType is {@code null} but source is not {@code null}
+	 */
+	@Nullable
+	public static <T> T convert(@Nullable Object source, Class<T> targetType) {
+		if (source == null) {
+			return null;
+		}
+		if (ClassUtil.isAssignableValue(targetType, source)) {
+			return (T) source;
+		}
+		GenericConversionService conversionService = BladeConversionService.getInstance();
+		return conversionService.convert(source, targetType);
+	}
+
+	/**
+	 * Convenience operation for converting a source object to the specified targetType,
+	 * where the target type is a descriptor that provides additional conversion context.
+	 * {@link TypeDescriptor#forObject(Object)}.
+	 * @param source the source object
+	 * @param sourceType the source type
+	 * @param targetType the target type
+	 * @param <T> 娉涘瀷鏍囪
+	 * @return the converted value
+	 * @throws IllegalArgumentException if targetType is {@code null},
+	 * or sourceType is {@code null} but source is not {@code null}
+	 */
+	@Nullable
+	public static <T> T convert(@Nullable Object source, TypeDescriptor sourceType, TypeDescriptor targetType) {
+		if (source == null) {
+			return null;
+		}
+		GenericConversionService conversionService = BladeConversionService.getInstance();
+		return (T) conversionService.convert(source, sourceType, targetType);
+	}
+
+	/**
+	 * Convenience operation for converting a source object to the specified targetType,
+	 * where the target type is a descriptor that provides additional conversion context.
+	 * Simply delegates to {@link #convert(Object, TypeDescriptor, TypeDescriptor)} and
+	 * encapsulates the construction of the source type descriptor using
+	 * {@link TypeDescriptor#forObject(Object)}.
+	 * @param source the source object
+	 * @param targetType the target type
+	 * @param <T> 娉涘瀷鏍囪
+	 * @return the converted value
+	 * @throws IllegalArgumentException if targetType is {@code null},
+	 * or sourceType is {@code null} but source is not {@code null}
+	 */
+	@Nullable
+	public static <T> T convert(@Nullable Object source, TypeDescriptor targetType) {
+		if (source == null) {
+			return null;
+		}
+		GenericConversionService conversionService = BladeConversionService.getInstance();
+		return (T) conversionService.convert(source, targetType);
+	}
+
+}
diff --git a/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/Func.java b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/Func.java
index 4d14c13..ffb3a4e 100644
--- a/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/Func.java
+++ b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/Func.java
@@ -1,12 +1,8 @@
 package com.vci.web.util;
 
-import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.date.DateUtil;
-import com.aspose.words.ConvertUtil;
 import com.fasterxml.jackson.core.JsonParser;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.JsonNode;
-import com.sun.jndi.toolkit.url.UrlUtil;
 import com.vci.web.util.jackson.JsonUtil;
 import org.springframework.util.StringUtils;
 import org.springframework.beans.BeansException;
diff --git a/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/ReflectUtil.java b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/ReflectUtil.java
new file mode 100644
index 0000000..996fe45
--- /dev/null
+++ b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/ReflectUtil.java
@@ -0,0 +1,180 @@
+/*
+ *      Copyright (c) 2018-2028, DreamLu All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: DreamLu 鍗㈡槬姊� (596392912@qq.com)
+ */
+package com.vci.web.util;
+
+import org.springframework.beans.BeansException;
+import org.springframework.cglib.core.CodeGenerationException;
+import org.springframework.core.convert.Property;
+import org.springframework.core.convert.TypeDescriptor;
+import org.springframework.lang.Nullable;
+import org.springframework.util.ReflectionUtils;
+
+import java.beans.PropertyDescriptor;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 鍙嶅皠宸ュ叿绫�
+ *
+ * @author L.cm
+ */
+public class ReflectUtil extends ReflectionUtils {
+
+	/**
+	 * 鑾峰彇 Bean 鐨勬墍鏈� get鏂规硶
+	 *
+	 * @param type 绫�
+	 * @return PropertyDescriptor鏁扮粍
+	 */
+	public static PropertyDescriptor[] getBeanGetters(Class type) {
+		return getPropertiesHelper(type, true, false);
+	}
+
+	/**
+	 * 鑾峰彇 Bean 鐨勬墍鏈� set鏂规硶
+	 *
+	 * @param type 绫�
+	 * @return PropertyDescriptor鏁扮粍
+	 */
+	public static PropertyDescriptor[] getBeanSetters(Class type) {
+		return getPropertiesHelper(type, false, true);
+	}
+
+	/**
+	 * 鑾峰彇 Bean 鐨勬墍鏈� PropertyDescriptor
+	 *
+	 * @param type 绫�
+	 * @param read 璇诲彇鏂规硶
+	 * @param write 鍐欐柟娉�
+	 * @return PropertyDescriptor鏁扮粍
+	 */
+	public static PropertyDescriptor[] getPropertiesHelper(Class type, boolean read, boolean write) {
+		try {
+			PropertyDescriptor[] all = BeanUtil.getPropertyDescriptors(type);
+			if (read && write) {
+				return all;
+			} else {
+				List<PropertyDescriptor> properties = new ArrayList<>(all.length);
+				for (PropertyDescriptor pd : all) {
+					if (read && pd.getReadMethod() != null) {
+						properties.add(pd);
+					} else if (write && pd.getWriteMethod() != null) {
+						properties.add(pd);
+					}
+				}
+				return properties.toArray(new PropertyDescriptor[0]);
+			}
+		} catch (BeansException ex) {
+			throw new CodeGenerationException(ex);
+		}
+	}
+
+	/**
+	 * 鑾峰彇 bean 鐨勫睘鎬т俊鎭�
+	 * @param propertyType 绫诲瀷
+	 * @param propertyName 灞炴�у悕
+	 * @return {Property}
+	 */
+	@Nullable
+	public static Property getProperty(Class<?> propertyType, String propertyName) {
+		PropertyDescriptor propertyDescriptor = BeanUtil.getPropertyDescriptor(propertyType, propertyName);
+		if (propertyDescriptor == null) {
+			return null;
+		}
+		return ReflectUtil.getProperty(propertyType, propertyDescriptor, propertyName);
+	}
+
+	/**
+	 * 鑾峰彇 bean 鐨勫睘鎬т俊鎭�
+	 * @param propertyType 绫诲瀷
+	 * @param propertyDescriptor PropertyDescriptor
+	 * @param propertyName 灞炴�у悕
+	 * @return {Property}
+	 */
+	public static Property getProperty(Class<?> propertyType, PropertyDescriptor propertyDescriptor, String propertyName) {
+		Method readMethod = propertyDescriptor.getReadMethod();
+		Method writeMethod = propertyDescriptor.getWriteMethod();
+		return new Property(propertyType, readMethod, writeMethod, propertyName);
+	}
+
+	/**
+	 * 鑾峰彇 bean 鐨勫睘鎬т俊鎭�
+	 * @param propertyType 绫诲瀷
+	 * @param propertyName 灞炴�у悕
+	 * @return {Property}
+	 */
+	@Nullable
+	public static TypeDescriptor getTypeDescriptor(Class<?> propertyType, String propertyName) {
+		Property property = ReflectUtil.getProperty(propertyType, propertyName);
+		if (property == null) {
+			return null;
+		}
+		return new TypeDescriptor(property);
+	}
+
+	/**
+	 * 鑾峰彇 绫诲睘鎬т俊鎭�
+	 * @param propertyType 绫诲瀷
+	 * @param propertyDescriptor PropertyDescriptor
+	 * @param propertyName 灞炴�у悕
+	 * @return {Property}
+	 */
+	public static TypeDescriptor getTypeDescriptor(Class<?> propertyType, PropertyDescriptor propertyDescriptor, String propertyName) {
+		Method readMethod = propertyDescriptor.getReadMethod();
+		Method writeMethod = propertyDescriptor.getWriteMethod();
+		Property property = new Property(propertyType, readMethod, writeMethod, propertyName);
+		return new TypeDescriptor(property);
+	}
+
+	/**
+	 * 鑾峰彇 绫诲睘鎬�
+	 * @param clazz 绫讳俊鎭�
+	 * @param fieldName 灞炴�у悕
+	 * @return Field
+	 */
+	@Nullable
+	public static Field getField(Class<?> clazz, String fieldName) {
+		while (clazz != Object.class) {
+			try {
+				return clazz.getDeclaredField(fieldName);
+			} catch (NoSuchFieldException e) {
+				clazz = clazz.getSuperclass();
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * 鑾峰彇 鎵�鏈� field 灞炴�т笂鐨勬敞瑙�
+	 * @param clazz 绫�
+	 * @param fieldName 灞炴�у悕
+	 * @param annotationClass 娉ㄨВ
+	 * @param <T> 娉ㄨВ娉涘瀷
+	 * @return 娉ㄨВ
+	 */
+	@Nullable
+	public static <T extends Annotation> T getAnnotation(Class<?> clazz, String fieldName, Class<T> annotationClass) {
+		Field field = ReflectUtil.getField(clazz, fieldName);
+		if (field == null) {
+			return null;
+		}
+		return field.getAnnotation(annotationClass);
+	}
+}
diff --git a/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/Unchecked.java b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/Unchecked.java
new file mode 100644
index 0000000..737b21f
--- /dev/null
+++ b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/Unchecked.java
@@ -0,0 +1,106 @@
+/*
+ *      Copyright (c) 2018-2028, DreamLu All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: DreamLu 鍗㈡槬姊� (596392912@qq.com)
+ */
+
+package com.vci.web.util;
+
+import com.vci.web.util.function.*;
+import java.util.Comparator;
+import java.util.Objects;
+import java.util.concurrent.Callable;
+import java.util.function.Consumer;
+import java.util.function.Function;
+import java.util.function.Supplier;
+
+/**
+ * Lambda 鍙楁寮傚父澶勭悊
+ *
+ * <p>
+ * https://segmentfault.com/a/1190000007832130
+ * https://github.com/jOOQ/jOOL
+ * </p>
+ *
+ * @author L.cm
+ */
+public class Unchecked {
+
+	public static <T, R> Function<T, R> function(CheckedFunction<T, R> mapper) {
+		Objects.requireNonNull(mapper);
+		return t -> {
+			try {
+				return mapper.apply(t);
+			} catch (Throwable e) {
+				throw Exceptions.unchecked(e);
+			}
+		};
+	}
+
+	public static <T> Consumer<T> consumer(CheckedConsumer<T> mapper) {
+		Objects.requireNonNull(mapper);
+		return t -> {
+			try {
+				mapper.accept(t);
+			} catch (Throwable e) {
+				throw Exceptions.unchecked(e);
+			}
+		};
+	}
+
+	public static <T> Supplier<T> supplier(CheckedSupplier<T> mapper) {
+		Objects.requireNonNull(mapper);
+		return () -> {
+			try {
+				return mapper.get();
+			} catch (Throwable e) {
+				throw Exceptions.unchecked(e);
+			}
+		};
+	}
+
+	public static Runnable runnable(CheckedRunnable runnable) {
+		Objects.requireNonNull(runnable);
+		return () -> {
+			try {
+				runnable.run();
+			} catch (Throwable e) {
+				throw Exceptions.unchecked(e);
+			}
+		};
+	}
+
+	public static <T> Callable<T> callable(CheckedCallable<T> callable) {
+		Objects.requireNonNull(callable);
+		return () -> {
+			try {
+				return callable.call();
+			} catch (Throwable e) {
+				throw Exceptions.unchecked(e);
+			}
+		};
+	}
+
+	public static <T> Comparator<T> comparator(CheckedComparator<T> comparator) {
+		Objects.requireNonNull(comparator);
+		return (T o1, T o2) -> {
+			try {
+				return comparator.compare(o1, o2);
+			} catch (Throwable e) {
+				throw Exceptions.unchecked(e);
+			}
+		};
+	}
+
+}
diff --git a/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/UrlUtil.java b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/UrlUtil.java
new file mode 100644
index 0000000..6ee51f2
--- /dev/null
+++ b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/UrlUtil.java
@@ -0,0 +1,92 @@
+/*
+ *      Copyright (c) 2018-2028, DreamLu All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: DreamLu 鍗㈡槬姊� (596392912@qq.com)
+ */
+package com.vci.web.util;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.nio.charset.Charset;
+
+/**
+ * url澶勭悊宸ュ叿绫�
+ *
+ * @author L.cm
+ */
+public class UrlUtil extends org.springframework.web.util.UriUtils {
+
+	/**
+	 * url 缂栫爜
+	 *
+	 * @param source source
+	 * @return sourced String
+	 */
+	public static String encode(String source) {
+		return UrlUtil.encode(source, Charsets.UTF_8);
+	}
+
+	/**
+	 * url 瑙g爜
+	 *
+	 * @param source source
+	 * @return decoded String
+	 */
+	public static String decode(String source) {
+		return UrlUtil.decode(source, Charsets.UTF_8);
+	}
+
+	/**
+	 * url 缂栫爜
+	 *
+	 * @param source  url
+	 * @param charset 瀛楃闆�
+	 * @return 缂栫爜鍚庣殑url
+	 */
+	@Deprecated
+	public static String encodeURL(String source, Charset charset) {
+		return UrlUtil.encode(source, charset.name());
+	}
+
+	/**
+	 * url 瑙g爜
+	 *
+	 * @param source  url
+	 * @param charset 瀛楃闆�
+	 * @return 瑙g爜url
+	 */
+	@Deprecated
+	public static String decodeURL(String source, Charset charset) {
+		return UrlUtil.decode(source, charset.name());
+	}
+
+	/**
+	 * 鑾峰彇url璺緞
+	 *
+	 * @param uriStr 璺緞
+	 * @return url璺緞
+	 */
+	public static String getPath(String uriStr) {
+		URI uri;
+
+		try {
+			uri = new URI(uriStr);
+		} catch (URISyntaxException var3) {
+			throw new RuntimeException(var3);
+		}
+
+		return uri.getPath();
+	}
+
+}
diff --git a/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/beans/BeanProperty.java b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/beans/BeanProperty.java
new file mode 100644
index 0000000..e19bbf5
--- /dev/null
+++ b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/beans/BeanProperty.java
@@ -0,0 +1,16 @@
+package com.vci.web.util.beans;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * Bean灞炴��
+ *
+ * @author Chill
+ */
+@Getter
+@AllArgsConstructor
+public class BeanProperty {
+	private final String name;
+	private final Class<?> type;
+}
diff --git a/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/beans/BladeBeanCopier.java b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/beans/BladeBeanCopier.java
new file mode 100644
index 0000000..d71fbf7
--- /dev/null
+++ b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/beans/BladeBeanCopier.java
@@ -0,0 +1,404 @@
+/*
+ *      Copyright (c) 2018-2028, DreamLu All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: DreamLu 鍗㈡槬姊� (596392912@qq.com)
+ */
+
+package com.vci.web.util.beans;
+
+import com.vci.web.util.BeanUtil;
+import com.vci.web.util.ClassUtil;
+import com.vci.web.util.ReflectUtil;
+import com.vci.web.util.StringUtil;
+import org.springframework.asm.ClassVisitor;
+import org.springframework.asm.Label;
+import org.springframework.asm.Opcodes;
+import org.springframework.asm.Type;
+import org.springframework.cglib.core.*;
+import org.springframework.lang.Nullable;
+import org.springframework.util.ClassUtils;
+
+import java.beans.PropertyDescriptor;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.security.ProtectionDomain;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+
+/**
+ * spring cglib 榄旀敼
+ *
+ * <p>
+ *     1. 鏀寔閾惧紡 bean锛屾敮鎸� map
+ *     2. ClassLoader 璺� target 淇濇寔涓�鑷�
+ * </p>
+ *
+ * @author L.cm
+ */
+public abstract class BladeBeanCopier {
+	private static final Type CONVERTER = TypeUtils.parseType("org.springframework.cglib.core.Converter");
+	private static final Type BEAN_COPIER = TypeUtils.parseType(BladeBeanCopier.class.getName());
+	private static final Type BEAN_MAP = TypeUtils.parseType(Map.class.getName());
+	private static final Signature COPY = new Signature("copy", Type.VOID_TYPE, new Type[]{Constants.TYPE_OBJECT, Constants.TYPE_OBJECT, CONVERTER});
+	private static final Signature CONVERT = TypeUtils.parseSignature("Object convert(Object, Class, Object)");
+	private static final Signature BEAN_MAP_GET = TypeUtils.parseSignature("Object get(Object)");
+	private static final Type CLASS_UTILS = TypeUtils.parseType(ClassUtils.class.getName());
+	private static final Signature IS_ASSIGNABLE_VALUE = TypeUtils.parseSignature("boolean isAssignableValue(Class, Object)");
+	/**
+	 * The map to store {@link BladeBeanCopier} of source type and class type for copy.
+	 */
+	private static final ConcurrentMap<BladeBeanCopierKey, BladeBeanCopier> BEAN_COPIER_MAP = new ConcurrentHashMap<>();
+
+	public static BladeBeanCopier create(Class source, Class target, boolean useConverter) {
+		return BladeBeanCopier.create(source, target, useConverter, false);
+	}
+
+	public static BladeBeanCopier create(Class source, Class target, boolean useConverter, boolean nonNull) {
+		BladeBeanCopierKey copierKey = new BladeBeanCopierKey(source, target, useConverter, nonNull);
+		// 鍒╃敤 ConcurrentMap 缂撳瓨 鎻愰珮鎬ц兘锛屾帴杩� 鐩存帴 get set
+		return BEAN_COPIER_MAP.computeIfAbsent(copierKey, key -> {
+			Generator gen = new Generator();
+			gen.setSource(key.getSource());
+			gen.setTarget(key.getTarget());
+			gen.setUseConverter(key.isUseConverter());
+			gen.setNonNull(key.isNonNull());
+			return gen.create(key);
+		});
+	}
+
+	/**
+	 * Bean copy
+	 *
+	 * @param from from Bean
+	 * @param to to Bean
+	 * @param converter Converter
+	 */
+	abstract public void copy(Object from, Object to, @Nullable Converter converter);
+
+	public static class Generator extends AbstractClassGenerator {
+		private static final Source SOURCE = new Source(BladeBeanCopier.class.getName());
+		private Class source;
+		private Class target;
+		private boolean useConverter;
+		private boolean nonNull;
+
+		Generator() {
+			super(SOURCE);
+		}
+
+		public void setSource(Class source) {
+			if (!Modifier.isPublic(source.getModifiers())) {
+				setNamePrefix(source.getName());
+			}
+			this.source = source;
+		}
+
+		public void setTarget(Class target) {
+			if (!Modifier.isPublic(target.getModifiers())) {
+				setNamePrefix(target.getName());
+			}
+			this.target = target;
+		}
+
+		public void setUseConverter(boolean useConverter) {
+			this.useConverter = useConverter;
+		}
+
+		public void setNonNull(boolean nonNull) {
+			this.nonNull = nonNull;
+		}
+
+		@Override
+		protected ClassLoader getDefaultClassLoader() {
+			// L.cm 淇濊瘉 鍜� 杩斿洖浣跨敤鍚屼竴涓� ClassLoader
+			return target.getClassLoader();
+		}
+
+		@Override
+		protected ProtectionDomain getProtectionDomain() {
+			return ReflectUtils.getProtectionDomain(source);
+		}
+
+		@Override
+		public BladeBeanCopier create(Object key) {
+			return (BladeBeanCopier) super.create(key);
+		}
+
+		@Override
+		public void generateClass(ClassVisitor v) {
+			Type sourceType = Type.getType(source);
+			Type targetType = Type.getType(target);
+			ClassEmitter ce = new ClassEmitter(v);
+			ce.begin_class(Constants.V1_2,
+				Constants.ACC_PUBLIC,
+				getClassName(),
+				BEAN_COPIER,
+				null,
+				Constants.SOURCE_FILE);
+
+			EmitUtils.null_constructor(ce);
+			CodeEmitter e = ce.begin_method(Constants.ACC_PUBLIC, COPY, null);
+
+			// map 鍗曠嫭澶勭悊
+			if (Map.class.isAssignableFrom(source)) {
+				generateClassFormMap(ce, e, sourceType, targetType);
+				return;
+			}
+
+			// 2018.12.27 by L.cm 鏀寔閾惧紡 bean
+			// 娉ㄦ剰锛氭澶勯渶鍏煎閾惧紡bean 浣跨敤浜� spring 鐨勬柟娉曪紝姣旇緝鑰楁椂
+			PropertyDescriptor[] getters = ReflectUtil.getBeanGetters(source);
+			PropertyDescriptor[] setters = ReflectUtil.getBeanSetters(target);
+			Map<String, PropertyDescriptor> names = new HashMap<>(16);
+			for (PropertyDescriptor getter : getters) {
+				names.put(getter.getName(), getter);
+			}
+
+			Local targetLocal = e.make_local();
+			Local sourceLocal = e.make_local();
+			e.load_arg(1);
+			e.checkcast(targetType);
+			e.store_local(targetLocal);
+			e.load_arg(0);
+			e.checkcast(sourceType);
+			e.store_local(sourceLocal);
+
+			for (PropertyDescriptor setter : setters) {
+				String propName = setter.getName();
+
+				CopyProperty targetIgnoreCopy = ReflectUtil.getAnnotation(target, propName, CopyProperty.class);
+				// set 涓婃湁蹇界暐鐨� 娉ㄨВ
+				if (targetIgnoreCopy != null) {
+					if (targetIgnoreCopy.ignore()) {
+						continue;
+					}
+					// 娉ㄨВ涓婄殑鍒悕锛屽鏋滃埆鍚嶄笉涓虹┖锛屼娇鐢ㄥ埆鍚�
+					String aliasTargetPropName = targetIgnoreCopy.value();
+					if (StringUtil.isNotBlank(aliasTargetPropName)) {
+						propName = aliasTargetPropName;
+					}
+				}
+				// 鎵惧埌瀵瑰簲鐨� get
+				PropertyDescriptor getter = names.get(propName);
+				// 娌℃湁 get 璺冲嚭
+				if (getter == null) {
+					continue;
+				}
+
+				MethodInfo read = ReflectUtils.getMethodInfo(getter.getReadMethod());
+				Method writeMethod = setter.getWriteMethod();
+				MethodInfo write = ReflectUtils.getMethodInfo(writeMethod);
+				Type returnType = read.getSignature().getReturnType();
+				Type setterType = write.getSignature().getArgumentTypes()[0];
+				Class<?> getterPropertyType = getter.getPropertyType();
+				Class<?> setterPropertyType = setter.getPropertyType();
+
+				// L.cm 2019.01.12 浼樺寲閫昏緫锛屽厛鍒ゆ柇绫诲瀷锛岀被鍨嬩竴鑷寸洿鎺� set锛屼笉鍚屽啀鍒ゆ柇 鏄惁 绫诲瀷杞崲
+				// nonNull Label
+				Label l0 = e.make_label();
+				// 鍒ゆ柇绫诲瀷鏄惁涓�鑷达紝鍖呮嫭 鍖呰绫诲瀷
+				if (ClassUtil.isAssignable(setterPropertyType, getterPropertyType)) {
+					// 2018.12.27 by L.cm 鏀寔閾惧紡 bean
+					e.load_local(targetLocal);
+					e.load_local(sourceLocal);
+					e.invoke(read);
+					boolean getterIsPrimitive = getterPropertyType.isPrimitive();
+					boolean setterIsPrimitive = setterPropertyType.isPrimitive();
+
+					if (nonNull) {
+						// 闇�瑕佽惤鏍堬紝寮哄埗瑁呯
+						e.box(returnType);
+						Local var = e.make_local();
+						e.store_local(var);
+						e.load_local(var);
+						// nonNull Label
+						e.ifnull(l0);
+						e.load_local(targetLocal);
+						e.load_local(var);
+						// 闇�瑕佽惤鏍堬紝寮哄埗鎷嗙
+						e.unbox_or_zero(setterType);
+					} else {
+						// 濡傛灉 get 涓哄師濮嬬被鍨嬶紝闇�瑕佽绠�
+						if (getterIsPrimitive && !setterIsPrimitive) {
+							e.box(returnType);
+						}
+						// 濡傛灉 set 涓哄師濮嬬被鍨嬶紝闇�瑕佹媶绠�
+						if (!getterIsPrimitive && setterIsPrimitive) {
+							e.unbox_or_zero(setterType);
+						}
+					}
+
+					// 鏋勯�� set 鏂规硶
+					invokeWrite(e, write, writeMethod, nonNull, l0);
+				} else if (useConverter) {
+					e.load_local(targetLocal);
+					e.load_arg(2);
+					e.load_local(sourceLocal);
+					e.invoke(read);
+					e.box(returnType);
+
+					if (nonNull) {
+						Local var = e.make_local();
+						e.store_local(var);
+						e.load_local(var);
+						e.ifnull(l0);
+						e.load_local(targetLocal);
+						e.load_arg(2);
+						e.load_local(var);
+					}
+
+					EmitUtils.load_class(e, setterType);
+					// 鏇存敼鎴愪簡灞炴�у悕锛屼箣鍓嶆槸 set 鏂规硶鍚�
+					e.push(propName);
+					e.invoke_interface(CONVERTER, CONVERT);
+					e.unbox_or_zero(setterType);
+
+					// 鏋勯�� set 鏂规硶
+					invokeWrite(e, write, writeMethod, nonNull, l0);
+				}
+			}
+			e.return_value();
+			e.end_method();
+			ce.end_class();
+		}
+
+		private static void invokeWrite(CodeEmitter e, MethodInfo write, Method writeMethod, boolean nonNull, Label l0) {
+			// 杩斿洖鍊硷紝鍒ゆ柇 閾惧紡 bean
+			Class<?> returnType = writeMethod.getReturnType();
+			e.invoke(write);
+			// 閾惧紡 bean锛屾湁杩斿洖鍊奸渶瑕� pop
+			if (!returnType.equals(Void.TYPE)) {
+				e.pop();
+			}
+			if (nonNull) {
+				e.visitLabel(l0);
+			}
+		}
+
+		@Override
+		protected Object firstInstance(Class type) {
+			return BeanUtil.newInstance(type);
+		}
+
+		@Override
+		protected Object nextInstance(Object instance) {
+			return instance;
+		}
+
+		/**
+		 * 澶勭悊 map 鐨� copy
+		 * @param ce ClassEmitter
+		 * @param e CodeEmitter
+		 * @param sourceType sourceType
+		 * @param targetType targetType
+		 */
+		public void generateClassFormMap(ClassEmitter ce, CodeEmitter e, Type sourceType, Type targetType) {
+			// 2018.12.27 by L.cm 鏀寔閾惧紡 bean
+			PropertyDescriptor[] setters = ReflectUtil.getBeanSetters(target);
+
+			// 鍏ュ彛鍙橀噺
+			Local targetLocal = e.make_local();
+			Local sourceLocal = e.make_local();
+			e.load_arg(1);
+			e.checkcast(targetType);
+			e.store_local(targetLocal);
+			e.load_arg(0);
+			e.checkcast(sourceType);
+			e.store_local(sourceLocal);
+			Type mapBox = Type.getType(Object.class);
+
+			for (PropertyDescriptor setter : setters) {
+				String propName = setter.getName();
+
+				// set 涓婃湁蹇界暐鐨� 娉ㄨВ
+				CopyProperty targetIgnoreCopy = ReflectUtil.getAnnotation(target, propName, CopyProperty.class);
+				if (targetIgnoreCopy != null) {
+					if (targetIgnoreCopy.ignore()) {
+						continue;
+					}
+					// 娉ㄨВ涓婄殑鍒悕
+					String aliasTargetPropName = targetIgnoreCopy.value();
+					if (StringUtil.isNotBlank(aliasTargetPropName)) {
+						propName = aliasTargetPropName;
+					}
+				}
+
+				Method writeMethod = setter.getWriteMethod();
+				MethodInfo write = ReflectUtils.getMethodInfo(writeMethod);
+				Type setterType = write.getSignature().getArgumentTypes()[0];
+
+				e.load_local(targetLocal);
+				e.load_local(sourceLocal);
+
+				e.push(propName);
+				// 鎵ц map get
+				e.invoke_interface(BEAN_MAP, BEAN_MAP_GET);
+				// box 瑁呯锛岄伩鍏� array[] 鏁扮粍闂
+				e.box(mapBox);
+
+				// 鐢熸垚鍙橀噺
+				Local var = e.make_local();
+				e.store_local(var);
+				e.load_local(var);
+
+				// 鍏堝垽鏂� 涓嶄负null锛岀劧鍚庡仛绫诲瀷鍒ゆ柇
+				Label l0 = e.make_label();
+				e.ifnull(l0);
+				EmitUtils.load_class(e, setterType);
+				e.load_local(var);
+				// ClassUtils.isAssignableValue(Integer.class, id)
+				e.invoke_static(CLASS_UTILS, IS_ASSIGNABLE_VALUE);
+				Label l1 = new Label();
+				// 杩斿洖鍊硷紝鍒ゆ柇 閾惧紡 bean
+				Class<?> returnType = writeMethod.getReturnType();
+				if (useConverter) {
+					e.if_jump(Opcodes.IFEQ, l1);
+					e.load_local(targetLocal);
+					e.load_local(var);
+					e.unbox_or_zero(setterType);
+					e.invoke(write);
+					if (!returnType.equals(Void.TYPE)) {
+						e.pop();
+					}
+					e.goTo(l0);
+					e.visitLabel(l1);
+					e.load_local(targetLocal);
+					e.load_arg(2);
+					e.load_local(var);
+					EmitUtils.load_class(e, setterType);
+					e.push(propName);
+					e.invoke_interface(CONVERTER, CONVERT);
+					e.unbox_or_zero(setterType);
+					e.invoke(write);
+				} else {
+					e.if_jump(Opcodes.IFEQ, l0);
+					e.load_local(targetLocal);
+					e.load_local(var);
+					e.unbox_or_zero(setterType);
+					e.invoke(write);
+				}
+				// 杩斿洖鍊硷紝鍒ゆ柇 閾惧紡 bean
+				if (!returnType.equals(Void.TYPE)) {
+					e.pop();
+				}
+				e.visitLabel(l0);
+			}
+			e.return_value();
+			e.end_method();
+			ce.end_class();
+		}
+	}
+}
diff --git a/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/beans/BladeBeanCopierKey.java b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/beans/BladeBeanCopierKey.java
new file mode 100644
index 0000000..9b96826
--- /dev/null
+++ b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/beans/BladeBeanCopierKey.java
@@ -0,0 +1,20 @@
+package com.vci.web.util.beans;
+
+import lombok.AllArgsConstructor;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+
+/**
+ * copy key
+ *
+ * @author L.cm
+ */
+@Getter
+@EqualsAndHashCode
+@AllArgsConstructor
+public class BladeBeanCopierKey {
+	private final Class<?> source;
+	private final Class<?> target;
+	private final boolean useConverter;
+	private final boolean nonNull;
+}
diff --git a/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/beans/BladeBeanMap.java b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/beans/BladeBeanMap.java
new file mode 100644
index 0000000..aa35969
--- /dev/null
+++ b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/beans/BladeBeanMap.java
@@ -0,0 +1,125 @@
+package com.vci.web.util.beans;
+
+import org.springframework.asm.ClassVisitor;
+import org.springframework.cglib.beans.BeanMap;
+import org.springframework.cglib.core.AbstractClassGenerator;
+import org.springframework.cglib.core.ReflectUtils;
+
+import java.security.ProtectionDomain;
+
+/**
+ * 閲嶅啓 cglib BeanMap锛屾敮鎸侀摼寮廱ean
+ *
+ * @author L.cm
+ */
+public abstract class BladeBeanMap extends BeanMap {
+	protected BladeBeanMap() {
+	}
+
+	protected BladeBeanMap(Object bean) {
+		super(bean);
+	}
+
+	public static BladeBeanMap create(Object bean) {
+		BladeGenerator gen = new BladeGenerator();
+		gen.setBean(bean);
+		return gen.create();
+	}
+
+	/**
+	 * newInstance
+	 *
+	 * @param o Object
+	 * @return BladeBeanMap
+	 */
+	@Override
+	public abstract BladeBeanMap newInstance(Object o);
+
+	public static class BladeGenerator extends AbstractClassGenerator {
+		private static final Source SOURCE = new Source(BladeBeanMap.class.getName());
+
+		private Object bean;
+		private Class beanClass;
+		private int require;
+
+		public BladeGenerator() {
+			super(SOURCE);
+		}
+
+		/**
+		 * Set the bean that the generated map should reflect. The bean may be swapped
+		 * out for another bean of the same type using {@link #setBean}.
+		 * Calling this method overrides any value previously set using {@link #setBeanClass}.
+		 * You must call either this method or {@link #setBeanClass} before {@link #create}.
+		 *
+		 * @param bean the initial bean
+		 */
+		public void setBean(Object bean) {
+			this.bean = bean;
+			if (bean != null) {
+				beanClass = bean.getClass();
+			}
+		}
+
+		/**
+		 * Set the class of the bean that the generated map should support.
+		 * You must call either this method or {@link #setBeanClass} before {@link #create}.
+		 *
+		 * @param beanClass the class of the bean
+		 */
+		public void setBeanClass(Class beanClass) {
+			this.beanClass = beanClass;
+		}
+
+		/**
+		 * Limit the properties reflected by the generated map.
+		 *
+		 * @param require any combination of {@link #REQUIRE_GETTER} and
+		 *                {@link #REQUIRE_SETTER}; default is zero (any property allowed)
+		 */
+		public void setRequire(int require) {
+			this.require = require;
+		}
+
+		@Override
+		protected ClassLoader getDefaultClassLoader() {
+			return beanClass.getClassLoader();
+		}
+
+		@Override
+		protected ProtectionDomain getProtectionDomain() {
+			return ReflectUtils.getProtectionDomain(beanClass);
+		}
+
+		/**
+		 * Create a new instance of the <code>BeanMap</code>. An existing
+		 * generated class will be reused if possible.
+		 *
+		 * @return {BladeBeanMap}
+		 */
+		public BladeBeanMap create() {
+			if (beanClass == null) {
+				throw new IllegalArgumentException("Class of bean unknown");
+			}
+			setNamePrefix(beanClass.getName());
+			BladeBeanMapKey key = new BladeBeanMapKey(beanClass, require);
+			return (BladeBeanMap) super.create(key);
+		}
+
+		@Override
+		public void generateClass(ClassVisitor v) throws Exception {
+			new BladeBeanMapEmitter(v, getClassName(), beanClass, require);
+		}
+
+		@Override
+		protected Object firstInstance(Class type) {
+			return ((BeanMap) ReflectUtils.newInstance(type)).newInstance(bean);
+		}
+
+		@Override
+		protected Object nextInstance(Object instance) {
+			return ((BeanMap) instance).newInstance(bean);
+		}
+	}
+
+}
diff --git a/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/beans/BladeBeanMapEmitter.java b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/beans/BladeBeanMapEmitter.java
new file mode 100644
index 0000000..915edb5
--- /dev/null
+++ b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/beans/BladeBeanMapEmitter.java
@@ -0,0 +1,192 @@
+package com.vci.web.util.beans;
+
+import com.vci.web.util.ReflectUtil;
+import org.springframework.asm.ClassVisitor;
+import org.springframework.asm.Label;
+import org.springframework.asm.Type;
+import org.springframework.cglib.core.*;
+
+import java.beans.PropertyDescriptor;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+/**
+ * 閲嶅啓 cglib BeanMap 澶勭悊鍣�
+ *
+ * @author L.cm
+ */
+class BladeBeanMapEmitter extends ClassEmitter {
+	private static final Type BEAN_MAP = TypeUtils.parseType(BladeBeanMap.class.getName());
+	private static final Type FIXED_KEY_SET = TypeUtils.parseType("org.springframework.cglib.beans.FixedKeySet");
+	private static final Signature CSTRUCT_OBJECT = TypeUtils.parseConstructor("Object");
+	private static final Signature CSTRUCT_STRING_ARRAY = TypeUtils.parseConstructor("String[]");
+	private static final Signature BEAN_MAP_GET = TypeUtils.parseSignature("Object get(Object, Object)");
+	private static final Signature BEAN_MAP_PUT = TypeUtils.parseSignature("Object put(Object, Object, Object)");
+	private static final Signature KEY_SET = TypeUtils.parseSignature("java.util.Set keySet()");
+	private static final Signature NEW_INSTANCE = new Signature("newInstance", BEAN_MAP, new Type[]{Constants.TYPE_OBJECT});
+	private static final Signature GET_PROPERTY_TYPE = TypeUtils.parseSignature("Class getPropertyType(String)");
+
+	public BladeBeanMapEmitter(ClassVisitor v, String className, Class type, int require) {
+		super(v);
+
+		begin_class(Constants.V1_2, Constants.ACC_PUBLIC, className, BEAN_MAP, null, Constants.SOURCE_FILE);
+		EmitUtils.null_constructor(this);
+		EmitUtils.factory_method(this, NEW_INSTANCE);
+		generateConstructor();
+
+		Map<String, PropertyDescriptor> getters = makePropertyMap(ReflectUtil.getBeanGetters(type));
+		Map<String, PropertyDescriptor> setters = makePropertyMap(ReflectUtil.getBeanSetters(type));
+		Map<String, PropertyDescriptor> allProps = new HashMap<>(32);
+		allProps.putAll(getters);
+		allProps.putAll(setters);
+
+		if (require != 0) {
+			for (Iterator it = allProps.keySet().iterator(); it.hasNext(); ) {
+				String name = (String) it.next();
+				if ((((require & BladeBeanMap.REQUIRE_GETTER) != 0) && !getters.containsKey(name)) ||
+					(((require & BladeBeanMap.REQUIRE_SETTER) != 0) && !setters.containsKey(name))) {
+					it.remove();
+					getters.remove(name);
+					setters.remove(name);
+				}
+			}
+		}
+		generateGet(type, getters);
+		generatePut(type, setters);
+
+		String[] allNames = getNames(allProps);
+		generateKeySet(allNames);
+		generateGetPropertyType(allProps, allNames);
+		end_class();
+	}
+
+	private Map<String, PropertyDescriptor> makePropertyMap(PropertyDescriptor[] props) {
+		Map<String, PropertyDescriptor> names = new HashMap<>(16);
+		for (PropertyDescriptor prop : props) {
+			String propName = prop.getName();
+			// 杩囨护 getClass锛孲pring 鐨勫伐鍏风被浼氭嬁鍒拌鏂规硶
+			if (!"class".equals(propName)) {
+				names.put(propName, prop);
+			}
+		}
+		return names;
+	}
+
+	private String[] getNames(Map<String, PropertyDescriptor> propertyMap) {
+		return propertyMap.keySet().toArray(new String[0]);
+	}
+
+	private void generateConstructor() {
+		CodeEmitter e = begin_method(Constants.ACC_PUBLIC, CSTRUCT_OBJECT, null);
+		e.load_this();
+		e.load_arg(0);
+		e.super_invoke_constructor(CSTRUCT_OBJECT);
+		e.return_value();
+		e.end_method();
+	}
+
+	private void generateGet(Class type, final Map<String, PropertyDescriptor> getters) {
+		final CodeEmitter e = begin_method(Constants.ACC_PUBLIC, BEAN_MAP_GET, null);
+		e.load_arg(0);
+		e.checkcast(Type.getType(type));
+		e.load_arg(1);
+		e.checkcast(Constants.TYPE_STRING);
+		EmitUtils.string_switch(e, getNames(getters), Constants.SWITCH_STYLE_HASH, new ObjectSwitchCallback() {
+			@Override
+			public void processCase(Object key, Label end) {
+				PropertyDescriptor pd = getters.get(key);
+				MethodInfo method = ReflectUtils.getMethodInfo(pd.getReadMethod());
+				e.invoke(method);
+				e.box(method.getSignature().getReturnType());
+				e.return_value();
+			}
+
+			@Override
+			public void processDefault() {
+				e.aconst_null();
+				e.return_value();
+			}
+		});
+		e.end_method();
+	}
+
+	private void generatePut(Class type, final Map<String, PropertyDescriptor> setters) {
+		final CodeEmitter e = begin_method(Constants.ACC_PUBLIC, BEAN_MAP_PUT, null);
+		e.load_arg(0);
+		e.checkcast(Type.getType(type));
+		e.load_arg(1);
+		e.checkcast(Constants.TYPE_STRING);
+		EmitUtils.string_switch(e, getNames(setters), Constants.SWITCH_STYLE_HASH, new ObjectSwitchCallback() {
+			@Override
+			public void processCase(Object key, Label end) {
+				PropertyDescriptor pd = setters.get(key);
+				if (pd.getReadMethod() == null) {
+					e.aconst_null();
+				} else {
+					MethodInfo read = ReflectUtils.getMethodInfo(pd.getReadMethod());
+					e.dup();
+					e.invoke(read);
+					e.box(read.getSignature().getReturnType());
+				}
+				// move old value behind bean
+				e.swap();
+				// new value
+				e.load_arg(2);
+				MethodInfo write = ReflectUtils.getMethodInfo(pd.getWriteMethod());
+				e.unbox(write.getSignature().getArgumentTypes()[0]);
+				e.invoke(write);
+				e.return_value();
+			}
+
+			@Override
+			public void processDefault() {
+				// fall-through
+			}
+		});
+		e.aconst_null();
+		e.return_value();
+		e.end_method();
+	}
+
+	private void generateKeySet(String[] allNames) {
+		// static initializer
+		declare_field(Constants.ACC_STATIC | Constants.ACC_PRIVATE, "keys", FIXED_KEY_SET, null);
+
+		CodeEmitter e = begin_static();
+		e.new_instance(FIXED_KEY_SET);
+		e.dup();
+		EmitUtils.push_array(e, allNames);
+		e.invoke_constructor(FIXED_KEY_SET, CSTRUCT_STRING_ARRAY);
+		e.putfield("keys");
+		e.return_value();
+		e.end_method();
+
+		// keySet
+		e = begin_method(Constants.ACC_PUBLIC, KEY_SET, null);
+		e.load_this();
+		e.getfield("keys");
+		e.return_value();
+		e.end_method();
+	}
+
+	private void generateGetPropertyType(final Map allProps, String[] allNames) {
+		final CodeEmitter e = begin_method(Constants.ACC_PUBLIC, GET_PROPERTY_TYPE, null);
+		e.load_arg(0);
+		EmitUtils.string_switch(e, allNames, Constants.SWITCH_STYLE_HASH, new ObjectSwitchCallback() {
+			@Override
+			public void processCase(Object key, Label end) {
+				PropertyDescriptor pd = (PropertyDescriptor) allProps.get(key);
+				EmitUtils.load_class(e, Type.getType(pd.getPropertyType()));
+				e.return_value();
+			}
+
+			@Override
+			public void processDefault() {
+				e.aconst_null();
+				e.return_value();
+			}
+		});
+		e.end_method();
+	}
+}
diff --git a/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/beans/BladeBeanMapKey.java b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/beans/BladeBeanMapKey.java
new file mode 100644
index 0000000..e015ae4
--- /dev/null
+++ b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/beans/BladeBeanMapKey.java
@@ -0,0 +1,16 @@
+package com.vci.web.util.beans;
+
+import lombok.AllArgsConstructor;
+import lombok.EqualsAndHashCode;
+
+/**
+ * bean map key锛屾彁楂樻�ц兘
+ *
+ * @author L.cm
+ */
+@EqualsAndHashCode
+@AllArgsConstructor
+public class BladeBeanMapKey {
+	private final Class type;
+	private final int require;
+}
diff --git a/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/beans/CopyProperty.java b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/beans/CopyProperty.java
new file mode 100644
index 0000000..d387f01
--- /dev/null
+++ b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/beans/CopyProperty.java
@@ -0,0 +1,26 @@
+package com.vci.web.util.beans;
+
+import java.lang.annotation.*;
+
+/**
+ * copy 瀛楁 閰嶇疆
+ *
+ * @author L.cm
+ */
+@Target(ElementType.FIELD)
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface CopyProperty {
+
+	/**
+	 * 灞炴�у悕锛岀敤浜庢寚瀹氬埆鍚嶏紝榛樿浣跨敤锛歠ield name
+	 * @return 灞炴�у悕
+	 */
+	String value() default "";
+
+	/**
+	 * 蹇界暐锛氶粯璁や负 false
+	 * @return 鏄惁蹇界暐
+	 */
+	boolean ignore() default false;
+}
diff --git a/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/convert/BladeConversionService.java b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/convert/BladeConversionService.java
new file mode 100644
index 0000000..3540be5
--- /dev/null
+++ b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/convert/BladeConversionService.java
@@ -0,0 +1,51 @@
+package com.vci.web.util.convert;
+
+import com.vci.web.util.convert.EnumToStringConverter;
+import org.springframework.boot.convert.ApplicationConversionService;
+import org.springframework.core.convert.support.GenericConversionService;
+import org.springframework.lang.Nullable;
+import org.springframework.util.StringValueResolver;
+
+/**
+ * 绫诲瀷 杞崲 鏈嶅姟锛屾坊鍔犱簡 IEnum 杞崲
+ *
+ * @author L.cm
+ */
+public class BladeConversionService extends ApplicationConversionService {
+	@Nullable
+	private static volatile BladeConversionService SHARED_INSTANCE;
+
+	public BladeConversionService() {
+		this(null);
+	}
+
+	public BladeConversionService(@Nullable StringValueResolver embeddedValueResolver) {
+		super(embeddedValueResolver);
+		super.addConverter(new EnumToStringConverter());
+		super.addConverter(new StringToEnumConverter());
+	}
+
+	/**
+	 * Return a shared default application {@code ConversionService} instance, lazily
+	 * building it once needed.
+	 * <p>
+	 * Note: This method actually returns an {@link BladeConversionService}
+	 * instance. However, the {@code ConversionService} signature has been preserved for
+	 * binary compatibility.
+	 * @return the shared {@code BladeConversionService} instance (never{@code null})
+	 */
+	public static GenericConversionService getInstance() {
+		BladeConversionService sharedInstance = BladeConversionService.SHARED_INSTANCE;
+		if (sharedInstance == null) {
+			synchronized (BladeConversionService.class) {
+				sharedInstance = BladeConversionService.SHARED_INSTANCE;
+				if (sharedInstance == null) {
+					sharedInstance = new BladeConversionService();
+					BladeConversionService.SHARED_INSTANCE = sharedInstance;
+				}
+			}
+		}
+		return sharedInstance;
+	}
+
+}
diff --git a/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/convert/BladeConverter.java b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/convert/BladeConverter.java
new file mode 100644
index 0000000..978214a
--- /dev/null
+++ b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/convert/BladeConverter.java
@@ -0,0 +1,77 @@
+package com.vci.web.util.convert;
+
+import com.vci.web.util.ClassUtil;
+import com.vci.web.util.ConvertUtil;
+import com.vci.web.util.ReflectUtil;
+import com.vci.web.util.Unchecked;
+import com.vci.web.util.function.CheckedFunction;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.cglib.core.Converter;
+import org.springframework.core.convert.TypeDescriptor;
+import org.springframework.lang.Nullable;
+
+import java.lang.reflect.Field;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+
+/**
+ * 缁勫悎 spring cglib Converter 鍜� spring ConversionService
+ *
+ * @author L.cm
+ */
+@Slf4j
+@AllArgsConstructor
+public class BladeConverter implements Converter {
+	private static final ConcurrentMap<String, TypeDescriptor> TYPE_CACHE = new ConcurrentHashMap<>();
+	private final Class<?> sourceClazz;
+	private final Class<?> targetClazz;
+
+	/**
+	 * cglib convert
+	 *
+	 * @param value     婧愬璞″睘鎬�
+	 * @param target    鐩爣瀵硅薄灞炴�х被
+	 * @param fieldName 鐩爣鐨刦ield鍚嶏紝鍘熶负 set 鏂规硶鍚嶏紝BladeBeanCopier 閲屽仛浜嗘洿鏀�
+	 * @return {Object}
+	 */
+	@Override
+	@Nullable
+	public Object convert(Object value, Class target, final Object fieldName) {
+		if (value == null) {
+			return null;
+		}
+		// 绫诲瀷涓�鏍凤紝涓嶉渶瑕佽浆鎹�
+		if (ClassUtil.isAssignableValue(target, value)) {
+			return value;
+		}
+		try {
+			TypeDescriptor targetDescriptor = BladeConverter.getTypeDescriptor(targetClazz, (String) fieldName);
+			// 1. 鍒ゆ柇 sourceClazz 涓� Map
+			if (Map.class.isAssignableFrom(sourceClazz)) {
+				return ConvertUtil.convert(value, targetDescriptor);
+			} else {
+				TypeDescriptor sourceDescriptor = BladeConverter.getTypeDescriptor(sourceClazz, (String) fieldName);
+				return ConvertUtil.convert(value, sourceDescriptor, targetDescriptor);
+			}
+		} catch (Throwable e) {
+			log.warn("BladeConverter error", e);
+			return null;
+		}
+	}
+
+	private static TypeDescriptor getTypeDescriptor(final Class<?> clazz, final String fieldName) {
+		String srcCacheKey = clazz.getName() + fieldName;
+		// 蹇界暐鎶涘嚭寮傚父鐨勫嚱鏁帮紝瀹氫箟瀹屾暣娉涘瀷锛岄伩鍏嶇紪璇戦棶棰�
+		CheckedFunction<String, TypeDescriptor> uncheckedFunction = (key) -> {
+			// 杩欓噷 property 鐞嗚涓婁笉浼氫负 null
+			Field field = ReflectUtil.getField(clazz, fieldName);
+			if (field == null) {
+				throw new NoSuchFieldException(fieldName);
+			}
+			return new TypeDescriptor(field);
+		};
+		return TYPE_CACHE.computeIfAbsent(srcCacheKey, Unchecked.function(uncheckedFunction));
+	}
+}
diff --git a/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/convert/EnumToStringConverter.java b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/convert/EnumToStringConverter.java
new file mode 100644
index 0000000..fe10cdf
--- /dev/null
+++ b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/convert/EnumToStringConverter.java
@@ -0,0 +1,126 @@
+/*
+ *      Copyright (c) 2018-2028, DreamLu All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: DreamLu 鍗㈡槬姊� (596392912@qq.com)
+ */
+
+package com.vci.web.util.convert;
+
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.vci.web.util.ConvertUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.core.convert.TypeDescriptor;
+import org.springframework.core.convert.converter.ConditionalGenericConverter;
+import org.springframework.lang.Nullable;
+
+import java.lang.reflect.AccessibleObject;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+
+/**
+ * 鎺ユ敹鍙傛暟 鍚� jackson Enum -銆� String 杞崲
+ *
+ * @author L.cm
+ */
+@Slf4j
+public class EnumToStringConverter implements ConditionalGenericConverter {
+	/**
+	 * 缂撳瓨 Enum 绫讳俊鎭紝鎻愪緵鎬ц兘
+	 */
+	private static final ConcurrentMap<Class<?>, AccessibleObject> ENUM_CACHE_MAP = new ConcurrentHashMap<>(8);
+
+	@Nullable
+	private static AccessibleObject getAnnotation(Class<?> clazz) {
+		Set<AccessibleObject> accessibleObjects = new HashSet<>();
+		// JsonValue METHOD, FIELD
+		Field[] fields = clazz.getDeclaredFields();
+		Collections.addAll(accessibleObjects, fields);
+		// methods
+		Method[] methods = clazz.getDeclaredMethods();
+		Collections.addAll(accessibleObjects, methods);
+		for (AccessibleObject accessibleObject : accessibleObjects) {
+			// 澶嶇敤 jackson 鐨� JsonValue 娉ㄨВ
+			JsonValue jsonValue = accessibleObject.getAnnotation(JsonValue.class);
+			if (jsonValue != null && jsonValue.value()) {
+				accessibleObject.setAccessible(true);
+				return accessibleObject;
+			}
+		}
+		return null;
+	}
+
+	@Override
+	public boolean matches(TypeDescriptor sourceType, TypeDescriptor targetType) {
+		return true;
+	}
+
+	@Override
+	public Set<ConvertiblePair> getConvertibleTypes() {
+		Set<ConvertiblePair> pairSet = new HashSet<>(3);
+		pairSet.add(new ConvertiblePair(Enum.class, String.class));
+		pairSet.add(new ConvertiblePair(Enum.class, Integer.class));
+		pairSet.add(new ConvertiblePair(Enum.class, Long.class));
+		return Collections.unmodifiableSet(pairSet);
+	}
+
+	@Override
+	public Object convert(@Nullable Object source, TypeDescriptor sourceType, TypeDescriptor targetType) {
+		if (source == null) {
+			return null;
+		}
+		Class<?> sourceClazz = sourceType.getType();
+		AccessibleObject accessibleObject = ENUM_CACHE_MAP.computeIfAbsent(sourceClazz, EnumToStringConverter::getAnnotation);
+		Class<?> targetClazz = targetType.getType();
+		// 濡傛灉涓簄ull锛岃蛋榛樿鐨勮浆鎹�
+		if (accessibleObject == null) {
+			if (String.class == targetClazz) {
+				return ((Enum) source).name();
+			}
+			int ordinal = ((Enum) source).ordinal();
+			return ConvertUtil.convert(ordinal, targetClazz);
+		}
+		try {
+			return EnumToStringConverter.invoke(sourceClazz, accessibleObject, source, targetClazz);
+		} catch (Exception e) {
+			log.error(e.getMessage(), e);
+		}
+		return null;
+	}
+
+	@Nullable
+	private static Object invoke(Class<?> clazz, AccessibleObject accessibleObject, Object source, Class<?> targetClazz)
+		throws IllegalAccessException, InvocationTargetException {
+		Object value = null;
+		if (accessibleObject instanceof Field) {
+			Field field = (Field) accessibleObject;
+			value = field.get(source);
+		} else if (accessibleObject instanceof Method) {
+			Method method = (Method) accessibleObject;
+			Class<?> paramType = method.getParameterTypes()[0];
+			// 绫诲瀷杞崲
+			Object object = ConvertUtil.convert(source, paramType);
+			value = method.invoke(clazz, object);
+		}
+		if (value == null) {
+			return null;
+		}
+		return ConvertUtil.convert(value, targetClazz);
+	}
+}
diff --git a/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/convert/StringToEnumConverter.java b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/convert/StringToEnumConverter.java
new file mode 100644
index 0000000..cb36729
--- /dev/null
+++ b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/convert/StringToEnumConverter.java
@@ -0,0 +1,126 @@
+/*
+ *      Copyright (c) 2018-2028, DreamLu All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: DreamLu 鍗㈡槬姊� (596392912@qq.com)
+ */
+
+package com.vci.web.util.convert;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.vci.web.util.ConvertUtil;
+import com.vci.web.util.StringUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.core.convert.TypeDescriptor;
+import org.springframework.core.convert.converter.ConditionalGenericConverter;
+import org.springframework.lang.Nullable;
+
+import java.lang.reflect.AccessibleObject;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+
+/**
+ * 鎺ユ敹鍙傛暟 鍚� jackson String -銆� Enum 杞崲
+ *
+ * @author L.cm
+ */
+@Slf4j
+public class StringToEnumConverter implements ConditionalGenericConverter {
+	/**
+	 * 缂撳瓨 Enum 绫讳俊鎭紝鎻愪緵鎬ц兘
+	 */
+	private static final ConcurrentMap<Class<?>, AccessibleObject> ENUM_CACHE_MAP = new ConcurrentHashMap<>(8);
+
+	@Nullable
+	private static AccessibleObject getAnnotation(Class<?> clazz) {
+		Set<AccessibleObject> accessibleObjects = new HashSet<>();
+		// JsonCreator METHOD, CONSTRUCTOR
+		Constructor<?>[] constructors = clazz.getConstructors();
+		Collections.addAll(accessibleObjects, constructors);
+		// methods
+		Method[] methods = clazz.getDeclaredMethods();
+		Collections.addAll(accessibleObjects, methods);
+		for (AccessibleObject accessibleObject : accessibleObjects) {
+			// 澶嶇敤 jackson 鐨� JsonCreator娉ㄨВ
+			JsonCreator jsonCreator = accessibleObject.getAnnotation(JsonCreator.class);
+			if (jsonCreator != null && JsonCreator.Mode.DISABLED != jsonCreator.mode()) {
+				accessibleObject.setAccessible(true);
+				return accessibleObject;
+			}
+		}
+		return null;
+	}
+
+	@Override
+	public boolean matches(TypeDescriptor sourceType, TypeDescriptor targetType) {
+		return true;
+	}
+
+	@Override
+	public Set<ConvertiblePair> getConvertibleTypes() {
+		return Collections.singleton(new ConvertiblePair(String.class, Enum.class));
+	}
+
+	@Nullable
+	@Override
+	public Object convert(@Nullable Object source, TypeDescriptor sourceType, TypeDescriptor targetType) {
+		if (StringUtil.isBlank((String) source)) {
+			return null;
+		}
+		Class<?> clazz = targetType.getType();
+		AccessibleObject accessibleObject = ENUM_CACHE_MAP.computeIfAbsent(clazz, StringToEnumConverter::getAnnotation);
+		String value = ((String) source).trim();
+		// 濡傛灉涓簄ull锛岃蛋榛樿鐨勮浆鎹�
+		if (accessibleObject == null) {
+			return valueOf(clazz, value);
+		}
+		try {
+			return StringToEnumConverter.invoke(clazz, accessibleObject, value);
+		} catch (Exception e) {
+			log.error(e.getMessage(), e);
+		}
+		return null;
+	}
+
+	@SuppressWarnings("unchecked")
+	private static <T extends Enum<T>> T valueOf(Class<?> clazz, String value){
+		return Enum.valueOf((Class<T>) clazz, value);
+	}
+
+	@Nullable
+	private static Object invoke(Class<?> clazz, AccessibleObject accessibleObject, String value)
+		throws IllegalAccessException, InvocationTargetException, InstantiationException {
+		if (accessibleObject instanceof Constructor) {
+			Constructor constructor = (Constructor) accessibleObject;
+			Class<?> paramType = constructor.getParameterTypes()[0];
+			// 绫诲瀷杞崲
+			Object object = ConvertUtil.convert(value, paramType);
+			return constructor.newInstance(object);
+		}
+		if (accessibleObject instanceof Method) {
+			Method method = (Method) accessibleObject;
+			Class<?> paramType = method.getParameterTypes()[0];
+			// 绫诲瀷杞崲
+			Object object = ConvertUtil.convert(value, paramType);
+			return method.invoke(clazz, object);
+		}
+		return null;
+	}
+
+}
diff --git a/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/function/CheckedCallable.java b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/function/CheckedCallable.java
new file mode 100644
index 0000000..e61dd7c
--- /dev/null
+++ b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/function/CheckedCallable.java
@@ -0,0 +1,38 @@
+/*
+ *      Copyright (c) 2018-2028, DreamLu All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: DreamLu 鍗㈡槬姊� (596392912@qq.com)
+ */
+
+package com.vci.web.util.function;
+
+import org.springframework.lang.Nullable;
+
+/**
+ * 鍙楁鐨� Callable
+ *
+ * @author L.cm
+ */
+@FunctionalInterface
+public interface CheckedCallable<T> {
+
+	/**
+	 * Run this callable.
+	 *
+	 * @return result
+	 * @throws Throwable CheckedException
+	 */
+	@Nullable
+	T call() throws Throwable;
+}
diff --git a/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/function/CheckedComparator.java b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/function/CheckedComparator.java
new file mode 100644
index 0000000..7511b85
--- /dev/null
+++ b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/function/CheckedComparator.java
@@ -0,0 +1,38 @@
+/*
+ *      Copyright (c) 2018-2028, DreamLu All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: DreamLu 鍗㈡槬姊� (596392912@qq.com)
+ */
+
+package com.vci.web.util.function;
+
+/**
+ * 鍙楁鐨� Comparator
+ *
+ * @author L.cm
+ */
+@FunctionalInterface
+public interface CheckedComparator<T> {
+
+	/**
+	 * Compares its two arguments for order.
+	 *
+	 * @param o1 o1
+	 * @param o2 o2
+	 * @return int
+	 * @throws Throwable CheckedException
+	 */
+	int compare(T o1, T o2) throws Throwable;
+
+}
diff --git a/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/function/CheckedConsumer.java b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/function/CheckedConsumer.java
new file mode 100644
index 0000000..11f9694
--- /dev/null
+++ b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/function/CheckedConsumer.java
@@ -0,0 +1,39 @@
+/*
+ *      Copyright (c) 2018-2028, DreamLu All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: DreamLu 鍗㈡槬姊� (596392912@qq.com)
+ */
+
+package com.vci.web.util.function;
+
+import org.springframework.lang.Nullable;
+
+/**
+ * 鍙楁鐨� Consumer
+ *
+ * @author L.cm
+ */
+@FunctionalInterface
+public interface CheckedConsumer<T> {
+
+	/**
+	 * Run the Consumer
+	 *
+	 * @param t T
+	 * @throws Throwable UncheckedException
+	 */
+	@Nullable
+	void accept(@Nullable T t) throws Throwable;
+
+}
diff --git a/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/function/CheckedFunction.java b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/function/CheckedFunction.java
new file mode 100644
index 0000000..a1cb096
--- /dev/null
+++ b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/function/CheckedFunction.java
@@ -0,0 +1,40 @@
+/*
+ *      Copyright (c) 2018-2028, DreamLu All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: DreamLu 鍗㈡槬姊� (596392912@qq.com)
+ */
+
+package com.vci.web.util.function;
+
+import org.springframework.lang.Nullable;
+
+/**
+ * 鍙楁鐨� function
+ *
+ * @author L.cm
+ */
+@FunctionalInterface
+public interface CheckedFunction<T, R> {
+
+	/**
+	 * Run the Function
+	 *
+	 * @param t T
+	 * @return R R
+	 * @throws Throwable CheckedException
+	 */
+	@Nullable
+	R apply(@Nullable T t) throws Throwable;
+
+}
diff --git a/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/function/CheckedRunnable.java b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/function/CheckedRunnable.java
new file mode 100644
index 0000000..7bd0407
--- /dev/null
+++ b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/function/CheckedRunnable.java
@@ -0,0 +1,35 @@
+/*
+ *      Copyright (c) 2018-2028, DreamLu All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: DreamLu 鍗㈡槬姊� (596392912@qq.com)
+ */
+
+package com.vci.web.util.function;
+
+/**
+ * 鍙楁鐨� runnable
+ *
+ * @author L.cm
+ */
+@FunctionalInterface
+public interface CheckedRunnable {
+
+	/**
+	 * Run this runnable.
+	 *
+	 * @throws Throwable CheckedException
+	 */
+	void run() throws Throwable;
+
+}
diff --git a/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/function/CheckedSupplier.java b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/function/CheckedSupplier.java
new file mode 100644
index 0000000..cd55775
--- /dev/null
+++ b/Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/function/CheckedSupplier.java
@@ -0,0 +1,39 @@
+/*
+ *      Copyright (c) 2018-2028, DreamLu All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: DreamLu 鍗㈡槬姊� (596392912@qq.com)
+ */
+
+package com.vci.web.util.function;
+
+import org.springframework.lang.Nullable;
+
+/**
+ * 鍙楁鐨� Supplier
+ *
+ * @author L.cm
+ */
+@FunctionalInterface
+public interface CheckedSupplier<T> {
+
+	/**
+	 * Run the Supplier
+	 *
+	 * @return T
+	 * @throws Throwable CheckedException
+	 */
+	@Nullable
+	T get() throws Throwable;
+
+}

--
Gitblit v1.9.3