From e973fb747f0d1a382fb9e4cdb20383a0a546ef67 Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期二, 03 十二月 2024 15:01:43 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/codeTemplate/Mapper.impl.java.vm                              |    0 
 Source/plt-web/plt-web-ui/src/components/dynamic-components/dynamic-tree.vue                                                      |    7 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/beans/BladeBeanMapEmitter.java              |    5 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/function/CheckedComparator.java             |    2 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/function/CheckedRunnable.java               |    2 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/jackson/BladeJavaTimeModule.java            |    4 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/OsBtmTypeDTO.java                                             |   13 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIEngineServiceI.java                                     |    2 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsQueryTemplateController.java                         |    3 
 Source/plt-web/plt-web-parent/plt-starter/pom.xml                                                                                 |   28 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPvolumesServiceImpl.java                           |    6 
 Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/linkTypeQuery/formQueryDialog.vue                                  |   47 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/VciFileVolumeServiceImpl.java                 |   18 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/SmPwdStrategyQueryController.java                      |    5 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/DigestUtil.java                             |   16 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/convert/BladeConverter.java                 |   12 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/OsCodeRuleServiceI.java                        |    6 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/UI/RoleControlAreaEnum.java                               |    8 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/ClassUtilForVCI.java                            |    2 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/log4j2-spring-dev.xml                                         |   91 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WFWorkflowNodeFavItemServiceI.java             |    0 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/codeTemplate/Mapper.java.vm                                   |    0 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/Func.java                                   |    7 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/OsCodeGenSchemaServiceImpl.java           |   50 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsActionServiceI.java                                     |    2 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/OsCodeGenJsPanelTypeEnum.java                             |    2 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebProcessDefineServiceImpl.java          |   27 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/codeTemplate/Service.impl.java.vm                             |    2 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/annotation/BdSelectInput.java                        |    2 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/properties/VciFramworkCompatibilityProperties.java     |    2 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsRevisionRuleController.java                          |    4 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsPvolumesServiceI.java                                   |    2 
 Source/plt-web/plt-web-ui/src/components/dynamic-components/dynamic-table.vue                                                     |    7 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/VciFileUploadServiceI.java                     |    0 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/BdSelectInputCharDaoImpl.java                 |   22 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/BdSelectInputCharServiceImpl.java                    |   10 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebBtmServiceI.java                            |   96 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/UI/RoleClassifyEnum.java                                  |    2 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/OrgDepartmentQueryController.java           |    6 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsAttributeServiceI.java                                  |    3 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/OsCodeEnumDaoImpl.java                        |    4 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/util/WebUtil.java                                      |   30 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/VciFileQueryController.java                 |    0 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/OrgDeptQueryServiceI.java                      |    2 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/OsBtmTypeVO.java                                        |   13 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WFWorkflowNodeFavServiceI.java                 |    0 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebDataRightController.java                            |    6 
 Bin/properties/menuConfig.json                                                                                                    |  231 +
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/UI/VciFileServiceOsTypeEnum.java                          |    2 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/BdSelectInputCharServiceI.java                            |   12 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/NumberUtil.java                             |    2 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsEnumServiceImpl.java                               |   12 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebSecretServiceImpl.java                 |   12 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/UIBaseQuery.java                                            |    8 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/LinkQTExportData.java                                       |   11 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/ConcurrentDateFormat.java                   |    2 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/function/CheckedSupplier.java               |    2 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/convert/BladeConversionService.java         |    3 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/VciFileUploadServiceImpl.java                 |   31 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/StringUtil.java                             |    7 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/util/PinyinCommon.java                                 |    2 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/OsCodeBreakCodeDaoI.java                           |    2 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/config/ConfigCorbaReader.java                          |    2 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/ImageViewerController.java                  |    4 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsBtmServiceImpl.java                                |   40 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsLinkTypeController.java                              |    6 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/UILinkTypeDataQuery.java                                    |    8 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/interceptor/MyMVCConfig.java                           |    5 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebAttributeServiceImpl.java              |  257 +
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsStatusServiceImpl.java                             |    8 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/VciFileUploadController.java                |    2 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/OsCodeSerialNumberDaoI.java                        |    2 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/UITreeDefineVO.java                                     |    9 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/revision/service/RevisionModelUtil.java                  |   53 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/ReferConfigVO.java                                      |    6 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/SmUserQueryServiceI.java                       |   40 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/util/file/VciZipUtil.java                              |    8 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsLifeCycleServiceImpl.java                          |    7 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/UITools.java                                                 |   28 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmFavFunctionServiceImpl.java                        |    4 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/UserTypeEnum.java                                         |    2 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebPwdStrategyQueryServiceImpl.java       |  230 +
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebLinkTypeServiceImpl.java               |  164 +
 Source/plt-web/plt-web-ui/src/components/dynamic-components/dynamic-form.vue                                                      |    7 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIEngineServiceImpl.java                             |   13 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/UI/VciFileTransProtocolEnum.java                          |    2 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/LogBasicController.java                                |    2 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/SmRoleQueryServiceI.java                       |    2 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/ObjectUtil.java                             |    2 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/SmHMSysModConfigServiceI.java                             |    2 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/SmPwdStrategyQueryServiceI.java                           |    2 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsLinkTypeServiceI.java                                   |    6 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebLifeCycleServiceI.java                      |  121 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/initTask/OsInitTaskComponet.java                                  |   67 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebStatusServiceImpl.java                 |  109 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/pagemodel/BaseResult.java                            |    8 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/OsCodeRuleServiceImpl.java                |   47 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/lcstatuspck/FileObjectLCStatus.java                               |    3 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/Unchecked.java                              |    5 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebProcessCommandServiceImpl.java         |   44 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/provider/VciFileQueryProvider.java                                |    2 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/WFWorkflowNodeFavDaoI.java                         |    2 
 Source/plt-web/plt-web-parent/plt-web/pom.xml                                                                                     |   87 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebUIController.java                                   |   24 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsActionServiceImpl.java                             |    8 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/VciFileDocClassifyDaoImpl.java                |    2 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/model/BaseModel.java                                 |  146 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/codeTemplate/Service.java.vm                                  |    0 
 Source/plt-web/plt-web-parent/plt-web-permission/pom.xml                                                                          |   73 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebUIDataController.java                               |    6 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/convert/EnumToStringConverter.java          |    4 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsAttributeController.java                             |    3 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsQueryTemplateImpl.java                             |   37 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/provider/VciFileUploadProvider.java                               |    2 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/UITreeQuery.java                                            |    8 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/OsCodeGenSchemaDaoImpl.java                   |    8 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/VciFileDocClassifyServiceI.java                |    0 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/beans/BladeBeanMap.java                     |    2 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/VciBaseUtil.java                                |    5 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/UrlUtil.java                                |    6 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebBoServiceImpl.java                     |  141 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SecretGradeServiceImpl.java                          |    3 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/FileImageViewerQuery.java                                   |    2 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/BeanUtilForVCI.java                             |  204 +
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/SmRoleQueryController.java                  |   11 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebLinkTypeServiceI.java                       |   42 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/ReflectUtil.java                            |    2 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/OsCodeDateValueTypeEnum.java                              |    2 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/codeTemplate/ui.js.vm                                         |    0 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/Holder.java                                 |    2 
 Source/plt-web/plt-web-parent/plt-web/src/main/resources/properties/iceClient.properties                                          |    2 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/properties/WebProperties.java                          |    0 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/Base64Util.java                             |    2 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/properties/VciFileTransProperties.java                            |    2 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsBaseServiceI.java                                       |    1 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/OrgDutyQueryServiceImpl.java              |    4 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/UI/ItemTypeEnum.java                                      |   10 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/codeTemplate/DTO.java.vm                                      |    0 
 Source/plt-web/plt-web-parent/plt-web-base/pom.xml                                                                                |   18 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java                           |   15 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/SmUserQueryController.java                  |    9 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/maven/BatchRedeployJar2Maven.java                      |    2 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/support/StrSpliter.java                     |    8 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/ResourceControlTypeEnum.java                              |    5 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/lcstatuspck/ReleaseDataLCStatus.java                              |    2 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/annotation/FlowNotifyBefore.java                     |    2 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/OrgDutyQueryServiceI.java                      |    2 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/codeTemplate/DO.java.vm                                       |    0 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/annotation/CopyProperty.java                         |    2 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebLifeCycleServiceImpl.java              |  409 ++
 Source/plt-web/plt-web-parent/pom.xml                                                                                             |   11 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/FlowNoticeExample.java                                      |    6 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/function/CheckedFunction.java               |    2 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/constant/StringPool.java                             |    2 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/util/PlatformClientUtil.java                           |    0 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/AuditTaskController.java                    |    4 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsLoginServiceImpl.java                              |  266 -
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebPortalVIController.java                             |    2 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/OsCodeGenSchemaDaoI.java                           |    2 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebEnumServiceI.java                           |   77 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/application-prod.yml                                          |  101 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebBtmIOServiceImpl.java                             |    6 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/config/WebFilePreviewAutoConfig.java                   |   19 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/VciFileDocClassifyServiceImpl.java            |   13 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/OsCodeFillTypeEnum.java                                   |    2 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/WebScanAnnotationController.java            |   12 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebProcessDefineServiceI.java                  |    0 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/OsCodeElementTypeEnum.java                                |    2 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/OsCodeBreakCodeDaoImpl.java                   |    4 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/WebBtmIOServiceI.java                                     |    2 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/WebProcessDaoImpl.java                        |   75 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsPvolumesController.java                              |    7 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/FileUtil.java                               |    4 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java                                    |   12 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/UIDataGridQuery.java                                        |    8 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/BdSelectInputCharAspect.java                                |    7 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/util/file/clientutil/VciFileServerClientUtil.java      |    8 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/revision/provider/CommonLifeCycleProvider.java           |    2 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/RightControlUtil.java                                        |    3 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebProcessCommandServiceI.java                 |    0 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/VciOsCodeRuleController.java                |    0 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmOperationServiceImpl.java                          |    2 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/RandomType.java                             |    2 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/properties/TomcatConfig.java                                      |    3 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/ItemDblEnum.java                                          |    3 
 Source/plt-web/plt-web-parent/plt-web/src/main/resources/i18n/messages_zh_CN.properties                                           |   13 
 Source/plt-web/plt-web-parent/plt-web/src/main/resources/i18n/messages.properties                                                 |   13 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/SmUserQueryServiceImpl.java               |  159 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebBtmTypeController.java                              |   15 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/WebProcessDefineController.java             |    0 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/VciFileObjectServiceI.java                     |    0 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebSecretServiceI.java                         |    0 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebLoServiceI.java                             |   57 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/AllActionThreadLocal.java                                   |    1 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/BtmQTExportData.java                                        |    1 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmHMSysModConfigServiceImpl.java                     |   16 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebHomeTaskServiceI.java                       |    4 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/OsCodeSerialNumberDaoImpl.java                |    4 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/log4j2-spring-prod.xml                                        |   95 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/VciFileObjectDaoImpl.java                     |    2 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebBoServiceI.java                             |   24 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/util/OsScanAnnotationTool.java                         |   16 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/ClassUtil.java                              |    2 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/annotation/FlowNotifyAfter.java                      |    2 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/VciFileObjectDaoI.java                             |    2 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/OsDataAuthDTO.java                                            |    3 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/Sql2TableController.java                    |    2 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/function/CheckedCallable.java               |    2 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmFunctionQueryServicePlatformImpl.java              |   20 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmSessionForLoginImpl.java                           |    8 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebBtmServiceImpl.java                    |  363 ++
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/VciFileDownloadServiceI.java                   |    0 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsLinkTypeServiceImpl.java                           |   16 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsDataAuthServiceImpl.java                           |    2 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/Charsets.java                               |    4 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsRevisionRuleServiceImpl.java                       |   16 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/DatatypeConverterUtil.java                  |    2 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebRevisionRuleServiceI.java                   |   49 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/OsCodeProductTypeEnum.java                                |    2 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/model/PLDefination.java                                           |   26 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/annotation/FlowNotifyWeb.java                        |    2 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsStatusServiceI.java                                     |    8 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/pagemodel/BaseTree.java                              |  223 +
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebStatusServiceI.java                         |   42 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/OsCodeRuleDaoImpl.java                        |   20 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PLDefinationVO.java                                     |   10 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/ajaxTask/SmUserUnLockTaskManager.java                  |    2 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/UITreeRootQuery.java                                        |    2 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/beans/BeanProperty.java                     |    2 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsDataAuthController.java                              |    8 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/ActionEnum.java                                           |    2 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/beans/BladeBeanCopierKey.java               |    2 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/ControlType.java                                          |    3 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/OsCodeEnumDaoI.java                                |    3 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsPortalVIServiceI.java                                   |    3 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/OrgDeptQueryServiceImpl.java              |   15 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/compatibility_field_map.yml                                   |    2 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/beans/BladeBeanMapKey.java                  |    2 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/ConvertUtil.java                            |    5 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebEnumServiceImpl.java                   |  280 ++
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/VciFileVolumeServiceI.java                     |    0 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/properties/OsConfig.java                                          |   24 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/VciFileDocClassifyDaoI.java                        |    2 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/VciOsStatusController.java                             |    3 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/ISmFunctionQueryService.java                              |    5 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/OsCodeRuleElementDaoI.java                         |    2 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsTypeActionServiceImpl.java                         |    5 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java                            |   26 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LogBasicServiceImpl.java                             |    9 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/DateUtil.java                               |    3 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/jackson/JsonUtil.java                       |    8 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/constant/CharPool.java                               |    2 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/WFWorkflowNodeFavItemDaoI.java                     |    2 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebRevisionRuleServiceImpl.java           |  126 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/HomeTaskController.java                     |    0 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/WorkFlowEndedNotice.java                                    |   10 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/codeTemplate/Mapper.xml.vm                                    |    0 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/autoconfigure/SpringMVCConfig.java                   |   19 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/WFWorkflowNodeFavController.java            |    0 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/WFWorkflowNodeFavDaoImpl.java                 |   23 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/HMSysModConfigController.java                          |    7 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/provider/VciFileDocClassifyProvider.java                          |    2 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/convert/StringToEnumConverter.java          |    8 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/VciFileVolumeDaoI.java                             |    2 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/ajaxTask/SmUserUnLockTask.java                         |    4 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsLoginServiceI.java                                      |   16 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebAttributeServiceI.java                      |   56 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/application-dev.yml                                           |  102 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/CollectionUtil.java                         |    2 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/WebCodeGenSchemaController.java             |    0 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WFWorkflowNodeFavItemServiceImpl.java     |   14 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/application.yml                                               |    7 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/codeTemplate/VO.java.vm                                       |    0 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsAttributeServiceImpl.java                          |   21 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/UI/ControlAttributeType.java                              |   10 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/annotation/VciTransactional.java                     |    2 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/WebProcessDaoI.java                                |    4 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmPwdStrategyQueryServiceImpl.java                   |   27 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/provider/VciFileDownloadProvider.java                             |    2 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/OrgDutyQueryController.java                 |    4 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/SmRoleQueryServiceImpl.java               |   17 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsLoginController.java                                 |  186 +
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/VciFileQueryServiceI.java                      |    0 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/DateTimeUtil.java                           |    2 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebHomeTaskServiceImpl.java               |   20 
 Source/plt-web/plt-web-parent/plt-web/src/main/resources/application-prod.yml                                                     |  106 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/OsCodeGenSchemaServiceI.java                   |    0 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/SmFunctionController.java                              |    6 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/util/file/clientutil/VciFileDocClassifyClientUtil.java |    0 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/initTask/VciWebInitTaskComponent.java                  |   74 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsEnumServiceI.java                                       |    8 
 Source/plt-web/plt-web-parent/plt-web/src/main/resources/application-dev.yml                                                      |   52 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/UI/OrgTypeEnum.java                                       |    2 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebEnumController.java                                 |    5 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/BdSelectInputCharDaoI.java                         |    8 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/VciFileDownloadServiceImpl.java               |   12 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebLoServiceImpl.java                     |  105 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/Exceptions.java                             |    2 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/codeTemplate/Controller.java.vm                               |    0 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIDataServiceImpl.java                               |  224 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WFWorkflowNodeFavServiceImpl.java         |   22 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/AuditTaskDTO.java                                             |    2 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/function/CheckedConsumer.java               |    2 
 Bin/lib/service/MsgService.jar                                                                                                    |    0 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsLifeCycleServiceI.java                                  |    8 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/VciFileObjectServiceImpl.java                 |   14 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/WebProcessCommandController.java            |    0 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/CombinationEnum.java                                      |    7 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/lcstatuspck/FrameworkDataLCStatus.java                            |    2 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebPwdStrategyQueryServiceI.java               |   51 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/pagemodel/Tree.java                                  |  184 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/BeanUtil.java                               |   20 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIDataServiceI.java                                       |   16 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/codeTemplate/PO.java.vm                                       |    0 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/revision/provider/CommonRevisionRuleProvider.java        |    2 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/OsCodeRuleDaoI.java                                |    2 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsLifeCycleController.java                             |    3 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/UIFormQuery.java                                            |    7 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/OsCodeRuleElementDaoImpl.java                 |    4 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/properties/VciSecurityManageProperties.java            |    2 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/VciFileDownloadController.java              |    0 
 /dev/null                                                                                                                         |  171 -
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/beans/BladeBeanCopier.java                  |   11 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/revision/provider/CommonAnnotationProvider.java          |    2 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/UIManagerController.java                               |    3 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebLogServiceImpl.java                               |    2 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/ExportBeans.java                                            |    7 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/WFWorkflowNodeFavItemDaoImpl.java             |   18 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/pagemodel/UIDataTree.java                            |  395 ++
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/po/OsBtmTypePO.java                                               |    5 
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/IoUtil.java                                 |    2 
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/VciFileVolumeDaoImpl.java                     |    2 
 332 files changed, 5,798 insertions(+), 2,375 deletions(-)

diff --git a/Bin/lib/service/MsgService.jar b/Bin/lib/service/MsgService.jar
index 4b9e0bc..b590cae 100644
--- a/Bin/lib/service/MsgService.jar
+++ b/Bin/lib/service/MsgService.jar
Binary files differ
diff --git a/Bin/properties/menuConfig.json b/Bin/properties/menuConfig.json
index ff3052b..3776823 100644
--- a/Bin/properties/menuConfig.json
+++ b/Bin/properties/menuConfig.json
@@ -1,91 +1,150 @@
 {
-  "hasChildren": true,
-  "children": [
-    {
-      "hasChildren": true,
-      "children": [],
-      "id": "systemManagmentNode",
-      "name": "绠$悊鍔熻兘妯″潡",
-      "parentId": "VCIBaseTreeNode",
-      "code": "systemManagmentNode",
-      "alias": "system",
-      "meta": {
-        "keepAlive": false
+  "sysModuleNode": {
+    "hasChildren": true,
+    "children": [
+      {
+        "hasChildren": true,
+        "children": [],
+        "id": "systemManagmentNode",
+        "name": "绠$悊鍔熻兘妯″潡",
+        "parentId": "VCIBaseTreeNode",
+        "code": "systemManagmentNode",
+        "alias": "system",
+        "category": "0",
+        "meta": {
+          "keepAlive": false
+        },
+        "sort": 2,
+        "soruce": "",
+        "path": "views/systemModel/mangeModel/index"
       },
-      "sort": 2,
-      "soruce": "",
-      "path": "views/systemModel/mangeModel/index"
+      {
+        "hasChildren": true,
+        "children": [],
+        "id": "modelManagmentNode",
+        "name": "涓氬姟鍔熻兘妯″潡",
+        "parentId": "VCIBaseTreeNode",
+        "code": "modelManagmentNode",
+        "alias": "model",
+        "category": "0",
+        "meta": {
+          "keepAlive": false
+        },
+        "sort": 3,
+        "soruce": "",
+        "path": "views/systemModel/businessModel/index"
+      },
+      {
+        "hasChildren": true,
+        "children": [],
+        "id": "operateNode",
+        "name": "鎿嶄綔绫诲瀷绠$悊",
+        "parentId": "VCIBaseTreeNode",
+        "code": "operateNode",
+        "alias": "operate",
+        "category": "0",
+        "meta": {
+          "keepAlive": false
+        },
+        "sort": 4,
+        "soruce": "",
+        "path": "views/systemModel/operateType/index"
+      },
+      {
+        "hasChildren": false,
+        "children": [],
+        "id": "sysOptionNode",
+        "name": "绯荤粺閰嶇疆",
+        "parentId": "VCIBaseTreeNode",
+        "code": "sysOptionNode",
+        "alias": "sysOption",
+        "category": "0",
+        "meta": {
+          "keepAlive": false
+        },
+        "sort": 5,
+        "soruce": "",
+        "path": "views/systemModel/systemConfig/index"
+      },
+      {
+        "hasChildren": false,
+        "children": [],
+        "id": "sysMonitorNode",
+        "name": "绯荤粺杩愯鐩戞帶",
+        "parentId": "VCIBaseTreeNode",
+        "code": "sysMonitorNode",
+        "alias": "sysMonitor",
+        "category": "0",
+        "meta": {
+          "keepAlive": false
+        },
+        "sort": 5,
+        "soruce": "",
+        "path": "views/systemModel/systemMonitor/index"
+      }
+    ],
+    "id": "VCIBaseTreeNode",
+    "name": "绯荤粺妯″潡閰嶇疆",
+    "parentId": "systemManagmentNode",
+    "code": "rootNode",
+    "alias": "root",
+    "category": "0",
+    "meta": {
+      "keepAlive": false
     },
-    {
-      "hasChildren": true,
-      "children": [],
-      "id": "modelManagmentNode",
-      "name": "涓氬姟鍔熻兘妯″潡",
-      "parentId": "VCIBaseTreeNode",
-      "code": "modelManagmentNode",
-      "alias": "model",
-      "meta": {
-        "keepAlive": false
-      },
-      "sort": 3,
-      "soruce": "",
-      "path": "views/systemModel/businessModel/index"
-    },
-    {
-      "hasChildren": true,
-      "children": [],
-      "id": "operateNode",
-      "name": "鎿嶄綔绫诲瀷绠$悊",
-      "parentId": "VCIBaseTreeNode",
-      "code": "operateNode",
-      "alias": "operate",
-      "meta": {
-        "keepAlive": false
-      },
-      "sort": 4,
-      "soruce": "",
-      "path": "views/systemModel/operateType/index"
-    },
-    {
-      "hasChildren": false,
-      "children": [],
-      "id": "sysOptionNode",
-      "name": "绯荤粺閰嶇疆",
-      "parentId": "VCIBaseTreeNode",
-      "code": "sysOptionNode",
-      "alias": "sysOption",
-      "meta": {
-        "keepAlive": false
-      },
-      "sort": 5,
-      "soruce": "",
-      "path": "views/systemModel/systemConfig/index"
-    },
-    {
-      "hasChildren": false,
-      "children": [],
-      "id": "sysMonitorNode",
-      "name": "绯荤粺杩愯鐩戞帶",
-      "parentId": "VCIBaseTreeNode",
-      "code": "sysMonitorNode",
-      "alias": "sysMonitor",
-      "meta": {
-        "keepAlive": false
-      },
-      "sort": 5,
-      "soruce": "",
-      "path": "views/systemModel/systemMonitor/index"
-    }
-  ],
-  "id": "VCIBaseTreeNode",
-  "name": "绯荤粺妯″潡閰嶇疆",
-  "parentId": "systemManagmentNode",
-  "code": "rootNode",
-  "alias": "root",
-  "meta": {
-    "keepAlive": false
+    "sort": 0,
+    "soruce": "",
+    "path": ""
   },
-  "sort": 0,
-  "soruce": "",
-  "path": ""
+  "systemManagmentNode": {
+    "hasChildren": true,
+    "children": [],
+    "childType": -1,
+    "id": "systemManagmentNode",
+    "name": "绠$悊鍔熻兘妯″潡",
+    "parentId": "VCIBaseTreeNode",
+    "code": "systemManagmentNode",
+    "alias": "system",
+    "category": "0",
+    "meta": {
+      "keepAlive": false
+    },
+    "sort": 2,
+    "soruce": "",
+    "path": "views/systemModel/mangeModel/index"
+  },
+  "modelManagmentNode": {
+    "hasChildren": true,
+    "children": [],
+    "childType": -1,
+    "id": "modelManagmentNode",
+    "name": "涓氬姟鍔熻兘妯″潡",
+    "parentId": "VCIBaseTreeNode",
+    "code": "modelManagmentNode",
+    "alias": "model",
+    "category": "0",
+    "meta": {
+      "keepAlive": false
+    },
+    "sort": 3,
+    "soruce": "",
+    "path": "views/systemModel/businessModel/index"
+  },
+  "operateNode": {
+    "hasChildren": true,
+    "children": [],
+    "childType": -1,
+    "id": "operateNode",
+    "name": "鎿嶄綔绫诲瀷绠$悊",
+    "parentId": "VCIBaseTreeNode",
+    "code": "operateNode",
+    "alias": "operate",
+    "category": "0",
+    "meta": {
+      "keepAlive": false
+    },
+    "sort": 4,
+    "soruce": "",
+    "path": "views/systemModel/operateType/index"
+  }
 }
\ No newline at end of file
diff --git a/Source/plt-web/plt-web-parent/plt-starter/pom.xml b/Source/plt-web/plt-web-parent/plt-starter/pom.xml
index 5c143e5..6885853 100644
--- a/Source/plt-web/plt-web-parent/plt-starter/pom.xml
+++ b/Source/plt-web/plt-web-parent/plt-starter/pom.xml
@@ -15,12 +15,24 @@
     </properties>
     <dependencies>
         <!-- 鏂板钩鍙版墍闇�瑕佺殑鍖� -->
-        <!--client-->
+        <!--骞冲彴client鍖�-->
         <dependency>
-            <groupId>com.vci.client</groupId>
+            <groupId>com.vci.plt</groupId>
             <artifactId>plt-clientbase</artifactId>
             <version>${plt.version}</version>
         </dependency>
+        <!--骞冲彴common鍖�-->
+        <dependency>
+            <groupId>com.vci.plt</groupId>
+            <artifactId>plt-common</artifactId>
+            <version>${plt.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.vci.plt</groupId>
+            <artifactId>plt-slice</artifactId>
+            <version>${plt.version}</version>
+        </dependency>
+
         <!--client鐨勪緷璧�-->
         <dependency>
             <groupId>com.formdev</groupId>
@@ -101,18 +113,6 @@
             <groupId>com.uitheme</groupId>
             <artifactId>uitheme</artifactId>
             <version>1.3.1</version>
-        </dependency>
-
-        <!--common-->
-        <dependency>
-            <groupId>com.vci.common</groupId>
-            <artifactId>plt-common</artifactId>
-            <version>${plt.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>com.vci.corba</groupId>
-            <artifactId>plt-slice</artifactId>
-            <version>${plt.version}</version>
         </dependency>
         <!--common鐨勪緷璧�-->
         <dependency>
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/plugins/dto/AuditTaskDTO.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/AuditTaskDTO.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/plugins/dto/AuditTaskDTO.java
rename to Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/AuditTaskDTO.java
index 295977e..bb87d04 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/plugins/dto/AuditTaskDTO.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/AuditTaskDTO.java
@@ -1,4 +1,4 @@
-package com.vci.plugins.dto;
+package com.vci.dto;
 
 import com.vci.dto.BaseModelDTO;
 
diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/OsBtmTypeDTO.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/OsBtmTypeDTO.java
index 0e185a2..cd277ac 100644
--- a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/OsBtmTypeDTO.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/OsBtmTypeDTO.java
@@ -155,6 +155,19 @@
      */
     private Date lastModifyTime;
 
+    /**
+     * 鍥剧墖鍚嶇О
+     */
+    private String imageName;
+
+    public void setImageName(String imageName) {
+        this.imageName = imageName;
+    }
+
+    public String getImageName() {
+        return imageName;
+    }
+
     public void setApNameArray(String apNameArray) {
         this.apNameArray = apNameArray;
     }
diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/OsDataAuthDTO.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/OsDataAuthDTO.java
index a2b0bf4..a32a568 100644
--- a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/OsDataAuthDTO.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/OsDataAuthDTO.java
@@ -1,10 +1,7 @@
 package com.vci.dto;
 
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.vci.starter.web.util.VciDateUtil;
 import lombok.Data;
 
-import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/OsCodeDateValueTypeEnum.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/OsCodeDateValueTypeEnum.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/OsCodeDateValueTypeEnum.java
rename to Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/OsCodeDateValueTypeEnum.java
index 7003f87..3121c92 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/OsCodeDateValueTypeEnum.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/OsCodeDateValueTypeEnum.java
@@ -1,4 +1,4 @@
-package com.vci.web.enumpck;
+package com.vci.enumpck;
 
 import com.vci.starter.web.annotation.VciEnum;
 import com.vci.starter.web.enumpck.BaseEnum;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/OsCodeElementTypeEnum.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/OsCodeElementTypeEnum.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/OsCodeElementTypeEnum.java
rename to Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/OsCodeElementTypeEnum.java
index 2e158a1..ed4e6ae 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/OsCodeElementTypeEnum.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/OsCodeElementTypeEnum.java
@@ -1,4 +1,4 @@
-package com.vci.web.enumpck;
+package com.vci.enumpck;
 
 
 import com.vci.starter.web.annotation.VciEnum;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/OsCodeFillTypeEnum.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/OsCodeFillTypeEnum.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/OsCodeFillTypeEnum.java
rename to Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/OsCodeFillTypeEnum.java
index 77a2b08..23ce7e8 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/OsCodeFillTypeEnum.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/OsCodeFillTypeEnum.java
@@ -1,4 +1,4 @@
-package com.vci.web.enumpck;
+package com.vci.enumpck;
 
 
 import com.vci.starter.web.annotation.VciEnum;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/OsCodeGenJsPanelTypeEnum.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/OsCodeGenJsPanelTypeEnum.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/OsCodeGenJsPanelTypeEnum.java
rename to Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/OsCodeGenJsPanelTypeEnum.java
index 17ad8f0..7ee71cf 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/OsCodeGenJsPanelTypeEnum.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/OsCodeGenJsPanelTypeEnum.java
@@ -1,4 +1,4 @@
-package com.vci.web.enumpck;
+package com.vci.enumpck;
 
 import com.vci.starter.web.annotation.VciEnum;
 import com.vci.starter.web.enumpck.BaseEnum;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/OsCodeProductTypeEnum.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/OsCodeProductTypeEnum.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/OsCodeProductTypeEnum.java
rename to Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/OsCodeProductTypeEnum.java
index e1c272e..a440e08 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/OsCodeProductTypeEnum.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/OsCodeProductTypeEnum.java
@@ -1,4 +1,4 @@
-package com.vci.web.enumpck;
+package com.vci.enumpck;
 
 
 import com.vci.starter.web.annotation.VciEnum;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/ControlAttributeType.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/UI/ControlAttributeType.java
similarity index 78%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/ControlAttributeType.java
rename to Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/UI/ControlAttributeType.java
index 7f86ad2..2732e95 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/ControlAttributeType.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/UI/ControlAttributeType.java
@@ -1,7 +1,11 @@
-package com.vci.web.enumpck;
+package com.vci.enumpck.UI;
 
+import com.vci.common.portal.enums.ControlType;
+
+/**
+ * 灞炴�х被鍨嬫灇涓�
+ */
 public enum ControlAttributeType {
-
     VTString,
     VTInteger,
     VTLong,
@@ -14,7 +18,7 @@
     VTNote,
     VTFilePath,
     VTClob,
-    canzhao;
+    VTRefer;
     public static ControlType Parse(String value) {
         for (ControlType ct : ControlType.values()) {
             if (ct.name().equalsIgnoreCase(value)) {
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/ItemTypeEnum.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/UI/ItemTypeEnum.java
similarity index 96%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/ItemTypeEnum.java
rename to Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/UI/ItemTypeEnum.java
index c7364b5..5ec5624 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/ItemTypeEnum.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/UI/ItemTypeEnum.java
@@ -1,12 +1,14 @@
-package com.vci.web.enumpck;
+package com.vci.enumpck.UI;
 
 import com.vci.pagemodel.KeyValue;
 import com.vci.starter.web.enumpck.BaseEnum;
-import com.vci.starter.web.enumpck.VciFieldTypeEnum;
 
 import java.util.ArrayList;
 import java.util.List;
 
+/**
+ * 杈撳叆妗嗙被鍨嬫灇涓�
+ */
 public enum ItemTypeEnum implements BaseEnum {
     TEXT("text","鍗曡鏂囨湰妗�"),
     TEXTBTN("textbtn","鏂囨湰鎸夐挳妗�"),
@@ -166,7 +168,7 @@
         }else  if( ControlAttributeType.VTTime.equals(key)){//鏃堕棿
             value = ItemTypeEnum.TIME.getValue();
         }
-        else  if( ControlAttributeType.canzhao.equals(key)){//鍙傜収
+        else  if( ControlAttributeType.VTRefer.equals(key)){//鍙傜収
             value = ItemTypeEnum.TEXT.getValue();
         }
         else  if( ControlAttributeType.VTBoolean.equals(key)){//boolean
@@ -211,7 +213,7 @@
         }else  if( ControlAttributeType.VTTime.equals(key)){//鏃堕棿
             value = ItemTypeEnum.TIME.getValue();
         }
-        else  if( ControlAttributeType.canzhao.equals(key)){//鍙傜収
+        else  if( ControlAttributeType.VTRefer.equals(key)){//鍙傜収
             value = ItemTypeEnum.TEXT.getValue();
         }
         else  if( ControlAttributeType.VTBoolean.equals(key)){//boolean
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/enumpck/OrgTypeEnum.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/UI/OrgTypeEnum.java
similarity index 97%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/enumpck/OrgTypeEnum.java
rename to Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/UI/OrgTypeEnum.java
index c1552b2..2748830 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/enumpck/OrgTypeEnum.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/UI/OrgTypeEnum.java
@@ -1,4 +1,4 @@
-package com.vci.frameworkcore.enumpck;
+package com.vci.enumpck.UI;
 import com.vci.starter.web.enumpck.BaseEnum;
 
 /**
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/enumpck/RoleClassifyEnum.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/UI/RoleClassifyEnum.java
similarity index 97%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/enumpck/RoleClassifyEnum.java
rename to Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/UI/RoleClassifyEnum.java
index 2696393..f75acf6 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/enumpck/RoleClassifyEnum.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/UI/RoleClassifyEnum.java
@@ -1,4 +1,4 @@
-package com.vci.frameworkcore.enumpck;
+package com.vci.enumpck.UI;
 import com.vci.starter.web.annotation.VciEnum;
 import com.vci.starter.web.enumpck.BaseEnum;
 
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/enumpck/RoleControlAreaEnum.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/UI/RoleControlAreaEnum.java
similarity index 88%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/enumpck/RoleControlAreaEnum.java
rename to Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/UI/RoleControlAreaEnum.java
index f09fc71..a38e7da 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/enumpck/RoleControlAreaEnum.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/UI/RoleControlAreaEnum.java
@@ -1,7 +1,7 @@
-package com.vci.frameworkcore.enumpck;
+package com.vci.enumpck.UI;
 
-//import com.vci.frameworkcore.constant.FrameWorkEnumConstant;
-
+import com.vci.constant.FrameWorkEnumConstant;
+import com.vci.starter.web.annotation.VciEnum;
 import com.vci.starter.web.enumpck.BaseEnum;
 
 /**
@@ -9,7 +9,7 @@
  * @author weidy
  * @date 2019/9/25
  */
-//@VciEnum(name = FrameWorkEnumConstant.ROLE_CONTROL_AREA,text = "瑙掕壊鎺у埗鍖哄煙",description = "鐢佃剳绔疊S,CS,绉诲姩绔�,闆嗘垚,寰湇鍔�")
+@VciEnum(name = FrameWorkEnumConstant.ROLE_CONTROL_AREA,text = "瑙掕壊鎺у埗鍖哄煙",description = "鐢佃剳绔疊S,CS,绉诲姩绔�,闆嗘垚,寰湇鍔�")
 public enum RoleControlAreaEnum implements BaseEnum {
     /**
      * 鐢佃剳绔疊/S
diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/VciFileServiceOsTypeEnum.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/UI/VciFileServiceOsTypeEnum.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/VciFileServiceOsTypeEnum.java
rename to Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/UI/VciFileServiceOsTypeEnum.java
index d34c699..432370d 100644
--- a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/VciFileServiceOsTypeEnum.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/UI/VciFileServiceOsTypeEnum.java
@@ -1,4 +1,4 @@
-package com.vci.enumpck;
+package com.vci.enumpck.UI;
 
 import com.vci.starter.web.annotation.VciEnum;
 import com.vci.starter.web.enumpck.BaseEnum;
diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/VciFileTransProtocolEnum.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/UI/VciFileTransProtocolEnum.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/VciFileTransProtocolEnum.java
rename to Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/UI/VciFileTransProtocolEnum.java
index 8f7cdc9..5884ef4 100644
--- a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/VciFileTransProtocolEnum.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/UI/VciFileTransProtocolEnum.java
@@ -1,4 +1,4 @@
-package com.vci.enumpck;
+package com.vci.enumpck.UI;
 
 import com.vci.starter.web.annotation.VciEnum;
 import com.vci.starter.web.enumpck.BaseEnum;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/UserTypeEnum.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/UserTypeEnum.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/UserTypeEnum.java
rename to Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/UserTypeEnum.java
index b2e7c71..aff9d60 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/UserTypeEnum.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/enumpck/UserTypeEnum.java
@@ -1,4 +1,4 @@
-package com.vci.web.enumpck;
+package com.vci.enumpck;
 
 import com.vci.starter.web.annotation.VciEnum;
 import com.vci.starter.web.enumpck.BaseEnum;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/lifeCycle/FileObjectLCStatus.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/lcstatuspck/FileObjectLCStatus.java
similarity index 97%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/lifeCycle/FileObjectLCStatus.java
rename to Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/lcstatuspck/FileObjectLCStatus.java
index 66a2787..d4b54a3 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/lifeCycle/FileObjectLCStatus.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/lcstatuspck/FileObjectLCStatus.java
@@ -1,8 +1,7 @@
-package com.vci.web.lifeCycle;
+package com.vci.lcstatuspck;
 
 import com.vci.constant.FrameWorkDefaultValueConstant;
 import com.vci.constant.VciFileLifeConstant;
-import com.vci.constant.FrameWorkDefaultValueConstant;
 import com.vci.starter.web.annotation.Transient;
 import com.vci.starter.web.annotation.VciLifeCycle;
 import com.vci.starter.web.annotation.VciLifeCycleTrans;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/lcstatuspck/FrameworkDataLCStatus.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/lcstatuspck/FrameworkDataLCStatus.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/lcstatuspck/FrameworkDataLCStatus.java
rename to Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/lcstatuspck/FrameworkDataLCStatus.java
index 6491230..444c9ae 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/lcstatuspck/FrameworkDataLCStatus.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/lcstatuspck/FrameworkDataLCStatus.java
@@ -1,4 +1,4 @@
-package com.vci.frameworkcore.lcstatuspck;
+package com.vci.lcstatuspck;
 
 
 import com.vci.starter.web.annotation.VciLifeCycle;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/lcstatuspck/ReleaseDataLCStatus.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/lcstatuspck/ReleaseDataLCStatus.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/lcstatuspck/ReleaseDataLCStatus.java
rename to Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/lcstatuspck/ReleaseDataLCStatus.java
index 5bfca87..bd73fc5 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/lcstatuspck/ReleaseDataLCStatus.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/lcstatuspck/ReleaseDataLCStatus.java
@@ -1,4 +1,4 @@
-package com.vci.frameworkcore.lcstatuspck;
+package com.vci.lcstatuspck;
 
 
 import com.vci.starter.web.annotation.VciLifeCycle;
diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/model/PLDefination.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/model/PLDefination.java
index 96dfcc4..3c7770c 100644
--- a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/model/PLDefination.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/model/PLDefination.java
@@ -160,6 +160,16 @@
     private String queryTemplateName = "";
 
     /**
+     * cs绔娇鐢ㄧ殑鑷畾涔夋煡璇㈢被鍚嶆垨URL
+     */
+    private String csCustQueryCLsOrUrl = "";
+
+    /**
+     * bs绔娇鐢ㄧ殑鑷畾涔夋煡璇㈢被鍚嶆垨URL
+     */
+    private String bsCustQueryCLsOrUrl = "";
+
+    /**
      * 瀛怳I鐨勪笟鍔$被鍨�
      */
     private String subUiObjType = "";
@@ -463,6 +473,22 @@
         this.queryTemplateName = queryTemplateName;
     }
 
+    public void setCsCustQueryCLsOrUrl(String csCustQueryCLsOrUrl) {
+        this.csCustQueryCLsOrUrl = csCustQueryCLsOrUrl;
+    }
+
+    public void setBsCustQueryCLsOrUrl(String bsCustQueryCLsOrUrl) {
+        this.bsCustQueryCLsOrUrl = bsCustQueryCLsOrUrl;
+    }
+
+    public String getCsCustQueryCLsOrUrl() {
+        return csCustQueryCLsOrUrl;
+    }
+
+    public String getBsCustQueryCLsOrUrl() {
+        return bsCustQueryCLsOrUrl;
+    }
+
     /**
      * @return the subUiBtName
      */
diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/OsBtmTypeVO.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/OsBtmTypeVO.java
index 8ba5e9e..5e2154e 100644
--- a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/OsBtmTypeVO.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/OsBtmTypeVO.java
@@ -183,6 +183,19 @@
     private String[] apNameArray;
 
     /**
+     * 鍥剧墖鍚嶇О
+     */
+    private String imageName;
+
+    public void setImageName(String imageName) {
+        this.imageName = imageName;
+    }
+
+    public String getImageName() {
+        return imageName;
+    }
+
+    /**
      * 鍖呭惈灞炴��
      */
     private List<OsBtmTypeAttributeVO> attributes;
diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PLDefinationVO.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PLDefinationVO.java
index f20c2b4..97ba2d2 100644
--- a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PLDefinationVO.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PLDefinationVO.java
@@ -179,6 +179,16 @@
     private String queryTemplateName = "";
 
     /**
+     * cs绔娇鐢ㄧ殑鑷畾涔夋煡璇㈢被鍚嶆垨URL
+     */
+    private String csCustQueryCLsOrUrl = "";
+
+    /**
+     * bs绔娇鐢ㄧ殑鑷畾涔夋煡璇㈢被鍚嶆垨URL
+     */
+    private String bsCustQueryCLsOrUrl = "";
+
+    /**
      * 瀛怳I鐨勪笟鍔$被鍨�
      */
     private String subUIObjType = "";
diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/ReferConfigVO.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/ReferConfigVO.java
index 490cef8..b3fd2c6 100644
--- a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/ReferConfigVO.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/ReferConfigVO.java
@@ -92,7 +92,7 @@
 	/**
 	 * 鏇挎崲鐨勬槧灏�
 	 */
-	private Map<String,String> replaceMap = new HashMap<String, String>();
+	private Map<String,Object> replaceMap = new HashMap<>();
 
 	/**
 	 * 鎺掑簭瀛楁
@@ -192,11 +192,11 @@
 		this.conditionMap = conditionMap;
 	}
 
-	public Map<String, String> getReplaceMap() {
+	public Map<String, Object> getReplaceMap() {
 		return replaceMap;
 	}
 
-	public void setReplaceMap(Map<String, String> replaceMap) {
+	public void setReplaceMap(Map<String, Object> replaceMap) {
 		this.replaceMap = replaceMap;
 	}
 
diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/UITreeDefineVO.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/UITreeDefineVO.java
index f779f10..a4bbc1d 100644
--- a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/UITreeDefineVO.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/UITreeDefineVO.java
@@ -22,9 +22,9 @@
     private String loadType;
 
     /**
-     * 鏄惁鍙嶅悜
+     * 鏄惁鍙嶅悜,TODO:鏍戝畾涔変笂宸茬粡娌℃湁浣跨敤杩欎釜瀛楁浜�
      */
-    private boolean orientation = false;
+    //private boolean orientation = false;
 
     /**
      * 鏄剧ず鍥炬爣
@@ -77,13 +77,13 @@
         this.loadType = loadType;
     }
 
-    public boolean isOrientation() {
+    /*public boolean isOrientation() {
         return orientation;
     }
 
     public void setOrientation(boolean orientation) {
         this.orientation = orientation;
-    }
+    }*/
 
     public boolean isShowImage() {
         return showImage;
@@ -146,7 +146,6 @@
         return "UITreeDefineVO{" +
                 "btmType='" + btmType + '\'' +
                 ", loadType='" + loadType + '\'' +
-                ", orientation=" + orientation +
                 ", showImage=" + showImage +
                 ", rootContent='" + rootContent + '\'' +
                 ", linkType='" + linkType + '\'' +
diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/po/OsBtmTypePO.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/po/OsBtmTypePO.java
index 2d42882..2a18145 100644
--- a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/po/OsBtmTypePO.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/po/OsBtmTypePO.java
@@ -88,6 +88,11 @@
     private short verRuleName;
 
     /**
+     * 鍥剧墖鍚嶇О
+     */
+    private String imageName;
+
+    /**
      * btmItemsTo
      */
     @ExcelColumn(value="鐢熷懡鍛ㄦ湡")
diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/properties/OsConfig.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/properties/OsConfig.java
new file mode 100644
index 0000000..381c296
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/properties/OsConfig.java
@@ -0,0 +1,24 @@
+package com.vci.properties;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @Description
+ * @Author dangsn
+ * @Date 2024/11/28 17:40
+ */
+@Configuration
+@ConfigurationProperties(prefix = "plt")
+public class OsConfig {
+
+    private boolean exportSecretGrade;
+
+    public boolean isExportSecretGrade() {
+        return exportSecretGrade;
+    }
+
+    public void setExportSecretGrade(boolean exportSecretGrade) {
+        this.exportSecretGrade = exportSecretGrade;
+    }
+}
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/config/TomcatConfig.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/properties/TomcatConfig.java
similarity index 89%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/config/TomcatConfig.java
rename to Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/properties/TomcatConfig.java
index 1cfe9dc..60c83e2 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/config/TomcatConfig.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/properties/TomcatConfig.java
@@ -1,7 +1,6 @@
-package com.vci.web.config;
+package com.vci.properties;
 
 import org.apache.catalina.connector.Connector;
-import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer;
 import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/properties/VciFileTransProperties.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/properties/VciFileTransProperties.java
index 9710389..a1685ec 100644
--- a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/properties/VciFileTransProperties.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/properties/VciFileTransProperties.java
@@ -1,6 +1,6 @@
 package com.vci.properties;
 
-import com.vci.enumpck.VciFileTransProtocolEnum;
+import com.vci.enumpck.UI.VciFileTransProtocolEnum;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.context.annotation.Configuration;
 
diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/provider/VciFileDocClassifyProvider.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/provider/VciFileDocClassifyProvider.java
index 4e10948..703bc7b 100644
--- a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/provider/VciFileDocClassifyProvider.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/provider/VciFileDocClassifyProvider.java
@@ -17,7 +17,7 @@
  */
 @FeignClient(
         name = "vciFileDocClassifyProvider",
-        url = "${vciPlatform.fileServiceUrl:http://localhost:19000/fileService}",
+        url = "${feign.fileServiceUrl:http://localhost:19000/fileService}",
         path = "vciFileDocClassifyController"
 )
 public interface VciFileDocClassifyProvider {
diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/provider/VciFileDownloadProvider.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/provider/VciFileDownloadProvider.java
index 6f27976..506588f 100644
--- a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/provider/VciFileDownloadProvider.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/provider/VciFileDownloadProvider.java
@@ -12,7 +12,7 @@
  */
 @FeignClient(
         name = "VciFileDownloadProvider",
-        url = "${vciPlatform.fileServiceUrl:http://localhost:19000/fileService}",
+        url = "${feign.fileServiceUrl:http://localhost:19000/fileService}",
         path = "vciFileDownloadController"
 )
 public interface VciFileDownloadProvider {
diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/provider/VciFileQueryProvider.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/provider/VciFileQueryProvider.java
index 417c0b3..0f47e86 100644
--- a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/provider/VciFileQueryProvider.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/provider/VciFileQueryProvider.java
@@ -13,7 +13,7 @@
  */
 @FeignClient(
         name = "vciFileQueryProvider",
-        url = "${vciPlatform.fileServiceUrl:http://localhost:19000/fileService}",
+        url = "${feign.fileServiceUrl:http://localhost:19000/fileService}",
         path = "vciFileQueryController"
 )
 public interface VciFileQueryProvider {
diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/provider/VciFileUploadProvider.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/provider/VciFileUploadProvider.java
index fd05ff7..b60b41a 100644
--- a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/provider/VciFileUploadProvider.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/provider/VciFileUploadProvider.java
@@ -20,7 +20,7 @@
  */
 @FeignClient(
         name = "vciFileUploadProvider",
-        url = "${vciPlatform.fileServiceUrl:http://localhost:19000/fileService}",
+        url = "${feign.fileServiceUrl:http://localhost:19000/fileService}",
         path = "vciFileUploadController"
 )
 public interface VciFileUploadProvider {
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/query/FileImageViewerQuery.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/FileImageViewerQuery.java
similarity index 97%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/query/FileImageViewerQuery.java
rename to Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/FileImageViewerQuery.java
index 543c64e..b14d5d3 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/query/FileImageViewerQuery.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/FileImageViewerQuery.java
@@ -1,4 +1,4 @@
-package com.vci.web.query;
+package com.vci.query;
 
 /**
  * 鍥剧墖缁勪欢鐨勬煡璇㈠璞�
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/query/UIBaseQuery.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/UIBaseQuery.java
similarity index 80%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/query/UIBaseQuery.java
rename to Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/UIBaseQuery.java
index 49ac8ce..7031f3a 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/query/UIBaseQuery.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/UIBaseQuery.java
@@ -1,4 +1,4 @@
-package com.vci.web.query;
+package com.vci.query;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -15,18 +15,18 @@
     /**
      * 鏉ユ簮鏁版嵁
      */
-    private Map<String,String> sourceData = new HashMap<>();
+    private Map<String,Object> sourceData = new HashMap<>();
 
     /**
      * 閫夋嫨鏁版嵁
      */
     private List<Map<String,String>> selectData = new ArrayList<>();
 
-    public Map<String, String> getSourceData() {
+    public Map<String, Object> getSourceData() {
         return sourceData;
     }
 
-    public void setSourceData(Map<String, String> sourceData) {
+    public void setSourceData(Map<String, Object> sourceData) {
         this.sourceData = sourceData;
     }
 
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/query/UIDataGridQuery.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/UIDataGridQuery.java
similarity index 92%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/query/UIDataGridQuery.java
rename to Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/UIDataGridQuery.java
index 57fea20..b6a2dcd 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/query/UIDataGridQuery.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/UIDataGridQuery.java
@@ -1,4 +1,4 @@
-package com.vci.web.query;
+package com.vci.query;
 
 import com.vci.starter.web.pagemodel.BaseQueryObject;
 
@@ -42,7 +42,7 @@
     /**
      * 鏉ユ簮鏁版嵁
      */
-    private Map<String,String> sourceData = new HashMap<>();
+    private Map<String,Object> sourceData = new HashMap<>();
 
     /**
      * 閫夋嫨鏁版嵁
@@ -54,11 +54,11 @@
      */
     private boolean treeTableFlag = false;
 
-    public Map<String, String> getSourceData() {
+    public Map<String, Object> getSourceData() {
         return sourceData;
     }
 
-    public void setSourceData(Map<String, String> sourceData) {
+    public void setSourceData(Map<String, Object> sourceData) {
         this.sourceData = sourceData;
     }
 
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/query/UIFormQuery.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/UIFormQuery.java
similarity index 91%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/query/UIFormQuery.java
rename to Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/UIFormQuery.java
index 55dd009..c475c36 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/query/UIFormQuery.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/UIFormQuery.java
@@ -1,9 +1,4 @@
-package com.vci.web.query;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+package com.vci.query;
 
 /**
  * 琛ㄥ崟鐨勬煡璇�
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/query/UILinkTypeDataQuery.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/UILinkTypeDataQuery.java
similarity index 94%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/query/UILinkTypeDataQuery.java
rename to Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/UILinkTypeDataQuery.java
index 7458727..90f53fc 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/query/UILinkTypeDataQuery.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/UILinkTypeDataQuery.java
@@ -1,4 +1,4 @@
-package com.vci.web.query;
+package com.vci.query;
 
 import com.vci.starter.web.pagemodel.PageHelper;
 
@@ -61,7 +61,7 @@
     /**
      * 鏇挎崲鐨勫睘鎬т俊鎭�
      */
-    private Map<String,String> replaceMap;
+    private Map<String,Object> replaceMap;
 
     /**
      * 鎸囧畾灞傜骇
@@ -148,11 +148,11 @@
         this.linkType = linkType;
     }
 
-    public Map<String, String> getReplaceMap() {
+    public Map<String, Object> getReplaceMap() {
         return replaceMap;
     }
 
-    public void setReplaceMap(Map<String, String> replaceMap) {
+    public void setReplaceMap(Map<String, Object> replaceMap) {
         this.replaceMap = replaceMap;
     }
 
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/query/UITreeQuery.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/UITreeQuery.java
similarity index 93%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/query/UITreeQuery.java
rename to Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/UITreeQuery.java
index c4f6a3a..5012d80 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/query/UITreeQuery.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/UITreeQuery.java
@@ -1,4 +1,4 @@
-package com.vci.web.query;
+package com.vci.query;
 
 import com.vci.starter.web.pagemodel.TreeQueryObject;
 
@@ -57,18 +57,18 @@
     /**
      * 鏉ユ簮鏁版嵁
      */
-    private Map<String,String> sourceData = new HashMap<>();
+    private Map<String,Object> sourceData = new HashMap<>();
 
     /**
      * 閫夋嫨鏁版嵁
      */
     private List<Map<String,String>> selectData = new ArrayList<>();
 
-    public Map<String, String> getSourceData() {
+    public Map<String, Object> getSourceData() {
         return sourceData;
     }
 
-    public void setSourceData(Map<String, String> sourceData) {
+    public void setSourceData(Map<String, Object> sourceData) {
         this.sourceData = sourceData;
     }
 
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/query/UITreeRootQuery.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/UITreeRootQuery.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/query/UITreeRootQuery.java
rename to Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/UITreeRootQuery.java
index 4538023..d47af43 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/query/UITreeRootQuery.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/query/UITreeRootQuery.java
@@ -1,4 +1,4 @@
-package com.vci.web.query;
+package com.vci.query;
 
 /**
  * 鏍戠殑鏍硅妭鐐�
diff --git a/Source/plt-web/plt-web-parent/plt-web-base/pom.xml b/Source/plt-web/plt-web-parent/plt-web-base/pom.xml
index 3fa76c7..9d168ca 100644
--- a/Source/plt-web/plt-web-parent/plt-web-base/pom.xml
+++ b/Source/plt-web/plt-web-parent/plt-web-base/pom.xml
@@ -19,6 +19,12 @@
     </properties>
 
     <dependencies>
+        <!--骞冲彴鐨勫寘-->
+        <dependency>
+            <groupId>com.vci</groupId>
+            <artifactId>plt-starter</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-thymeleaf</artifactId>
@@ -56,18 +62,6 @@
             <groupId>com.alibaba</groupId>
             <artifactId>transmittable-thread-local</artifactId>
             <version>2.12.6</version>
-        </dependency>
-        <dependency>
-            <groupId>com.vci.common</groupId>
-            <artifactId>plt-common</artifactId>
-            <version>1.0.RELEASE</version>
-            <scope>compile</scope>
-        </dependency>
-        <dependency>
-            <groupId>com.vci.corba</groupId>
-            <artifactId>plt-slice</artifactId>
-            <version>1.0.RELEASE</version>
-            <scope>compile</scope>
         </dependency>
         <dependency>
             <groupId>com.zeroc</groupId>
diff --git a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/revision/provider/CommonAnnotationProvider.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/revision/provider/CommonAnnotationProvider.java
index 7c9f923..fe28f73 100644
--- a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/revision/provider/CommonAnnotationProvider.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/revision/provider/CommonAnnotationProvider.java
@@ -12,7 +12,7 @@
  * @author weidy
  * @date 2020/4/17
  */
-@FeignClient(name="commonAnnotationProvider",url="${vciPlatform.objectServiceUrl}",path = "annotationController")
+@FeignClient(name="commonAnnotationProvider",url="${feign.scanServiceUrl}",path = "annotationController")
 public interface CommonAnnotationProvider {
 
     /**
diff --git a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/revision/provider/CommonLifeCycleProvider.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/revision/provider/CommonLifeCycleProvider.java
index 243361e..d4e9e47 100644
--- a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/revision/provider/CommonLifeCycleProvider.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/revision/provider/CommonLifeCycleProvider.java
@@ -10,7 +10,7 @@
  * @author weidy
  * @date 2020/4/15
  */
-@FeignClient(name="commonLifeCycleProvider",url="${vciPlatform.objectServiceUrl}",path = "lifeCycleController")
+@FeignClient(name="commonLifeCycleProvider",url="${feign.pltServiceUrl}",path = "lifeCycleController")
 public interface CommonLifeCycleProvider {
 
     /**
diff --git a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/revision/provider/CommonRevisionRuleProvider.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/revision/provider/CommonRevisionRuleProvider.java
index 396c739..05a679c 100644
--- a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/revision/provider/CommonRevisionRuleProvider.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/revision/provider/CommonRevisionRuleProvider.java
@@ -11,7 +11,7 @@
  * @author weidy
  * @date 2020/4/15
  */
-@FeignClient(name="commonRevisionRuleProvider",url="${vciPlatform.objectServiceUrl}",path = "revisionRuleController")
+@FeignClient(name="commonRevisionRuleProvider",url="${feign.pltServiceUrl}",path = "revisionRuleController")
 public interface CommonRevisionRuleProvider {
 
     /**
diff --git a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/revision/service/RevisionModelUtil.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/revision/service/RevisionModelUtil.java
index 8f6f784..9859eb5 100644
--- a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/revision/service/RevisionModelUtil.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/revision/service/RevisionModelUtil.java
@@ -1,13 +1,16 @@
 package com.vci.starter.revision.service;
 
 import com.vci.starter.revision.bo.TreeWrapperOptions;
-import com.vci.starter.revision.model.*;
-import com.vci.starter.revision.provider.*;
+import com.vci.starter.revision.model.ReleasedObjDO;
+import com.vci.starter.revision.model.RevisionInfo;
+import com.vci.starter.revision.provider.CommonAnnotationProvider;
+import com.vci.starter.revision.provider.CommonLifeCycleProvider;
+import com.vci.starter.revision.provider.CommonRevisionRuleProvider;
 import com.vci.starter.web.annotation.Column;
 import com.vci.starter.web.annotation.VciBtmType;
 import com.vci.starter.web.annotation.VciColumnDefinition;
-import com.vci.starter.web.constant.RevisionConstant;
 import com.vci.starter.web.constant.RegExpConstant;
+import com.vci.starter.web.constant.RevisionConstant;
 import com.vci.starter.web.enumpck.DataSecretEnum;
 import com.vci.starter.web.enumpck.UserSecretEnum;
 import com.vci.starter.web.exception.VciBaseException;
@@ -18,7 +21,6 @@
 import com.vci.starter.web.pagemodel.Tree;
 import com.vci.starter.web.pagemodel.TreeQueryObject;
 import com.vci.starter.web.service.VciSecretServiceI;
-import com.vci.starter.web.util.BeanUtil;
 import com.vci.starter.web.util.BeanUtilForVCI;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.starter.web.util.VciDateUtil;
@@ -30,6 +32,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.util.CollectionUtils;
+
 import java.lang.reflect.Field;
 import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
@@ -195,8 +198,8 @@
         baseModel.setLastModifyTime(currentDate);
         //
         VciBtmType vciBtmType = getBtmTypeAnnotation(baseModel);
-        if(StringUtils.isBlank(baseModel.getBtmname()) && vciBtmType!=null){
-            baseModel.setBtmname(vciBtmType.name());
+        if(StringUtils.isBlank(baseModel.getBtmName()) && vciBtmType!=null){
+            baseModel.setBtmName(vciBtmType.name());
         }
         //鑾峰彇鍖呭惈浜哻olumn娉ㄨВ鐨勫睘鎬э紝鍥犱负涓嶅寘鍚繖涓敞瑙g殑鏃跺�欐槸榛樿nullable涓簍rue锛寀nique涓篺alse
         List<Field> hasColumnAnnoFields = filterHasColumnAnnoFields(baseModel);
@@ -284,9 +287,9 @@
         VciBaseUtil.alertNotNull(dto,"鏁版嵁浼犺緭瀵硅薄",baseModel,"鏁版嵁搴撲腑鐨勬暟鎹璞�");
         //鍓嶇鍙兘涓嶄細鎶婇粯璁ょ殑鎵�鏈夊睘鎬т紶閫掕繃鏉ワ紝鎵�浠ュ厛浠庢暟鎹簱涓殑鏁版嵁瀵硅薄鎷疯礉鍒颁复鏃剁殑瀵硅薄涓�
         BaseModel tempModel = new BaseModel();
-        BeanUtil.convert(baseModel,tempModel);
-        BeanUtil.convert(dto,baseModel);
-        //BeanUtil.convert(tempModel,baseModel);
+        BeanUtilForVCI.convert(baseModel,tempModel);
+        BeanUtilForVCI.convert(dto,baseModel);
+        //BeanUtilForVCI.convert(tempModel,baseModel);
         //涓嶇煡閬撲负鍟ワ紝绐佺劧BeanUtil.convert(tempModel,baseModel);涓嶅ソ浣夸簡
         BeanUtilForVCI.copyPropertiesIgnoreCase(tempModel,baseModel);
         //涓轰簡闃叉鍓嶇娌℃湁浼犻�掗粯璁ょ殑灞炴�э紝鎵�浠ュ緱鍏堟嫹璐濆埌baseModel涓紝鐒跺悗dto鎷疯礉涓�娆″悗锛屽啀鎶婃暟鎹簱涓嫹璐濆洖鏉ャ��
@@ -344,11 +347,11 @@
         wrapperForAddLink(linkModel);
         VciBaseUtil.alertNotNull(fromModel,"閾炬帴绫诲瀷from绔�",toModel,"閾炬帴绫诲瀷to绔�");
         linkModel.setFoid(fromModel.getOid());
-        linkModel.setFbtmname(fromModel.getBtmname());
+        linkModel.setFbtmname(fromModel.getBtmName());
         linkModel.setFnameoid(fromModel.getNameOid());
 
         linkModel.setToid(toModel.getOid());
-        linkModel.setTbtmname(toModel.getBtmname());
+        linkModel.setTbtmname(toModel.getBtmName());
         linkModel.setTnameoid(toModel.getNameOid());
         linkModel.setTrevisionoid(toModel.getRevisionOid());
     }
@@ -418,7 +421,7 @@
             //蹇呴』绠$悊鐗堟湰鎵嶄細鎵ц鍙戝竷
             VciBaseUtil.alertNotNull( baseModel.getOid(), "鏁版嵁瀵硅薄鐨勪富閿�", baseModel.getNameOid(), "瀵硅薄鐨勪富閿�",baseModel.getRevisionOid(),"鐗堟湰鐨勪富閿�");
             ReleasedObjDO releasedObjDO = new ReleasedObjDO();
-            BeanUtil.convert(baseModel,releasedObjDO);
+            BeanUtilForVCI.convert(baseModel,releasedObjDO);
             if(StringUtils.isBlank(releasedObjDO.getBtmName())){
                 releasedObjDO.setBtmName(btmType.name());
             }
@@ -516,7 +519,7 @@
         if(StringUtils.isBlank(baseModel.getOwner())) {
             baseModel.setOwner(baseModel.getCreator());
         }
-        baseModel.setBtmname(btmName);
+        baseModel.setBtmName(btmName);
     }
 
     /**
@@ -590,12 +593,12 @@
         setBtmName(newModel);
         VciBaseUtil.alertNotNull(newModel.getCopyFromVersion(),"寮曠敤鑰佺増鏈殑涓婚敭");
         if (revisionMapper != null) {
-            RevisionInfo oldRevision = revisionMapper.selectByOid(newModel.getCopyFromVersion(),VciBaseUtil.getTableName(newModel.getBtmname()));
+            RevisionInfo oldRevision = revisionMapper.selectByOid(newModel.getCopyFromVersion(),VciBaseUtil.getTableName(newModel.getBtmName()));
             if(oldRevision == null || StringUtils.isBlank(oldRevision.getOid()) ){
                 throw new VciBaseException("鑰佺増鏈湪鏁版嵁搴撲腑涓嶅瓨鍦�");
             }
             BaseModel oldModel = new BaseModel();
-            BeanUtil.convert(oldRevision,oldModel);
+            BeanUtilForVCI.convert(oldRevision,oldModel);
             wrapperRevisionModel(oldModel,newModel);
         }else{
             throw new VciBaseException("娌℃湁鍒濆鍖栫増鏈鍒欑殑鏁版嵁鎿嶄綔灞�,璇峰紑鍙戜汉鍛樻鏌aven鏄惁寮曠敤");
@@ -610,12 +613,12 @@
     public void wrapperVersionModel(BaseModel newModel) throws VciBaseException{
         VciBaseUtil.alertNotNull(newModel,"鏂扮増娆$殑鏁版嵁瀵硅薄",newModel.getCopyFromVersion(),"寮曠敤鑰佺増娆$殑涓婚敭");
         if (revisionMapper != null) {
-            RevisionInfo oldRevision = revisionMapper.selectByOid(newModel.getCopyFromVersion(),VciBaseUtil.getTableName(newModel.getBtmname()));
+            RevisionInfo oldRevision = revisionMapper.selectByOid(newModel.getCopyFromVersion(),VciBaseUtil.getTableName(newModel.getBtmName()));
             if(oldRevision == null || StringUtils.isBlank(oldRevision.getOid()) ){
                 throw new VciBaseException("鑰佺増娆℃暟鎹湪鏁版嵁搴撲腑涓嶅瓨鍦�");
             }
             BaseModel oldModel = new BaseModel();
-            BeanUtil.convert(oldRevision,oldModel);
+            BeanUtilForVCI.convert(oldRevision,oldModel);
             wrapperVersionModel(oldModel,newModel);
         }else{
             throw new VciBaseException("娌℃湁鍒濆鍖栫増鏈鍒欑殑鏁版嵁鎿嶄綔灞�,璇峰紑鍙戜汉鍛樻鏌aven鏄惁寮曠敤");
@@ -984,7 +987,7 @@
                 } else {
                     //娌℃湁杩欎釜锛岄偅灏辩洿鎺ョ敤oldModel鍘昏幏鍙栫増鏈彿
                     lastRevision = new RevisionInfo();
-                    BeanUtil.convert(oldModel, lastRevision);
+                    BeanUtilForVCI.convert(oldModel, lastRevision);
                 }
                 newModel.setRevisionRule(lastRevision.getRevisionRule());
                 newModel.setVersionRule(lastRevision.getVersionRule());
@@ -1050,7 +1053,7 @@
                 } else {
                     //娌℃湁杩欎釜锛岄偅灏辩洿鎺ョ敤oldModel鍘昏幏鍙栫増鏈彿
                     lastRevision = new RevisionInfo();
-                    BeanUtil.convert(oldModel, lastRevision);
+                    BeanUtilForVCI.convert(oldModel, lastRevision);
                 }
                 //鐗堟鍙�,灏辨暟瀛楀拰瀛楁瘝涓ょ
                 if(oldModel.getVersionValue().matches(RegExpConstant.LETTER)){
@@ -1075,12 +1078,12 @@
      */
     private void setBtmName(BaseModel baseModel){
         VciBaseUtil.alertNotNull(baseModel,"鏁版嵁瀵硅薄");
-        if(StringUtils.isBlank(baseModel.getBtmname())){
+        if(StringUtils.isBlank(baseModel.getBtmName())){
             VciBtmType btmType = getBtmTypeAnnotation(baseModel);
             if(btmType == null){
                 throw new VciBaseException("娌℃湁VciBtmType娉ㄨВ锛屾棤娉曞垽鏂笟鍔$被鍨�");
             }
-            baseModel.setBtmname(btmType.name());
+            baseModel.setBtmName(btmType.name());
         }
     }
 
@@ -1091,8 +1094,8 @@
     public void saveOldModel(BaseModel oldModel){
         setBtmName(oldModel);
         if (revisionMapper != null) {
-            revisionMapper.resetLastRevision(oldModel.getNameOid(),VciBaseUtil.getTableName(oldModel.getBtmname()));
-            revisionMapper.resetOldRevision(oldModel.getOid(),VciBaseUtil.getTableName(oldModel.getBtmname()));
+            revisionMapper.resetLastRevision(oldModel.getNameOid(),VciBaseUtil.getTableName(oldModel.getBtmName()));
+            revisionMapper.resetOldRevision(oldModel.getOid(),VciBaseUtil.getTableName(oldModel.getBtmName()));
         }else{
             throw new VciBaseException("娌℃湁鍒濆鍖栫増鏈鍒欑殑鏁版嵁鎿嶄綔灞傦紝璇峰紑鍙戜汉鍛樻鏌aven鏄惁寮曠敤");
         }
@@ -1105,8 +1108,8 @@
     public void saveOldModelVersion(BaseModel oldModel){
         setBtmName(oldModel);
         if (revisionMapper != null) {
-            revisionMapper.resetLastVersion(oldModel.getNameOid(),oldModel.getRevisionOid(),VciBaseUtil.getTableName(oldModel.getBtmname()));
-            revisionMapper.resetOldVersion(oldModel.getOid(),VciBaseUtil.getTableName(oldModel.getBtmname()));
+            revisionMapper.resetLastVersion(oldModel.getNameOid(),oldModel.getRevisionOid(),VciBaseUtil.getTableName(oldModel.getBtmName()));
+            revisionMapper.resetOldVersion(oldModel.getOid(),VciBaseUtil.getTableName(oldModel.getBtmName()));
         }else{
             throw new VciBaseException("娌℃湁鍒濆鍖栫増鏈鍒欑殑鏁版嵁鎿嶄綔灞傦紝璇峰紑鍙戜汉鍛樻鏌aven鏄惁寮曠敤");
         }
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/annotation/BdSelectInput.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/annotation/BdSelectInput.java
similarity index 93%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/annotation/BdSelectInput.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/annotation/BdSelectInput.java
index ba9c547..58f2af3 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/annotation/BdSelectInput.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/annotation/BdSelectInput.java
@@ -1,4 +1,4 @@
-package com.vci.web.annotation;
+package com.vci.starter.web.annotation;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/beans/CopyProperty.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/annotation/CopyProperty.java
similarity index 90%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/beans/CopyProperty.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/annotation/CopyProperty.java
index d387f01..d9004f8 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/beans/CopyProperty.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/annotation/CopyProperty.java
@@ -1,4 +1,4 @@
-package com.vci.web.util.beans;
+package com.vci.starter.web.annotation;
 
 import java.lang.annotation.*;
 
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/annotation/FlowNotifyAfter.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/annotation/FlowNotifyAfter.java
similarity index 89%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/annotation/FlowNotifyAfter.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/annotation/FlowNotifyAfter.java
index 1a6b1ec..75cf1a7 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/annotation/FlowNotifyAfter.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/annotation/FlowNotifyAfter.java
@@ -1,4 +1,4 @@
-package com.vci.web.annotation;
+package com.vci.starter.web.annotation;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/annotation/FlowNotifyBefore.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/annotation/FlowNotifyBefore.java
similarity index 89%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/annotation/FlowNotifyBefore.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/annotation/FlowNotifyBefore.java
index a2209de..541a4ef 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/annotation/FlowNotifyBefore.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/annotation/FlowNotifyBefore.java
@@ -1,4 +1,4 @@
-package com.vci.web.annotation;
+package com.vci.starter.web.annotation;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/annotation/FlowNotifyWeb.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/annotation/FlowNotifyWeb.java
similarity index 93%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/annotation/FlowNotifyWeb.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/annotation/FlowNotifyWeb.java
index 3064c02..7fcf086 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/annotation/FlowNotifyWeb.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/annotation/FlowNotifyWeb.java
@@ -1,4 +1,4 @@
-package com.vci.web.annotation;
+package com.vci.starter.web.annotation;
 
 import org.springframework.core.annotation.AliasFor;
 import org.springframework.stereotype.Component;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/annotation/VciTransactional.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/annotation/VciTransactional.java
similarity index 90%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/annotation/VciTransactional.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/annotation/VciTransactional.java
index 053a1eb..703a183 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/annotation/VciTransactional.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/annotation/VciTransactional.java
@@ -1,4 +1,4 @@
-package com.vci.web.annotation;
+package com.vci.starter.web.annotation;
 
 /**
  * 鍥犱负web绔殑鏈嶅姟涓嶈杩炴暟鎹簱锛屾墍浠ユ秹鍙婂埌浜嬪姟鐨勯棶棰樹笉鑳借В鍐筹紝鍙兘鍩轰簬浜嬪姟鐨勬�濊矾鏉ュ鐞�
diff --git a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/autoconfigure/SpringMVCConfig.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/autoconfigure/SpringMVCConfig.java
index 9af6193..5e3d30f 100644
--- a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/autoconfigure/SpringMVCConfig.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/autoconfigure/SpringMVCConfig.java
@@ -52,6 +52,8 @@
      */
     private Logger log = LoggerFactory.getLogger(SpringMVCConfig.class);
 
+    private boolean enabled;
+
     /**
      * 澶栭儴鏂囦欢澶圭殑鏄犲皠鍦板潃
      */
@@ -100,10 +102,19 @@
      * 榛樿鏄惁鍏佽璇佷功
      */
     private boolean DEFAULT_ALLOW_CREDENTIALS = true;
+
     /**
      * 榛樿鐨勬渶澶у��
      */
     private long DEFAULT_MAX_AGE = 1800;
+
+    public boolean isEnabled() {
+        return enabled;
+    }
+
+    public void setEnabled(boolean enabled) {
+        this.enabled = enabled;
+    }
 
     public Map<String, String> getResourceFolderMap() {
         return resourceFolderMap;
@@ -419,4 +430,12 @@
     public void setUnStorageRequestTimeUrls(List<String> unStorageRequestTimeUrls) {
         this.unStorageRequestTimeUrls = unStorageRequestTimeUrls;
     }
+
+    public String[] getDEFAULT_EXPOSEDHEADERS() {
+        return DEFAULT_EXPOSEDHEADERS;
+    }
+
+    public void setDEFAULT_EXPOSEDHEADERS(String[] DEFAULT_EXPOSEDHEADERS) {
+        this.DEFAULT_EXPOSEDHEADERS = DEFAULT_EXPOSEDHEADERS;
+    }
 }
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/CharPool.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/constant/CharPool.java
similarity index 97%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/CharPool.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/constant/CharPool.java
index dd99d9a..7459ec6 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/CharPool.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/constant/CharPool.java
@@ -1,4 +1,4 @@
-package com.vci.web.util;
+package com.vci.starter.web.constant;
 
 /**
  * char 甯搁噺姹�
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/StringPool.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/constant/StringPool.java
similarity index 97%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/StringPool.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/constant/StringPool.java
index 5dd92d7..c9648e9 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/StringPool.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/constant/StringPool.java
@@ -1,4 +1,4 @@
-package com.vci.web.util;
+package com.vci.starter.web.constant;
 
 /**
  * 闈欐�� String 姹�
diff --git a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/model/BaseModel.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/model/BaseModel.java
index 1d350ad..54713a2 100644
--- a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/model/BaseModel.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/model/BaseModel.java
@@ -22,44 +22,44 @@
 	/**
 	 * 涓婚敭锛屽鏋滆嚜宸辩殑瀵硅薄锛屼笉鏄痮id浣滀负涓婚敭鐨勮瘽锛岄渶瑕佺敤id杩欎釜娉ㄨВ
 	 */
-	@Column(nullable = false,length = 50)
+	@Column(nullable = false)
 	private String oid;
 	
 	/**
 	 * 浠e彿锛涘彲浠ヨ缃睘鎬х殑鏄犲皠锛宯ame琛ㄧず鍦ㄥ钩鍙扮殑涓氬姟绫诲瀷涓殑灞炴�у悕绉帮紝蹇呴』涓哄皬鍐欙紱
 	 */
-	@Column(length = 50)
+	@Column()
 	private String id;
 	
 	/**
 	 * 鍚嶇О锛涗篃鍙互涓嶈缃睘鎬ф槧灏勶紝榛樿鏄瓧娈靛悕鐨勫皬鍐�
 	 */
-	@Column(length = 50)
+	@Column()
 	private String name;
 	
 	/**
 	 * 鎻忚堪
 	 */
-	@Column(length = 250)
+	@Column()
 	private String description;
 	
 	/**
 	 * 鐗堟湰鐨勪富閿�
 	 */
-	@Column(length = 50)
+	@Column()
 	private String revisionOid;
 	
 	/**
 	 * 瀵硅薄鐨勪富閿�
 	 */
-	@Column(length = 50)
+	@Column()
 	private String nameOid;
 	
 	/**
 	 * 涓氬姟绫诲瀷鐨勫悕绉�
 	 */
-	@Column(length = 30)
-	private String btmname;
+	@Column()
+	private String btmName;
 	
 	/**
 	 * 鏄惁鏈�鍚庣増鏈�
@@ -91,7 +91,7 @@
 	/**
 	 * 鍒涘缓浜�
 	 */
-	@Column(length = 50,nullable = false)
+	@Column(nullable = false)
 	private String creator;
 	
 	/**
@@ -104,7 +104,7 @@
 	/**
 	 * 鏈�鍚庝慨鏀逛汉
 	 */
-	@Column(length = 50,nullable = false)
+	@Column(nullable = false)
 	private String lastModifier;
 	
 	/**
@@ -116,7 +116,7 @@
 	/**
 	 * 鐗堟湰瑙勫垯
 	 */
-	@Column(length = 50)
+	@Column()
 	private String revisionRule;
 
 
@@ -129,14 +129,14 @@
 	/**
 	 * 鐗堟湰鍊�
 	 */
-	@Column(length = 50)
+	@Column()
 	private String revisionValue;
 
 
 	/**
 	 * 鐗堟瑙勫垯
 	 */
-	@Column(length = 50)
+	@Column()
 	private String versionRule;
 
 	/**
@@ -148,19 +148,19 @@
 	/**
 	 * 鐗堟鍊�
 	 */
-	@Column(length = 50)
+	@Column()
 	private String versionValue;
 
 	/**
 	 * 鐢熷懡鍛ㄦ湡鐨勭紪鍙�
 	 */
 	@Transient()
-	private String lctid;
+	private String lctId;
 
 	/**
 	 * 鐢熷懡鍛ㄦ湡鍊�
 	 */
-	@Column(length = 50)
+	@Column()
 	private String lcStatus;
 	
 	/**
@@ -277,14 +277,13 @@
 		this.nameOid = nameOid;
 	}
 
-	public String getBtmname() {
-		return btmname;
+	public String getBtmName() {
+		return btmName;
 	}
 
-	public void setBtmname(String btmname) {
-		this.btmname = btmname;
+	public void setBtmName(String btmName) {
+		this.btmName = btmName;
 	}
-
 
 	public String getLastR() {
 		return lastR;
@@ -326,6 +325,14 @@
 		this.creator = creator;
 	}
 
+	public Date getCreateTime() {
+		return createTime;
+	}
+
+	public void setCreateTime(Date createTime) {
+		this.createTime = createTime;
+	}
+
 	public String getLastModifier() {
 		return lastModifier;
 	}
@@ -350,14 +357,6 @@
 		this.revisionRule = revisionRule;
 	}
 
-	public String getVersionRule() {
-		return versionRule;
-	}
-
-	public void setVersionRule(String versionRule) {
-		this.versionRule = versionRule;
-	}
-
 	public int getRevisionSeq() {
 		return revisionSeq;
 	}
@@ -372,6 +371,14 @@
 
 	public void setRevisionValue(String revisionValue) {
 		this.revisionValue = revisionValue;
+	}
+
+	public String getVersionRule() {
+		return versionRule;
+	}
+
+	public void setVersionRule(String versionRule) {
+		this.versionRule = versionRule;
 	}
 
 	public int getVersionSeq() {
@@ -390,12 +397,28 @@
 		this.versionValue = versionValue;
 	}
 
+	public String getLctId() {
+		return lctId;
+	}
+
+	public void setLctId(String lctId) {
+		this.lctId = lctId;
+	}
+
 	public String getLcStatus() {
 		return lcStatus;
 	}
 
 	public void setLcStatus(String lcStatus) {
 		this.lcStatus = lcStatus;
+	}
+
+	public String getLcStatusText() {
+		return lcStatusText;
+	}
+
+	public void setLcStatusText(String lcStatusText) {
+		this.lcStatusText = lcStatusText;
 	}
 
 	public Date getTs() {
@@ -454,22 +477,6 @@
 		this.copyFromVersion = copyFromVersion;
 	}
 
-	public String getLcStatusText() {
-		return lcStatusText;
-	}
-
-	public void setLcStatusText(String lcStatusText) {
-		this.lcStatusText = lcStatusText;
-	}
-
-	public Date getCreateTime() {
-		return createTime;
-	}
-
-	public void setCreateTime(Date createTime) {
-		this.createTime = createTime;
-	}
-
 	public Integer getSecretGrade() {
 		return secretGrade;
 	}
@@ -486,60 +493,11 @@
 		this.secretGradeText = secretGradeText;
 	}
 
-	public String getLctid() {
-		return lctid;
-	}
-
-	public void setLctid(String lctid) {
-		this.lctid = lctid;
-	}
-
-
 	public Map<String, String> getData() {
 		return data;
 	}
 
 	public void setData(Map<String, String> data) {
 		this.data = data;
-	}
-
-	@Override
-	public String toString() {
-		return "BaseModel{" +
-				"oid='" + oid + '\'' +
-				", id='" + id + '\'' +
-				", name='" + name + '\'' +
-				", description='" + description + '\'' +
-				", revisionOid='" + revisionOid + '\'' +
-				", nameOid='" + nameOid + '\'' +
-				", btmname='" + btmname + '\'' +
-				", lastR='" + lastR + '\'' +
-				", firstR='" + firstR + '\'' +
-				", lastV='" + lastV + '\'' +
-				", firstV='" + firstV + '\'' +
-				", creator='" + creator + '\'' +
-				", createTime=" + createTime +
-				", lastModifier='" + lastModifier + '\'' +
-				", lastModifyTime=" + lastModifyTime +
-				", revisionRule='" + revisionRule + '\'' +
-				", revisionSeq=" + revisionSeq +
-				", revisionValue='" + revisionValue + '\'' +
-				", versionRule='" + versionRule + '\'' +
-				", versionSeq=" + versionSeq +
-				", versionValue='" + versionValue + '\'' +
-				", lctid='" + lctid + '\'' +
-				", lcStatus='" + lcStatus + '\'' +
-				", lcStatusText='" + lcStatusText + '\'' +
-				", ts=" + ts +
-				", owner='" + owner + '\'' +
-				", checkInBy='" + checkInBy + '\'' +
-				", checkInTime=" + checkInTime +
-				", checkOutBy='" + checkOutBy + '\'' +
-				", checkOutTime=" + checkOutTime +
-				", copyFromVersion='" + copyFromVersion + '\'' +
-				", secretGrade=" + secretGrade +
-				", secretGradeText='" + secretGradeText + '\'' +
-				", data=" + data +
-				'}';
 	}
 }
diff --git a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/pagemodel/BaseResult.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/pagemodel/BaseResult.java
index b16511e..d0c8185 100644
--- a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/pagemodel/BaseResult.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/pagemodel/BaseResult.java
@@ -90,7 +90,7 @@
     /**
      * 鏍戠殑鏁版嵁
      */
-    private Collection<Tree> treeData;
+    private Collection<BaseTree> treeData;
 
     public Object[] getMsgObjs() {
         return msgObjs;
@@ -196,11 +196,11 @@
         this.data = data;
     }
 
-    public Collection<Tree> getTreeData() {
+    public Collection<BaseTree> getTreeData() {
         return treeData;
     }
 
-    public void setTreeData(Collection<Tree> treeData) {
+    public void setTreeData(Collection<BaseTree> treeData) {
         this.treeData = treeData;
     }
 
@@ -411,7 +411,7 @@
      * @param treeList 鏍戣妭鐐归泦鍚�
      * @return 缁熶竴鏁版嵁瀵硅薄
      */
-    public static BaseResult tree(Collection<Tree> treeList){
+    public static BaseResult tree(Collection<? extends BaseTree> treeList){
         BaseResult baseResult = new BaseResult<>();
         baseResult.setCode(ResultCodeEnum.SUCCESS.code);
         baseResult.setSuccess(true);
diff --git a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/pagemodel/BaseTree.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/pagemodel/BaseTree.java
new file mode 100644
index 0000000..a13c51a
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/pagemodel/BaseTree.java
@@ -0,0 +1,223 @@
+package com.vci.starter.web.pagemodel;
+
+
+/**
+ * @author ludc
+ * @date 2024/11/27 16:53
+ */
+public class BaseTree implements java.io.Serializable{
+
+    /**
+     * 绂佹淇敼杩欎釜鍊�
+     * @serial 搴忓垪鍖栧��
+     */
+    private static final long serialVersionUID = 6886695271635257122L;
+
+    /**
+     * 涓婚敭
+     */
+    private String oid;
+
+    /**
+     * 鏄剧ず鏂囨湰
+     */
+    private String text;
+
+    /**
+     * 缂栧彿
+     */
+    private String id;
+
+    /**
+     * 鏄惁鍙跺瓙
+     */
+    private boolean leaf = false;
+
+    /**
+     * 鏄惁鏄剧ず澶嶉�夋
+     */
+    private boolean showCheckbox = false;
+
+    /**
+     * 鏄惁榛樿閫変腑
+     */
+    private boolean checked = false;
+
+    /**
+     * 灞傜骇
+     */
+    private  int level;
+
+    /**
+     * 鍥炬爣
+     */
+    private String icon;
+
+    /**
+     * 鍥炬爣鏍峰紡
+     */
+    private String iconCls;
+
+    /**
+     * 涓婄骇鑺傜偣
+     */
+    private String parentId;
+
+    /**
+     * 涓婄骇鑺傜偣鐨勫悕绉�
+     */
+    private String parentName;
+
+    /**
+     * 涓婄骇鑺傜偣鐨勪笟鍔$被鍨�
+     */
+    private String parentBtmName;
+
+    /**
+     * 鏄惁灞曞紑
+     */
+    private boolean expanded = false;
+
+    /**
+     * 閾炬帴
+     */
+    private String href;//layui鍜宔xtjs浣跨敤href,easyui浣跨敤url锛岀粺涓�href
+
+    /**
+     * 鎺掑簭绱㈠紩
+     */
+    private String index;
+
+    /**
+     * 褰撳墠鏁版嵁瀵硅薄
+     */
+    private Object data;
+
+    public void setOid(String oid) {
+        this.oid = oid;
+    }
+
+    public void setText(String text) {
+        this.text = text;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public void setLeaf(boolean leaf) {
+        this.leaf = leaf;
+    }
+
+    public void setShowCheckbox(boolean showCheckbox) {
+        this.showCheckbox = showCheckbox;
+    }
+
+    public void setChecked(boolean checked) {
+        this.checked = checked;
+    }
+
+    public void setLevel(int level) {
+        this.level = level;
+    }
+
+    public void setIcon(String icon) {
+        this.icon = icon;
+    }
+
+    public void setIconCls(String iconCls) {
+        this.iconCls = iconCls;
+    }
+
+    public void setParentId(String parentId) {
+        this.parentId = parentId;
+    }
+
+    public void setParentName(String parentName) {
+        this.parentName = parentName;
+    }
+
+    public void setParentBtmName(String parentBtmName) {
+        this.parentBtmName = parentBtmName;
+    }
+
+    public void setExpanded(boolean expanded) {
+        this.expanded = expanded;
+    }
+
+    public void setHref(String href) {
+        this.href = href;
+    }
+
+    public void setIndex(String index) {
+        this.index = index;
+    }
+
+    public void setData(Object data) {
+        this.data = data;
+    }
+
+    public String getOid() {
+        return oid;
+    }
+
+    public String getText() {
+        return text;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public boolean isLeaf() {
+        return leaf;
+    }
+
+    public boolean isShowCheckbox() {
+        return showCheckbox;
+    }
+
+    public boolean isChecked() {
+        return checked;
+    }
+
+    public int getLevel() {
+        return level;
+    }
+
+    public String getIcon() {
+        return icon;
+    }
+
+    public String getIconCls() {
+        return iconCls;
+    }
+
+    public String getParentId() {
+        return parentId;
+    }
+
+    public String getParentName() {
+        return parentName;
+    }
+
+    public String getParentBtmName() {
+        return parentBtmName;
+    }
+
+    public boolean isExpanded() {
+        return expanded;
+    }
+
+    public String getHref() {
+        return href;
+    }
+
+    public String getIndex() {
+        return index;
+    }
+
+    public Object getData() {
+        return data;
+    }
+}
diff --git a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/pagemodel/Tree.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/pagemodel/Tree.java
index 19d6de9..9a3c0c6 100644
--- a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/pagemodel/Tree.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/pagemodel/Tree.java
@@ -12,7 +12,7 @@
  * @author weidy
  *
  */
-public class Tree implements java.io.Serializable{
+public class Tree extends BaseTree implements java.io.Serializable{
 
 	/**
 	 * 绂佹淇敼杩欎釜鍊�
@@ -24,7 +24,7 @@
 	 * 鏋勯�犲嚱鏁�
 	 */
 	public Tree(){
-		
+
 	}
 
 	/**
@@ -48,93 +48,22 @@
 		setData(o);
 	}
 
-
-	/**
-	 * 涓婚敭
-	 */
-	private String oid;
-	/**
-	 * 鏄剧ず鏂囨湰
-	 */
-	private String text;
-	/**
-	 * 缂栧彿
-	 */
-	private String id;
-	/**
-	 * 鏄惁鍙跺瓙
-	 */
-	private boolean leaf = false;
-
-	/**
-	 * 鏄惁鏄剧ず澶嶉�夋
-	 */
-	private boolean showCheckbox = false;
-	/**
-	 * 鏄惁榛樿閫変腑
-	 */
-	private boolean checked = false;
-	
 	/**
 	 * 瀛愯妭鐐�
 	 */
-	private List<Tree> children = new ArrayList<Tree>();
-	/**
-	 * 灞傜骇
-	 */
-	private  int level;
-	/**
-	 * 鍥炬爣
-	 */
-	private String icon;
-	/**
-	 * 鍥炬爣鏍峰紡
-	 */
-	private String iconCls;
-	/**
-	 * 涓婄骇鑺傜偣
-	 */
-	private String parentId;
+	private List<Tree> children = new ArrayList<>();
 
-	/**
-	 * 涓婄骇鑺傜偣鐨勫悕绉�
-	 */
-	private String parentName;
-
-	/**
-	 * 涓婄骇鑺傜偣鐨勪笟鍔$被鍨�
-	 */
-	private String parentBtmName;
-	/**
-	 * 鏄惁灞曞紑
-	 */
-	private boolean expanded = false;
-	
-	/**
-	 * 閾炬帴
-	 */
-	private String href;//layui鍜宔xtjs浣跨敤href,easyui浣跨敤url锛岀粺涓�href
-	
-	/**
-	 * 鎺掑簭绱㈠紩
-	 */
-	private String index;//鎺掑簭绱㈠紩
-	/***
-	 * 褰撳墠鏁版嵁瀵硅薄
-	 */
-	private Object data;
-	
 	/**
 	 * 鍏朵粬鐨勫睘鎬�
 	 */
-	private Map<String,String> attributes = new HashMap<String, String>();//浣跨敤骞冲彴鐨勮瘽锛屾墍鏈夌殑灞炴�ч兘鏄疭tring鐨�
-	
+	private Map<String,String> attributes = new HashMap<>();//浣跨敤骞冲彴鐨勮瘽锛屾墍鏈夌殑灞炴�ч兘鏄疭tring鐨�
+
 	/**
 	 * 鑾峰彇涓婚敭
 	 * @return 涓婚敭鐨勫��
 	 */
 	public String getOid() {
-		return oid;
+		return super.getOid();
 	}
 
 	/**
@@ -142,7 +71,7 @@
 	 * @param oid 涓婚敭鐨勫��
  	 */
 	public void setOid(String oid) {
-		this.oid = oid;
+		super.setOid(oid);
 	}
 
 	/**
@@ -150,7 +79,7 @@
 	 * @return 鏍戣妭鐐规枃鏈�
 	 */
 	public String getText() {
-		return text;
+		return super.getText();
 	}
 
 	/**
@@ -158,7 +87,7 @@
 	 * @param text 鏍戣妭鐐规枃鏈�
 	 */
 	public void setText(String text) {
-		this.text = text;
+		super.setText(text);
 	}
 
 	/**
@@ -166,14 +95,14 @@
 	 * @param id
 	 */
 	public void setId(String id) {
-		this.id = id;
+		super.setId(id);
 	}
 
 	/**
 	 * 鑾峰彇缂栧彿
 	 */
 	public String getId() {
-		return id;
+		return super.getId();
 	}
 
 	/**
@@ -181,7 +110,7 @@
 	 * @return true 琛ㄧず鍙跺瓙鑺傜偣
 	 */
 	public boolean isLeaf() {
-		return leaf;
+		return super.isLeaf();
 	}
 
 	/**
@@ -189,7 +118,7 @@
 	 * @param leaf 鏄惁鍙跺瓙鑺傜偣
 	 */
 	public void setLeaf(boolean leaf) {
-		this.leaf = leaf;
+		super.setLeaf(leaf);
 	}
 
 	/**
@@ -197,7 +126,7 @@
 	 * @return true琛ㄧず鏄剧ず
 	 */
 	public boolean isShowCheckbox() {
-		return showCheckbox;
+		return super.isShowCheckbox();
 	}
 
 	/**
@@ -205,7 +134,7 @@
 	 * @param showCheckbox 鏄惁鏄剧ず澶嶉�夋
 	 */
 	public void setShowCheckbox(boolean showCheckbox) {
-		this.showCheckbox = showCheckbox;
+		super.setShowCheckbox(showCheckbox);
 	}
 
 	/**
@@ -213,7 +142,7 @@
 	 * @return true琛ㄧず闇�瑕佽嚜鍔ㄥ嬀閫�
 	 */
 	public boolean isChecked() {
-		return checked;
+		return super.isChecked();
 	}
 
 	/**
@@ -221,7 +150,7 @@
 	 * @param checked 鏄惁鑷姩鍕鹃��
 	 */
 	public void setChecked(boolean checked) {
-		this.checked = checked;
+		super.setChecked(checked);
 	}
 
 	/**
@@ -229,7 +158,7 @@
 	 * @return 瀛愯妭鐐瑰垪琛�
 	 */
 	public List<Tree> getChildren() {
-		return children;
+		return this.children;
 	}
 
 	/**
@@ -245,7 +174,7 @@
 	 * @return 鍥炬爣
 	 */
 	public String getIcon() {
-		return icon;
+		return super.getIcon();
 	}
 
 	/**
@@ -253,7 +182,7 @@
 	 * @param icon 鍥炬爣
 	 */
 	public void setIcon(String icon) {
-		this.icon = icon;
+		super.setIcon(icon);
 	}
 
 	/**
@@ -261,7 +190,7 @@
 	 * @return css绫荤殑鍚嶇О
 	 */
 	public String getIconCls() {
-		return iconCls;
+		return super.getIconCls();
 	}
 
 	/**
@@ -269,7 +198,7 @@
 	 * @param iconCls css绫荤殑鍚嶇О
 	 */
 	public void setIconCls(String iconCls) {
-		this.iconCls = iconCls;
+		super.setIconCls(iconCls);
 	}
 
 	/**
@@ -277,7 +206,7 @@
 	 * @return 涓婄骇鑺傜偣鐨刼id
 	 */
 	public String getParentId() {
-		return parentId;
+		return super.getParentId();
 	}
 
 	/**
@@ -285,7 +214,7 @@
 	 * @param parentId 涓婄骇鑺傜偣鐨刼id
 	 */
 	public void setParentId(String parentId) {
-		this.parentId = parentId;
+		super.setParentId(parentId);
 	}
 
 	/**
@@ -293,7 +222,7 @@
 	 * @return true琛ㄧず鑷姩灞曞紑
 	 */
 	public boolean isExpanded() {
-		return expanded;
+		return super.isExpanded();
 	}
 
 	/**
@@ -301,7 +230,7 @@
 	 * @param expanded 鏄惁鑷姩灞曞紑
 	 */
 	public void setExpanded(boolean expanded) {
-		this.expanded = expanded;
+		super.setExpanded(expanded);
 	}
 
 	/**
@@ -309,7 +238,7 @@
 	 * @return 閾炬帴鍦板潃
 	 */
 	public String getHref() {
-		return href;
+		return super.getHref();
 	}
 
 	/**
@@ -317,7 +246,7 @@
 	 * @param href 閾炬帴鍦板潃
 	 */
 	public void setHref(String href) {
-		this.href = href;
+		super.setHref(href);
 	}
 
 	/**
@@ -325,7 +254,7 @@
 	 * @return 鎺掑簭鍙�
 	 */
 	public String getIndex() {
-		return index;
+		return super.getIndex();
 	}
 
 	/**
@@ -333,7 +262,7 @@
 	 * @param index 鎺掑簭鍙�
 	 */
 	public void setIndex(String index) {
-		this.index = index;
+		super.setIndex(index);
 	}
 
 	/**
@@ -357,7 +286,7 @@
 	 * @return 涓婄骇鐨勫悕绉�
 	 */
 	public String getParentName() {
-		return parentName;
+		return super.getParentName();
 	}
 
 	/**
@@ -365,15 +294,15 @@
 	 * @param parentName 涓婄骇鐨勫悕绉�
 	 */
 	public void setParentName(String parentName) {
-		this.parentName = parentName;
+		super.setParentName(parentName);
 	}
 
 	public String getParentBtmName() {
-		return parentBtmName;
+		return super.getParentBtmName();
 	}
 
 	public void setParentBtmName(String parentBtmName) {
-		this.parentBtmName = parentBtmName;
+		super.setParentBtmName(parentBtmName);
 	}
 
 	/**
@@ -406,7 +335,7 @@
 				if (node.getOid().equalsIgnoreCase(childnode.getParentId())) {
 					childnode.setParentName(node.getText());
 					if(StringUtils.isBlank(childnode.getParentBtmName())){
-						childnode.setParentBtmName(node.getAttributes().getOrDefault("btmname",""));
+						childnode.setParentBtmName((String)node.getAttributes().getOrDefault("btmname",""));
 					}
 					node.getChildren().add(childnode);
 				}
@@ -416,7 +345,7 @@
 				node.setLeaf(false);
 			}else {
 				node.setLeaf(true);
-				
+
 			}
 			this.getChildren().add(node);
 		}
@@ -424,41 +353,42 @@
 
 
 	public Object getData() {
-		return data;
+		return super.getData();
 	}
 
 	public void setData(Object data) {
-		this.data = data;
+		super.setData(data);
 	}
 
 	public int getLevel() {
-		return level;
+		return super.getLevel();
 	}
 
 	public void setLevel(int level) {
-		this.level = level;
+		super.setLevel(level);
 	}
 
 	@Override
 	public String toString() {
 		return "Tree{" +
-				"oid='" + oid + '\'' +
-				", text='" + text + '\'' +
-				", leaf=" + leaf +
-				", showCheckbox=" + showCheckbox +
-				", checked=" + checked +
-				", children=" + children +
-				", level=" + level +
-				", icon='" + icon + '\'' +
-				", iconCls='" + iconCls + '\'' +
-				", parentId='" + parentId + '\'' +
-				", parentName='" + parentName + '\'' +
-				", parentBtmName='" + parentBtmName + '\'' +
-				", expanded=" + expanded +
-				", href='" + href + '\'' +
-				", index='" + index + '\'' +
-				", data=" + data +
+				"oid='" + super.getOid() + '\'' +
+				", text='" + super.getText() + '\'' +
+				", leaf=" + super.isLeaf() +
+				", showCheckbox=" + super.isShowCheckbox() +
+				", checked=" + super.isChecked() +
+				", children=" + this.getChildren() +
+				", level=" + super.getLevel() +
+				", icon='" + super.getIcon() + '\'' +
+				", iconCls='" + super.getIconCls() + '\'' +
+				", parentId='" + super.getParentId() + '\'' +
+				", parentName='" + super.getParentBtmName() + '\'' +
+				", parentBtmName='" + super.getParentBtmName() + '\'' +
+				", expanded=" + super.isExpanded() +
+				", href='" + super.getHref() + '\'' +
+				", index='" + super.getIndex() + '\'' +
+				", data=" + super.getData() +
 				", attributes=" + attributes +
 				'}';
 	}
+
 }
diff --git a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/pagemodel/UIDataTree.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/pagemodel/UIDataTree.java
new file mode 100644
index 0000000..b150ad4
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/pagemodel/UIDataTree.java
@@ -0,0 +1,395 @@
+package com.vci.starter.web.pagemodel;
+
+import lombok.Data;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author ludc
+ * @date 2024/11/27 16:34
+ */
+@Data
+public class UIDataTree extends BaseTree implements java.io.Serializable{
+
+    /**
+     * 绂佹淇敼杩欎釜鍊�
+     * @serial 搴忓垪鍖栧��
+     */
+    private static final long serialVersionUID = 6886695271635257212L;
+
+    /**
+     * 鏋勯�犲嚱鏁�
+     */
+    public UIDataTree(){
+
+    }
+
+    /**
+     * 鏋勯�犲嚱鏁�
+     * @param oid 涓婚敭
+     * @param text 鏍戣妭鐐规枃鏈�
+     */
+    public UIDataTree(String oid, String text){
+        setOid(oid);
+        setText(text);
+    }
+
+    /**
+     * 鏋勯�犲嚱鏁�
+     * @param oid 涓婚敭
+     * @param text 鏍戣妭鐐规枃鏈�
+     */
+    public UIDataTree(String oid, String text,Object o){
+        setOid(oid);
+        setText(text);
+        setData(o);
+    }
+
+    /**
+     * 鍏朵粬鐨勫睘鎬�
+     */
+    private Map<String,Object> attributes = new HashMap<>();
+
+    /**
+     * 瀛愯妭鐐�
+     */
+    private List<UIDataTree> children = new ArrayList<>();
+
+    /**
+     * 鑾峰彇涓婚敭
+     * @return 涓婚敭鐨勫��
+     */
+    public String getOid() {
+        return super.getOid();
+    }
+
+    /**
+     * 璁剧疆涓婚敭
+     * @param oid 涓婚敭鐨勫��
+     */
+    public void setOid(String oid) {
+        super.setOid(oid);
+    }
+
+    /**
+     * 鑾峰彇鏍戣妭鐐规枃鏈�
+     * @return 鏍戣妭鐐规枃鏈�
+     */
+    public String getText() {
+        return super.getText();
+    }
+
+    /**
+     * 璁剧疆鏍戣妭鐐规枃鏈�
+     * @param text 鏍戣妭鐐规枃鏈�
+     */
+    public void setText(String text) {
+        super.setText(text);
+    }
+
+    /**
+     * 璁剧疆缂栧彿
+     * @param id
+     */
+    public void setId(String id) {
+        super.setId(id);
+    }
+
+    /**
+     * 鑾峰彇缂栧彿
+     */
+    public String getId() {
+        return super.getId();
+    }
+
+    /**
+     * 鏄惁鍙跺瓙鑺傜偣
+     * @return true 琛ㄧず鍙跺瓙鑺傜偣
+     */
+    public boolean isLeaf() {
+        return super.isLeaf();
+    }
+
+    /**
+     * 璁剧疆鍙跺瓙鑺傜偣
+     * @param leaf 鏄惁鍙跺瓙鑺傜偣
+     */
+    public void setLeaf(boolean leaf) {
+        super.setLeaf(leaf);
+    }
+
+    /**
+     * 鏄惁鏄剧ず澶嶉�夋
+     * @return true琛ㄧず鏄剧ず
+     */
+    public boolean isShowCheckbox() {
+        return super.isShowCheckbox();
+    }
+
+    /**
+     * 璁剧疆鏄惁鏄剧ず澶嶉�夋
+     * @param showCheckbox 鏄惁鏄剧ず澶嶉�夋
+     */
+    public void setShowCheckbox(boolean showCheckbox) {
+        super.setShowCheckbox(showCheckbox);
+    }
+
+    /**
+     * 鏄惁鑷姩鍕鹃�変笂
+     * @return true琛ㄧず闇�瑕佽嚜鍔ㄥ嬀閫�
+     */
+    public boolean isChecked() {
+        return super.isChecked();
+    }
+
+    /**
+     * 璁剧疆鏄惁鍕鹃��
+     * @param checked 鏄惁鑷姩鍕鹃��
+     */
+    public void setChecked(boolean checked) {
+        super.setChecked(checked);
+    }
+
+    /**
+     * 鑾峰彇瀛愯妭鐐�
+     * @return 瀛愯妭鐐瑰垪琛�
+     */
+    public List<UIDataTree> getChildren() {
+        return this.children;
+    }
+
+    /**
+     * 璁剧疆瀛愯妭鐐�
+     * @param children 瀛愯妭鐐瑰垪琛�
+     */
+    public void setChildren(List<UIDataTree> children) {
+        this.children = children;
+    }
+
+    /**
+     * 鑾峰彇鍥炬爣
+     * @return 鍥炬爣
+     */
+    public String getIcon() {
+        return super.getIcon();
+    }
+
+    /**
+     * 璁剧疆鍥炬爣
+     * @param icon 鍥炬爣
+     */
+    public void setIcon(String icon) {
+        super.setIcon(icon);
+    }
+
+    /**
+     * 鑾峰彇鍥炬爣鐨勬樉绀篶ss绫�
+     * @return css绫荤殑鍚嶇О
+     */
+    public String getIconCls() {
+        return super.getIconCls();
+    }
+
+    /**
+     * 璁剧疆鍥炬爣鐨勬樉绀篶ss绫�
+     * @param iconCls css绫荤殑鍚嶇О
+     */
+    public void setIconCls(String iconCls) {
+        super.setIconCls(iconCls);
+    }
+
+    /**
+     * 鑾峰彇涓婄骇涓婚敭
+     * @return 涓婄骇鑺傜偣鐨刼id
+     */
+    public String getParentId() {
+        return super.getParentId();
+    }
+
+    /**
+     * 璁剧疆涓婄骇涓婚敭
+     * @param parentId 涓婄骇鑺傜偣鐨刼id
+     */
+    public void setParentId(String parentId) {
+        super.setParentId(parentId);
+    }
+
+    /**
+     * 鏄惁鑷姩灞曞紑
+     * @return true琛ㄧず鑷姩灞曞紑
+     */
+    public boolean isExpanded() {
+        return super.isExpanded();
+    }
+
+    /**
+     * 璁剧疆鏄惁鑷姩灞曞紑
+     * @param expanded 鏄惁鑷姩灞曞紑
+     */
+    public void setExpanded(boolean expanded) {
+        super.setExpanded(expanded);
+    }
+
+    /**
+     * 鑾峰彇閾炬帴鍦板潃
+     * @return 閾炬帴鍦板潃
+     */
+    public String getHref() {
+        return super.getHref();
+    }
+
+    /**
+     * 璁剧疆閾炬帴鍦板潃
+     * @param href 閾炬帴鍦板潃
+     */
+    public void setHref(String href) {
+        super.setHref(href);
+    }
+
+    /**
+     * 鑾峰彇鎺掑簭鍙�
+     * @return 鎺掑簭鍙�
+     */
+    public String getIndex() {
+        return super.getIndex();
+    }
+
+    /**
+     * 璁剧疆鎺掑簭鍙�
+     * @param index 鎺掑簭鍙�
+     */
+    public void setIndex(String index) {
+        super.setIndex(index);
+    }
+
+    /**
+     * 鑾峰彇鏍戣妭鐐规寚浠g殑涓氬姟鏁版嵁鐨勬墍鏈夊睘鎬ф槧灏�
+     * @return key琛ㄧず灞炴�х殑鍚嶇О锛寁alue琛ㄧず灞炴�х殑鍊�
+     */
+    public Map<String, Object> getAttributes() {
+        return attributes;
+    }
+
+    /**
+     * 璁剧疆鏍戣妭鐐规寚浠g殑涓氬姟鏁版嵁鐨勬墍鏈夊睘鎬ф槧灏�
+     * @param attributes key琛ㄧず灞炴�х殑鍚嶇О锛寁alue琛ㄧず灞炴�х殑鍊�
+     */
+    public void setAttributes(Map<String, Object> attributes) {
+        this.attributes = attributes;
+    }
+
+    /**
+     * 鑾峰彇涓婄骇鐨勮妭鐐圭殑鍚嶇О
+     * @return 涓婄骇鐨勫悕绉�
+     */
+    public String getParentName() {
+        return super.getParentName();
+    }
+
+    /**
+     * 璁剧疆涓婄骇鑺傜偣鐨勫悕绉�
+     * @param parentName 涓婄骇鐨勫悕绉�
+     */
+    public void setParentName(String parentName) {
+        super.setParentName(parentName);
+    }
+
+    public String getParentBtmName() {
+        return super.getParentBtmName();
+    }
+
+    public void setParentBtmName(String parentBtmName) {
+        super.setParentBtmName(parentBtmName);
+    }
+
+    /**
+     * 鍒╃敤閫掑綊灏嗘爲杞崲涓轰笂涓嬬骇鍏崇郴
+     * @param rootTree 椤跺眰鑺傜偣
+     * @param children 瀛愯妭鐐�
+     * @return 鍚湁涓婁笅绾у叧绯荤殑鏍�
+     */
+    public static List<UIDataTree> getChildList(List<UIDataTree> rootTree, List<UIDataTree> children){
+        if(rootTree == null ||rootTree.size() == 0){
+            if(children !=null && children.size()>0){
+                rootTree = children.subList(0, children.size());
+            }else{
+                return null;
+            }
+        }
+        UIDataTree bt = new UIDataTree();
+        bt.findChild(rootTree, children);
+        return rootTree;
+    }
+
+    /**
+     * 鏌ヨ鏍戠殑涓嬬骇
+     * @param treenode 褰撳墠鑺傜偣
+     * @param children 鍏朵粬鐨勮妭鐐�
+     */
+    public void findChild(List<UIDataTree> treenode, List<UIDataTree> children){
+        for (UIDataTree node : treenode) {
+            for (UIDataTree childnode : children) {
+                if (node.getOid().equalsIgnoreCase(childnode.getParentId())) {
+                    childnode.setParentName(node.getText());
+                    if(StringUtils.isBlank(childnode.getParentBtmName())){
+                        childnode.setParentBtmName((String)node.getAttributes().getOrDefault("btmname",""));
+                    }
+                    node.getChildren().add(childnode);
+                }
+            }
+            if (node.getChildren().size()>0) {
+                findChild(node.getChildren(), children);
+                node.setLeaf(false);
+            }else {
+                node.setLeaf(true);
+
+            }
+            this.getChildren().add(node);
+        }
+    }
+
+
+    public Object getData() {
+        return super.getData();
+    }
+
+    public void setData(Object data) {
+        super.setData(data);
+    }
+
+    public int getLevel() {
+        return super.getLevel();
+    }
+
+    public void setLevel(int level) {
+        super.setLevel(level);
+    }
+
+    @Override
+    public String toString() {
+        return "UIDataTree{" +
+                "oid='" + this.getOid() + '\'' +
+                ", text='" + this.getText() + '\'' +
+                ", leaf=" + this.isLeaf() +
+                ", showCheckbox=" + this.isShowCheckbox() +
+                ", checked=" + this.isChecked() +
+                ", children=" + this.getChildren() +
+                ", level=" + this.getLevel() +
+                ", icon='" + this.getIcon() + '\'' +
+                ", iconCls='" + this.getIconCls() + '\'' +
+                ", parentId='" + this.getParentId() + '\'' +
+                ", parentName='" + this.getParentBtmName() + '\'' +
+                ", parentBtmName='" + this.getParentBtmName() + '\'' +
+                ", expanded=" + this.isExpanded() +
+                ", href='" + this.getHref() + '\'' +
+                ", index='" + this.getIndex() + '\'' +
+                ", data=" + this.getData() +
+                ", attributes=" + attributes +
+                '}';
+    }
+
+}
diff --git a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/BeanUtil.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/BeanUtil.java
deleted file mode 100644
index 61a4a36..0000000
--- a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/BeanUtil.java
+++ /dev/null
@@ -1,222 +0,0 @@
-package com.vci.starter.web.util;
-
-import com.vci.starter.web.toolmodel.DateConverter;
-import org.springframework.cglib.beans.BeanCopier;
-import org.springframework.cglib.core.Converter;
-
-import java.util.*;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
-/**
- * 瀵硅薄鎷疯礉宸ュ叿绫�
- * 浣跨敤鐨刢glib鐨刡eancopier锛屽洜涓轰娇鐢ㄤ簡杞崲鍣紝鎵�浠ユ�ц兘姣旀病鏈変娇鐢ㄨ浆鎹㈠櫒鐨勮浣庝竴浜�
- * 浼氳嚜鍔ㄥ垽鏂槸鍚﹂渶瑕佽浆鎹㈠櫒锛屽綋鏈夊睘鎬х浉鍚岋紝绫诲瀷涓嶅悓锛屽拰鏈夊璞$被鍨嬶紝map锛宭ist绛夐泦鍚堢被鍨嬫椂鎵嶉渶瑕佽浆鎹㈠櫒
- * @author weidy
- * @date 2019/11/23 9:22 AM
- */
-public class BeanUtil {
-
-
-    /**
-     * 瀛樻斁鎷疯礉瀵硅薄鐨勭紦瀛�
-     */
-    private static final ConcurrentMap<String,BeanCopier> beanCopierMap = new ConcurrentHashMap<>();
-
-    /**
-     * 鑾峰彇绫绘嫹璐濈殑瀵硅薄
-     * @param source 婧愬璞$被
-     * @param target 鐩爣瀵硅薄绫�
-     * @param useConverter 鏄惁浣跨敤杞崲鍣�
-     * @return 鎷疯礉瀵硅薄
-     */
-    public static BeanCopier getBeanCopier(Class<?> source, Class<?> target,boolean useConverter) {
-        String beanCopierKey = generateBeanKey(source, target);
-        if (beanCopierMap.containsKey(beanCopierKey)) {
-            return beanCopierMap.get(beanCopierKey);
-        } else {
-            BeanCopier beanCopier = BeanCopier.create(source, target, useConverter);
-            beanCopierMap.putIfAbsent(beanCopierKey, beanCopier);
-        }
-        return beanCopierMap.get(beanCopierKey);
-    }
-
-    /**
-     * 鐢熸垚涓や釜绫荤殑key,鐢ㄤ簬瀛樻斁鍒扮紦瀛樹箣涓�
-     * @param source 婧愬璞$被鍨�
-     * @param target 鐩爣瀵硅薄绫�
-     * @return 涓や釜绫荤殑鍚嶇О杩炴帴鍒颁竴璧峰悗鐨勫悕瀛�
-     */
-    public static String generateBeanKey(Class<?> source, Class<?> target) {
-        return source.getName() + "@" + target.getName();
-    }
-
-    /**
-     * 涓や釜瀵硅薄涔嬮棿杞崲
-     * @param source 婧愬璞�
-     * @param target 鐩爣瀵硅薄
-     * @param useConvert 鏄惁浣跨敤榛樿鐨勮浆鎹㈠櫒锛岃鍦ㄥ嚭鐜板睘鎬у悕绉扮浉鍚岃�岀被鍨嬩笉鍚岋紝鎴栬�呮湁瀵硅薄绫诲瀷锛岄泦鍚堝睘鎬ф椂鎵嶈浆鎹�
-     */
-    public static void convert(Object source,Object target,boolean useConvert){
-        if(source != null && target !=null){
-            BeanCopier beanCopier = getBeanCopier(source.getClass(),target.getClass(),useConvert);
-            beanCopier.copy(source,target,useConvert?new DeepCopyConverter(target):null);
-        }
-    }
-
-    /**
-     * 涓や釜瀵硅薄涔嬮棿杞崲
-     * @param source 婧愬璞�
-     * @param target 鐩爣瀵硅薄
-     * @return 鐩爣瀵硅薄
-     */
-    public static void convert(Object source,Object target){
-        convert(source,target,true);
-    }
-
-    /**
-     * 娣卞害鎷疯礉杞崲鍣�
-     */
-    public static class DeepCopyConverter implements Converter {
-
-        /**
-         * 鐩爣瀵硅薄
-         */
-        private Object target;
-
-        /**
-         * 鏋勯�犳柟娉�
-         * @param target 鐩爣瀵硅薄
-         */
-        public DeepCopyConverter(Object target) {
-            this.target = target;
-        }
-
-        /**
-         * 鎵ц鎷疯礉
-         * @param value 婧愬璞$殑灞炴�х殑鍊�
-         * @param targetClazz 鐩爣瀵硅薄鐨勫睘鎬х殑绫�
-         * @param methodName set鏂规硶鐨勫悕瀛�
-         * @return 杞崲鍚庣殑鍊�
-         */
-        @Override
-        public Object convert(Object value, Class targetClazz, Object methodName) {
-            if (value instanceof List) {
-                List values = (List) value;
-                List retList = new ArrayList<>(values.size());
-                copyForCollection(values,retList,methodName);
-                return retList;
-            } else if(value instanceof Set){
-                Set values = (Set) value;
-                Set retSet = new HashSet<>();
-                copyForCollection(values,retSet,methodName);
-            } else if(value instanceof Vector){
-                Vector values = (Vector)value;
-                Vector retVector = new Vector();
-                copyForCollection(values,retVector,methodName);
-            }else if (value instanceof Map) {
-                Map values = (Map)value;
-                Map retMap = new HashMap();
-                for (final Object key : values.keySet()) {
-                    Object mapValue = values.get(key);
-                    String tempFieldName = methodName.toString().replace("set",
-                            "");
-                    String fieldName = tempFieldName.substring(0, 1)
-                            .toLowerCase() + tempFieldName.substring(1);
-                    Class clazz = ClassUtil.getElementType(target.getClass(), fieldName);
-                    Object targetAttr = null;
-                    try{
-                        targetAttr = clazz.newInstance();
-                    }catch (Throwable e){
-                        //鏂扮殑瀵硅薄鐨勫睘鎬у垵濮嬪寲鍑洪敊
-                    }
-                    BeanUtil.convert(mapValue, targetAttr);
-                    retMap.put(key,targetAttr);
-                }
-            } else if (!ClassUtil.isPrimitive(targetClazz)) {
-                //杩欎釜鏄璞$被鍨�
-                Object targetAttr = null;
-                try{
-                    targetAttr = targetClazz.newInstance();
-                }catch (Throwable e){
-                    //鏂扮殑瀵硅薄灞炴�у垵濮嬪寲鍑洪敊
-                }
-                BeanUtil.convert(value, targetAttr);
-                return targetAttr;
-            }
-            if(value instanceof Boolean && targetClazz.equals(String.class)){
-                //浠巄oolean鎷疯礉鍒皊tring
-                return String.valueOf(value);
-            }
-            if(value instanceof String && (targetClazz.equals(Boolean.class)
-                    || targetClazz.equals(boolean.class))){
-                //浠嶴tring鎷疯礉鍒癰oolean
-                if("true".equalsIgnoreCase((String)value)){
-                    return true;
-                }else{
-                    return false;
-                }
-            }
-            if(value instanceof Date && targetClazz.equals(String.class)){
-                //鏃堕棿鏍煎紡
-                return VciDateUtil.date2Str((Date)value,VciDateUtil.DateTimeMillFormat);
-            }
-            if(value instanceof String && targetClazz.equals(Date.class)){
-                //杞崲
-                DateConverter dateConverter = new DateConverter();
-                dateConverter.setAsText((String)value);
-                return dateConverter.getValue();
-            }
-            return value;
-        }
-
-        /**
-         * 澶勭悊闆嗗悎灞炴��
-         * @param sourceCollection 婧愬璞′腑闆嗗悎灞炴�х殑鐨勫��
-         * @param targetCollection 鐩爣瀵硅薄鐨勯泦鍚堝睘鎬х殑鍊�
-         * @param methodName setter鏂规硶
-         */
-        private void copyForCollection(Collection<?> sourceCollection,Collection targetCollection,Object methodName){
-            for (final Object source : sourceCollection) {
-                if(source instanceof Collection){
-                    List<Object> targetValues = new ArrayList<>();
-                    copyForCollection((Collection<?>)source,targetValues,methodName);
-                    targetCollection.add(targetValues);
-                }else if(source instanceof Map){
-                    String tempFieldName = methodName.toString().replace("set",
-                            "");
-                    String fieldName = tempFieldName.substring(0, 1)
-                            .toLowerCase() + tempFieldName.substring(1);
-                    Class clazz = ClassUtil.getElementType(target.getClass(), fieldName);
-                    Object targetAttr = null;
-                    try {
-                        targetAttr = clazz.newInstance();
-                    } catch (Throwable e) {
-                        //鏂扮殑瀵硅薄鐨勫睘鎬у垵濮嬪寲鍑洪敊
-                    }
-                    Map map = (Map) source;
-                    for(Object key : map.keySet()){
-                        VciBaseUtil.setValueForField(key.toString(),targetAttr,VciBaseUtil.getStringValueFromObject(map.get(key)));
-                    }
-                    targetCollection.add(targetAttr);
-                }else  {
-                    String tempFieldName = methodName.toString().replace("set",
-                            "");
-                    String fieldName = tempFieldName.substring(0, 1)
-                            .toLowerCase() + tempFieldName.substring(1);
-                    Class clazz = ClassUtil.getElementType(target.getClass(), fieldName);
-                    Object targetAttr = null;
-                    try {
-                        targetAttr = clazz.newInstance();
-                    } catch (Throwable e) {
-                        //鏂扮殑瀵硅薄鐨勫睘鎬у垵濮嬪寲鍑洪敊
-                    }
-                    BeanUtil.convert(source, targetAttr);
-                    targetCollection.add(targetAttr);
-                }
-            }
-        }
-    }
-
-
-}
diff --git a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/BeanUtilForVCI.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/BeanUtilForVCI.java
index 0fc3a78..379ad98 100644
--- a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/BeanUtilForVCI.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/BeanUtilForVCI.java
@@ -1,12 +1,17 @@
 package com.vci.starter.web.util;
 
+import com.vci.starter.web.toolmodel.DateConverter;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.cglib.beans.BeanCopier;
+import org.springframework.cglib.core.Converter;
 import org.springframework.util.CollectionUtils;
 
 import java.lang.reflect.Field;
 import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
 
 /**
  * 涓氬姟绫诲瀷涓撶敤鐨勬嫹璐濆伐鍏凤紝杩欎釜鏄祬鎷疯礉锛�
@@ -19,6 +24,11 @@
      * 鏃ュ織
      */
     private static Logger logger = LoggerFactory.getLogger(BeanUtilForVCI.class);
+
+    /**
+     * 瀛樻斁鎷疯礉瀵硅薄鐨勭紦瀛�
+     */
+    private static final ConcurrentMap<String, BeanCopier> beanCopierMap = new ConcurrentHashMap<>();
 
     /**
      * 鎷疯礉鏁版嵁
@@ -255,4 +265,198 @@
         }
     }
 
+    /**
+     * 鑾峰彇绫绘嫹璐濈殑瀵硅薄
+     * @param source 婧愬璞$被
+     * @param target 鐩爣瀵硅薄绫�
+     * @param useConverter 鏄惁浣跨敤杞崲鍣�
+     * @return 鎷疯礉瀵硅薄
+     */
+    public static BeanCopier getBeanCopier(Class<?> source, Class<?> target,boolean useConverter) {
+        String beanCopierKey = generateBeanKey(source, target);
+        if (beanCopierMap.containsKey(beanCopierKey)) {
+            return beanCopierMap.get(beanCopierKey);
+        } else {
+            BeanCopier beanCopier = BeanCopier.create(source, target, useConverter);
+            beanCopierMap.putIfAbsent(beanCopierKey, beanCopier);
+        }
+        return beanCopierMap.get(beanCopierKey);
+    }
+
+    /**
+     * 鐢熸垚涓や釜绫荤殑key,鐢ㄤ簬瀛樻斁鍒扮紦瀛樹箣涓�
+     * @param source 婧愬璞$被鍨�
+     * @param target 鐩爣瀵硅薄绫�
+     * @return 涓や釜绫荤殑鍚嶇О杩炴帴鍒颁竴璧峰悗鐨勫悕瀛�
+     */
+    public static String generateBeanKey(Class<?> source, Class<?> target) {
+        return source.getName() + "@" + target.getName();
+    }
+
+    /**
+     * 涓や釜瀵硅薄涔嬮棿杞崲
+     * @param source 婧愬璞�
+     * @param target 鐩爣瀵硅薄
+     * @param useConvert 鏄惁浣跨敤榛樿鐨勮浆鎹㈠櫒锛岃鍦ㄥ嚭鐜板睘鎬у悕绉扮浉鍚岃�岀被鍨嬩笉鍚岋紝鎴栬�呮湁瀵硅薄绫诲瀷锛岄泦鍚堝睘鎬ф椂鎵嶈浆鎹�
+     */
+    public static void convert(Object source,Object target,boolean useConvert){
+        if(source != null && target !=null){
+            BeanCopier beanCopier = getBeanCopier(source.getClass(),target.getClass(),useConvert);
+            beanCopier.copy(source,target,useConvert?new DeepCopyConverter(target):null);
+        }
+    }
+
+    /**
+     * 涓や釜瀵硅薄涔嬮棿杞崲
+     * @param source 婧愬璞�
+     * @param target 鐩爣瀵硅薄
+     * @return 鐩爣瀵硅薄
+     */
+    public static void convert(Object source,Object target){
+        convert(source,target,true);
+    }
+
+    /**
+     * 娣卞害鎷疯礉杞崲鍣�
+     */
+    public static class DeepCopyConverter implements Converter {
+
+        /**
+         * 鐩爣瀵硅薄
+         */
+        private Object target;
+
+        /**
+         * 鏋勯�犳柟娉�
+         * @param target 鐩爣瀵硅薄
+         */
+        public DeepCopyConverter(Object target) {
+            this.target = target;
+        }
+
+        /**
+         * 鎵ц鎷疯礉
+         * @param value 婧愬璞$殑灞炴�х殑鍊�
+         * @param targetClazz 鐩爣瀵硅薄鐨勫睘鎬х殑绫�
+         * @param methodName set鏂规硶鐨勫悕瀛�
+         * @return 杞崲鍚庣殑鍊�
+         */
+        @Override
+        public Object convert(Object value, Class targetClazz, Object methodName) {
+            if (value instanceof List) {
+                List values = (List) value;
+                List retList = new ArrayList<>(values.size());
+                copyForCollection(values,retList,methodName);
+                return retList;
+            } else if(value instanceof Set){
+                Set values = (Set) value;
+                Set retSet = new HashSet<>();
+                copyForCollection(values,retSet,methodName);
+            } else if(value instanceof Vector){
+                Vector values = (Vector)value;
+                Vector retVector = new Vector();
+                copyForCollection(values,retVector,methodName);
+            }else if (value instanceof Map) {
+                Map values = (Map)value;
+                Map retMap = new HashMap();
+                for (final Object key : values.keySet()) {
+                    Object mapValue = values.get(key);
+                    String tempFieldName = methodName.toString().replace("set",
+                            "");
+                    String fieldName = tempFieldName.substring(0, 1)
+                            .toLowerCase() + tempFieldName.substring(1);
+                    Class clazz = ClassUtilForVCI.getElementType(target.getClass(), fieldName);
+                    Object targetAttr = null;
+                    try{
+                        targetAttr = clazz.newInstance();
+                    }catch (Throwable e){
+                        //鏂扮殑瀵硅薄鐨勫睘鎬у垵濮嬪寲鍑洪敊
+                    }
+                    BeanUtilForVCI.convert(mapValue, targetAttr);
+                    retMap.put(key,targetAttr);
+                }
+            } else if (!ClassUtilForVCI.isPrimitive(targetClazz)) {
+                //杩欎釜鏄璞$被鍨�
+                Object targetAttr = null;
+                try{
+                    targetAttr = targetClazz.newInstance();
+                }catch (Throwable e){
+                    //鏂扮殑瀵硅薄灞炴�у垵濮嬪寲鍑洪敊
+                }
+                BeanUtilForVCI.convert(value, targetAttr);
+                return targetAttr;
+            }
+            if(value instanceof Boolean && targetClazz.equals(String.class)){
+                //浠巄oolean鎷疯礉鍒皊tring
+                return String.valueOf(value);
+            }
+            if(value instanceof String && (targetClazz.equals(Boolean.class)
+                    || targetClazz.equals(boolean.class))){
+                //浠嶴tring鎷疯礉鍒癰oolean
+                if("true".equalsIgnoreCase((String)value)){
+                    return true;
+                }else{
+                    return false;
+                }
+            }
+            if(value instanceof Date && targetClazz.equals(String.class)){
+                //鏃堕棿鏍煎紡
+                return VciDateUtil.date2Str((Date)value,VciDateUtil.DateTimeMillFormat);
+            }
+            if(value instanceof String && targetClazz.equals(Date.class)){
+                //杞崲
+                DateConverter dateConverter = new DateConverter();
+                dateConverter.setAsText((String)value);
+                return dateConverter.getValue();
+            }
+            return value;
+        }
+
+        /**
+         * 澶勭悊闆嗗悎灞炴��
+         * @param sourceCollection 婧愬璞′腑闆嗗悎灞炴�х殑鐨勫��
+         * @param targetCollection 鐩爣瀵硅薄鐨勯泦鍚堝睘鎬х殑鍊�
+         * @param methodName setter鏂规硶
+         */
+        private void copyForCollection(Collection<?> sourceCollection,Collection targetCollection,Object methodName){
+            for (final Object source : sourceCollection) {
+                if(source instanceof Collection){
+                    List<Object> targetValues = new ArrayList<>();
+                    copyForCollection((Collection<?>)source,targetValues,methodName);
+                    targetCollection.add(targetValues);
+                }else if(source instanceof Map){
+                    String tempFieldName = methodName.toString().replace("set",
+                            "");
+                    String fieldName = tempFieldName.substring(0, 1)
+                            .toLowerCase() + tempFieldName.substring(1);
+                    Class clazz = ClassUtilForVCI.getElementType(target.getClass(), fieldName);
+                    Object targetAttr = null;
+                    try {
+                        targetAttr = clazz.newInstance();
+                    } catch (Throwable e) {
+                        //鏂扮殑瀵硅薄鐨勫睘鎬у垵濮嬪寲鍑洪敊
+                    }
+                    Map map = (Map) source;
+                    for(Object key : map.keySet()){
+                        VciBaseUtil.setValueForField(key.toString(),targetAttr,VciBaseUtil.getStringValueFromObject(map.get(key)));
+                    }
+                    targetCollection.add(targetAttr);
+                }else  {
+                    String tempFieldName = methodName.toString().replace("set",
+                            "");
+                    String fieldName = tempFieldName.substring(0, 1)
+                            .toLowerCase() + tempFieldName.substring(1);
+                    Class clazz = ClassUtilForVCI.getElementType(target.getClass(), fieldName);
+                    Object targetAttr = null;
+                    try {
+                        targetAttr = clazz.newInstance();
+                    } catch (Throwable e) {
+                        //鏂扮殑瀵硅薄鐨勫睘鎬у垵濮嬪寲鍑洪敊
+                    }
+                    BeanUtilForVCI.convert(source, targetAttr);
+                    targetCollection.add(targetAttr);
+                }
+            }
+        }
+    }
 }
diff --git a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/ClassUtil.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/ClassUtilForVCI.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/ClassUtil.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/ClassUtilForVCI.java
index efea946..645458e 100644
--- a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/ClassUtil.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/ClassUtilForVCI.java
@@ -11,7 +11,7 @@
  * @author weidy
  * @date 2019/11/23 10:18 AM
  */
-public class ClassUtil {
+public class ClassUtilForVCI {
     /**
      * 鍩烘湰绫诲瀷鐨勬槧灏�
      */
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/Base64Util.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/Base64Util.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/Base64Util.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/Base64Util.java
index 56a3003..5cf6b6c 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/Base64Util.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/Base64Util.java
@@ -14,7 +14,7 @@
  *  this software without specific prior written permission.
  *  Author: DreamLu 鍗㈡槬姊� (596392912@qq.com)
  */
-package com.vci.web.util;
+package com.vci.starter.web.util.Lcm;
 
 /**
  * Base64宸ュ叿
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/BeanUtil.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/BeanUtil.java
similarity index 94%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/BeanUtil.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/BeanUtil.java
index 57d3d7f..ae90843 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/BeanUtil.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/BeanUtil.java
@@ -14,29 +14,19 @@
  *  this software without specific prior written permission.
  *  Author: DreamLu 鍗㈡槬姊� (596392912@qq.com)
  */
-package com.vci.web.util;
+package com.vci.starter.web.util.Lcm;
 
-
-import com.vci.starter.web.annotation.*;
-import com.vci.starter.web.enumpck.VciFieldTypeEnum;
-import com.vci.starter.web.util.VciBaseUtil;
-import com.vci.starter.web.wrapper.VciReferFieldInfo;
-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.apache.commons.lang3.StringUtils;
+import com.vci.starter.web.util.Lcm.beans.BeanProperty;
+import com.vci.starter.web.util.Lcm.beans.BladeBeanCopier;
+import com.vci.starter.web.util.Lcm.beans.BladeBeanMap;
+import com.vci.starter.web.util.Lcm.convert.BladeConverter;
 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.lang.reflect.Field;
 import java.util.*;
-
-import static com.vci.starter.web.wrapper.VciQueryWrapperForDO.BASE_MODEL_COMPATIBILITY_MAP;
-import static com.vci.starter.web.wrapper.VciQueryWrapperForDO.USER_TABLE_COMPATIBILITY;
 
 /**
  * 瀹炰綋宸ュ叿绫�
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/Charsets.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/Charsets.java
similarity index 95%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/Charsets.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/Charsets.java
index 1a18b47..1f22509 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/Charsets.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/Charsets.java
@@ -14,9 +14,11 @@
  *  this software without specific prior written permission.
  *  Author: DreamLu 鍗㈡槬姊� (596392912@qq.com)
  */
-package com.vci.web.util;
+package com.vci.starter.web.util.Lcm;
 
 
+import com.vci.starter.web.constant.StringPool;
+
 import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
 import java.nio.charset.UnsupportedCharsetException;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/ClassUtil.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/ClassUtil.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/ClassUtil.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/ClassUtil.java
index 23d23b2..f836f6e 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/ClassUtil.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/ClassUtil.java
@@ -14,7 +14,7 @@
  *  this software without specific prior written permission.
  *  Author: DreamLu 鍗㈡槬姊� (596392912@qq.com)
  */
-package com.vci.web.util;
+package com.vci.starter.web.util.Lcm;
 
 import org.springframework.core.BridgeMethodResolver;
 import org.springframework.core.DefaultParameterNameDiscoverer;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/CollectionUtil.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/CollectionUtil.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/CollectionUtil.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/CollectionUtil.java
index 2b4aae9..a6a84dd 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/CollectionUtil.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/CollectionUtil.java
@@ -1,4 +1,4 @@
-package com.vci.web.util;
+package com.vci.starter.web.util.Lcm;
 
 import org.springframework.lang.Nullable;
 import org.springframework.util.CollectionUtils;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/ConcurrentDateFormat.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/ConcurrentDateFormat.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/ConcurrentDateFormat.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/ConcurrentDateFormat.java
index 722de89..81f70b5 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/ConcurrentDateFormat.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/ConcurrentDateFormat.java
@@ -14,7 +14,7 @@
  *  this software without specific prior written permission.
  *  Author: DreamLu 鍗㈡槬姊� (596392912@qq.com)
  */
-package com.vci.web.util;
+package com.vci.starter.web.util.Lcm;
 
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/ConvertUtil.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/ConvertUtil.java
similarity index 94%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/ConvertUtil.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/ConvertUtil.java
index 77556a0..38f57a1 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/ConvertUtil.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/ConvertUtil.java
@@ -1,6 +1,7 @@
-package com.vci.web.util;
+package com.vci.starter.web.util.Lcm;
 
-import com.vci.web.util.convert.BladeConversionService;
+import com.vci.starter.web.util.ClassUtilForVCI;
+import com.vci.starter.web.util.Lcm.convert.BladeConversionService;
 import org.springframework.core.convert.TypeDescriptor;
 import org.springframework.core.convert.support.GenericConversionService;
 import org.springframework.lang.Nullable;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/DatatypeConverterUtil.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/DatatypeConverterUtil.java
similarity index 96%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/DatatypeConverterUtil.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/DatatypeConverterUtil.java
index 47d545c..f7da8ef 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/DatatypeConverterUtil.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/DatatypeConverterUtil.java
@@ -1,4 +1,4 @@
-package com.vci.web.util;
+package com.vci.starter.web.util.Lcm;
 
 /**
  * 鏁版嵁绫诲瀷杞崲宸ュ叿绫�
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/DateTimeUtil.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/DateTimeUtil.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/DateTimeUtil.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/DateTimeUtil.java
index 09c62d5..08cb5a5 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/DateTimeUtil.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/DateTimeUtil.java
@@ -14,7 +14,7 @@
  *  this software without specific prior written permission.
  *  Author: DreamLu 鍗㈡槬姊� (596392912@qq.com)
  */
-package com.vci.web.util;
+package com.vci.starter.web.util.Lcm;
 
 import java.time.*;
 import java.time.format.DateTimeFormatter;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/DateUtil.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/DateUtil.java
similarity index 99%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/DateUtil.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/DateUtil.java
index 605868d..a960e4d 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/DateUtil.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/DateUtil.java
@@ -1,5 +1,6 @@
-package com.vci.web.util;
+package com.vci.starter.web.util.Lcm;
 
+import com.vci.starter.web.constant.StringPool;
 import org.springframework.util.Assert;
 
 import java.text.ParseException;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/DigestUtil.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/DigestUtil.java
similarity index 97%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/DigestUtil.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/DigestUtil.java
index 929ee15..b1012e8 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/DigestUtil.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/DigestUtil.java
@@ -1,17 +1,17 @@
-package com.vci.web.util;
+package com.vci.starter.web.util.Lcm;
 
-import com.vci.corba.common.PLException;
-import com.vci.starter.web.exception.VciBaseException;
-import org.apache.commons.codec.binary.Hex;
+import com.vci.starter.web.constant.StringPool;
 import org.springframework.lang.Nullable;
 import org.springframework.util.DigestUtils;
 
-import javax.crypto.*;
+import javax.crypto.Cipher;
+import javax.crypto.Mac;
+import javax.crypto.SecretKey;
 import javax.crypto.spec.IvParameterSpec;
 import javax.crypto.spec.SecretKeySpec;
-import java.security.*;
-import java.security.spec.InvalidKeySpecException;
-import java.security.spec.PKCS8EncodedKeySpec;
+import java.security.InvalidKeyException;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
 import java.util.Base64;
 
 /**
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/Exceptions.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/Exceptions.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/Exceptions.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/Exceptions.java
index b43a584..f00d889 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/Exceptions.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/Exceptions.java
@@ -15,7 +15,7 @@
  *  Author: DreamLu 鍗㈡槬姊� (596392912@qq.com)
  */
 
-package com.vci.web.util;
+package com.vci.starter.web.util.Lcm;
 
 import cn.hutool.core.io.FastStringWriter;
 
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/FileUtil.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/FileUtil.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/FileUtil.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/FileUtil.java
index be66a55..a7cbaa0 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/FileUtil.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/FileUtil.java
@@ -15,8 +15,10 @@
  *  Author: DreamLu 鍗㈡槬姊� (596392912@qq.com)
  */
 
-package com.vci.web.util;
+package com.vci.starter.web.util.Lcm;
 
+import com.vci.starter.web.constant.CharPool;
+import com.vci.starter.web.constant.StringPool;
 import org.springframework.lang.Nullable;
 import org.springframework.util.Assert;
 import org.springframework.util.FileSystemUtils;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/Func.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/Func.java
similarity index 99%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/Func.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/Func.java
index 14206fd..6753fe1 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/Func.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/Func.java
@@ -1,16 +1,17 @@
-package com.vci.web.util;
+package com.vci.starter.web.util.Lcm;
 
 import com.fasterxml.jackson.core.JsonParser;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.JsonNode;
-import com.vci.web.util.jackson.JsonUtil;
-import org.springframework.util.StringUtils;
+import com.vci.starter.web.constant.StringPool;
+import com.vci.starter.web.util.Lcm.jackson.JsonUtil;
 import org.springframework.beans.BeansException;
 import org.springframework.core.MethodParameter;
 import org.springframework.core.annotation.AnnotatedElementUtils;
 import org.springframework.core.convert.TypeDescriptor;
 import org.springframework.lang.Nullable;
 import org.springframework.util.PatternMatchUtils;
+import org.springframework.util.StringUtils;
 import org.springframework.web.method.HandlerMethod;
 
 import java.io.Closeable;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/Holder.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/Holder.java
similarity index 89%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/Holder.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/Holder.java
index ec11d04..a0a2a87 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/Holder.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/Holder.java
@@ -1,4 +1,4 @@
-package com.vci.web.util;
+package com.vci.starter.web.util.Lcm;
 
 import java.security.SecureRandom;
 import java.util.Random;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/IoUtil.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/IoUtil.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/IoUtil.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/IoUtil.java
index 836380e..bb00114 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/IoUtil.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/IoUtil.java
@@ -15,7 +15,7 @@
  *  Author: DreamLu 鍗㈡槬姊� (596392912@qq.com)
  */
 
-package com.vci.web.util;
+package com.vci.starter.web.util.Lcm;
 
 import org.springframework.lang.Nullable;
 
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/NumberUtil.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/NumberUtil.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/NumberUtil.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/NumberUtil.java
index c493791..cadb832 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/NumberUtil.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/NumberUtil.java
@@ -1,4 +1,4 @@
-package com.vci.web.util;
+package com.vci.starter.web.util.Lcm;
 
 
 import org.springframework.lang.Nullable;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/ObjectUtil.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/ObjectUtil.java
similarity index 90%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/ObjectUtil.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/ObjectUtil.java
index da05460..521ed44 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/ObjectUtil.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/ObjectUtil.java
@@ -1,4 +1,4 @@
-package com.vci.web.util;
+package com.vci.starter.web.util.Lcm;
 
 import org.springframework.lang.Nullable;
 
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/RandomType.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/RandomType.java
similarity index 93%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/RandomType.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/RandomType.java
index 98da4bc..bc2ea0c 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/RandomType.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/RandomType.java
@@ -1,4 +1,4 @@
-package com.vci.web.util;
+package com.vci.starter.web.util.Lcm;
 
 
 import lombok.Getter;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/ReflectUtil.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/ReflectUtil.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/ReflectUtil.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/ReflectUtil.java
index 996fe45..6fde3a8 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/ReflectUtil.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/ReflectUtil.java
@@ -14,7 +14,7 @@
  *  this software without specific prior written permission.
  *  Author: DreamLu 鍗㈡槬姊� (596392912@qq.com)
  */
-package com.vci.web.util;
+package com.vci.starter.web.util.Lcm;
 
 import org.springframework.beans.BeansException;
 import org.springframework.cglib.core.CodeGenerationException;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/StringUtil.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/StringUtil.java
similarity index 99%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/StringUtil.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/StringUtil.java
index c062a75..cea830a 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/StringUtil.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/StringUtil.java
@@ -1,11 +1,14 @@
-package com.vci.web.util;
+package com.vci.starter.web.util.Lcm;
 
 import cn.hutool.core.util.ObjectUtil;
+import com.vci.starter.web.constant.CharPool;
+import com.vci.starter.web.constant.StringPool;
+import com.vci.starter.web.util.Lcm.support.StrSpliter;
 import org.springframework.lang.Nullable;
 import org.springframework.util.Assert;
 import org.springframework.util.PatternMatchUtils;
 import org.springframework.web.util.HtmlUtils;
-import com.vci.web.support.StrSpliter;
+
 import java.io.StringReader;
 import java.io.StringWriter;
 import java.text.MessageFormat;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/Unchecked.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/Unchecked.java
similarity index 96%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/Unchecked.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/Unchecked.java
index 737b21f..a0c4d47 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/Unchecked.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/Unchecked.java
@@ -15,9 +15,10 @@
  *  Author: DreamLu 鍗㈡槬姊� (596392912@qq.com)
  */
 
-package com.vci.web.util;
+package com.vci.starter.web.util.Lcm;
 
-import com.vci.web.util.function.*;
+import com.vci.starter.web.util.Lcm.function.*;
+
 import java.util.Comparator;
 import java.util.Objects;
 import java.util.concurrent.Callable;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/UrlUtil.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/UrlUtil.java
similarity index 93%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/UrlUtil.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/UrlUtil.java
index 6ee51f2..bf7c2c1 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/UrlUtil.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/UrlUtil.java
@@ -14,7 +14,7 @@
  *  this software without specific prior written permission.
  *  Author: DreamLu 鍗㈡槬姊� (596392912@qq.com)
  */
-package com.vci.web.util;
+package com.vci.starter.web.util.Lcm;
 
 import java.net.URI;
 import java.net.URISyntaxException;
@@ -34,7 +34,7 @@
 	 * @return sourced String
 	 */
 	public static String encode(String source) {
-		return UrlUtil.encode(source, Charsets.UTF_8);
+		return encode(source, Charsets.UTF_8);
 	}
 
 	/**
@@ -44,7 +44,7 @@
 	 * @return decoded String
 	 */
 	public static String decode(String source) {
-		return UrlUtil.decode(source, Charsets.UTF_8);
+		return decode(source, Charsets.UTF_8);
 	}
 
 	/**
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/beans/BeanProperty.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/beans/BeanProperty.java
similarity index 82%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/beans/BeanProperty.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/beans/BeanProperty.java
index e19bbf5..dd9499a 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/beans/BeanProperty.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/beans/BeanProperty.java
@@ -1,4 +1,4 @@
-package com.vci.web.util.beans;
+package com.vci.starter.web.util.Lcm.beans;
 
 import lombok.AllArgsConstructor;
 import lombok.Getter;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/beans/BladeBeanCopier.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/beans/BladeBeanCopier.java
similarity index 97%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/beans/BladeBeanCopier.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/beans/BladeBeanCopier.java
index d71fbf7..076517a 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/beans/BladeBeanCopier.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/beans/BladeBeanCopier.java
@@ -15,12 +15,13 @@
  *  Author: DreamLu 鍗㈡槬姊� (596392912@qq.com)
  */
 
-package com.vci.web.util.beans;
+package com.vci.starter.web.util.Lcm.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 com.vci.starter.web.annotation.CopyProperty;
+import com.vci.starter.web.util.Lcm.BeanUtil;
+import com.vci.starter.web.util.Lcm.ClassUtil;
+import com.vci.starter.web.util.Lcm.ReflectUtil;
+import com.vci.starter.web.util.Lcm.StringUtil;
 import org.springframework.asm.ClassVisitor;
 import org.springframework.asm.Label;
 import org.springframework.asm.Opcodes;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/beans/BladeBeanCopierKey.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/beans/BladeBeanCopierKey.java
similarity index 88%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/beans/BladeBeanCopierKey.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/beans/BladeBeanCopierKey.java
index 9b96826..ec31bc4 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/beans/BladeBeanCopierKey.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/beans/BladeBeanCopierKey.java
@@ -1,4 +1,4 @@
-package com.vci.web.util.beans;
+package com.vci.starter.web.util.Lcm.beans;
 
 import lombok.AllArgsConstructor;
 import lombok.EqualsAndHashCode;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/beans/BladeBeanMap.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/beans/BladeBeanMap.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/beans/BladeBeanMap.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/beans/BladeBeanMap.java
index aa35969..164b0ae 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/beans/BladeBeanMap.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/beans/BladeBeanMap.java
@@ -1,4 +1,4 @@
-package com.vci.web.util.beans;
+package com.vci.starter.web.util.Lcm.beans;
 
 import org.springframework.asm.ClassVisitor;
 import org.springframework.cglib.beans.BeanMap;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/beans/BladeBeanMapEmitter.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/beans/BladeBeanMapEmitter.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/beans/BladeBeanMapEmitter.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/beans/BladeBeanMapEmitter.java
index 915edb5..786697c 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/beans/BladeBeanMapEmitter.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/beans/BladeBeanMapEmitter.java
@@ -1,6 +1,7 @@
-package com.vci.web.util.beans;
+package com.vci.starter.web.util.Lcm.beans;
 
-import com.vci.web.util.ReflectUtil;
+
+import com.vci.starter.web.util.Lcm.ReflectUtil;
 import org.springframework.asm.ClassVisitor;
 import org.springframework.asm.Label;
 import org.springframework.asm.Type;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/beans/BladeBeanMapKey.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/beans/BladeBeanMapKey.java
similarity index 84%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/beans/BladeBeanMapKey.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/beans/BladeBeanMapKey.java
index e015ae4..7794f1c 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/beans/BladeBeanMapKey.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/beans/BladeBeanMapKey.java
@@ -1,4 +1,4 @@
-package com.vci.web.util.beans;
+package com.vci.starter.web.util.Lcm.beans;
 
 import lombok.AllArgsConstructor;
 import lombok.EqualsAndHashCode;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/convert/BladeConversionService.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/convert/BladeConversionService.java
similarity index 94%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/convert/BladeConversionService.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/convert/BladeConversionService.java
index 3540be5..5d79f27 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/convert/BladeConversionService.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/convert/BladeConversionService.java
@@ -1,6 +1,5 @@
-package com.vci.web.util.convert;
+package com.vci.starter.web.util.Lcm.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;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/convert/BladeConverter.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/convert/BladeConverter.java
similarity index 88%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/convert/BladeConverter.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/convert/BladeConverter.java
index 978214a..abd9755 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/convert/BladeConverter.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/convert/BladeConverter.java
@@ -1,10 +1,10 @@
-package com.vci.web.util.convert;
+package com.vci.starter.web.util.Lcm.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 com.vci.starter.web.util.Lcm.ClassUtil;
+import com.vci.starter.web.util.Lcm.ConvertUtil;
+import com.vci.starter.web.util.Lcm.ReflectUtil;
+import com.vci.starter.web.util.Lcm.Unchecked;
+import com.vci.starter.web.util.Lcm.function.CheckedFunction;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.cglib.core.Converter;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/convert/EnumToStringConverter.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/convert/EnumToStringConverter.java
similarity index 97%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/convert/EnumToStringConverter.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/convert/EnumToStringConverter.java
index fe10cdf..6cc86e6 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/convert/EnumToStringConverter.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/convert/EnumToStringConverter.java
@@ -15,10 +15,10 @@
  *  Author: DreamLu 鍗㈡槬姊� (596392912@qq.com)
  */
 
-package com.vci.web.util.convert;
+package com.vci.starter.web.util.Lcm.convert;
 
 import com.fasterxml.jackson.annotation.JsonValue;
-import com.vci.web.util.ConvertUtil;
+import com.vci.starter.web.util.Lcm.ConvertUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.core.convert.TypeDescriptor;
 import org.springframework.core.convert.converter.ConditionalGenericConverter;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/convert/StringToEnumConverter.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/convert/StringToEnumConverter.java
similarity index 95%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/convert/StringToEnumConverter.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/convert/StringToEnumConverter.java
index cb36729..472c81b 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/convert/StringToEnumConverter.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/convert/StringToEnumConverter.java
@@ -15,12 +15,12 @@
  *  Author: DreamLu 鍗㈡槬姊� (596392912@qq.com)
  */
 
-package com.vci.web.util.convert;
+package com.vci.starter.web.util.Lcm.convert;
 
 import com.fasterxml.jackson.annotation.JsonCreator;
-import com.vci.web.util.ConvertUtil;
-import com.vci.web.util.StringUtil;
+import com.vci.starter.web.util.Lcm.ConvertUtil;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.core.convert.TypeDescriptor;
 import org.springframework.core.convert.converter.ConditionalGenericConverter;
 import org.springframework.lang.Nullable;
@@ -80,7 +80,7 @@
 	@Nullable
 	@Override
 	public Object convert(@Nullable Object source, TypeDescriptor sourceType, TypeDescriptor targetType) {
-		if (StringUtil.isBlank((String) source)) {
+		if (StringUtils.isBlank((String) source)) {
 			return null;
 		}
 		Class<?> clazz = targetType.getType();
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/function/CheckedCallable.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/function/CheckedCallable.java
similarity index 95%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/function/CheckedCallable.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/function/CheckedCallable.java
index e61dd7c..ffc31af 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/function/CheckedCallable.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/function/CheckedCallable.java
@@ -15,7 +15,7 @@
  *  Author: DreamLu 鍗㈡槬姊� (596392912@qq.com)
  */
 
-package com.vci.web.util.function;
+package com.vci.starter.web.util.Lcm.function;
 
 import org.springframework.lang.Nullable;
 
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/function/CheckedComparator.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/function/CheckedComparator.java
similarity index 95%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/function/CheckedComparator.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/function/CheckedComparator.java
index 7511b85..49352d0 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/function/CheckedComparator.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/function/CheckedComparator.java
@@ -15,7 +15,7 @@
  *  Author: DreamLu 鍗㈡槬姊� (596392912@qq.com)
  */
 
-package com.vci.web.util.function;
+package com.vci.starter.web.util.Lcm.function;
 
 /**
  * 鍙楁鐨� Comparator
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/function/CheckedConsumer.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/function/CheckedConsumer.java
similarity index 95%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/function/CheckedConsumer.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/function/CheckedConsumer.java
index 11f9694..cf9c407 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/function/CheckedConsumer.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/function/CheckedConsumer.java
@@ -15,7 +15,7 @@
  *  Author: DreamLu 鍗㈡槬姊� (596392912@qq.com)
  */
 
-package com.vci.web.util.function;
+package com.vci.starter.web.util.Lcm.function;
 
 import org.springframework.lang.Nullable;
 
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/function/CheckedFunction.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/function/CheckedFunction.java
similarity index 95%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/function/CheckedFunction.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/function/CheckedFunction.java
index a1cb096..2cf2709 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/function/CheckedFunction.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/function/CheckedFunction.java
@@ -15,7 +15,7 @@
  *  Author: DreamLu 鍗㈡槬姊� (596392912@qq.com)
  */
 
-package com.vci.web.util.function;
+package com.vci.starter.web.util.Lcm.function;
 
 import org.springframework.lang.Nullable;
 
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/function/CheckedRunnable.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/function/CheckedRunnable.java
similarity index 95%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/function/CheckedRunnable.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/function/CheckedRunnable.java
index 7bd0407..4fd9489 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/function/CheckedRunnable.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/function/CheckedRunnable.java
@@ -15,7 +15,7 @@
  *  Author: DreamLu 鍗㈡槬姊� (596392912@qq.com)
  */
 
-package com.vci.web.util.function;
+package com.vci.starter.web.util.Lcm.function;
 
 /**
  * 鍙楁鐨� runnable
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/function/CheckedSupplier.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/function/CheckedSupplier.java
similarity index 95%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/function/CheckedSupplier.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/function/CheckedSupplier.java
index cd55775..7b708d9 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/function/CheckedSupplier.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/function/CheckedSupplier.java
@@ -15,7 +15,7 @@
  *  Author: DreamLu 鍗㈡槬姊� (596392912@qq.com)
  */
 
-package com.vci.web.util.function;
+package com.vci.starter.web.util.Lcm.function;
 
 import org.springframework.lang.Nullable;
 
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/jackson/BladeJavaTimeModule.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/jackson/BladeJavaTimeModule.java
similarity index 93%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/jackson/BladeJavaTimeModule.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/jackson/BladeJavaTimeModule.java
index e3ee236..b298717 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/jackson/BladeJavaTimeModule.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/jackson/BladeJavaTimeModule.java
@@ -1,4 +1,4 @@
-package com.vci.web.util.jackson;
+package com.vci.starter.web.util.Lcm.jackson;
 
 import com.fasterxml.jackson.databind.module.SimpleModule;
 import com.fasterxml.jackson.datatype.jsr310.PackageVersion;
@@ -8,7 +8,7 @@
 import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
 import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
 import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
-import com.vci.web.util.DateTimeUtil;
+import com.vci.starter.web.util.Lcm.DateTimeUtil;
 
 import java.time.LocalDate;
 import java.time.LocalDateTime;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/jackson/JsonUtil.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/jackson/JsonUtil.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/jackson/JsonUtil.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/jackson/JsonUtil.java
index dd459c3..4e2025d 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/jackson/JsonUtil.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/jackson/JsonUtil.java
@@ -14,7 +14,7 @@
  *  this software without specific prior written permission.
  *  Author: Chill 搴勯獮 (smallchill@163.com)
  */
-package com.vci.web.util.jackson;
+package com.vci.starter.web.util.Lcm.jackson;
 
 import com.fasterxml.jackson.core.JsonParser;
 import com.fasterxml.jackson.core.JsonProcessingException;
@@ -24,7 +24,11 @@
 import com.fasterxml.jackson.databind.*;
 import com.fasterxml.jackson.databind.type.CollectionLikeType;
 import com.fasterxml.jackson.databind.type.MapType;
-import com.vci.web.util.*;
+import com.vci.starter.web.constant.StringPool;
+import com.vci.starter.web.util.Lcm.DateUtil;
+import com.vci.starter.web.util.Lcm.Exceptions;
+import com.vci.starter.web.util.Lcm.ObjectUtil;
+import com.vci.starter.web.util.Lcm.StringUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.lang.Nullable;
 
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/support/StrSpliter.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/support/StrSpliter.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/support/StrSpliter.java
rename to Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/support/StrSpliter.java
index 86ba0db..c41d437 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/support/StrSpliter.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/Lcm/support/StrSpliter.java
@@ -1,8 +1,8 @@
-package com.vci.web.support;
+package com.vci.starter.web.util.Lcm.support;
 
-import com.vci.web.util.StringUtil;
-import com.vci.web.util.Func;
-import com.vci.web.util.StringPool;
+import com.vci.starter.web.util.Lcm.StringUtil;
+import com.vci.starter.web.util.Lcm.Func;
+import com.vci.starter.web.constant.StringPool;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/VciBaseUtil.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/VciBaseUtil.java
index b13d963..3418674 100644
--- a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/VciBaseUtil.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/VciBaseUtil.java
@@ -814,7 +814,7 @@
         if(c.isArray()){
             return isBasicType(c.getComponentType());
         }
-        return ClassUtil.isPrimitive(c);
+        return ClassUtilForVCI.isPrimitive(c);
     }
 
     /**
@@ -1814,7 +1814,6 @@
         return name;
     }
 
-
     /**
      * 鏍规嵁涓氬姟绫诲瀷鑾峰彇琛ㄦ牸鍚嶇О
      * @param btmname 涓氬姟绫诲瀷锛屽苟涓斾笉鑳芥槸瑙嗗浘
@@ -1878,7 +1877,7 @@
      * @param replaceMap 浣跨敤鏇挎崲鐨勬暟鎹簮
      * @return 鏇挎崲鍚庣殑鍊�
      */
-    public static String replaceByFreeMarker(String freemarker,Map<String,String> replaceMap){
+    public static String replaceByFreeMarker(String freemarker,Map<String,Object> replaceMap){
         if(StringUtils.isBlank(freemarker)){
             return "";
         }
diff --git a/Source/plt-web/plt-web-parent/plt-web-permission/pom.xml b/Source/plt-web/plt-web-parent/plt-web-permission/pom.xml
new file mode 100644
index 0000000..987ff50
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/pom.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.vci</groupId>
+        <artifactId>plt-web-parent</artifactId>
+        <version>2024.1-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>plt-web-permission</artifactId>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <poi.version>4.1.0</poi.version>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.vci</groupId>
+            <artifactId>plt-web-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.vci</groupId>
+            <artifactId>plt-starter</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.vci</groupId>
+            <artifactId>plt-web-base</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.github.jsqlparser</groupId>
+            <artifactId>jsqlparser</artifactId>
+            <version>4.9</version>
+        </dependency>
+        <dependency>
+            <groupId>org.reflections</groupId>
+            <artifactId>reflections</artifactId>
+            <version>0.9.11</version>
+        </dependency>
+        <dependency><!--浠g爜鐢熸垚鍣ㄦ墍闇�妯℃澘-->
+            <artifactId>velocity</artifactId>
+            <groupId>org.apache.velocity</groupId>
+            <version>1.7</version>
+        </dependency>
+
+        <!--闇�瑕佽鍙杄xcel-->
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi</artifactId>
+            <version>${poi.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-excelant</artifactId>
+            <version>${poi.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml-schemas</artifactId>
+            <version>${poi.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml</artifactId>
+            <version>${poi.version}</version>
+        </dependency>
+    </dependencies>
+
+</project>
\ No newline at end of file
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/ajaxTask/SmUserUnLockTask.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/ajaxTask/SmUserUnLockTask.java
similarity index 97%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/ajaxTask/SmUserUnLockTask.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/ajaxTask/SmUserUnLockTask.java
index 7840018..c4dde59 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/ajaxTask/SmUserUnLockTask.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/ajaxTask/SmUserUnLockTask.java
@@ -1,6 +1,6 @@
-package com.vci.frameworkcore.ajaxTask;
+package com.vci.web.ajaxTask;
 
-import com.vci.frameworkcore.compatibility.SmUserQueryServiceI;
+import com.vci.web.service.SmUserQueryServiceI;
 
 import java.util.concurrent.Delayed;
 import java.util.concurrent.TimeUnit;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/ajaxTask/SmUserUnLockTaskManager.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/ajaxTask/SmUserUnLockTaskManager.java
similarity index 97%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/ajaxTask/SmUserUnLockTaskManager.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/ajaxTask/SmUserUnLockTaskManager.java
index f985238..110e1ff 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/ajaxTask/SmUserUnLockTaskManager.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/ajaxTask/SmUserUnLockTaskManager.java
@@ -1,4 +1,4 @@
-package com.vci.frameworkcore.ajaxTask;
+package com.vci.web.ajaxTask;
 
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.util.VciDateUtil;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/properties/ConfigCorbaReader.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/config/ConfigCorbaReader.java
similarity index 94%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/properties/ConfigCorbaReader.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/config/ConfigCorbaReader.java
index ac08739..4c13af3 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/properties/ConfigCorbaReader.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/config/ConfigCorbaReader.java
@@ -1,4 +1,4 @@
-package com.vci.frameworkcore.properties;
+package com.vci.web.config;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/config/WebFilePreviewAutoConfig.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/config/WebFilePreviewAutoConfig.java
similarity index 83%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/config/WebFilePreviewAutoConfig.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/config/WebFilePreviewAutoConfig.java
index 111b767..3fef353 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/config/WebFilePreviewAutoConfig.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/config/WebFilePreviewAutoConfig.java
@@ -13,12 +13,18 @@
 public class WebFilePreviewAutoConfig {
 
     /**
+     * 鏄惁鍚敤
+     */
+    private boolean enabled;
+
+    /**
      * 棰勮鏈嶅姟鐨勮矾寰�
      */
     private String previewServiceUrl;
 
     /**
      * 棰勮鐨勫唴閮╧ey,涓庨瑙堟湇鍔″櫒閲屽搴�
+     * app閲岄厤缃殑 private-token-key灏嗕細鐢ㄤ簬閰嶇疆  previewSystemKey銆� 闇�瑕佸悓鏃跺湪棰勮鏈嶅姟閲岄厤缃�
      */
     private String previewSystemKey;
 
@@ -27,9 +33,13 @@
      */
     private Long invalidTime = 5L;
 
-    /***
-     * app閲岄厤缃殑 private-token-key灏嗕細鐢ㄤ簬閰嶇疆  previewSystemKey銆� 闇�瑕佸悓鏃跺湪棰勮鏈嶅姟閲岄厤缃�
-     */
+    public boolean isEnabled() {
+        return enabled;
+    }
+
+    public void setEnabled(boolean enabled) {
+        this.enabled = enabled;
+    }
 
     public String getPreviewServiceUrl() {
         return previewServiceUrl;
@@ -58,7 +68,8 @@
     @Override
     public String toString() {
         return "WebFilePreviewAutoConfig{" +
-                "previewServiceUrl='" + previewServiceUrl + '\'' +
+                "enabled=" + enabled +
+                ", previewServiceUrl='" + previewServiceUrl + '\'' +
                 ", previewSystemKey='" + previewSystemKey + '\'' +
                 ", invalidTime=" + invalidTime +
                 '}';
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/plugins/controller/AuditTaskController.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/AuditTaskController.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/plugins/controller/AuditTaskController.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/AuditTaskController.java
index f677a6a..bb33068 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/plugins/controller/AuditTaskController.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/AuditTaskController.java
@@ -1,11 +1,11 @@
-package com.vci.plugins.controller;
+package com.vci.web.controller;
 
 
 import com.vci.corba.common.PLException;
 import com.vci.corba.omd.data.BusinessObject;
 import com.vci.corba.query.data.KV;
 import com.vci.omd.utils.ObjectTool;
-import com.vci.plugins.dto.AuditTaskDTO;
+import com.vci.dto.AuditTaskDTO;
 import com.vci.starter.web.pagemodel.BaseResult;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.starter.web.util.VciDateUtil;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/HomeTaskController.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/HomeTaskController.java
similarity index 100%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/HomeTaskController.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/HomeTaskController.java
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/plugins/controller/ImageViewerController.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/ImageViewerController.java
similarity index 95%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/plugins/controller/ImageViewerController.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/ImageViewerController.java
index fef425f..899df13 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/plugins/controller/ImageViewerController.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/ImageViewerController.java
@@ -1,10 +1,10 @@
-package com.vci.plugins.controller;
+package com.vci.web.controller;
 
 import com.vci.constant.VciFileBtmTypeConstant;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.util.ControllerUtil;
 import com.vci.starter.web.util.VciBaseUtil;
-import com.vci.web.query.FileImageViewerQuery;
+import com.vci.query.FileImageViewerQuery;
 import com.vci.web.service.VciFileDownloadServiceI;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/OrgDepartmentQueryController.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/OrgDepartmentQueryController.java
similarity index 97%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/OrgDepartmentQueryController.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/OrgDepartmentQueryController.java
index 5b3a1bb..382495d 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/OrgDepartmentQueryController.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/OrgDepartmentQueryController.java
@@ -1,7 +1,6 @@
-package com.vci.frameworkcore.controller;
+package com.vci.web.controller;
 
 import com.vci.dto.OrgDepartmentDTO;
-import com.vci.frameworkcore.compatibility.OrgDeptQueryServiceI;
 import com.vci.constant.FrameWorkLangCodeConstant;
 import com.vci.pagemodel.OrgDepartmentVO;
 import com.vci.starter.web.annotation.controller.VciUnCheckRight;
@@ -11,7 +10,8 @@
 import com.vci.starter.web.util.LangBaseUtil;
 import com.vci.starter.web.util.LocalFileUtil;
 import com.vci.starter.web.util.VciBaseUtil;
-import com.vci.web.util.Func;
+import com.vci.starter.web.util.Lcm.Func;
+import com.vci.web.service.OrgDeptQueryServiceI;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/OrgDutyQueryController.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/OrgDutyQueryController.java
similarity index 95%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/OrgDutyQueryController.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/OrgDutyQueryController.java
index f0e5744..42bd965 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/OrgDutyQueryController.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/OrgDutyQueryController.java
@@ -1,9 +1,9 @@
-package com.vci.frameworkcore.controller;
+package com.vci.web.controller;
 
-import com.vci.frameworkcore.compatibility.OrgDutyQueryServiceI;
 import com.vci.pagemodel.OrgDutyVO;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.*;
+import com.vci.web.service.OrgDutyQueryServiceI;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/SmRoleQueryController.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/SmRoleQueryController.java
similarity index 96%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/SmRoleQueryController.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/SmRoleQueryController.java
index 8cb409a..899340e 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/SmRoleQueryController.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/SmRoleQueryController.java
@@ -1,19 +1,22 @@
-package com.vci.frameworkcore.controller;
+package com.vci.web.controller;
 
-import com.vci.frameworkcore.compatibility.SmRoleQueryServiceI;
 import com.vci.constant.FrameWorkLangCodeConstant;
 import com.vci.dto.SmRoleDTO;
+import com.vci.enumpck.UserTypeEnum;
 import com.vci.pagemodel.SmRoleVO;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.*;
 import com.vci.starter.web.util.LocalFileUtil;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.starter.web.util.WebThreadLocalUtil;
-import com.vci.web.enumpck.UserTypeEnum;
+import com.vci.web.service.SmRoleQueryServiceI;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.File;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/SmUserQueryController.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/SmUserQueryController.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/SmUserQueryController.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/SmUserQueryController.java
index 03d28aa..4ebd730 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/SmUserQueryController.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/SmUserQueryController.java
@@ -1,8 +1,7 @@
-package com.vci.frameworkcore.controller;
+package com.vci.web.controller;
 
 import com.vci.dto.SmUserDTO;
 import com.vci.corba.common.PLException;
-import com.vci.frameworkcore.compatibility.SmUserQueryServiceI;
 import com.vci.constant.FrameWorkLangCodeConstant;
 import com.vci.pagemodel.SmUserVO;
 import com.vci.starter.web.annotation.controller.VciUnCheckRight;
@@ -12,7 +11,8 @@
 import com.vci.starter.web.util.LangBaseUtil;
 import com.vci.starter.web.util.LocalFileUtil;
 import com.vci.starter.web.util.VciBaseUtil;
-import com.vci.web.util.Func;
+import com.vci.starter.web.util.Lcm.Func;
+import com.vci.web.service.SmUserQueryServiceI;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -243,7 +243,7 @@
      * @throws VciBaseException 鏌ヨ鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父锛屽鏋滄槸鑰佺殑椤圭洰閲屼笉鎶涘嚭寮傚父
      */
     @RequestMapping(value = "/getDataGridUsers",method = RequestMethod.GET)
-    public BaseResult<SmUserVO> getDataGridUsers(BaseQueryObject queryObject) throws VciBaseException {
+    public BaseResult<SmUserVO> getDataGridUsers(BaseQueryObject queryObject) {
         try {
             DataGrid<SmUserVO> userVODataGrid = userQueryService.getDataGridUsers(queryObject.getConditionMap(),queryObject.getPageHelper());
             return BaseResult.dataGrid(userVODataGrid);
@@ -382,6 +382,5 @@
         //鑰佺殑椤圭洰渚濈劧鏄坊鍔爐ry catch锛屾柟娉曢噷涓嶆姏鍑哄紓甯�
         //BaseResult.fail("杩欓噷杩斿洖鍓嶇鐨勯敊璇俊鎭�");
     }
-
 
 }
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/plugins/controller/Sql2TableController.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/Sql2TableController.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/plugins/controller/Sql2TableController.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/Sql2TableController.java
index cf6f994..06009da 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/plugins/controller/Sql2TableController.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/Sql2TableController.java
@@ -1,4 +1,4 @@
-package com.vci.plugins.controller;
+package com.vci.web.controller;
 
 import com.alibaba.fastjson.JSONObject;
 import com.vci.corba.common.PLException;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/VciFileDownloadController.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/VciFileDownloadController.java
similarity index 100%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/VciFileDownloadController.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/VciFileDownloadController.java
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/VciFileQueryController.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/VciFileQueryController.java
similarity index 100%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/VciFileQueryController.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/VciFileQueryController.java
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/VciFileUploadController.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/VciFileUploadController.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/VciFileUploadController.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/VciFileUploadController.java
index 1839bbc..6751243 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/VciFileUploadController.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/VciFileUploadController.java
@@ -17,7 +17,7 @@
 
 import java.io.IOException;
 
-import static org.apache.commons.compress.utils.Charsets.UTF_8;
+import static com.vci.starter.web.util.Lcm.Charsets.UTF_8;
 
 /**
  * 鏂囨。涓婁紶鎺у埗鍣�
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/VciOsCodeRuleController.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/VciOsCodeRuleController.java
similarity index 100%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/VciOsCodeRuleController.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/VciOsCodeRuleController.java
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WFWorkflowNodeFavController.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/WFWorkflowNodeFavController.java
similarity index 100%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WFWorkflowNodeFavController.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/WFWorkflowNodeFavController.java
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebCodeGenSchemaController.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/WebCodeGenSchemaController.java
similarity index 100%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebCodeGenSchemaController.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/WebCodeGenSchemaController.java
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebProcessCommandController.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/WebProcessCommandController.java
similarity index 100%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebProcessCommandController.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/WebProcessCommandController.java
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebProcessDefineController.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/WebProcessDefineController.java
similarity index 100%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebProcessDefineController.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/WebProcessDefineController.java
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebScanAnnotationController.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/WebScanAnnotationController.java
similarity index 81%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebScanAnnotationController.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/WebScanAnnotationController.java
index 4e138d2..4957f5c 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebScanAnnotationController.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/controller/WebScanAnnotationController.java
@@ -1,9 +1,7 @@
 package com.vci.web.controller;
 
-
 import com.vci.starter.web.pagemodel.BaseResult;
 import com.vci.starter.web.util.LangBaseUtil;
-import com.vci.web.service.impl.WebInitServiceImpl;
 import com.vci.web.util.OsScanAnnotationTool;
 import com.vci.web.util.WebUtil;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -30,12 +28,6 @@
     private OsScanAnnotationTool scanAnnotationTool;
 
     /**
-     * 鍒濆鍖栨湇鍔�
-     */
-    @Autowired
-    private WebInitServiceImpl initService;
-
-    /**
      * 浣跨敤鍖呭悕鎵弿娉ㄨВ
      * @param packName 鍖呭悕
      * @return 鎵ц缁撴灉
@@ -43,14 +35,10 @@
     @PostMapping(value = "/scanAnnotation")
     public synchronized BaseResult scanAnnotation(String packName){
         try {
-            initService.clearAllCache();
-            initService.initServerCache();
             List<String> packageList = WebUtil.str2List(packName);
             List<String> entityList = new ArrayList();
             List<String> unScanEntityList = new ArrayList<String>();
             scanAnnotationTool.doScanAnnotation2OSServer(packageList, entityList,unScanEntityList);
-            initService.clearAllCache();
-            initService.initServerCache();
         }catch (Throwable e){
             return BaseResult.fail(LangBaseUtil.getErrorMsg(e));
         }
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/BdSelectInputCharDaoI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/BdSelectInputCharDaoI.java
similarity index 96%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/BdSelectInputCharDaoI.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/BdSelectInputCharDaoI.java
index 2f94b86..505a36f 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/BdSelectInputCharDaoI.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/BdSelectInputCharDaoI.java
@@ -1,13 +1,13 @@
 package com.vci.web.dao;
 
 import com.vci.model.BdSelectInputCharDO;
-
-import com.vci.starter.web.pagemodel.*;
-import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
 import com.vci.pagemodel.BatchCBO;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
 
 import java.util.Collection;
-import java.util.*;
+import java.util.List;
+import java.util.Map;
 
 /**
  * 鍙緭鍙�夊唴瀹规暟鎹搷浣滃眰
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/OsCodeBreakCodeDaoI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/OsCodeBreakCodeDaoI.java
similarity index 99%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/OsCodeBreakCodeDaoI.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/OsCodeBreakCodeDaoI.java
index 5faf7e5..7abf1dc 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/OsCodeBreakCodeDaoI.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/OsCodeBreakCodeDaoI.java
@@ -1,7 +1,7 @@
 package com.vci.web.dao;
 
-import com.vci.starter.web.pagemodel.PageHelper;
 import com.vci.model.OsCodeBreakCodeDO;
+import com.vci.starter.web.pagemodel.PageHelper;
 
 import java.util.Collection;
 import java.util.List;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/OsCodeEnumDaoI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/OsCodeEnumDaoI.java
similarity index 99%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/OsCodeEnumDaoI.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/OsCodeEnumDaoI.java
index a0cc4a5..38e71f1 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/OsCodeEnumDaoI.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/OsCodeEnumDaoI.java
@@ -1,6 +1,7 @@
 package com.vci.web.dao;
-import com.vci.starter.web.pagemodel.PageHelper;
+
 import com.vci.model.OsCodeEnumDO;
+import com.vci.starter.web.pagemodel.PageHelper;
 
 import java.util.Collection;
 import java.util.List;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/OsCodeGenSchemaDaoI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/OsCodeGenSchemaDaoI.java
similarity index 99%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/OsCodeGenSchemaDaoI.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/OsCodeGenSchemaDaoI.java
index 9197067..5484785 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/OsCodeGenSchemaDaoI.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/OsCodeGenSchemaDaoI.java
@@ -1,7 +1,7 @@
 package com.vci.web.dao;
 
-import com.vci.starter.web.pagemodel.PageHelper;
 import com.vci.model.OsCodeGenSchemaDO;
+import com.vci.starter.web.pagemodel.PageHelper;
 
 import java.util.List;
 import java.util.Map;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/OsCodeRuleDaoI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/OsCodeRuleDaoI.java
similarity index 99%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/OsCodeRuleDaoI.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/OsCodeRuleDaoI.java
index f344b80..8baab32 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/OsCodeRuleDaoI.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/OsCodeRuleDaoI.java
@@ -1,8 +1,8 @@
 package com.vci.web.dao;
 
 
-import com.vci.starter.web.pagemodel.PageHelper;
 import com.vci.model.OsCodeRuleDO;
+import com.vci.starter.web.pagemodel.PageHelper;
 
 import java.util.Collection;
 import java.util.List;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/OsCodeRuleElementDaoI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/OsCodeRuleElementDaoI.java
similarity index 99%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/OsCodeRuleElementDaoI.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/OsCodeRuleElementDaoI.java
index 83f7cdd..b40f21e 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/OsCodeRuleElementDaoI.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/OsCodeRuleElementDaoI.java
@@ -1,8 +1,8 @@
 package com.vci.web.dao;
 
 
-import com.vci.starter.web.pagemodel.PageHelper;
 import com.vci.model.OsCodeRuleElementDO;
+import com.vci.starter.web.pagemodel.PageHelper;
 
 import java.util.Collection;
 import java.util.List;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/OsCodeSerialNumberDaoI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/OsCodeSerialNumberDaoI.java
similarity index 99%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/OsCodeSerialNumberDaoI.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/OsCodeSerialNumberDaoI.java
index 42ff56b..1f9bd4b 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/OsCodeSerialNumberDaoI.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/OsCodeSerialNumberDaoI.java
@@ -1,7 +1,7 @@
 package com.vci.web.dao;
 
-import com.vci.starter.web.pagemodel.PageHelper;
 import com.vci.model.OsCodeSerialNumberDO;
+import com.vci.starter.web.pagemodel.PageHelper;
 
 import java.util.Collection;
 import java.util.List;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/VciFileDocClassifyDaoI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/VciFileDocClassifyDaoI.java
similarity index 99%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/VciFileDocClassifyDaoI.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/VciFileDocClassifyDaoI.java
index bbfb0b7..a63d7bf 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/VciFileDocClassifyDaoI.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/VciFileDocClassifyDaoI.java
@@ -1,7 +1,7 @@
 package com.vci.web.dao;
 
-import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
 import com.vci.model.VciFileDocClassifyDO;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
 
 import java.util.Collection;
 import java.util.List;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/VciFileObjectDaoI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/VciFileObjectDaoI.java
similarity index 99%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/VciFileObjectDaoI.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/VciFileObjectDaoI.java
index 88355ff..17549dc 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/VciFileObjectDaoI.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/VciFileObjectDaoI.java
@@ -1,7 +1,7 @@
 package com.vci.web.dao;
 
-import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
 import com.vci.model.VciFileObjectDO;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
 
 import java.util.Collection;
 import java.util.List;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/VciFileVolumeDaoI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/VciFileVolumeDaoI.java
similarity index 99%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/VciFileVolumeDaoI.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/VciFileVolumeDaoI.java
index 58efef6..8782e49 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/VciFileVolumeDaoI.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/VciFileVolumeDaoI.java
@@ -1,7 +1,7 @@
 package com.vci.web.dao;
 
-import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
 import com.vci.model.VciFileVolumeDO;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
 
 import java.util.Collection;
 import java.util.List;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/WFWorkflowNodeFavDaoI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/WFWorkflowNodeFavDaoI.java
similarity index 99%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/WFWorkflowNodeFavDaoI.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/WFWorkflowNodeFavDaoI.java
index cb4ed3f..ec8dd78 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/WFWorkflowNodeFavDaoI.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/WFWorkflowNodeFavDaoI.java
@@ -1,9 +1,9 @@
 package com.vci.web.dao;
 
 
-import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
 import com.vci.model.WFWorkflowNodeFavDO;
 import com.vci.pagemodel.BatchCBO;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
 
 import java.util.Collection;
 import java.util.List;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/WFWorkflowNodeFavItemDaoI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/WFWorkflowNodeFavItemDaoI.java
similarity index 99%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/WFWorkflowNodeFavItemDaoI.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/WFWorkflowNodeFavItemDaoI.java
index 42814e9..3c4c4b1 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/WFWorkflowNodeFavItemDaoI.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/WFWorkflowNodeFavItemDaoI.java
@@ -1,8 +1,8 @@
 package com.vci.web.dao;
 
-import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
 import com.vci.model.WFWorkflowNodeFavItemDO;
 import com.vci.pagemodel.BatchCBO;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
 
 import java.util.Collection;
 import java.util.List;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/WebProcessDaoI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/WebProcessDaoI.java
similarity index 99%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/WebProcessDaoI.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/WebProcessDaoI.java
index 0b6c337..dc9353f 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/WebProcessDaoI.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/WebProcessDaoI.java
@@ -4,12 +4,12 @@
 import com.vci.corba.workflow.WorkflowServicePrx;
 import com.vci.corba.workflow.data.TasksAssignedInfo;
 import com.vci.dto.ProcessTemplateVO;
+import com.vci.model.WFProcessClassifyDO;
+import com.vci.model.WFProcessTemplateDO;
 import com.vci.pagemodel.*;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.DataGrid;
 import com.vci.starter.web.pagemodel.PageHelper;
-import com.vci.model.WFProcessClassifyDO;
-import com.vci.model.WFProcessTemplateDO;
 
 import java.util.Collection;
 import java.util.Date;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/impl/BdSelectInputCharDaoImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/BdSelectInputCharDaoImpl.java
similarity index 96%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/impl/BdSelectInputCharDaoImpl.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/BdSelectInputCharDaoImpl.java
index f9c4982..8afc899 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/impl/BdSelectInputCharDaoImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/BdSelectInputCharDaoImpl.java
@@ -1,16 +1,14 @@
 package com.vci.web.dao.impl;
 
 import com.vci.model.BdSelectInputCharDO;
-
-import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
-import org.apache.commons.lang3.StringUtils;
-import com.vci.starter.web.util.*;
-import com.vci.web.dao.BdSelectInputCharDaoI;
-import com.vci.starter.web.exception.VciBaseException;
-import com.vci.starter.web.pagemodel.*;
-import com.vci.web.service.WebBoServiceI;
-import com.vci.web.service.OsLifeCycleServiceI;
 import com.vci.pagemodel.BatchCBO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.dao.BdSelectInputCharDaoI;
+import com.vci.web.service.WebBoServiceI;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Repository;
 
@@ -34,12 +32,6 @@
 	*/
 	@Autowired
 	private WebBoServiceI boService;
-
-	/**
-	* 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
-	*/
-	@Autowired
-	private OsLifeCycleServiceI lifeCycleService;
 
 	/**
      * 浣跨敤涓婚敭鍒犻櫎
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/impl/OsCodeBreakCodeDaoImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/OsCodeBreakCodeDaoImpl.java
similarity index 99%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/impl/OsCodeBreakCodeDaoImpl.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/OsCodeBreakCodeDaoImpl.java
index f81932a..a70bb81 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/impl/OsCodeBreakCodeDaoImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/OsCodeBreakCodeDaoImpl.java
@@ -1,13 +1,13 @@
 package com.vci.web.dao.impl;
 
 import com.vci.corba.omd.data.BusinessObject;
+import com.vci.model.OsCodeBreakCodeDO;
+import com.vci.pagemodel.BatchCBO;
 import com.vci.starter.web.constant.QueryOptionConstant;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.PageHelper;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.web.dao.OsCodeBreakCodeDaoI;
-import com.vci.model.OsCodeBreakCodeDO;
-import com.vci.pagemodel.BatchCBO;
 import com.vci.web.service.WebBoServiceI;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/impl/OsCodeEnumDaoImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/OsCodeEnumDaoImpl.java
similarity index 99%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/impl/OsCodeEnumDaoImpl.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/OsCodeEnumDaoImpl.java
index a622f8e..1ef033b 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/impl/OsCodeEnumDaoImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/OsCodeEnumDaoImpl.java
@@ -1,13 +1,13 @@
 package com.vci.web.dao.impl;
 
 import com.vci.corba.omd.data.BusinessObject;
+import com.vci.model.OsCodeEnumDO;
+import com.vci.pagemodel.BatchCBO;
 import com.vci.starter.web.constant.QueryOptionConstant;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.PageHelper;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.web.dao.OsCodeEnumDaoI;
-import com.vci.model.OsCodeEnumDO;
-import com.vci.pagemodel.BatchCBO;
 import com.vci.web.service.WebBoServiceI;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/impl/OsCodeGenSchemaDaoImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/OsCodeGenSchemaDaoImpl.java
similarity index 95%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/impl/OsCodeGenSchemaDaoImpl.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/OsCodeGenSchemaDaoImpl.java
index cf7157d..7ca70de 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/impl/OsCodeGenSchemaDaoImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/OsCodeGenSchemaDaoImpl.java
@@ -1,11 +1,10 @@
 package com.vci.web.dao.impl;
 
+import com.vci.model.OsCodeGenSchemaDO;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.PageHelper;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.web.dao.OsCodeGenSchemaDaoI;
-import com.vci.model.OsCodeGenSchemaDO;
-import com.vci.web.service.OsLinkTypeServiceI;
 import com.vci.web.service.WebBoServiceI;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -31,11 +30,6 @@
     @Autowired
     private WebBoServiceI boService;
 
-    /**
-     * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
-     */
-    @Autowired
-    private OsLinkTypeServiceI lifeCycleService;
     /**
      * 浣跨敤涓婚敭鍒犻櫎
      *
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/impl/OsCodeRuleDaoImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/OsCodeRuleDaoImpl.java
similarity index 92%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/impl/OsCodeRuleDaoImpl.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/OsCodeRuleDaoImpl.java
index cc29913..9c9ade2 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/impl/OsCodeRuleDaoImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/OsCodeRuleDaoImpl.java
@@ -1,14 +1,14 @@
 package com.vci.web.dao.impl;
 
 import com.vci.corba.omd.data.BusinessObject;
+import com.vci.model.OsCodeRuleDO;
+import com.vci.pagemodel.BatchCBO;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.PageHelper;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.web.dao.OsCodeRuleDaoI;
-import com.vci.model.OsCodeRuleDO;
-import com.vci.pagemodel.BatchCBO;
-import com.vci.web.service.OsLifeCycleServiceI;
 import com.vci.web.service.WebBoServiceI;
+import com.vci.web.service.WebLifeCycleServiceI;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Repository;
@@ -40,7 +40,7 @@
      * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
      */
     @Autowired
-    private OsLifeCycleServiceI lifeCycleService;
+    private WebLifeCycleServiceI lifeCycleService;
     
     /**
      * 浣跨敤涓婚敭鍒犻櫎
@@ -168,7 +168,11 @@
         if(CollectionUtils.isEmpty(cbos)){
             return 0;
         }
-        lifeCycleService.transCboStatus(cbos,lcStatus);
+        try {
+            lifeCycleService.transCboStatus(cbos,lcStatus);
+        } catch (Exception e) {
+            throw new VciBaseException("鎵归噺淇敼鐢熷懡鍛ㄦ湡鐨勭姸鎬侊紒", new Object[]{}, e);
+        }
         return cbos.size();
     }
 
@@ -184,7 +188,11 @@
         if(cbo == null || StringUtils.isBlank(cbo.oid)){
             return 0;
         }
-        lifeCycleService.transStatus(cbo,lcStatus);
+        try {
+            lifeCycleService.transStatus(cbo,lcStatus);
+        } catch (Exception e) {
+            throw new VciBaseException("淇敼鐢熷懡鍛ㄦ湡鐨勭姸鎬佸け璐ワ紒", new Object[]{}, e);
+        }
         return 1;
     }
 
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/impl/OsCodeRuleElementDaoImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/OsCodeRuleElementDaoImpl.java
similarity index 99%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/impl/OsCodeRuleElementDaoImpl.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/OsCodeRuleElementDaoImpl.java
index 1d20b09..0d23517 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/impl/OsCodeRuleElementDaoImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/OsCodeRuleElementDaoImpl.java
@@ -1,11 +1,11 @@
 package com.vci.web.dao.impl;
 
+import com.vci.model.OsCodeRuleElementDO;
+import com.vci.pagemodel.BatchCBO;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.PageHelper;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.web.dao.OsCodeRuleElementDaoI;
-import com.vci.model.OsCodeRuleElementDO;
-import com.vci.pagemodel.BatchCBO;
 import com.vci.web.service.WebBoServiceI;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/impl/OsCodeSerialNumberDaoImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/OsCodeSerialNumberDaoImpl.java
similarity index 99%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/impl/OsCodeSerialNumberDaoImpl.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/OsCodeSerialNumberDaoImpl.java
index ef5fb31..04e96c6 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/impl/OsCodeSerialNumberDaoImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/OsCodeSerialNumberDaoImpl.java
@@ -1,11 +1,11 @@
 package com.vci.web.dao.impl;
 
+import com.vci.model.OsCodeSerialNumberDO;
+import com.vci.pagemodel.BatchCBO;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.PageHelper;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.web.dao.OsCodeSerialNumberDaoI;
-import com.vci.model.OsCodeSerialNumberDO;
-import com.vci.pagemodel.BatchCBO;
 import com.vci.web.service.WebBoServiceI;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/impl/VciFileDocClassifyDaoImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/VciFileDocClassifyDaoImpl.java
similarity index 99%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/impl/VciFileDocClassifyDaoImpl.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/VciFileDocClassifyDaoImpl.java
index 815871e..7c35cca 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/impl/VciFileDocClassifyDaoImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/VciFileDocClassifyDaoImpl.java
@@ -1,11 +1,11 @@
 package com.vci.web.dao.impl;
 
 import com.vci.constant.VciFileBtmTypeConstant;
+import com.vci.model.VciFileDocClassifyDO;
 import com.vci.starter.web.constant.QueryOptionConstant;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
 import com.vci.web.dao.VciFileDocClassifyDaoI;
-import com.vci.model.VciFileDocClassifyDO;
 import com.vci.web.service.WebBoServiceI;
 import com.vci.web.util.WebUtil;
 import org.apache.commons.lang3.StringUtils;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/VciFileDocClassifyServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/VciFileDocClassifyServiceImpl.java
similarity index 97%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/VciFileDocClassifyServiceImpl.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/VciFileDocClassifyServiceImpl.java
index a744a35..33601d3 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/VciFileDocClassifyServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/VciFileDocClassifyServiceImpl.java
@@ -1,8 +1,8 @@
-package com.vci.web.service.impl;
+package com.vci.web.dao.impl;
 
 import com.vci.dto.VciFileDocClassifyDTO;
 import com.vci.dto.VciFileDocClassifyDTOList;
-import com.vci.pagemodel.VciFileDocClassifyVO;
+import com.vci.model.VciFileDocClassifyDO;
 import com.vci.pagemodel.VciFileDocClassifyVO;
 import com.vci.starter.revision.service.RevisionModelUtil;
 import com.vci.starter.web.annotation.bus.VciChangeDocument;
@@ -12,11 +12,10 @@
 import com.vci.starter.web.pagemodel.DataGrid;
 import com.vci.starter.web.pagemodel.KeyValue;
 import com.vci.starter.web.pagemodel.PageHelper;
-import com.vci.starter.web.util.BeanUtil;
+import com.vci.starter.web.util.BeanUtilForVCI;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
 import com.vci.web.dao.VciFileDocClassifyDaoI;
-import com.vci.model.VciFileDocClassifyDO;
 import com.vci.web.service.VciFileDocClassifyServiceI;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -111,7 +110,7 @@
     public VciFileDocClassifyVO vciFileDocClassifyDO2VO(VciFileDocClassifyDO vciFileDocClassifyDO) throws VciBaseException {
               VciFileDocClassifyVO vo = new VciFileDocClassifyVO();
         if(vciFileDocClassifyDO != null){
-          BeanUtil.convert(vciFileDocClassifyDO,vo);
+          BeanUtilForVCI.convert(vciFileDocClassifyDO,vo);
           //杩橀渶瑕佸鐞嗘灇涓剧瓑鍏朵粬鐨勫唴瀹�
         }
         return vo;
@@ -129,7 +128,7 @@
         VciBaseUtil.alertNotNull(vciFileDocClassifyDTO,"闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄");
         //灏咲TO杞崲涓篋O
         VciFileDocClassifyDO vciFileDocClassifyDO = new VciFileDocClassifyDO();
-        BeanUtil.convert(vciFileDocClassifyDTO,vciFileDocClassifyDO);
+        BeanUtilForVCI.convert(vciFileDocClassifyDTO,vciFileDocClassifyDO);
 
         revisionModelUtil.wrapperForAdd(vciFileDocClassifyDO);
         int insert = vciFileDocClassifyMapper.insert(vciFileDocClassifyDO);
@@ -332,7 +331,7 @@
         //寰幆澶勭悊
         dtoList.stream().forEach(dto->{
             VciFileDocClassifyDO classifyDO = new VciFileDocClassifyDO();
-            BeanUtil.convert(dto,classifyDO);
+            BeanUtilForVCI.convert(dto,classifyDO);
             VciBaseUtil.alertNotNull(classifyDO.getId(),"鏂囦欢绫诲瀷缂栧彿",classifyDO.getName(),"鏂囦欢绫诲瀷鍚嶇О");
             doList.add(classifyDO);
         });
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/VciFileDownloadServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/VciFileDownloadServiceImpl.java
similarity index 99%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/VciFileDownloadServiceImpl.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/VciFileDownloadServiceImpl.java
index f432c1b..eecd318 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/VciFileDownloadServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/VciFileDownloadServiceImpl.java
@@ -1,25 +1,25 @@
-package com.vci.web.service.impl;
+package com.vci.web.dao.impl;
 
 import com.vci.corba.common.PLException;
 import com.vci.corba.volume.VolumeServicePrx;
-import com.vci.enumpck.VciFileTransProtocolEnum;
-import com.vci.pagemodel.VciFileVolumeVO;
+import com.vci.enumpck.UI.VciFileTransProtocolEnum;
+import com.vci.model.VciFileObjectDO;
 import com.vci.pagemodel.VciFileObjectVO;
+import com.vci.pagemodel.VciFileVolumeVO;
 import com.vci.starter.web.annotation.bus.VciChangeDocument;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.BaseResult;
 import com.vci.starter.web.util.LocalFileUtil;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
-import com.vci.web.util.file.clientutil.VciFileServerClientUtil;
 import com.vci.web.dao.VciFileObjectDaoI;
-import com.vci.model.VciFileObjectDO;
 import com.vci.web.properties.WebProperties;
 import com.vci.web.service.VciFileDownloadServiceI;
 import com.vci.web.service.VciFileObjectServiceI;
 import com.vci.web.service.VciFileVolumeServiceI;
 import com.vci.web.util.PlatformClientUtil;
 import com.vci.web.util.file.VciZipUtil;
+import com.vci.web.util.file.clientutil.VciFileServerClientUtil;
 import net.lingala.zip4j.core.ZipFile;
 import net.lingala.zip4j.io.ZipOutputStream;
 import org.apache.commons.lang3.StringUtils;
@@ -32,9 +32,9 @@
 import java.util.List;
 import java.util.Map;
 
+import static com.vci.constant.FrameWorkLangCodeConstant.*;
 import static com.vci.constant.VciFileLangCodeConstant.FILE_NOT_FOUND;
 import static com.vci.constant.VciFileLangCodeConstant.FILE_READ_FAIL;
-import static com.vci.constant.FrameWorkLangCodeConstant.*;
 
 /**
  * 鏂囦欢鐨勪笅杞芥湇鍔�
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/impl/VciFileObjectDaoImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/VciFileObjectDaoImpl.java
similarity index 99%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/impl/VciFileObjectDaoImpl.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/VciFileObjectDaoImpl.java
index fcf3c6b..56e6d47 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/impl/VciFileObjectDaoImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/VciFileObjectDaoImpl.java
@@ -2,12 +2,12 @@
 
 import com.vci.constant.VciFileBtmTypeConstant;
 import com.vci.corba.omd.data.BusinessObject;
+import com.vci.model.VciFileObjectDO;
 import com.vci.omd.utils.ObjectTool;
 import com.vci.starter.web.constant.QueryOptionConstant;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
 import com.vci.web.dao.VciFileObjectDaoI;
-import com.vci.model.VciFileObjectDO;
 import com.vci.web.service.WebBoServiceI;
 import com.vci.web.util.WebUtil;
 import org.apache.commons.lang3.StringUtils;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/VciFileObjectServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/VciFileObjectServiceImpl.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/VciFileObjectServiceImpl.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/VciFileObjectServiceImpl.java
index 9a2867b..5446c8f 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/VciFileObjectServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/VciFileObjectServiceImpl.java
@@ -1,9 +1,11 @@
-package com.vci.web.service.impl;
+package com.vci.web.dao.impl;
 
 import com.vci.corba.common.PLException;
 import com.vci.corba.volume.VolumeServicePrx;
 import com.vci.dto.VciFileObjectDTO;
 import com.vci.lcstatuspck.FileLCStatus;
+import com.vci.model.VciFileObjectDO;
+import com.vci.model.VciFileVolumeDO;
 import com.vci.pagemodel.VciFileObjectVO;
 import com.vci.starter.revision.service.RevisionModelUtil;
 import com.vci.starter.web.annotation.bus.VciChangeDocument;
@@ -12,12 +14,10 @@
 import com.vci.starter.web.pagemodel.BaseResult;
 import com.vci.starter.web.pagemodel.DataGrid;
 import com.vci.starter.web.pagemodel.PageHelper;
-import com.vci.starter.web.util.BeanUtil;
+import com.vci.starter.web.util.BeanUtilForVCI;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
 import com.vci.web.dao.VciFileObjectDaoI;
-import com.vci.model.VciFileObjectDO;
-import com.vci.model.VciFileVolumeDO;
 import com.vci.web.service.VciFileObjectServiceI;
 import com.vci.web.service.VciFileVolumeServiceI;
 import com.vci.web.util.PlatformClientUtil;
@@ -33,8 +33,8 @@
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.stream.Collectors;
 
-import static com.vci.constant.VciFileLangCodeConstant.FILE_RELEASED;
 import static com.vci.constant.FrameWorkLangCodeConstant.*;
+import static com.vci.constant.VciFileLangCodeConstant.FILE_RELEASED;
 
 /**
  * 鏂囦欢瀵硅薄鏈嶅姟
@@ -133,7 +133,7 @@
     public VciFileObjectVO vciFileObjectDO2VO(VciFileObjectDO vciFileObjectDO) throws VciBaseException {
               VciFileObjectVO vo = new VciFileObjectVO();
         if(vciFileObjectDO != null){
-          BeanUtil.convert(vciFileObjectDO,vo);
+          BeanUtilForVCI.convert(vciFileObjectDO,vo);
           //杩橀渶瑕佸鐞嗘灇涓剧瓑鍏朵粬鐨勫唴瀹�
         }
         return vo;
@@ -151,7 +151,7 @@
         VciBaseUtil.alertNotNull(vciFileObjectDTO,"闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄");
         //灏咲TO杞崲涓篋O
         VciFileObjectDO vciFileObjectDO = new VciFileObjectDO();
-        BeanUtil.convert(vciFileObjectDTO,vciFileObjectDO);
+        BeanUtilForVCI.convert(vciFileObjectDTO,vciFileObjectDO);
 
         revisionModelUtil.wrapperForAdd(vciFileObjectDO);
         int insert = vciFileObjectMapper.insert(vciFileObjectDO);
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/VciFileUploadServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/VciFileUploadServiceImpl.java
similarity index 97%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/VciFileUploadServiceImpl.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/VciFileUploadServiceImpl.java
index 42235c3..3cfa3db 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/VciFileUploadServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/VciFileUploadServiceImpl.java
@@ -1,13 +1,17 @@
-package com.vci.web.service.impl;
+package com.vci.web.dao.impl;
 
+import com.vci.constant.FrameWorkLangCodeConstant;
 import com.vci.constant.VciFileDefaultValueConstant;
 import com.vci.constant.VciFileLangCodeConstant;
+import com.vci.constant.WebLangCodeConstant;
 import com.vci.corba.common.PLException;
 import com.vci.corba.volume.VolumeServicePrx;
 import com.vci.dto.VciFileObjectDTO;
-import com.vci.enumpck.VciFileTransProtocolEnum;
+import com.vci.enumpck.UI.VciFileTransProtocolEnum;
 import com.vci.lcstatuspck.FileLCStatus;
-import com.vci.constant.FrameWorkLangCodeConstant;
+import com.vci.model.VciFileDocClassifyDO;
+import com.vci.model.VciFileObjectDO;
+import com.vci.model.VciFileVolumeDO;
 import com.vci.pagemodel.VciFileObjectVO;
 import com.vci.starter.revision.service.RevisionModelUtil;
 import com.vci.starter.web.annotation.bus.VciChangeDocument;
@@ -15,17 +19,13 @@
 import com.vci.starter.web.enumpck.UserSecretEnum;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.BaseResult;
-import com.vci.starter.web.util.BeanUtil;
+import com.vci.starter.web.util.BeanUtilForVCI;
 import com.vci.starter.web.util.LocalFileUtil;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
-import com.vci.constant.WebLangCodeConstant;
 import com.vci.web.dao.VciFileDocClassifyDaoI;
 import com.vci.web.dao.VciFileObjectDaoI;
 import com.vci.web.dao.VciFileVolumeDaoI;
-import com.vci.model.VciFileDocClassifyDO;
-import com.vci.model.VciFileObjectDO;
-import com.vci.model.VciFileVolumeDO;
 import com.vci.web.properties.WebProperties;
 import com.vci.web.service.VciFileUploadServiceI;
 import com.vci.web.service.VciFileVolumeServiceI;
@@ -45,8 +45,9 @@
 import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
 
+import static com.vci.constant.FrameWorkLangCodeConstant.UPLOAD_FAIL;
+import static com.vci.constant.FrameWorkLangCodeConstant.UPLOAD_SUCCESS;
 import static com.vci.constant.VciFileLangCodeConstant.*;
-import static com.vci.constant.FrameWorkLangCodeConstant.*;
 
 @Service
 @VciChangeDocument(btmType = "fileUpload")
@@ -321,7 +322,7 @@
         baseResult.setMsg(FrameWorkLangCodeConstant.UPLOAD_SUCCESS);
 
         VciFileObjectVO vciFileObjectVO = new VciFileObjectVO();
-        BeanUtil.convert(vciFileObjectDO, vciFileObjectVO);
+        BeanUtilForVCI.convert(vciFileObjectDO, vciFileObjectVO);
         vciFileObjectVO.setFileDocClassifyName("22222");
         baseResult.setObj(vciFileObjectVO);
 
@@ -403,7 +404,7 @@
         List<VciFileObjectVO> voList = new ArrayList<VciFileObjectVO>();
         for(VciFileObjectDO vciFileObjectDO : resultList){
             VciFileObjectVO vciFileObjectVO = new VciFileObjectVO();
-            BeanUtil.convert(vciFileObjectDO,vciFileObjectVO);
+            BeanUtilForVCI.convert(vciFileObjectDO,vciFileObjectVO);
             voList.add(vciFileObjectVO);
         }
 
@@ -431,7 +432,7 @@
 
         for(VciFileObjectDO sourceDO : sourceFileObjectList){
             VciFileObjectDO targetDO = new VciFileObjectDO();
-            BeanUtil.convert(sourceDO, targetDO);
+            BeanUtilForVCI.convert(sourceDO, targetDO);
             targetDO.setOid(VciBaseUtil.getPk());
             targetDO.setCreator(currentUserId);
             targetDO.setCreateTime(currentDate);
@@ -673,7 +674,7 @@
                 }
 
                 VciFileObjectVO vciFileObjectVO = new VciFileObjectVO();
-                BeanUtil.convert(vciFileObjectDO,vciFileObjectVO);
+                BeanUtilForVCI.convert(vciFileObjectDO,vciFileObjectVO);
                 baseResult.setObj(vciFileObjectVO);
 
                 threadFileObjectMap.remove(fileOid);
@@ -724,7 +725,7 @@
         List<VciFileObjectVO> vciFileObjectVOS = new ArrayList<VciFileObjectVO>();
         for(VciFileObjectDTO vciFileObjectDTO : vciFileObjectDTOS){
             VciFileObjectDO vciFileObjectDO = new VciFileObjectDO();
-            BeanUtil.convert(vciFileObjectDTO, vciFileObjectDO);
+            BeanUtilForVCI.convert(vciFileObjectDTO, vciFileObjectDO);
             vciFileObjectDO.setPkFileVolume(vciFileVolumeDO.getOid());
             if(StringUtils.isBlank(vciFileObjectDO.getId())){
                 vciFileObjectDO.setName(vciFileObjectDO.getId());
@@ -741,7 +742,7 @@
             vciFileObjectDOS.add(vciFileObjectDO);
 
             VciFileObjectVO vciFileObjectVO = new VciFileObjectVO();
-            BeanUtil.convert(vciFileObjectDO, vciFileObjectVO);
+            BeanUtilForVCI.convert(vciFileObjectDO, vciFileObjectVO);
             vciFileObjectVOS.add(vciFileObjectVO);
 
             threadFileObjectMap.put(vciFileObjectDO.getOid(),vciFileObjectDTO);
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/impl/VciFileVolumeDaoImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/VciFileVolumeDaoImpl.java
similarity index 99%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/impl/VciFileVolumeDaoImpl.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/VciFileVolumeDaoImpl.java
index 608c55e..4a2ecab 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/impl/VciFileVolumeDaoImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/VciFileVolumeDaoImpl.java
@@ -1,11 +1,11 @@
 package com.vci.web.dao.impl;
 
 import com.vci.constant.VciFileBtmTypeConstant;
+import com.vci.model.VciFileVolumeDO;
 import com.vci.starter.web.constant.QueryOptionConstant;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
 import com.vci.web.dao.VciFileVolumeDaoI;
-import com.vci.model.VciFileVolumeDO;
 import com.vci.web.service.WebBoServiceI;
 import com.vci.web.util.WebUtil;
 import org.apache.commons.lang3.StringUtils;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/VciFileVolumeServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/VciFileVolumeServiceImpl.java
similarity index 97%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/VciFileVolumeServiceImpl.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/VciFileVolumeServiceImpl.java
index 423715d..99f19b3 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/VciFileVolumeServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/VciFileVolumeServiceImpl.java
@@ -1,23 +1,23 @@
-package com.vci.web.service.impl;
+package com.vci.web.dao.impl;
 
+import com.vci.constant.FrameWorkLangCodeConstant;
 import com.vci.corba.common.PLException;
 import com.vci.corba.framework.data.PvolumeInfo;
 import com.vci.dto.VciFileVolumeDTO;
-import com.vci.enumpck.VciFileServiceOsTypeEnum;
-import com.vci.enumpck.VciFileTransProtocolEnum;
+import com.vci.enumpck.UI.VciFileServiceOsTypeEnum;
+import com.vci.enumpck.UI.VciFileTransProtocolEnum;
+import com.vci.model.VciFileVolumeDO;
 import com.vci.pagemodel.VciFileVolumeVO;
-import com.vci.constant.FrameWorkLangCodeConstant;
 import com.vci.starter.web.annotation.bus.VciChangeDocument;
 import com.vci.starter.web.enumpck.VciChangeDocumentTypeEnum;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.BaseResult;
 import com.vci.starter.web.pagemodel.DataGrid;
 import com.vci.starter.web.pagemodel.PageHelper;
-import com.vci.starter.web.util.BeanUtil;
+import com.vci.starter.web.util.BeanUtilForVCI;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
 import com.vci.web.dao.VciFileVolumeDaoI;
-import com.vci.model.VciFileVolumeDO;
 import com.vci.web.service.VciFileVolumeServiceI;
 import com.vci.web.util.PlatformClientUtil;
 import org.apache.commons.lang3.StringUtils;
@@ -113,7 +113,7 @@
     public VciFileVolumeVO vciFileVolumeDO2VO(VciFileVolumeDO vciFileVolumeDO) throws VciBaseException {
               VciFileVolumeVO vo = new VciFileVolumeVO();
         if(vciFileVolumeDO != null){
-            BeanUtil.convert(vciFileVolumeDO,vo);
+            BeanUtilForVCI.convert(vciFileVolumeDO,vo);
 
             //杩橀渶瑕佸鐞嗘灇涓剧瓑鍏朵粬鐨勫唴瀹�
             vo.setServiceOsTypeText(VciFileServiceOsTypeEnum.getTextByValue(vo.getServiceOsType()));
@@ -134,7 +134,7 @@
         VciBaseUtil.alertNotNull(vciFileVolumeDTO,"闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄");
         //灏咲TO杞崲涓篋O
         VciFileVolumeDO vciFileVolumeDO = new VciFileVolumeDO();
-        BeanUtil.convert(vciFileVolumeDTO,vciFileVolumeDO);
+        BeanUtilForVCI.convert(vciFileVolumeDTO,vciFileVolumeDO);
         vciFileVolumeDO.setCurrentVolume("0");
         int insert = vciFileVolumeMapper.insert(vciFileVolumeDO);
         if(insert>0){
@@ -156,7 +156,7 @@
          VciBaseUtil.alertNotNull(vciFileVolumeDTO,"鏁版嵁瀵硅薄",vciFileVolumeDTO.getOid(),"鏂囦粨绠$悊涓婚敭");
          //灏咲TO杞崲涓篋O
          VciFileVolumeDO vciFileVolumeDO = selectByOid(vciFileVolumeDTO.getOid());
-         BeanUtil.convert(vciFileVolumeDTO,vciFileVolumeDO);
+         BeanUtilForVCI.convert(vciFileVolumeDTO,vciFileVolumeDO);
          int update = vciFileVolumeMapper.updateByPrimaryKey(vciFileVolumeDO);
          if(update>0){
              return vciFileVolumeDO2VO(vciFileVolumeDO);
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/impl/WFWorkflowNodeFavDaoImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/WFWorkflowNodeFavDaoImpl.java
similarity index 95%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/impl/WFWorkflowNodeFavDaoImpl.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/WFWorkflowNodeFavDaoImpl.java
index 0913b85..b29e6cb 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/impl/WFWorkflowNodeFavDaoImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/WFWorkflowNodeFavDaoImpl.java
@@ -1,15 +1,13 @@
 package com.vci.web.dao.impl;
 
 import com.vci.constant.FrameWorkBusLangCodeConstant;
+import com.vci.model.WFWorkflowNodeFavDO;
+import com.vci.pagemodel.BatchCBO;
+import com.vci.web.dao.WFWorkflowNodeFavDaoI;
+import com.vci.web.service.WebBoServiceI;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
-import com.vci.web.dao.WFWorkflowNodeFavDaoI;
-import com.vci.model.WFWorkflowNodeFavDO;
-import com.vci.pagemodel.BatchCBO;
-import com.vci.web.service.OsLifeCycleServiceI;
-import com.vci.web.service.WebBoServiceI;
-import com.vci.web.util.PlatformClientUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Repository;
@@ -33,19 +31,6 @@
      */
     @Autowired
     private WebBoServiceI boService;
-
-    /**
-     * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
-     */
-    @Autowired
-    private OsLifeCycleServiceI lifeCycleService;
-
-    /**
-     * 骞冲彴鐨勫鎴风
-     */
-    @Autowired
-    private PlatformClientUtil platformClientUtil;
-
 
     /**
      * 浣跨敤涓婚敭鍒犻櫎
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/impl/WFWorkflowNodeFavItemDaoImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/WFWorkflowNodeFavItemDaoImpl.java
similarity index 94%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/impl/WFWorkflowNodeFavItemDaoImpl.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/WFWorkflowNodeFavItemDaoImpl.java
index e0114c4..25f1bde 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/impl/WFWorkflowNodeFavItemDaoImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/WFWorkflowNodeFavItemDaoImpl.java
@@ -1,15 +1,13 @@
 package com.vci.web.dao.impl;
 
 import com.vci.constant.FrameWorkBusLangCodeConstant;
+import com.vci.model.WFWorkflowNodeFavItemDO;
+import com.vci.pagemodel.BatchCBO;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
 import com.vci.web.dao.WFWorkflowNodeFavItemDaoI;
-import com.vci.model.WFWorkflowNodeFavItemDO;
-import com.vci.pagemodel.BatchCBO;
-import com.vci.web.service.OsLifeCycleServiceI;
 import com.vci.web.service.WebBoServiceI;
-import com.vci.web.util.PlatformClientUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Repository;
@@ -32,18 +30,6 @@
      */
     @Autowired
     private WebBoServiceI boService;
-
-    /**
-     * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
-     */
-    @Autowired
-    private OsLifeCycleServiceI lifeCycleService;
-
-    /**
-     * 骞冲彴鐨勫鎴风
-     */
-    @Autowired
-    private PlatformClientUtil platformClientUtil;
 
     /**
      * 浣跨敤涓婚敭鍒犻櫎
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/impl/WebProcessDaoImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/WebProcessDaoImpl.java
similarity index 97%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/impl/WebProcessDaoImpl.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/WebProcessDaoImpl.java
index af20c8f..e3b04b5 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/dao/impl/WebProcessDaoImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/dao/impl/WebProcessDaoImpl.java
@@ -1,6 +1,7 @@
 package com.vci.web.dao.impl;
 
 import com.vci.common.utility.ObjectUtility;
+import com.vci.constant.WFVariablesKeyConstant;
 import com.vci.corba.common.PLException;
 import com.vci.corba.common.data.UserEntityInfo;
 import com.vci.corba.omd.data.BusinessObject;
@@ -8,25 +9,24 @@
 import com.vci.corba.workflow.WorkflowServicePrx;
 import com.vci.corba.workflow.data.*;
 import com.vci.dto.ProcessTemplateVO;
-import com.vci.frameworkcore.compatibility.SmUserQueryServiceI;
-import com.vci.pagemodel.*;
+import com.vci.model.ProcessInstance;
+import com.vci.model.ProcessTask;
+import com.vci.model.WFProcessClassifyDO;
+import com.vci.model.WFProcessTemplateDO;
 import com.vci.omd.utils.ObjectTool;
+import com.vci.pagemodel.*;
 import com.vci.starter.web.constant.QueryOptionConstant;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.DataGrid;
 import com.vci.starter.web.pagemodel.PageHelper;
 import com.vci.starter.web.pagemodel.SessionInfo;
-import com.vci.starter.web.util.BeanUtil;
+import com.vci.starter.web.util.BeanUtilForVCI;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.starter.web.util.VciDateUtil;
-import com.vci.constant.WFVariablesKeyConstant;
 import com.vci.web.dao.WebProcessDaoI;
-import com.vci.model.ProcessInstance;
-import com.vci.model.ProcessTask;
-import com.vci.model.WFProcessClassifyDO;
-import com.vci.model.WFProcessTemplateDO;
-import com.vci.web.service.OsLifeCycleServiceI;
+import com.vci.web.service.SmUserQueryServiceI;
 import com.vci.web.service.WebBoServiceI;
+import com.vci.web.service.WebLifeCycleServiceI;
 import com.vci.web.service.WebLoServiceI;
 import com.vci.web.util.PlatformClientUtil;
 import com.vci.web.util.WebUtil;
@@ -38,6 +38,7 @@
 import org.springframework.stereotype.Repository;
 import org.springframework.util.CollectionUtils;
 
+import javax.annotation.Resource;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -50,21 +51,6 @@
  */
 @Repository
 public class WebProcessDaoImpl implements WebProcessDaoI {
-	
-	@Autowired
-	private WebBoServiceI boService;
-	
-	@Autowired
-	private WebLoServiceI loService;
-
-	@Autowired
-	private OsLifeCycleServiceI lifeCycleService;
-
-	/**
-	 * 鐢ㄦ埛鏌ヨ鏈嶅姟
-	 */
-	@Autowired
-	private SmUserQueryServiceI userQueryService;
 
 	/**
 	 * 鏃ュ織
@@ -72,13 +58,24 @@
 	private Logger logger = LoggerFactory.getLogger(getClass());
 
 	/**
-	 * 鏋勯�犳柟娉曪紝鍒濆鍖栧钩鍙扮殑娴佺▼鏈嶅姟
-	 */
-
-	/**
 	 * 澶氳瑷�鐨勫墠缂�
 	 */
 	private final String msgCodePrefix = "com.vci.web.flow.";
+
+	@Resource
+	private WebBoServiceI boService;
+	
+	@Resource
+	private WebLoServiceI loService;
+
+	@Resource
+	private WebLifeCycleServiceI lifeCycleService;
+
+	/**
+	 * 鐢ㄦ埛鏌ヨ鏈嶅姟
+	 */
+	@Autowired
+	private SmUserQueryServiceI userQueryService;
 
 	/**
 	 * 骞冲彴鐨勬祦绋嬫湇鍔�
@@ -502,7 +499,7 @@
 			conditionMap.put("lcstatus", "Executing");
 			btmType = workitemBtmType;
 		}else{
-			throw new VciBaseException("msgCodePrefix",new String[]{doTaskType+""});
+			throw new VciBaseException(msgCodePrefix+"doTaskTypeError",new String[]{doTaskType+""});
 		}
 		List<String> causeList = new ArrayList<String>();
 		causeList.add("*");
@@ -577,7 +574,7 @@
 		List<ProcessTaskVO> taskVOList = new ArrayList<>();
 		Optional.ofNullable(tasks).orElseGet(()->new ArrayList<>()).stream().forEach(task->{
 			ProcessTaskVO taskVO = new ProcessTaskVO();
-			BeanUtil.convert(task,taskVO);
+			BeanUtilForVCI.convert(task,taskVO);
 			taskVOList.add(taskVO);
 		});
 		return taskVOList;
@@ -591,7 +588,7 @@
 		if(process == null || StringUtils.isBlank(process.getOid())){
 			throw new VciBaseException(DATA_OID_NOT_EXIST);
 		}
-		BeanUtil.convert(process,processInstanceVO);
+		BeanUtilForVCI.convert(process,processInstanceVO);
 		return processInstanceVO;
 	}
 
@@ -952,7 +949,7 @@
 	 * @throws VciBaseException
 	 */
 	@Override
-	public void endProcess(String executionId) throws VciBaseException {
+	public void endProcess(String executionId) {
 		try {
 			DataGrid dataGrid  = getDataByProcess(executionId,null);
 			//鍏堣幏鍙栦竴涓�
@@ -970,10 +967,12 @@
 			}
 		} catch (PLException vciError) {
 			throw WebUtil.getVciBaseException(vciError);
-		}
-	}
+		} catch (Exception e) {
+            throw new VciBaseException("缁撴潫娴佺▼澶辫触锛�", new Object[]{}, e);
+        }
+    }
 
-	private void  resetLcStatusForBusinessData(List<Map> bussinesDataList,String resetStatus) throws VciBaseException{
+	private void  resetLcStatusForBusinessData(List<Map> bussinesDataList,String resetStatus) throws Exception{
 		if(bussinesDataList!=null && bussinesDataList.size() > 0){
 			String btmType = "";
 			String lctId = "";
@@ -1024,7 +1023,7 @@
 		List<ProcessInstanceVO> instanceVOS = new ArrayList<>();
 		Optional.ofNullable(processInstances).orElseGet(()->new ArrayList<>()).stream().forEach(instance->{
 			ProcessInstanceVO instanceVO = new ProcessInstanceVO();
-			BeanUtil.convert(instance,instanceVO);
+			BeanUtilForVCI.convert(instance,instanceVO);
 			instanceVOS.add(instanceVO);
 		});
 		return instanceVOS;
@@ -1087,7 +1086,7 @@
 	public ProcessClassifyVO processClassifyDO2VO(WFProcessClassifyDO classifyDO){
 		ProcessClassifyVO classifyVO = new ProcessClassifyVO();
 		if(classifyVO!=null){
-			BeanUtil.convert(classifyDO,classifyVO);
+			BeanUtilForVCI.convert(classifyDO,classifyVO);
 		}
 		return classifyVO;
 	}
@@ -1118,7 +1117,7 @@
 	public ProcessTemplateVO processTemplateDO2VO(WFProcessTemplateDO templateDO){
 		ProcessTemplateVO templateVO = new ProcessTemplateVO();
 		if(templateVO!=null){
-			BeanUtil.convert(templateDO,templateVO);
+			BeanUtilForVCI.convert(templateDO,templateVO);
 		}
 		return templateVO;
 	}
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/initTask/VciWebInitTaskComponent.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/initTask/VciWebInitTaskComponent.java
similarity index 80%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/initTask/VciWebInitTaskComponent.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/initTask/VciWebInitTaskComponent.java
index 8fbdc66..c1ba834 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/initTask/VciWebInitTaskComponent.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/initTask/VciWebInitTaskComponent.java
@@ -1,14 +1,11 @@
 package com.vci.web.initTask;
 
-import com.alibaba.fastjson.JSONObject;
 import com.vci.client.mw.ClientContextVariable;
 import com.vci.client.mw.LaunchModeEnum;
 import com.vci.constant.FrameWorkBtmTypeConstant;
 import com.vci.corba.common.PLException;
 import com.vci.corba.framework.FrameworkServicePrx;
 import com.vci.corba.omd.data.AttributeValue;
-import com.vci.constant.FrameWorkBtmTypeConstant;
-import com.vci.frameworkcore.properties.VciFramworkCompatibilityProperties;
 import com.vci.starter.web.annotation.config.VciConfigField;
 import com.vci.starter.web.annotation.config.VciConfigModule;
 import com.vci.starter.web.enumpck.SessionStorageTypeEnum;
@@ -16,20 +13,14 @@
 import com.vci.starter.web.pagemodel.SessionInfo;
 import com.vci.starter.web.properties.VciSessionProperties;
 import com.vci.starter.web.util.ApplicationContextProvider;
-import com.vci.starter.web.util.LocalFileUtil;
 import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
-import com.vci.pagemodel.OsAttributeVO;
+import com.vci.web.properties.VciFramworkCompatibilityProperties;
 import com.vci.web.properties.WebProperties;
-import com.vci.web.service.OsAttributeServiceI;
-import com.vci.web.service.VciMdServiceI;
-import com.vci.web.service.impl.UIEngineServiceImpl;
 import com.vci.web.util.PlatformClientUtil;
 import com.vci.web.util.WebUtil;
-import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.ApplicationArguments;
 import org.springframework.boot.ApplicationRunner;
 import org.springframework.stereotype.Component;
@@ -40,7 +31,6 @@
 import java.lang.reflect.Method;
 import java.util.HashMap;
 import java.util.List;
-import java.util.Locale;
 import java.util.Map;
 import java.util.stream.Collectors;
 
@@ -57,12 +47,6 @@
      * 鏃ュ織瀵硅薄
      */
     private Logger logger = LoggerFactory.getLogger(getClass());
-
-    /**
-     * 鏄惁鍏煎
-     */
-    @Value("${user-table-compatibility:}")
-    private String compatibility;
 
     /**
      * 閰嶇疆瀵硅薄
@@ -89,19 +73,6 @@
     private VciFramworkCompatibilityProperties compatibilityProperties;
 
     /**
-     * 灞炴�х殑鏈嶅姟
-     */
-    @Autowired
-    private OsAttributeServiceI attributeService;
-
-    /**
-     * markdown鐨勬湇鍔�
-     */
-    @Autowired
-    private VciMdServiceI mdService;
-
-
-    /**
      * 鎵ц鍒濆鍖�
      * @param args 鍚姩鐨勫弬鏁�
      */
@@ -111,35 +82,9 @@
         initSysadmin();
         initClearSession();
         initSetting();
-//        secretService.getMinDataSecret();
-//        secretService.getMinIpSecret();
-//        secretService.getMinUserSecret();
-//        initService.clearAllCache();
-//        initService.initServerCache();
-        mdService.scanAllMdFile();
-        initDefaultAttribute();
     }
 
-    /**
-     * 鍒濆鍖栭粯璁ょ殑灞炴��
-     */
-    private void initDefaultAttribute() {
-        try {
-            String attrJson = LocalFileUtil.readContentForFileInJar("DefaultAttribute.json");
-            if (StringUtils.isBlank(attrJson)) {
-                logger.info("娌℃湁璇诲彇鍒癱lasspath*:DefaultAttribute.json鏂囦欢鐨勫唴瀹�");
-                return;
-            }
-            List<OsAttributeVO> attributeVOS = JSONObject.parseArray(attrJson, OsAttributeVO.class);
-            if(!CollectionUtils.isEmpty(attributeVOS)){
-                attributeService.setDefaultAttributeVOs(attributeVOS.stream().sorted(((o1, o2) -> o1.getId().compareTo(o2.getId()))).collect(Collectors.toList()));
-                attributeService.setDefaultAttributeVOMap(attributeVOS.stream().collect(Collectors.toMap(s->s.getId().toLowerCase(Locale.ROOT), t->t)));
-            }
-            logger.info("璇诲彇榛樿灞炴�у畬鎴�");
-        }catch (Throwable e){
-            logger.error("璇诲彇classpath*:DefaultAttribute.json鐨勫唴瀹瑰苟杞崲鐨勬椂鍊欏嚭閿欎簡",e);
-        }
-    }
+
 
     /**
      * 娓呴櫎浼氳瘽鐨勪俊鎭唴瀹�
@@ -281,21 +226,6 @@
         }
         //鍙湁褰撴暟鎹瘑绾ф帶鍒跺紑鍚殑鎯呭喌涓嬶紝鎵嶄細鎺у埗娴佺▼鍙戣捣鏃剁殑瀵嗙骇
         webProperties.setCheckSecretOnProcessStart(webProperties.isCheckClientSessionTimeout()&&webProperties.isSecretRight());
-        if(webProperties.isDebug()){
-            UIEngineServiceImpl.QUERY_BY_CACHE = false;
-        }
         System.out.println("---璇诲彇鏈嶅姟绔殑閰嶇疆鏂囦欢瀹屾垚---");
-    }
-
-
-
-
-
-    public String getCompatibility() {
-        return compatibility;
-    }
-
-    public void setCompatibility(String compatibility) {
-        this.compatibility = compatibility;
     }
 }
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/interceptor/MyMVCConfig.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/interceptor/MyMVCConfig.java
similarity index 90%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/interceptor/MyMVCConfig.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/interceptor/MyMVCConfig.java
index 7eeb10a..a90520a 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/interceptor/MyMVCConfig.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/interceptor/MyMVCConfig.java
@@ -12,14 +12,13 @@
 
 @Configuration
 @EnableWebMvc
-//@Order(100)
 public class MyMVCConfig implements WebMvcConfigurer {
+
     @Override
     public void addInterceptors(InterceptorRegistry registry) {
-//閰嶇疆鐧藉悕鍗�
+        //閰嶇疆鐧藉悕鍗�
         List<String> patterns = new ArrayList<>();
         patterns.add("/stmFunctionController/**");
-//        patterns.add("/smFunctionController/**");
         registry.addInterceptor(new VciSecurityInterceptor()).excludePathPatterns(patterns);
     }
 }
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/BatchRedeployJar2Maven.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/maven/BatchRedeployJar2Maven.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/BatchRedeployJar2Maven.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/maven/BatchRedeployJar2Maven.java
index 265dc37..115a2a4 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/BatchRedeployJar2Maven.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/maven/BatchRedeployJar2Maven.java
@@ -1,4 +1,4 @@
-package com.vci;
+package com.vci.web.maven;
 
 import java.io.*;
 
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/properties/VciFramworkCompatibilityProperties.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/properties/VciFramworkCompatibilityProperties.java
similarity index 97%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/properties/VciFramworkCompatibilityProperties.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/properties/VciFramworkCompatibilityProperties.java
index ae39106..98e1fcc 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/properties/VciFramworkCompatibilityProperties.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/properties/VciFramworkCompatibilityProperties.java
@@ -1,4 +1,4 @@
-package com.vci.frameworkcore.properties;
+package com.vci.web.properties;
 
 import com.vci.starter.web.yml.YamlPropertySourceFactory;
 import org.springframework.boot.context.properties.ConfigurationProperties;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/properties/VciSecurityManageProperties.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/properties/VciSecurityManageProperties.java
similarity index 96%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/properties/VciSecurityManageProperties.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/properties/VciSecurityManageProperties.java
index 4b718e3..763ba2b 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/properties/VciSecurityManageProperties.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/properties/VciSecurityManageProperties.java
@@ -1,4 +1,4 @@
-package com.vci.frameworkcore.properties;
+package com.vci.web.properties;
 
 import org.springframework.context.annotation.Configuration;
 
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/properties/WebProperties.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/properties/WebProperties.java
similarity index 100%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/properties/WebProperties.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/properties/WebProperties.java
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/OrgDeptQueryServiceI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/OrgDeptQueryServiceI.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/OrgDeptQueryServiceI.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/OrgDeptQueryServiceI.java
index e09c8d2..1072b91 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/OrgDeptQueryServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/OrgDeptQueryServiceI.java
@@ -1,4 +1,4 @@
-package com.vci.frameworkcore.compatibility;
+package com.vci.web.service;
 
 import com.vci.dto.OrgDepartmentDTO;
 import com.vci.corba.common.PLException;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/OrgDutyQueryServiceI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/OrgDutyQueryServiceI.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/OrgDutyQueryServiceI.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/OrgDutyQueryServiceI.java
index 13bfc41..18c265d 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/OrgDutyQueryServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/OrgDutyQueryServiceI.java
@@ -1,4 +1,4 @@
-package com.vci.frameworkcore.compatibility;
+package com.vci.web.service;
 
 import com.vci.pagemodel.OrgDutyVO;
 import com.vci.starter.web.exception.VciBaseException;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsCodeGenSchemaServiceI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/OsCodeGenSchemaServiceI.java
similarity index 100%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsCodeGenSchemaServiceI.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/OsCodeGenSchemaServiceI.java
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsCodeRuleServiceI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/OsCodeRuleServiceI.java
similarity index 99%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsCodeRuleServiceI.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/OsCodeRuleServiceI.java
index 62b1848..bb7e890 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsCodeRuleServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/OsCodeRuleServiceI.java
@@ -1,8 +1,5 @@
 package com.vci.web.service;
 
-import com.vci.starter.web.exception.VciBaseException;
-import com.vci.starter.web.pagemodel.DataGrid;
-import com.vci.starter.web.pagemodel.PageHelper;
 import com.vci.dto.OsCodeRuleDTO;
 import com.vci.dto.OsCodeRuleProduceDTO;
 import com.vci.model.OsCodeRuleDO;
@@ -10,6 +7,9 @@
 import com.vci.pagemodel.OsCodeResultVO;
 import com.vci.pagemodel.OsCodeRuleElementVO;
 import com.vci.pagemodel.OsCodeRuleVO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.pagemodel.PageHelper;
 
 import java.util.Collection;
 import java.util.List;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmRoleQueryServiceI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/SmRoleQueryServiceI.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmRoleQueryServiceI.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/SmRoleQueryServiceI.java
index c231b6f..d9f6a29 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmRoleQueryServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/SmRoleQueryServiceI.java
@@ -1,4 +1,4 @@
-package com.vci.frameworkcore.compatibility;
+package com.vci.web.service;
 
 import com.vci.corba.common.PLException;
 import com.vci.dto.SmRoleDTO;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmUserQueryServiceI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/SmUserQueryServiceI.java
similarity index 90%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmUserQueryServiceI.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/SmUserQueryServiceI.java
index 5741c4f..8f653e9 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmUserQueryServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/SmUserQueryServiceI.java
@@ -1,7 +1,7 @@
-package com.vci.frameworkcore.compatibility;
+package com.vci.web.service;
 
-import com.vci.dto.SmUserDTO;
 import com.vci.corba.common.PLException;
+import com.vci.dto.SmUserDTO;
 import com.vci.pagemodel.SmUserVO;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.*;
@@ -34,7 +34,7 @@
      * @return 鐢ㄦ埛鐨勬樉绀哄璞★紝濡傛灉鐢ㄦ埛涓嶅瓨鍦ㄥ垯杩斿洖null锛屼笉浼氭姏鍑哄紓甯�
      * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮暟鎹簱瀛樺湪闂鐨勬椂鍊欎細鎶涘嚭寮傚父
      */
-    SmUserVO getUserByUserId(String userId) throws VciBaseException;
+    SmUserVO getUserByUserId(String userId);
 
     /**
      * 鎵归噺鑾峰彇鐢ㄦ埛鐨勪俊鎭紙鏍规嵁鐢ㄦ埛鍚嶏級
@@ -42,7 +42,7 @@
      * @return 鐢ㄦ埛鐨勬樉绀哄璞★紝濡傛灉鐢ㄦ埛涓嶅瓨鍦ㄥ垯杩斿洖绌虹殑鍒楄〃锛屼笉浼氭姏鍑哄紓甯�
      * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮暟鎹簱瀛樺湪闂鐨勬椂鍊欎細鎶涘嚭寮傚父
      */
-    List<SmUserVO> listUserByUserIds(Collection<String> userIdCollections) throws VciBaseException;
+    List<SmUserVO> listUserByUserIds(Collection<String> userIdCollections);
 
     /**
      * 鏍规嵁鐢ㄦ埛涓婚敭鑾峰彇鐢ㄦ埛鐨勪俊鎭�
@@ -50,7 +50,7 @@
      * @return 鐢ㄦ埛鐨勬樉绀哄璞★紝濡傛灉鐢ㄦ埛涓嶅瓨鍦ㄥ垯杩斿洖null锛屼笉浼氭姏鍑哄紓甯�
      * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮暟鎹簱瀛樺湪闂鐨勬椂鍊欎細鎶涘嚭寮傚父
      */
-    SmUserVO getUserByUserOid(String userOid) throws VciBaseException;
+    SmUserVO getUserByUserOid(String userOid);
 
     /**
      * 鎵归噺鑾峰彇鐢ㄦ埛鐨勪俊鎭� 锛堟牴鎹敤鎴蜂富閿級
@@ -58,7 +58,7 @@
      * @return 鐢ㄦ埛鐨勬樉绀哄璞★紝濡傛灉鐢ㄦ埛涓嶅瓨鍦ㄥ垯杩斿洖绌虹殑鍒楄〃锛屼笉浼氭姏鍑哄紓甯�
      * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮暟鎹簱瀛樺湪闂鐨勬椂鍊欎細鎶涘嚭寮傚父
      */
-    List<SmUserVO> listUserByUserOids(Collection<String> userOidCollections) throws VciBaseException;
+    List<SmUserVO> listUserByUserOids(Collection<String> userOidCollections);
 
     /**
      * 鐢ㄦ埛绠$悊鐣岄潰鍒嗛〉鏌ヨ
@@ -66,7 +66,7 @@
      * @param pageHelper 鍒嗛〉鍙傛暟
      * @return
      */
-    DataGrid<SmUserVO> getDataGridUsers(Map<String, String> conditionMap, PageHelper pageHelper) throws PLException;
+    DataGrid<SmUserVO> getDataGridUsers(Map<String, String> conditionMap, PageHelper pageHelper);
 
     /**
      * 鏍规嵁鐢ㄦ埛鍚嶈幏鍙栫敤鎴风殑濮撳悕
@@ -88,7 +88,7 @@
      * @return 閮ㄩ棬涓婚敭鍜屽搴旂殑鐢ㄦ埛鏄剧ず瀵硅薄鍒楄〃鐨勬槧灏勶紝key閮ㄩ棬鐨勪富閿紝value鏄繖涓儴闂ㄤ笅鐨勭敤鎴�
      * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
      */
-    Map<String,List<SmUserVO>> batchListUserByDeptOids(Collection<String> deptOidCollection) throws VciBaseException;
+    Map<String,List<SmUserVO>> batchListUserByDeptOids(Collection<String> deptOidCollection);
 
     /**
      * 缁熻閮ㄩ棬涓嬬殑鐢ㄦ埛锛氬寘鍚瓙閮ㄩ棬涓嬬殑鐢ㄦ埛
@@ -97,7 +97,7 @@
      * @return
      * @throws VciBaseException
      */
-    List<SmUserVO> countSmUserByDeptOid(String deptOid, Map<String, String> queryMap) throws VciBaseException;
+    List<SmUserVO> countSmUserByDeptOid(String deptOid, Map<String, String> queryMap);
 
     /**
      * 鏌ヨ鏌愪釜閮ㄩ棬涓嬬殑鐢ㄦ埛瀵硅薄
@@ -106,7 +106,7 @@
      * @return 鐢ㄦ埛鐨勬樉绀哄璞″垪琛�
      * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
      */
-    List<SmUserVO> listUserByDeptOid(String deptOid, Map<String, String> queryMap) throws VciBaseException;
+    List<SmUserVO> listUserByDeptOid(String deptOid, Map<String, String> queryMap);
 
     /**
      * 鏌ヨ涓嶅湪鏌愪釜閮ㄩ棬涓嬬殑鐢ㄦ埛瀵硅薄鍒楄〃
@@ -115,7 +115,7 @@
      * @return 鐢ㄦ埛鐨勬樉绀哄璞″垪琛紝榛樿浣跨敤鐢ㄦ埛鍚嶅崌搴忔帓鍒�
      * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
      */
-    List<SmUserVO> listUserUnInDeptOid(String deptOid, Map<String, String> queryMap) throws VciBaseException;
+    List<SmUserVO> listUserUnInDeptOid(String deptOid, Map<String, String> queryMap);
 
     /**
      *  鏌ヨ鏌愪釜瑙掕壊涓嬬殑鐢ㄦ埛瀵硅薄鍒楄〃
@@ -124,7 +124,7 @@
      * @return 鐢ㄦ埛鐨勬樉绀哄璞″垪琛�
      * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
      */
-    List<SmUserVO> listUserByRoleOid(String roleOid, Map<String, String> queryMap) throws VciBaseException;
+    List<SmUserVO> listUserByRoleOid(String roleOid, Map<String, String> queryMap);
 
     /**
      * 鏌ヨ涓嶅湪鏌愪釜瑙掕壊涓嬬殑鐢ㄦ埛瀵硅薄鍒楄〃
@@ -133,7 +133,7 @@
      * @return 鐢ㄦ埛鐨勬樉绀哄璞″垪琛紝榛樿浣跨敤鐢ㄦ埛鍚嶅崌搴忔帓鍒�
      * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
      */
-    List<SmUserVO> listUserUnInRoleOid(String roleOid, Map<String, String> queryMap) throws VciBaseException;
+    List<SmUserVO> listUserUnInRoleOid(String roleOid, Map<String, String> queryMap);
 
     /**
      * 鎵归噺鏍规嵁瑙掕壊鐨勪富閿幏鍙栫敤鎴�
@@ -141,7 +141,7 @@
      * @return 瑙掕壊涓婚敭鍜屽搴旂殑鐢ㄦ埛鏄剧ず瀵硅薄鍒楄〃鐨勬槧灏勶紝key瑙掕壊鐨勪富閿紝value鏄繖涓鑹蹭笅鐨勭敤鎴�
      * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
      */
-    Map<String,List<SmUserVO>> batchListUserByRoleOids(Collection<String> roleOidCollection) throws VciBaseException;
+    Map<String,List<SmUserVO>> batchListUserByRoleOids(Collection<String> roleOidCollection);
 
     /**
      * 鍙傜収鐢熸晥鐨勭敤鎴�
@@ -150,7 +150,7 @@
      * @return 鐢ㄦ埛鐨勬樉绀哄璞★紝榛樿浣跨敤鐢ㄦ埛鍚嶅崌搴忔帓鍒�
      * @throws VciBaseException 鏌ヨ鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
      */
-    DataGrid<SmUserVO> refGridUsers(Map<String, String> queryMap, PageHelper pageHelper) throws VciBaseException;
+    DataGrid<SmUserVO> refGridUsers(Map<String, String> queryMap, PageHelper pageHelper);
 
     /**
      * 鍙傜収鐢ㄦ埛鐨勬爲褰㈡樉绀�
@@ -158,7 +158,7 @@
      * @return 鐢ㄦ埛鐨勬爲褰俊鎭紝閲岄潰浼氬寘鍚敤鎴峰璞¢噷鐨勬墍鏈夊睘鎬�
      * @throws VciBaseException 鏌ヨ鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
      */
-    List<Tree> refTreeUsers(TreeQueryObject treeQueryObject) throws VciBaseException;
+    List<Tree> refTreeUsers(TreeQueryObject treeQueryObject);
 
     /**
      * 浜哄憳鏉冮檺閫夋嫨鏍�
@@ -166,7 +166,7 @@
      * @return
      * @throws VciBaseException
      */
-    List<Tree> refPersonOrgTree(TreeQueryObject treeQueryObject) throws VciBaseException;
+    List<Tree> refPersonOrgTree(TreeQueryObject treeQueryObject);
 
     /**
      * 鏍¢獙瀵嗙爜鏄惁鐩稿悓锛屽湪鏂板钩鍙颁腑瀛樺偍鐨勫瘑鐮佹槸涓ゆmd5
@@ -211,14 +211,14 @@
      * @param wrongCount 瀵嗙爜鐨勯敊璇鏁�
      * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呭瓨鍌ㄥ埌鏁版嵁搴撲腑鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
      */
-    void updateUserPwdWrongCount(String userOid, int wrongCount) throws VciBaseException;
+    void updateUserPwdWrongCount(String userOid, int wrongCount);
 
     /**
      * 鏇存柊鐢ㄦ埛鐨勬渶鍚庣櫥褰曟椂闂�
      * @param userOid 鐢ㄦ埛鐨勪富閿�
      * @throws VciBaseException 鍙傛暟涓虹┖鐨勬椂鍊欎細鎶涘嚭寮傚父
      */
-    void updateUserLoginTime(String userOid) throws VciBaseException;
+    void updateUserLoginTime(String userOid);
 
     /**
      * 娣诲姞鐢ㄦ埛
@@ -269,7 +269,7 @@
      * @param roleType
      * @return
      */
-    List<String> queryUserNameByRoleType(String roleType) throws PLException;
+    List<String> queryUserNameByRoleType(String roleType);
 
     /**
      * 浣跨敤褰撳墠鐢ㄦ埛鐨勭被鍨嬫煡璇㈢敤鎴�
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/VciFileDocClassifyServiceI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/VciFileDocClassifyServiceI.java
similarity index 100%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/VciFileDocClassifyServiceI.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/VciFileDocClassifyServiceI.java
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/VciFileDownloadServiceI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/VciFileDownloadServiceI.java
similarity index 100%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/VciFileDownloadServiceI.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/VciFileDownloadServiceI.java
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/VciFileObjectServiceI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/VciFileObjectServiceI.java
similarity index 100%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/VciFileObjectServiceI.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/VciFileObjectServiceI.java
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/VciFileQueryServiceI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/VciFileQueryServiceI.java
similarity index 100%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/VciFileQueryServiceI.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/VciFileQueryServiceI.java
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/VciFileUploadServiceI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/VciFileUploadServiceI.java
similarity index 100%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/VciFileUploadServiceI.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/VciFileUploadServiceI.java
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/VciFileVolumeServiceI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/VciFileVolumeServiceI.java
similarity index 100%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/VciFileVolumeServiceI.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/VciFileVolumeServiceI.java
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/WFWorkflowNodeFavItemServiceI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WFWorkflowNodeFavItemServiceI.java
similarity index 100%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/WFWorkflowNodeFavItemServiceI.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WFWorkflowNodeFavItemServiceI.java
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/WFWorkflowNodeFavServiceI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WFWorkflowNodeFavServiceI.java
similarity index 100%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/WFWorkflowNodeFavServiceI.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WFWorkflowNodeFavServiceI.java
diff --git a/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebAttributeServiceI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebAttributeServiceI.java
new file mode 100644
index 0000000..3956ba8
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebAttributeServiceI.java
@@ -0,0 +1,56 @@
+package com.vci.web.service;
+
+import com.vci.corba.omd.atm.AttributeDef;
+import com.vci.pagemodel.OsAttributeVO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description 灞炴�ф湇鍔℃帴鍙�
+ * @Author dangsn
+ * @Date 2024/11/28 14:25
+ */
+public interface WebAttributeServiceI {
+    /**
+     * 浣跨敤灞炴�х紪鍙疯幏鍙栧璞�--鎵归噺
+     * @param attrCodes 灞炴�х殑鑻辨枃鍚嶇О
+     * @return 灞炴�х殑鏄剧ず瀵硅薄
+     */
+    List<OsAttributeVO> listAttrByIds(Collection<String> attrCodes);
+
+    /**
+     * 浣跨敤灞炴�х紪鍙疯幏鍙栧璞�--鎵归噺
+     * @param attrCodes 灞炴�х殑鑻辨枃鍚嶇О
+     * @param attributeVOMap 灞炴�у璞�
+     * @return 灞炴�х殑鏄剧ず瀵硅薄
+     */
+    List<OsAttributeVO> listAttrByIds(Collection<String> attrCodes, Map<String, OsAttributeVO> attributeVOMap);
+
+    /**
+     * 鏌ヨ鎵�鏈夌殑灞炴��
+     * @return 灞炴�х殑鏄剧ず瀵硅薄
+     */
+    List<OsAttributeVO> selectAllAttribute();
+
+    /**
+     * 鏌ヨ鎵�鏈夌殑灞炴�ф槧灏�
+     * @return key鏄睘鎬х殑鑻辨枃鍚嶇О灏忓啓锛寁alue鏄睘鎬х殑鏄剧ず瀵硅薄
+     */
+    Map<String,OsAttributeVO> selectAllAttributeMap();
+
+    /**
+     * 灞炴�х殑鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+     * @param attribItems 鏁版嵁瀵硅薄
+     * @return 鏄剧ず瀵硅薄
+     */
+    List<OsAttributeVO> attributeDO2VOs(Collection<AttributeDef> attribItems);
+
+    /**
+     * 灞炴�х殑鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+     * @param attribItem 鏁版嵁瀵硅薄
+     * @return 鏄剧ず瀵硅薄
+     */
+    OsAttributeVO attributeDO2VO(AttributeDef attribItem);
+}
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/WebBoServiceI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebBoServiceI.java
similarity index 96%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/WebBoServiceI.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebBoServiceI.java
index a0d0ac2..a1f9f49 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/WebBoServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebBoServiceI.java
@@ -4,11 +4,11 @@
 import com.vci.common.qt.object.QueryTemplate;
 import com.vci.corba.omd.data.BusinessObject;
 import com.vci.corba.omd.data.LinkObject;
+import com.vci.pagemodel.BatchCBO;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.DataGrid;
 import com.vci.starter.web.pagemodel.PageHelper;
 import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
-import com.vci.pagemodel.BatchCBO;
 
 import java.util.Collection;
 import java.util.List;
@@ -105,7 +105,7 @@
 	 * @return
 	 * @throws VciBaseException
 	 */
-	 List<BusinessObject> queryCBOByScheme(String queryScheme, Map<String, String> conditionMap, Map<String, String> replaceMap) throws VciBaseException;
+	 List<BusinessObject> queryCBOByScheme(String queryScheme, Map<String, String> conditionMap, Map<String, Object> replaceMap) throws VciBaseException;
 	
 	/**
 	 * 浣跨敤鏌ヨ鏂规鏉ユ煡璇㈡暟鎹紝杩斿洖CBO锛屾敮鎸佸垎椤�
@@ -116,7 +116,7 @@
 	 * @return
 	 * @throws VciBaseException
 	 */
-	 List<BusinessObject> queryCBOByScheme(String queryScheme, Map<String, String> conditionMap, Map<String, String> replaceMap, PageHelper ph) throws VciBaseException;
+	 List<BusinessObject> queryCBOByScheme(String queryScheme, Map<String, String> conditionMap, Map<String, Object> replaceMap, PageHelper ph) throws VciBaseException;
 
 	/**
 	 * 浣跨敤鍚嶅瓧鑾峰彇鏌ヨ妯℃澘
@@ -125,7 +125,7 @@
 	 * @return 鏌ヨ妯℃澘
 	 * @throws VciBaseException 鏌ヨ鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
 	 */
-	QueryTemplate getQtByName(String name, Map<String, String> replaceMap) throws VciBaseException;
+	QueryTemplate getQtByName(String name, Map<String, Object> replaceMap) throws VciBaseException;
 
 	/**
 	 *  浣跨敤鏌ヨ鏂规鏉ユ煡璇㈡暟鎹紝杩斿洖CBO锛屾敮鎸佽嚜瀹氫箟鏌ヨ瀛楁锛屽寘鎷弬鐓у拰鏋氫妇;鍙傜収瀛楁浣跨敤xxx.yy;鏋氫妇瀛楁浣跨敤xxx_enumCode
@@ -137,7 +137,7 @@
 	 * @return
 	 * @throws VciBaseException
 	 */
-	 List<BusinessObject> queryCBOByScheme(String queryScheme, Map<String, String> conditionMap, Map<String, String> replaceMap, PageHelper ph, List<String> clauseList) throws VciBaseException;
+	 List<BusinessObject> queryCBOByScheme(String queryScheme, Map<String, String> conditionMap, Map<String, Object> replaceMap, PageHelper ph, List<String> clauseList) throws VciBaseException;
 	
 	/**
 	 * 鏌ヨ鏁伴噺
@@ -165,7 +165,7 @@
      * @return
      * @throws VciBaseException
      */
-     int queryCountByScheme(String queryScheme, Map<String, String> conditionMap, Map<String, String> replaceMap) throws VciBaseException;
+     int queryCountByScheme(String queryScheme, Map<String, String> conditionMap, Map<String, Object> replaceMap) throws VciBaseException;
     
     /**
      * 浣跨敤瀵硅薄鏉ユ煡璇㈡暟閲�
@@ -269,7 +269,7 @@
      * @return
      * @throws VciBaseException
      */
-     <T> List<T> queryObjectByScheme(String queryScheme, Class<T> c, Map<String, String> conditionMap, PageHelper ph, Map<String, String> replaceMap) throws VciBaseException;
+     <T> List<T> queryObjectByScheme(String queryScheme, Class<T> c, Map<String, String> conditionMap, PageHelper ph, Map<String, Object> replaceMap) throws VciBaseException;
 
 	/**
 	 * 淇濆瓨鏁版嵁锛屽彲浠ュ湪request涓缃槸鍚︽寔涔呭寲
@@ -409,7 +409,7 @@
      * @return 鍒楄〃鏁版嵁锛屾暟鎹槸Map褰㈠紡鐨勶紝鍖呭惈鍒嗛〉淇℃伅
      * @throws VciBaseException
      */
-     DataGrid queryGridByScheme(String queryScheme, Map<String, String> conditionMap, Map<String, String> replaceMap) throws VciBaseException;
+     DataGrid queryGridByScheme(String queryScheme, Map<String, String> conditionMap, Map<String, Object> replaceMap) throws VciBaseException;
     
     /**
      * 鏍规嵁鏌ヨ鏂规鏉ユ煡璇㈠垪琛ㄦ暟鎹紱鍙互鍦╬ageHelper涓缃槸鍚︽煡璇㈡�绘暟锛宲ageHelper鐨勪紭鍏堢骇鏈�澶э紱
@@ -420,7 +420,7 @@
      * @return 鍒楄〃鏁版嵁锛屾暟鎹槸Map褰㈠紡鐨勶紝鍖呭惈鍒嗛〉淇℃伅
      * @throws VciBaseException
      */
-     DataGrid queryGridByScheme(String queryScheme, Map<String, String> conditionMap, Map<String, String> replaceMap, PageHelper ph) throws VciBaseException;
+     DataGrid queryGridByScheme(String queryScheme, Map<String, String> conditionMap, Map<String, Object> replaceMap, PageHelper ph) throws VciBaseException;
     
     /**
      * 鏍规嵁鏌ヨ鏂规鏉ユ煡璇㈠垪琛ㄦ暟鎹紝鍙互鑷畾涔夋煡璇㈢殑鍒楋紝鍖呮嫭鍙傜収鍜屾灇涓�
@@ -432,7 +432,7 @@
      * @return 鍒楄〃鏁版嵁锛屾暟鎹槸Map褰㈠紡鐨勶紝鍖呭惈鍒嗛〉淇℃伅
      * @throws VciBaseException
      */
-     DataGrid queryGridByScheme(String queryScheme, Map<String, String> conditionMap, Map<String, String> replaceMap, PageHelper ph, List<String> clauseList) throws VciBaseException;
+     DataGrid queryGridByScheme(String queryScheme, Map<String, String> conditionMap, Map<String, Object> replaceMap, PageHelper ph, List<String> clauseList) throws VciBaseException;
     
     /**
      * 鏌ヨ瀵硅薄鐨勫垪琛ㄦ暟鎹� 
@@ -461,7 +461,7 @@
      * @return 鍒楄〃鏁版嵁锛屾暟鎹槸瀵硅薄褰㈠紡鐨勶紝鍖呭惈鍒嗛〉淇℃伅
      * @throws VciBaseException
      */
-     DataGrid queryGridClassByScheme(String queryScheme, Class c, Map<String, String> conditionMap, Map<String, String> replaceMap) throws VciBaseException;
+     DataGrid queryGridClassByScheme(String queryScheme, Class c, Map<String, String> conditionMap, Map<String, Object> replaceMap) throws VciBaseException;
     
     /**
      * 閫氳繃鏌ヨ鏂规鏌ヨ瀵硅薄鐨勫垪琛ㄦ暟鎹�
@@ -472,7 +472,7 @@
      * @return 鍒楄〃鏁版嵁锛屾暟鎹槸瀵硅薄褰㈠紡鐨勶紝鍖呭惈鍒嗛〉淇℃伅
      * @throws VciBaseException
      */
-     DataGrid queryGridClassByScheme(String queryScheme, Class c, Map<String, String> conditionMap, Map<String, String> replaceMap, PageHelper ph) throws VciBaseException;
+     DataGrid queryGridClassByScheme(String queryScheme, Class c, Map<String, String> conditionMap, Map<String, Object> replaceMap, PageHelper ph) throws VciBaseException;
 	
     /**
      * BusinessObject 杞负HashMap
diff --git a/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebBtmServiceI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebBtmServiceI.java
new file mode 100644
index 0000000..2ae0bcb
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebBtmServiceI.java
@@ -0,0 +1,96 @@
+package com.vci.web.service;
+
+import com.vci.corba.common.PLException;
+import com.vci.corba.omd.btm.BizType;
+import com.vci.pagemodel.OsAttributeVO;
+import com.vci.pagemodel.OsBtmTypeAttributeVO;
+import com.vci.pagemodel.OsBtmTypeVO;
+import com.vci.pagemodel.OsUsedAttributeVO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description 涓氬姟绫诲瀷鏈嶅姟鎺ュ彛
+ * @Author dangsn
+ * @Date 2024/11/28 11:32
+ */
+public interface WebBtmServiceI {
+
+    /**
+     * TODO:灏介噺鍒敤杩欎釜鏂规硶寰堟參锛屽仛浜嗕竴娆″叏鏌ュ啀杞潵杞幓
+     * 浣跨敤缂栧彿鑾峰彇涓氬姟绫诲瀷
+     * @param id 缂栧彿
+     * @return 涓氬姟绫诲瀷
+     */
+    OsBtmTypeVO getBtmById(String id) throws PLException;
+
+    /**
+     * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+     * @param btmItem 鏁版嵁瀵硅薄
+     * @return 鏄剧ず瀵硅薄
+     */
+    OsBtmTypeVO btmDO2VO(BizType btmItem, Map<String, OsAttributeVO> attributeVOMap);
+
+    /**
+     * 鑾峰彇涓氬姟绫诲瀷鐨勫湪鍝釜灞炴�т腑浣跨敤
+     * @param btmName 涓氬姟绫诲瀷
+     * @return 寮曠敤鐨勪俊鎭�
+     */
+    List<OsUsedAttributeVO> listBtmUsedInfo(String btmName);
+
+    /**
+     * 鑾峰彇涓氬姟绫诲瀷鐨勫湪鍝釜灞炴�т腑浣跨敤
+     *
+     * @param btmId 涓氬姟绫诲瀷
+     * @param hasLink 鏄惁鍖呭惈閾炬帴绫诲瀷涓�
+     * @return 寮曠敤鐨勪俊鎭�
+     */
+    List<OsUsedAttributeVO> listBtmUsedInfo(String btmId, boolean hasLink);
+
+    /**
+     * 鏌ヨ鎵�鏈夌殑涓氬姟绫诲瀷鏄犲皠
+     * @return key 鏄笟鍔$殑鑻辨枃鍚嶇О鐨勫皬鍐�
+     */
+    Map<String,OsBtmTypeVO> selectAllBtmMap();
+
+    /**
+     * 鏌ヨ鎵�鏈夌殑涓氬姟绫诲瀷鏄犲皠
+     * @return key 鏄笟鍔$殑鑻辨枃鍚嶇О鐨勫皬鍐�
+     */
+    Map<String,OsBtmTypeVO> selectAllBtmMap(Map<String, OsAttributeVO> attributeVOMap);
+
+    /**
+     * 鏌ヨ鎵�鏈夌殑涓氬姟绫诲瀷
+     * @return 涓氬姟绫诲瀷瀵硅薄
+     */
+    List<OsBtmTypeVO> selectAllBtm();
+
+    /**
+     * 鏌ヨ鎵�鏈夌殑涓氬姟绫诲瀷
+     * @return 涓氬姟绫诲瀷瀵硅薄
+     */
+    List<OsBtmTypeVO> selectAllBtm(Map<String, OsAttributeVO> attributeVOMap);
+
+    /**
+     * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+     * @param btmItems 鏁版嵁瀵硅薄
+     * @return 鏄剧ず瀵硅薄
+     */
+    List<OsBtmTypeVO> btmDO2VOs(Collection<BizType> btmItems, Map<String, OsAttributeVO> attributeVOMap);
+
+    /**
+     * 浣跨敤缂栧彿鑾峰彇涓氬姟绫诲瀷
+     * @param btmIds 缂栧彿
+     * @return 涓氬姟绫诲瀷
+     */
+    List<OsBtmTypeVO> listBtmByIds(Collection<String> btmIds);
+
+    /**
+     * 鏍规嵁涓氬姟绫诲瀷鑾峰彇鍖呭惈鐨勫睘鎬�--涓嶅寘鍚熀纭�灞炴��
+     * @param btmId 涓氬姟绫诲瀷鐨勭紪鍙�
+     * @return 灞炴�х殑鍐呭
+     */
+    List<OsBtmTypeAttributeVO> listAttributeByBtmId(String btmId);
+}
diff --git a/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebEnumServiceI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebEnumServiceI.java
new file mode 100644
index 0000000..8cdb5b2
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebEnumServiceI.java
@@ -0,0 +1,77 @@
+package com.vci.web.service;
+
+import com.vci.corba.omd.etm.EnumType;
+import com.vci.pagemodel.KeyValue;
+import com.vci.pagemodel.OsEnumItemVO;
+import com.vci.pagemodel.OsEnumVO;
+import com.vci.starter.web.exception.VciBaseException;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description 鏋氫妇鏈嶅姟鎺ュ彛
+ * @Author dangsn
+ * @Date 2024/11/28 11:18
+ */
+public interface WebEnumServiceI {
+
+    /**
+     * 鏍规嵁鏋氫妇鐨刱ey鑾峰彇鏋氫妇鐨勫璞�
+     * @param enumCode 鏋氫妇鐨勭紪鍙�
+     * @return 鏋氫妇鍖呭惈鐨勫��
+     * @throws VciBaseException 鑾峰彇鏋氫妇鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
+     */
+    List<KeyValue> getEnum(String enumCode) throws VciBaseException;
+
+    /**
+     * 鏍规嵁鏋氫妇鐨勫�硷紝鑾峰彇瀵瑰簲鐨勬樉绀烘枃鏈�
+     * @param enumCode 鏋氫妇鐨勭紪鍙�
+     * @param enumKey 鏋氫妇鐨勫��
+     * @return 鏋氫妇鐨勬枃鏈�
+     * @throws VciBaseException 鑾峰彇鏋氫妇鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
+     */
+    String getValue(String enumCode, String enumKey);
+
+    /**
+     * 鏋氫妇鐨勬暟鎹璞¤浆鎹负鏄剧ず瀵硅薄
+     * @param enumType 鏁版嵁瀵硅薄
+     * @return 鏄剧ず瀵硅薄
+     */
+    OsEnumVO enumDO2VO(EnumType enumType);
+
+    /**
+     * 鏋氫妇鏄庣粏杞崲涓篕V
+     * @param enumItemVOS 鏋氫妇鏄庣粏鏄剧ず瀵硅薄
+     * @return KV
+     */
+    List<KeyValue> enumItem2KV(Collection<OsEnumItemVO> enumItemVOS);
+
+    /**
+     * 鏌ヨ鎵�鏈夌殑鏋氫妇鏄犲皠
+     * @return key鏄灇涓剧殑鑻辨枃鍚嶇О
+     */
+    Map<String,OsEnumVO> selectAllEnumMap();
+
+    /**
+     * 鏌ヨ鎵�鏈夌殑鏋氫妇
+     * @return 鏋氫妇鐨勬樉绀哄璞�
+     */
+    List<OsEnumVO> selectAllEnum();
+
+    /**
+     * 鏋氫妇鐨勬暟鎹璞¤浆鎹负鏄剧ず瀵硅薄
+     * @param enumItems 鏋氫妇鐨勫璞�
+     * @return 鏄剧ず瀵硅薄
+     */
+    List<OsEnumVO> enumDO2VOs(Collection<EnumType> enumItems);
+
+    /**
+     * 鑾峰彇鏋氫妇鐨勬槧灏�
+     * @param enumCode 鏋氫妇鐨勭紪鍙�
+     * @return 鏋氫妇鐨勫��
+     * @throws VciBaseException 鑾峰彇鏋氫妇鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
+     */
+    Map<String,String> getEnumValueMap(String enumCode);
+}
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/WebHomeTaskServiceI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebHomeTaskServiceI.java
similarity index 99%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/WebHomeTaskServiceI.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebHomeTaskServiceI.java
index a0c7821..63f5e56 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/WebHomeTaskServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebHomeTaskServiceI.java
@@ -1,11 +1,11 @@
 package com.vci.web.service;
 
 
+import com.vci.dto.WebHomeTaskActionDTO;
+import com.vci.pagemodel.WebHomeTaskActionVO;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.DataGrid;
 import com.vci.starter.web.pagemodel.PageHelper;
-import com.vci.dto.WebHomeTaskActionDTO;
-import com.vci.pagemodel.WebHomeTaskActionVO;
 
 import java.util.List;
 import java.util.Map;
diff --git a/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebLifeCycleServiceI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebLifeCycleServiceI.java
new file mode 100644
index 0000000..294f424
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebLifeCycleServiceI.java
@@ -0,0 +1,121 @@
+package com.vci.web.service;
+
+import com.vci.corba.omd.data.BusinessObject;
+import com.vci.corba.omd.lcm.LifeCycle;
+import com.vci.pagemodel.OsLifeCycleLineVO;
+import com.vci.pagemodel.OsLifeCycleVO;
+import com.vci.pagemodel.OsStatusVO;
+import com.vci.starter.web.exception.VciBaseException;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description 鐢熷懡鍛ㄦ湡鏈嶅姟鎺ュ彛
+ * @Author dangsn
+ * @Date 2024/11/28 10:38
+ */
+public interface WebLifeCycleServiceI {
+
+    /**
+     * 璺冭縼鐢熷懡鍛ㄦ湡鐘舵�侊紝娉ㄦ剰璋冪敤姝ゆ柟娉曞氨浼氳鎸佷箙鍖栵紝涓嶅彈浜嬪姟鎺у埗
+     * @param bo 涓氬姟绫诲瀷鐨勬暟鎹璞�
+     * @param targetStatus 鐩爣鐨勭敓鍛藉懆鏈熺姸鎬侊紝涓嶅尯鍒嗗ぇ灏�
+     * @throws VciBaseException 濡傛灉鐩爣鐢熷懡鍛ㄦ湡鍜屽綋鍓嶇敓鍛藉懆鏈熺姸鎬佹病鏈夎繛鎺ョ嚎鏃舵姏鍑哄紓甯�
+     */
+    void transStatus(BusinessObject bo, String targetStatus);
+
+    /**
+     * 鎵归噺璺冭縼鐢熷懡鍛ㄦ湡鐘舵�侊紝杩欎簺鏁版嵁涓殑褰撳墠鐘舵�佸繀椤婚兘鏄竴鏍凤紝鎴栬�呮槸褰撳墠鐘舵�侀兘鍙互杩炴帴鍒扮洰鏍囩姸鎬�
+     * @param bos 涓氬姟绫诲瀷瀵硅薄鏁版嵁
+     * @param targetStatus  鐩爣鐘舵�侊紝涓嶅尯鍒嗗ぇ灏忓啓
+     * @throws VciBaseException 杞崲鐢熷懡鍛ㄦ湡鍑洪敊鐨勬椂鍊欐姏鍑哄紓甯�
+     */
+    void transStatus(BusinessObject[] bos, String targetStatus);
+
+    /**
+     * 鎵归噺璺冭縼鐢熷懡鍛ㄦ湡鐘舵�侊紝杩欎簺鏁版嵁涓殑褰撳墠鐘舵�佸繀椤婚兘鏄竴鏍凤紝鎴栬�呮槸褰撳墠鐘舵�侀兘鍙互杩炴帴鍒扮洰鏍囩姸鎬�
+     * @param cboList 涓氬姟绫诲瀷瀵硅薄鏁版嵁
+     * @param targetStatus  鐩爣鐘舵�侊紝涓嶅尯鍒嗗ぇ灏忓啓
+     * @throws VciBaseException 杞崲鐢熷懡鍛ㄦ湡鍑洪敊鐨勬椂鍊欐姏鍑哄紓甯�
+     */
+    void transCboStatus(List<BusinessObject> cboList, String targetStatus);
+
+    /**
+     * 鑾峰彇杩炴帴绾�
+     * @param lcid 鐢熷懡鍛ㄦ湡鐨勭紪鍙�
+     * @param currentStatus 褰撳墠鐨勭姸鎬�
+     * @param targetStatus 鐩爣鐨勭姸鎬�
+     * @return 杩炴帴绾�
+     * @throws VciBaseException 璇诲彇鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
+     */
+    OsLifeCycleLineVO getTransVO(String lcid, String currentStatus, String targetStatus);
+
+    /**
+     * 璺冭縼涓氬姟绫诲瀷鐨勭敓鍛藉懆鏈熺姸鎬�
+     * @param obj 涓氬姟绫诲瀷鏁版嵁瀵硅薄
+     * @param lineVO 璺冭縼璺敱
+     * @throws VciBaseException 璺冭縼鍑洪敊鐨勬槸浼氭姏鍑哄紓甯�
+     */
+    void doTransVO(BusinessObject obj, OsLifeCycleLineVO lineVO);
+
+    /**
+     * 鎵归噺鎵ц璺冭縼鎿嶄綔
+     * @param bos 涓氬姟绫诲瀷鏁版嵁
+     * @param vos 璺冭縼瀵硅薄
+     * @throws VciBaseException 璺冭縼鍑洪敊鐨勬槸浼氭姏鍑哄紓甯�
+     */
+    void batchTransVo(BusinessObject[] bos, OsLifeCycleLineVO[] vos);
+
+    /**
+     * 鎵归噺鎵ц璺冭縼鎿嶄綔锛岃姹傚繀椤绘槸鍚屼竴涓笟鍔$被鍨嬩笅鐨�
+     * @param bos 涓氬姟绫诲瀷鏁版嵁瀵硅薄
+     * @param lineVOs 璺冭縼瀵硅薄
+     * @param releaseStatus 鍙戝竷鐘舵�侊紝濡傛灉鐩爣鐘舵�佹槸鍙戝竷鐘舵�佹椂浼犻�掕繖涓��
+     * @throws VciBaseException  璺冭縼鍑洪敊鐨勬槸浼氭姏鍑哄紓甯�
+     */
+    void batchTransVo(BusinessObject[] bos, OsLifeCycleLineVO[] lineVOs, String[] releaseStatus);
+
+    /**
+     * 閫氳繃缂栧彿鑾峰彇鐢熷懡鍛ㄦ湡鐘舵�佸璞★紝
+     * @param lctId 鐢熷懡鍛ㄦ湡缂栧彿
+     * @return 鐢熷懡鍛ㄦ湡鐨勬樉绀哄璞�
+     */
+    OsLifeCycleVO getLifeCycleById(String lctId);
+
+    /**
+     * 鏌ヨ鎵�鏈夌敓鍛藉懆鏈熺姸鎬佺殑鏄犲皠
+     * @return key 鏄敓鍛藉懆鏈熺殑缂栧彿鐨勮嫳鏂囧皬鍐�
+     * @throws VciBaseException 鏌ヨ鐨勬椂鍊欏嚭閿欎細鎶涘嚭寮傚父
+     */
+    Map<String,OsLifeCycleVO> selectAllLifeCycleMap();
+
+    /**
+     * 鏌ヨ鎵�鏈夌敓鍛藉懆鏈熺姸鎬�
+     * @return 鐢熷懡鍛ㄦ湡鐘舵�佺殑瀵硅薄
+     * @throws VciBaseException 鏌ヨ鐨勬椂鍊欏嚭閿欎細鎶涘嚭寮傚父
+     */
+    List<OsLifeCycleVO> selectAllLifeCycle();
+
+    /**
+     * 鐢熷懡鍛ㄦ湡鐨勬暟鎹璞¤浆鎹负鏄剧ず瀵硅薄
+     * @param lifeCycles 鏁版嵁瀵硅薄
+     * @return 鏄剧ず瀵硅薄
+     */
+    List<OsLifeCycleVO> lifeCycleDO2VOs(Collection<LifeCycle> lifeCycles);
+
+    /**
+     * 鐢熷懡鍛ㄦ湡鐨勬暟鎹璞¤浆鎹负鏄剧ず瀵硅薄
+     * @param lifeCyle 鏁版嵁瀵硅薄
+     * @return 鏄剧ず瀵硅薄
+     */
+    OsLifeCycleVO lifeCycleDO2VO(LifeCycle lifeCyle);
+
+    /**
+     * 浣跨敤鐢熷懡鍛ㄦ湡鐨勭紪鍙疯幏鍙栧寘鍚殑鐘舵�佹樉绀哄璞�
+     * @param lifeCycleId 鐢熷懡鍛ㄦ湡鐨勭紪鍙�
+     * @return 鐘舵�佺殑鏄剧ず瀵硅薄
+     */
+    List<OsStatusVO> listStatusById(String lifeCycleId);
+}
diff --git a/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebLinkTypeServiceI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebLinkTypeServiceI.java
new file mode 100644
index 0000000..bdf2f79
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebLinkTypeServiceI.java
@@ -0,0 +1,42 @@
+package com.vci.web.service;
+
+import com.vci.corba.omd.ltm.LinkType;
+import com.vci.pagemodel.OsLinkTypeVO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description 閾炬帴绫诲瀷鏈嶅姟鎺ュ彛
+ * @Author dangsn
+ * @Date 2024/11/28 11:41
+ */
+public interface WebLinkTypeServiceI {
+
+    /**
+     * 鏌ヨ鎵�鏈夌殑閾炬帴绫诲瀷
+     * @return 閾炬帴绫诲瀷瀵硅薄
+     */
+    List<OsLinkTypeVO> selectAllLink();
+
+    /**
+     * 鏌ヨ鎵�鏈夌殑閾炬帴绫诲瀷鏄犲皠
+     * @return key 鏄摼鎺ョ殑鑻辨枃鍚嶇О鐨勫皬鍐�
+     */
+    Map<String,OsLinkTypeVO> selectAllLinkMap();
+
+    /**
+     * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+     * @param linkTypes 鏁版嵁瀵硅薄
+     * @return 鏄剧ず瀵硅薄
+     */
+    List<OsLinkTypeVO> linkTypeDO2VOs(Collection<LinkType> linkTypes);
+
+    /**
+     * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+     * @param linkType 鏁版嵁瀵硅薄
+     * @return 鏄剧ず瀵硅薄
+     */
+    OsLinkTypeVO linkTypeDO2VO(LinkType linkType);
+}
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/WebLoServiceI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebLoServiceI.java
similarity index 79%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/WebLoServiceI.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebLoServiceI.java
index 413891b..ddaa4f8 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/WebLoServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebLoServiceI.java
@@ -1,20 +1,17 @@
 package com.vci.web.service;
 
-import com.vci.corba.omd.data.AttributeValue;
 import com.vci.corba.omd.data.BusinessObject;
 import com.vci.corba.omd.data.LinkObject;
+import com.vci.corba.query.data.BOAndLO;
+import com.vci.query.UILinkTypeDataQuery;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.DataGrid;
 import com.vci.starter.web.pagemodel.PageHelper;
-import com.vci.web.query.UILinkTypeDataQuery;
 
-import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
 public interface WebLoServiceI {
-
-
 
 	/**
 	 * 鏍规嵁鏌ヨ鏉′欢鏉ユ煡璇㈤摼鎺ョ被鍨�
@@ -118,15 +115,6 @@
 	 */
 	 Map<String,BusinessObject> queryLinkedCbo(List los, boolean isDirection) throws VciBaseException;
 
-//	/**
-//	 *鏌ヨ閾炬帴绫诲瀷鏌愮鐨勪笟鍔$被鍨�
-//	 * @param clo 閾炬帴绫诲瀷瀵硅薄
-//	 * @param isDirection 鏄惁鍙嶅悜
-//	 * @return
-//	 * @throws VciBaseException
-//	 */
-//	 Map<String,BusinessObject> queryLinkedCbo(LinkObject[] clo, boolean isDirection) throws VciBaseException;
-
 	/**
 	 * 鏌ヨ閾炬帴绫诲瀷鏌愮鐨勪笟鍔$被鍨�
 	 * @param clol 閾炬帴绫诲瀷
@@ -224,14 +212,14 @@
 	 * @param linkTypeDataQuery 鏌ヨ瀵硅薄
 	 * @return 閾炬帴绫诲瀷鍜屽叧鑱旂殑to绔�
 	 */
-	List<com.vci.corba.query.data.BOAndLO> queryCLOAndBOBySchema(UILinkTypeDataQuery linkTypeDataQuery) ;
+	List<BOAndLO> queryCLOAndBOBySchema(UILinkTypeDataQuery linkTypeDataQuery) ;
 
 	/**
 	 * 浣跨敤閾炬帴绫诲瀷鐨勫悕绉版煡璇� 閾炬帴绫诲瀷鐨則o绔殑涓氬姟绫诲瀷
 	 * @param linkTypeDataQuery 鏌ヨ鐨勫璞�
 	 * @return 閾炬帴瀵硅薄鍜宼o绔笟鍔″璞�
 	 */
-	List<com.vci.corba.query.data.BOAndLO> queryCLOAndBoByLinkType(UILinkTypeDataQuery linkTypeDataQuery);
+	List<BOAndLO> queryCLOAndBoByLinkType(UILinkTypeDataQuery linkTypeDataQuery);
 
 	/**
 	 * 鏌ヨ鍒楄〃
@@ -265,40 +253,5 @@
 	 * @param attributeName 灞炴�у悕绉�
 	 * @param attributeValue 灞炴�х殑鍊�
 	 */
-	public default void setAttribute(LinkObject clo,String attributeName,String attributeValue){
-		com.vci.corba.omd.data.AttributeValue[] attrValues =clo.newAttrValList;
-		ArrayList<com.vci.corba.omd.data.AttributeValue> attrValList = new ArrayList();
-		com.vci.corba.omd.data.AttributeValue attrVal;
-		int i;
-		if (attrValues != null && attrValues.length > 0) {
-			com.vci.corba.omd.data.AttributeValue[] var9 = attrValues;
-			i = attrValues.length;
-
-			for(int var7 = 0; var7 < i; ++var7) {
-				attrVal = var9[var7];
-				attrValList.add(attrVal);
-			}
-		}
-
-		attrVal = null;
-		boolean isExist = false;
-
-		for(i = 0; i < attrValList.size(); ++i) {
-			attrVal = (com.vci.corba.omd.data.AttributeValue)attrValList.get(i);
-			if (attrVal.attrName.toUpperCase().equals(attributeName.toUpperCase())) {
-				attrVal.attrVal = attributeValue;
-				isExist = true;
-				break;
-			}
-		}
-
-		if (!isExist) {
-			attrVal = new com.vci.corba.omd.data.AttributeValue();
-			attrVal.attrName = attributeName.toUpperCase();
-			attrVal.attrVal = attributeValue;
-			attrValList.add(attrVal);
-		}
-
-		clo.newAttrValList = attrValList.toArray(new AttributeValue[attrValList.size()]);
-	};
+	void setAttribute(LinkObject clo,String attributeName,String attributeValue);
 }
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/WebProcessCommandServiceI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebProcessCommandServiceI.java
similarity index 100%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/WebProcessCommandServiceI.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebProcessCommandServiceI.java
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/WebProcessDefineServiceI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebProcessDefineServiceI.java
similarity index 100%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/WebProcessDefineServiceI.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebProcessDefineServiceI.java
diff --git a/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebPwdStrategyQueryServiceI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebPwdStrategyQueryServiceI.java
new file mode 100644
index 0000000..4740540
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebPwdStrategyQueryServiceI.java
@@ -0,0 +1,51 @@
+package com.vci.web.service;
+
+import com.vci.corba.common.PLException;
+import com.vci.pagemodel.SmPasswordStrategyVO;
+import com.vci.starter.web.exception.VciBaseException;
+
+import java.util.Collection;
+import java.util.Map;
+
+/**
+ * @Description 瀵嗙爜绛栫暐鏌ヨ
+ * @Author dangsn
+ * @Date 2024/11/28 16:16
+ */
+public interface WebPwdStrategyQueryServiceI {
+
+    /**
+     * 鑾峰彇榛樿瀵嗙爜绛栫暐
+     * @return
+     */
+    SmPasswordStrategyVO getPasswordStrategyVOByDefault();
+
+    /**
+     * 鏍规嵁鍗曟潯鐢ㄦ埛鐨勪富閿紝鑾峰彇鐢ㄦ埛鐨勫瘑鐮佸畨鍏ㄧ瓥鐣�
+     * @param userOid 鐢ㄦ埛鐨勪富閿�
+     * @return 瀵嗙爜瀹夊叏绛栫暐鐨勬樉绀哄璞★紝濡傛灉涓嶅瓨鍦ㄥ垯浼氳繑鍥濶ull
+     * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮暟鎹簱鏌ヨ鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
+     */
+    SmPasswordStrategyVO getPasswordStrategyVOByUserOid(String userOid) throws PLException;
+
+    /**
+     * 鎵归噺鏍规嵁鐢ㄦ埛鐨勪富閿潵鑾峰彇瀵嗙爜绛栫暐
+     * @param userOidCollection 鐢ㄦ埛涓婚敭闆嗗悎
+     * @return 瀵嗙爜绛栫暐鐨勬樉绀哄璞★紝key鏄敤鎴蜂富閿�,value鏄繖涓敤鎴峰叧鑱旂殑瀵嗙爜绛栫暐
+     */
+    Map<String, SmPasswordStrategyVO> batchSmPwdStrategyByUserOids(Collection<String> userOidCollection);
+
+    /**
+     * 鏍规嵁涓婚敭鏌ヨ瀵嗙爜绛栫暐map瀵硅薄
+     * @param oidList
+     * @return key涓哄瘑鐮佺瓥鐣ヤ富閿� value涓哄瘑鐮佺瓥鐣�
+     */
+    Map<String,SmPasswordStrategyVO> mapPasswordStrategyVOMapByOid(Collection<String> oidList);
+
+    /**
+     * 浣跨敤涓婚敭鑾峰彇瀵嗙爜绛栫暐
+     * @param oid 涓婚敭
+     * @return 瀵嗙爜绛栫暐鏄剧ず瀵硅薄
+     */
+    SmPasswordStrategyVO getPasswordStrategyVOByOid(String oid);
+}
diff --git a/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebRevisionRuleServiceI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebRevisionRuleServiceI.java
new file mode 100644
index 0000000..e9b2eca
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebRevisionRuleServiceI.java
@@ -0,0 +1,49 @@
+package com.vci.web.service;
+
+import com.vci.corba.omd.vrm.VersionRule;
+import com.vci.pagemodel.OsRevisionRuleVO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description 鐗堟湰瑙勫垯鏈嶅姟鎺ュ彛
+ * @Author dangsn
+ * @Date 2024/11/28 14:19
+ */
+public interface WebRevisionRuleServiceI {
+
+    /**
+     * 鏌ヨ鎵�鏈夌殑鐗堟湰瑙勫垯
+     * @return 鐗堟湰瀵硅薄
+     */
+    List<OsRevisionRuleVO> selectAllRevision();
+
+    /**
+     * 鏌ヨ鎵�鏈夌殑鐗堟湰瑙勫垯鏄犲皠
+     * @return key 鏄増鏈殑鑻辨枃鍚嶇О
+     */
+    Map<String,OsRevisionRuleVO> selectAllRevisionMap();
+
+    /**
+     * 浣跨敤缂栧彿鑾峰彇瑙勫垯鐨勫��
+     * @param id 缂栧彿
+     * @return 鏄剧ず瀵硅薄
+     */
+    OsRevisionRuleVO getRevisionRuleById(String id);
+
+    /**
+     * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+     * @param versionRules 鏁版嵁瀵硅薄
+     * @return 鏄剧ず瀵硅薄
+     */
+    List<OsRevisionRuleVO> revisionRuleDO2VOs(Collection<VersionRule> versionRules);
+
+    /**
+     * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+     * @param versionRule 鏁版嵁瀵硅薄
+     * @return 鏄剧ず瀵硅薄
+     */
+    OsRevisionRuleVO revisionRuleDO2VO(VersionRule versionRule);
+}
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/WebSecretServiceI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebSecretServiceI.java
similarity index 100%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/WebSecretServiceI.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebSecretServiceI.java
diff --git a/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebStatusServiceI.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebStatusServiceI.java
new file mode 100644
index 0000000..532a761
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/WebStatusServiceI.java
@@ -0,0 +1,42 @@
+package com.vci.web.service;
+
+import com.vci.corba.omd.stm.StatePool;
+import com.vci.pagemodel.OsStatusVO;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description 鐘舵�佹睜鏈嶅姟鎺ュ彛
+ * @Author dangsn
+ * @Date 2024/11/28 10:51
+ */
+public interface WebStatusServiceI {
+
+    /**
+     * 鏌ヨ鎵�鏈夌殑鐘舵��
+     * @return 鐘舵�佺殑鏄剧ず瀵硅薄
+     */
+    List<OsStatusVO> selectAllStatus();
+
+    /**
+     * 鏌ヨ鍏ㄩ儴鐨勭姸鎬佹槧灏�
+     * @return key鏄姸鎬佺殑鑻辨枃鍚嶇О
+     */
+    Map<String, OsStatusVO> selectAllStatusMap();
+
+    /**
+     * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+     * @param statePool 鐘舵�佹睜鐨勬暟鎹璞�
+     * @return 鏄剧ず瀵硅薄
+     */
+    OsStatusVO statusDO2VO(StatePool statePool);
+
+    /**
+     * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+     * @param statePools 鐘舵�佹睜鐨勬暟鎹璞� 闆嗗悎
+     * @return 鏄剧ず瀵硅薄
+     */
+    List<OsStatusVO> statusDO2VOs(Collection<StatePool> statePools);
+}
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/OrgDeptQueryServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/OrgDeptQueryServiceImpl.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/OrgDeptQueryServiceImpl.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/OrgDeptQueryServiceImpl.java
index 16e89a2..8de5f76 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/OrgDeptQueryServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/OrgDeptQueryServiceImpl.java
@@ -1,12 +1,12 @@
-package com.vci.frameworkcore.compatibility.impl;
+package com.vci.web.service.impl;
 
 import com.vci.dto.OrgDepartmentDTO;
 import com.vci.corba.common.PLException;
 import com.vci.corba.common.data.UserEntityInfo;
 import com.vci.corba.framework.data.DeptInfo;
 import com.vci.corba.omd.data.BusinessObject;
-import com.vci.frameworkcore.compatibility.OrgDeptQueryServiceI;
-import com.vci.frameworkcore.lcstatuspck.FrameworkDataLCStatus;
+import com.vci.web.service.OrgDeptQueryServiceI;
+import com.vci.lcstatuspck.FrameworkDataLCStatus;
 import com.vci.model.OrgDeptForPlatform1;
 import com.vci.po.OrgDeptPO;
 import com.vci.pagemodel.OrgDepartmentVO;
@@ -24,7 +24,7 @@
 import com.vci.starter.web.util.*;
 import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
 import com.vci.web.service.WebBoServiceI;
-import com.vci.web.util.Func;
+import com.vci.starter.web.util.Lcm.Func;
 import com.vci.web.util.PlatformClientUtil;
 import com.vci.web.util.WebUtil;
 import org.apache.commons.lang3.StringUtils;
@@ -33,7 +33,6 @@
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
 import java.io.File;
@@ -534,7 +533,7 @@
 			orgDepartmentVOList = deptDO2VOs(boService.selectByQueryWrapper(queryWrapperForDO,OrgDeptForPlatform1.class));
 		}
 		TreeWrapperOptions treeWrapperOptions = new TreeWrapperOptions();
-		BeanUtil.convert(treeQueryObject,treeWrapperOptions);
+		BeanUtilForVCI.convert(treeQueryObject,treeWrapperOptions);
 		treeWrapperOptions.setParentFieldName("pkFatherDepartment");
 		List<Tree> trees = revisionModelUtil.doList2Trees(orgDepartmentVOList, treeWrapperOptions, dept -> {
 			return dept.getId() + " " + dept.getName() + (FrameworkDataLCStatus.DISABLED.getValue().equals(dept.getLcStatus()) ? "銆愬仠鐢ㄣ��" : "");
@@ -677,7 +676,7 @@
 			throw new VciBaseException("鍚屼竴鐖惰妭鐐逛笅璇ラ儴闂ㄥ悕绉版垨缂栧彿宸茬粡瀛樺湪,璇蜂慨鏀�!");
 		}
 		OrgDepartmentDTO departmentDTO = new OrgDepartmentDTO();
-		BeanUtil.convert(dbDepartmentVO,departmentDTO);
+		BeanUtilForVCI.convert(dbDepartmentVO,departmentDTO);
 		departmentDTO.setCode(orgDepartmentDTO.getCode());
 		departmentDTO.setId(orgDepartmentDTO.getId());
 		departmentDTO.setSpecialties(orgDepartmentDTO.getSpecialties());
@@ -845,7 +844,7 @@
 				indexMap.put(po.getName(),po.getRowIndex());
 				//鏍¢獙鏁版嵁灏辫缁勮鎴怐TO鏁版嵁瀵硅薄浜�
 				OrgDepartmentDTO dto = new OrgDepartmentDTO();
-				BeanUtil.convert(po,dto);
+				BeanUtilForVCI.convert(po,dto);
 				dto.setOid(po.getId());
 				dto.setId(po.getNum());
 				dto.setDescription(po.getDesc());
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/OrgDutyQueryServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/OrgDutyQueryServiceImpl.java
similarity index 97%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/OrgDutyQueryServiceImpl.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/OrgDutyQueryServiceImpl.java
index b0f1304..1d6b34d 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/OrgDutyQueryServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/OrgDutyQueryServiceImpl.java
@@ -1,6 +1,6 @@
-package com.vci.frameworkcore.compatibility.impl;
+package com.vci.web.service.impl;
 
-import com.vci.frameworkcore.compatibility.OrgDutyQueryServiceI;
+import com.vci.web.service.OrgDutyQueryServiceI;
 import com.vci.pagemodel.OrgDutyVO;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.DataGrid;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsCodeGenSchemaServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/OsCodeGenSchemaServiceImpl.java
similarity index 97%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsCodeGenSchemaServiceImpl.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/OsCodeGenSchemaServiceImpl.java
index edd1a2a..bdfe2df 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsCodeGenSchemaServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/OsCodeGenSchemaServiceImpl.java
@@ -1,7 +1,15 @@
 package com.vci.web.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
+import com.vci.bo.OsCodeGenAttributeBO;
+import com.vci.bo.OsCodeGenButtonBO;
 import com.vci.corba.common.PLException;
+import com.vci.dto.OsCodeGenSchemaDTO;
+import com.vci.enumpck.OsCodeGenJsPanelTypeEnum;
+import com.vci.model.OsCodeGenSchemaDO;
+import com.vci.pagemodel.OsBtmTypeAttributeVO;
+import com.vci.pagemodel.OsBtmTypeVO;
+import com.vci.pagemodel.OsCodeGenSchemaVO;
 import com.vci.starter.revision.service.RevisionModelUtil;
 import com.vci.starter.web.annotation.Column;
 import com.vci.starter.web.constant.FrameWorkLcStatusConstant;
@@ -10,24 +18,14 @@
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.DataGrid;
 import com.vci.starter.web.pagemodel.PageHelper;
-import com.vci.starter.web.util.BeanUtil;
+import com.vci.starter.web.util.BeanUtilForVCI;
 import com.vci.starter.web.util.LocalFileUtil;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.starter.web.util.VciDateUtil;
 import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
-import com.vci.bo.OsCodeGenAttributeBO;
-import com.vci.bo.OsCodeGenButtonBO;
 import com.vci.web.dao.OsCodeGenSchemaDaoI;
-import com.vci.dto.OsCodeGenSchemaDTO;
-import com.vci.web.enumpck.OsCodeGenJsPanelTypeEnum;
-import com.vci.model.OsCodeGenSchemaDO;
-import com.vci.pagemodel.OsBtmTypeAttributeVO;
-import com.vci.pagemodel.OsBtmTypeVO;
-import com.vci.pagemodel.OsCodeGenSchemaVO;
-import com.vci.web.service.OsAttributeServiceI;
-import com.vci.web.service.OsBtmServiceI;
 import com.vci.web.service.OsCodeGenSchemaServiceI;
-import com.vci.web.service.WebBtmIOServiceI;
+import com.vci.web.service.WebBtmServiceI;
 import com.vci.web.util.WebUtil;
 import com.vci.web.util.file.VciZipUtil;
 import org.apache.commons.io.IOUtils;
@@ -74,22 +72,10 @@
     private OsCodeGenSchemaDaoI codeGenSchemaDOMapper;
 
     /**
-     * 涓氬姟绫诲瀷
-     */
-    @Autowired
-    private WebBtmIOServiceI btmIOService;
-
-    /**
      * 涓氬姟绫诲瀷鐩稿叧鐨勬搷浣�
      */
-    @Autowired
-    private OsBtmServiceI btmService;
-
-    /**
-     * 灞炴�х殑鏈嶅姟
-     */
-    @Autowired
-    private OsAttributeServiceI attrServiceI;
+    @Resource
+    private WebBtmServiceI btmService;
 
     /**
      * 浠g爜鐢熸垚鐨勬枃浠跺す
@@ -158,7 +144,7 @@
     public OsCodeGenSchemaVO codeGenSchemaDO2VO(OsCodeGenSchemaDO schemaDO) {
         OsCodeGenSchemaVO schemaVO = new OsCodeGenSchemaVO();
         if(schemaDO!=null){
-            BeanUtil.convert(schemaDO,schemaVO);
+            BeanUtilForVCI.convert(schemaDO,schemaVO);
             schemaVO.setWestLayoutPanelTypeText(OsCodeGenJsPanelTypeEnum.getTextByValue(schemaVO.getWestLayoutPanelType()));
             schemaVO.setCenterLayoutPanelTypeText(OsCodeGenJsPanelTypeEnum.getTextByValue(schemaVO.getCenterLayoutPanelType()));
             schemaVO.setSouthLayoutPanelTypeText(OsCodeGenJsPanelTypeEnum.getTextByValue(schemaVO.getSouthLayoutPanelType()));
@@ -177,7 +163,7 @@
     public OsCodeGenSchemaVO addSchema(OsCodeGenSchemaDTO codeGenSchemaDTO) throws VciBaseException {
         VciBaseUtil.alertNotNull(codeGenSchemaDTO,"瑕佹坊鍔犵殑鏂规");
         OsCodeGenSchemaDO codeGenSchemaDO = new OsCodeGenSchemaDO();
-        BeanUtil.convert(codeGenSchemaDTO,codeGenSchemaDO);
+        BeanUtilForVCI.convert(codeGenSchemaDTO,codeGenSchemaDO);
         checkJsonFormate(codeGenSchemaDO);
         //瀹炵幇绫绘槸鍓嶇鐩存帴濉啓
         codeGenSchemaDOMapper.insert(codeGenSchemaDO);
@@ -408,7 +394,7 @@
         }
         OsBtmTypeAttributeVO idAttr = new OsBtmTypeAttributeVO();
         if(defaultAttrMap.containsKey("id")){
-            BeanUtil.convert(defaultAttrMap.get("id"),idAttr);
+            BeanUtilForVCI.convert(defaultAttrMap.get("id"),idAttr);
             idAttr.setId("id");
             if(StringUtils.isBlank(idAttr.getName())){
                 idAttr.setName("缂栧彿");
@@ -422,7 +408,7 @@
 
         OsBtmTypeAttributeVO nameAttr = new OsBtmTypeAttributeVO();
         if(defaultAttrMap.containsKey("name")){
-            BeanUtil.convert(defaultAttrMap.get("name"),nameAttr);
+            BeanUtilForVCI.convert(defaultAttrMap.get("name"),nameAttr);
             nameAttr.setId("name");
             if(StringUtils.isBlank(nameAttr.getName())){
                 nameAttr.setName("鍚嶇О");
@@ -436,7 +422,7 @@
 
         OsBtmTypeAttributeVO descAttr = new OsBtmTypeAttributeVO();
         if(defaultAttrMap.containsKey("desc")){
-            BeanUtil.convert(defaultAttrMap.get("desc"),descAttr);
+            BeanUtilForVCI.convert(defaultAttrMap.get("desc"),descAttr);
             descAttr.setId("description");
             if(StringUtils.isBlank(descAttr.getName())){
                 descAttr.setName("鎻忚堪");
@@ -451,7 +437,7 @@
         if(!CollectionUtils.isEmpty(attributeVOS)){
             attributeVOS.stream().forEach(attr->{
                 OsCodeGenAttributeBO attributeBO = new OsCodeGenAttributeBO();
-                BeanUtil.convert(attr, attributeBO);
+                BeanUtilForVCI.convert(attr, attributeBO);
                 attributeBO.setIdUpper(attr.getId().toUpperCase());
                 if(VciQueryWrapperForDO.LC_STATUS_FIELD.equalsIgnoreCase(attributeBO.getId())){
                     attributeBO.setName("鐘舵��");
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsCodeRuleServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/OsCodeRuleServiceImpl.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsCodeRuleServiceImpl.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/OsCodeRuleServiceImpl.java
index 2184b86..86b8ad1 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsCodeRuleServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/OsCodeRuleServiceImpl.java
@@ -1,31 +1,30 @@
 package com.vci.web.service.impl;
 
-import com.vci.constant.FrameWorkDefaultValueConstant;
-import com.vci.constant.FrameWorkDefaultValueConstant;
-import com.vci.frameworkcore.lcstatuspck.FrameworkDataLCStatus;
-import com.vci.model.*;
-import com.vci.starter.web.enumpck.BooleanEnum;
-import com.vci.starter.web.exception.VciBaseException;
-import com.vci.starter.web.pagemodel.DataGrid;
-import com.vci.starter.web.pagemodel.PageHelper;
-import com.vci.starter.web.util.BeanUtil;
-import com.vci.starter.web.util.LangBaseUtil;
-import com.vci.starter.web.util.VciBaseUtil;
-import com.vci.starter.web.util.VciDateUtil;
 import com.vci.bo.OsCodeSerialBuildBO;
-import com.vci.web.dao.*;
+import com.vci.constant.FrameWorkDefaultValueConstant;
 import com.vci.dto.OsCodeEnumDTO;
 import com.vci.dto.OsCodeRuleDTO;
 import com.vci.dto.OsCodeRuleElementDTO;
 import com.vci.dto.OsCodeRuleProduceDTO;
-import com.vci.web.enumpck.OsCodeDateValueTypeEnum;
-import com.vci.web.enumpck.OsCodeElementTypeEnum;
-import com.vci.web.enumpck.OsCodeFillTypeEnum;
-import com.vci.web.enumpck.OsCodeProductTypeEnum;
+import com.vci.enumpck.OsCodeDateValueTypeEnum;
+import com.vci.enumpck.OsCodeElementTypeEnum;
+import com.vci.enumpck.OsCodeFillTypeEnum;
+import com.vci.enumpck.OsCodeProductTypeEnum;
+import com.vci.lcstatuspck.FrameworkDataLCStatus;
+import com.vci.model.*;
 import com.vci.pagemodel.OsCodeEnumVO;
 import com.vci.pagemodel.OsCodeResultVO;
 import com.vci.pagemodel.OsCodeRuleElementVO;
 import com.vci.pagemodel.OsCodeRuleVO;
+import com.vci.starter.web.enumpck.BooleanEnum;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.util.BeanUtilForVCI;
+import com.vci.starter.web.util.LangBaseUtil;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.util.VciDateUtil;
+import com.vci.web.dao.*;
 import com.vci.web.service.OsCodeRuleServiceI;
 import com.vci.web.util.WebUtil;
 import org.apache.commons.lang3.StringUtils;
@@ -561,7 +560,7 @@
             Map<String,List<OsCodeEnumVO>> enumVOMap = new HashMap<String, List<OsCodeEnumVO>>();
             for(OsCodeEnumDO enumDO : existEnumDOs){
                 OsCodeEnumVO enumVO = new OsCodeEnumVO();
-                BeanUtil.convert(enumDO,enumVO);
+                BeanUtilForVCI.convert(enumDO,enumVO);
                 String pkCodeRuleElement = enumVO.getPkCodeRuleElement();
                 List<OsCodeEnumVO> enumVOS = enumVOMap.containsKey(pkCodeRuleElement) ? enumVOMap.get(pkCodeRuleElement) : new ArrayList<OsCodeEnumVO>();
                 enumVOS.add(enumVO);
@@ -584,7 +583,7 @@
     public OsCodeRuleVO codeRuleDO2VO(OsCodeRuleDO ruleDO) {
         OsCodeRuleVO ruleVO = new OsCodeRuleVO();
         if (ruleDO != null) {
-            BeanUtil.convert(ruleDO, ruleVO);
+            BeanUtilForVCI.convert(ruleDO, ruleVO);
             ruleVO.setLcStatusText(FrameworkDataLCStatus.getTextByValue(ruleVO.getLcStatus()));
             ruleVO.setCodeProductTypeText(OsCodeProductTypeEnum.getTextByValue(ruleVO.getCodeProductType()));
         }
@@ -602,7 +601,7 @@
     public OsCodeRuleElementVO codeRuleElementDO2VO(OsCodeRuleElementDO elementDO) {
         OsCodeRuleElementVO elementVO = new OsCodeRuleElementVO();
         if (elementDO != null) {
-            BeanUtil.convert(elementDO, elementVO);
+            BeanUtilForVCI.convert(elementDO, elementVO);
             elementVO.setCodeElementTypeText(OsCodeElementTypeEnum.getTextByValue(elementVO.getCodeElementType()));
             elementVO.setCodeFillTypeText(OsCodeFillTypeEnum.getTextByValue(elementVO.getCodeFillType()));
             elementVO.setCodeDateValueTypeText(OsCodeDateValueTypeEnum.getTextByValue(elementVO.getCodeDateValueType()));
@@ -650,7 +649,7 @@
     public OsCodeRuleVO addRule(OsCodeRuleDTO ruleDTO) {
         VciBaseUtil.alertNotNull(ruleDTO, "鏁版嵁浼犺緭瀵硅薄", ruleDTO.getElements(), "瑙勫垯鐨勫厓绱�");
         OsCodeRuleDO ruleDO = new OsCodeRuleDO();
-        BeanUtil.convert(ruleDTO, ruleDO);
+        BeanUtilForVCI.convert(ruleDTO, ruleDO);
         ruleDO.setOid(VciBaseUtil.getPk());
         List<OsCodeRuleElementDO> elementDOS = new ArrayList<OsCodeRuleElementDO>();
         List<OsCodeEnumDO> enumMapDOs = new ArrayList<OsCodeEnumDO>();
@@ -676,7 +675,7 @@
         if (elementDTOS != null) {
             for (OsCodeRuleElementDTO elementDTO : elementDTOS) {
                 OsCodeRuleElementDO elementDO = new OsCodeRuleElementDO();
-                BeanUtil.convert(elementDTO, elementDO);
+                BeanUtilForVCI.convert(elementDTO, elementDO);
                 elementDO.setPkCodeRule(pkRule);
                 elementDO.setOid(VciBaseUtil.getPk());
                 //闇�瑕佹瘡涓被鍨嬪仛澶勭悊
@@ -710,7 +709,7 @@
                         for(OsCodeEnumDTO enumDTO : enumMaps){
                             VciBaseUtil.alertNotNull(enumDTO.getEnumItemKey(),"鏋氫妇鏄犲皠涓灇涓剧殑鍊�",enumDTO.getCodeMapValue(),"鏋氫妇鏄犲皠鐨勬灇涓惧搴旂殑鏄犲皠鍊�");
                             OsCodeEnumDO enumDO = new OsCodeEnumDO();
-                            BeanUtil.convert(enumDTO,enumDO);
+                            BeanUtilForVCI.convert(enumDTO,enumDO);
                             enumDO.setPkCodeRuleElement(elementDO.getOid());
                             enumMapDOs.add(enumDO);
                         }
@@ -738,7 +737,7 @@
     public OsCodeRuleVO editRule(OsCodeRuleDTO ruleDTO) {
         VciBaseUtil.alertNotNull(ruleDTO, "鏁版嵁浼犺緭瀵硅薄", ruleDTO.getElements(), "瑙勫垯鐨勫厓绱�", ruleDTO.getOid(), "瑙勫垯鐨勪富閿�");
         OsCodeRuleDO ruleDO = selectByOid(ruleDTO.getOid());
-        BeanUtil.convert(ruleDTO,ruleDO);
+        BeanUtilForVCI.convert(ruleDTO,ruleDO);
         List<OsCodeRuleElementDO> existElementDOs = codeRuleElementDao.selectByRuleOid(ruleDO.getOid());
         //鎵緀num鐨勬槑缁嗗唴瀹癸紝涔熸槸瑕佸垹闄ょ殑
         List<OsCodeEnumDO> existEnumDOs = codeEnumDao.selectByRuleOid(ruleDO.getOid());
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmRoleQueryServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/SmRoleQueryServiceImpl.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmRoleQueryServiceImpl.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/SmRoleQueryServiceImpl.java
index 1c44f0d..11dca6e 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmRoleQueryServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/SmRoleQueryServiceImpl.java
@@ -1,16 +1,15 @@
-package com.vci.frameworkcore.compatibility.impl;
+package com.vci.web.service.impl;
 
 import com.vci.constant.FrameWorkBtmTypeConstant;
 import com.vci.corba.common.PLException;
 import com.vci.corba.common.data.UserEntityInfo;
 import com.vci.corba.framework.data.RoleInfo;
 import com.vci.corba.omd.data.BusinessObject;
-import com.vci.frameworkcore.compatibility.SmRoleQueryServiceI;
-import com.vci.constant.FrameWorkBtmTypeConstant;
+import com.vci.web.service.SmRoleQueryServiceI;
 import com.vci.dto.SmRoleDTO;
-import com.vci.frameworkcore.compatibility.SmUserQueryServiceI;
-import com.vci.frameworkcore.enumpck.RoleClassifyEnum;
-import com.vci.frameworkcore.enumpck.RoleControlAreaEnum;
+import com.vci.web.service.SmUserQueryServiceI;
+import com.vci.enumpck.UI.RoleClassifyEnum;
+import com.vci.enumpck.UI.RoleControlAreaEnum;
 import com.vci.model.SmRoleForPlatform1;
 import com.vci.pagemodel.SmUserVO;
 import com.vci.po.SmRolePO;
@@ -23,13 +22,13 @@
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.*;
 import com.vci.starter.web.util.LangBaseUtil;
-import com.vci.web.util.BeanUtil;
+import com.vci.starter.web.util.Lcm.BeanUtil;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.starter.web.util.WebThreadLocalUtil;
 import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
-import com.vci.web.enumpck.UserTypeEnum;
+import com.vci.enumpck.UserTypeEnum;
 import com.vci.web.service.WebBoServiceI;
-import com.vci.web.util.Func;
+import com.vci.starter.web.util.Lcm.Func;
 import com.vci.web.util.PlatformClientUtil;
 import com.vci.web.util.WebUtil;
 import org.apache.commons.lang3.StringUtils;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/SmUserQueryServiceImpl.java
similarity index 94%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/SmUserQueryServiceImpl.java
index 701a213..5cca29c 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/SmUserQueryServiceImpl.java
@@ -1,30 +1,27 @@
-package com.vci.frameworkcore.compatibility.impl;
+package com.vci.web.service.impl;
 
+import com.vci.common.util.ThreeDES;
 import com.vci.common.utility.ObjectUtility;
+import com.vci.corba.common.PLException;
+import com.vci.corba.common.data.UserEntityInfo;
 import com.vci.corba.framework.data.DeptInfo;
 import com.vci.corba.framework.data.RoleInfo;
+import com.vci.corba.framework.data.UserInfo;
 import com.vci.corba.framework.data.UserLogonInfo;
+import com.vci.corba.omd.data.BusinessObject;
 import com.vci.corba.omd.etm.EnumItem;
 import com.vci.corba.omd.etm.EnumType;
 import com.vci.dto.SmUserDTO;
-import com.vci.common.util.ThreeDES;
-import com.vci.corba.common.PLException;
-import com.vci.corba.common.data.UserEntityInfo;
-import com.vci.corba.framework.data.UserInfo;
-import com.vci.corba.omd.data.BusinessObject;
-import com.vci.frameworkcore.compatibility.OrgDeptQueryServiceI;
-import com.vci.frameworkcore.compatibility.SmPwdStrategyQueryServiceI;
-import com.vci.frameworkcore.compatibility.SmRoleQueryServiceI;
-import com.vci.frameworkcore.compatibility.SmUserQueryServiceI;
-import com.vci.frameworkcore.enumpck.OrgTypeEnum;
+import com.vci.enumpck.UI.OrgTypeEnum;
+import com.vci.enumpck.UserTypeEnum;
 import com.vci.model.SmUserDO;
-import com.vci.pagemodel.SmUserVO;
-import com.vci.po.SmUserPO;
+import com.vci.omd.utils.ObjectTool;
 import com.vci.pagemodel.OrgDepartmentVO;
 import com.vci.pagemodel.SmPasswordStrategyVO;
 import com.vci.pagemodel.SmRoleVO;
-import com.vci.frameworkcore.properties.ConfigCorbaReader;
-import com.vci.omd.utils.ObjectTool;
+import com.vci.pagemodel.SmUserVO;
+import com.vci.po.SmUserPO;
+import com.vci.properties.OsConfig;
 import com.vci.starter.poi.bo.ReadExcelOption;
 import com.vci.starter.poi.bo.WriteExcelData;
 import com.vci.starter.poi.bo.WriteExcelOption;
@@ -35,10 +32,9 @@
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.*;
 import com.vci.starter.web.util.*;
+import com.vci.starter.web.util.Lcm.Func;
 import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
-import com.vci.web.enumpck.UserTypeEnum;
-import com.vci.web.service.WebBoServiceI;
-import com.vci.web.util.Func;
+import com.vci.web.service.*;
 import com.vci.web.util.PlatformClientUtil;
 import com.vci.web.util.WebUtil;
 import org.apache.commons.lang3.StringUtils;
@@ -53,8 +49,6 @@
 import java.io.File;
 import java.util.*;
 import java.util.stream.Collectors;
-
-import static com.vci.web.util.WebUtil.arryAndSqlToBusinessObject;
 
 /**
  * 鐢ㄦ埛鐨勬煡璇㈢浉鍏崇殑鏈嶅姟锛屽彲浠ュ吋瀹硅�佸钩鍙板拰鑰佺殑pdm
@@ -94,7 +88,7 @@
 	 * 瀵嗙爜绛栫暐鏌ヨ鏈嶅姟
 	 */
 	@Autowired
-	private SmPwdStrategyQueryServiceI smPwdStrategyQueryService;
+	private WebPwdStrategyQueryServiceI smPwdStrategyQueryService;
 
 	/**
 	 * 浣跨敤瑙掕壊鐨勫睘鎬ф煡璇㈢敤鎴锋椂
@@ -150,6 +144,11 @@
 	 * 鏃ュ織
 	 */
 	private Logger logger = LoggerFactory.getLogger(getClass());
+
+	/**
+	 * 骞冲彴閰嶇疆
+	 */
+	private OsConfig osConfig;
 
 	/**
 	 * 妫�鏌ョ敤鎴锋槸鍚﹀瓨鍦紝鍙互鏍规嵁鐢ㄦ埛鍚嶏紝涔熷彲浠ユ牴鎹敤鎴穙id
@@ -209,7 +208,7 @@
 		try{
 			String[][] sqlQueryResult = platformClientUtil.getBOFService().getSqlQueryResult(sql + fromSql, null);
 			if(sqlQueryResult.length>0){
-				BusinessObject cbo = arryAndSqlToBusinessObject(queryWrapper.getSelectFieldSql(),sqlQueryResult[0]);
+				BusinessObject cbo = WebUtil.arryAndSqlToBusinessObject(queryWrapper.getSelectFieldSql(),sqlQueryResult[0]);
 				return cbo2VO(cbo);
 			}
 		}catch (Exception e){
@@ -254,7 +253,7 @@
      * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮暟鎹簱瀛樺湪闂鐨勬椂鍊欎細鎶涘嚭寮傚父
      */
 	@Override
-	public List<SmUserVO> listUserByUserIds(Collection<String> userIdCollections)throws VciBaseException {
+	public List<SmUserVO> listUserByUserIds(Collection<String> userIdCollections) {
 		WebUtil.alertNotNull(userIdCollections,"鐢ㄦ埛鍚嶉泦鍚�");
 		try {
 			UserInfo[] userInfo = platformClientUtil.getFrameworkService().fetchUserInfoByNames(VciBaseUtil.collection2StrArr(userIdCollections));
@@ -271,7 +270,7 @@
      * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮暟鎹簱瀛樺湪闂鐨勬椂鍊欎細鎶涘嚭寮傚父
      */
 	@Override
-	public SmUserVO getUserByUserOid(String userOid) throws VciBaseException {
+	public SmUserVO getUserByUserOid(String userOid) {
 		WebUtil.alertNotNull(userOid,"鐢ㄦ埛涓婚敭");
         try {
             UserInfo userInfo = platformClientUtil.getFrameworkService().getUserObjectByoid(userOid);
@@ -288,7 +287,7 @@
      * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮暟鎹簱瀛樺湪闂鐨勬椂鍊欎細鎶涘嚭寮傚父
      */
 	@Override
-	public List<SmUserVO> listUserByUserOids(Collection<String> userOidCollections) throws VciBaseException {
+	public List<SmUserVO> listUserByUserOids(Collection<String> userOidCollections) {
 		WebUtil.alertNotNull(userOidCollections,"鐢ㄦ埛涓婚敭闆嗗悎");
         try {
             UserInfo[] userInfoArr = platformClientUtil.getFrameworkService().getUserObjectByoids(VciBaseUtil.collection2StrArr(userOidCollections));
@@ -388,7 +387,7 @@
 		//涓撲笟
 		smUserVO.setSpecialties(userInfo.specialties);
 		UserLogonInfo lockObj = platformClientUtil.getFrameworkService().fetchUserLogonObj(userInfo.id);
-		smUserVO.setLockFlag(lockObj.plWrongNum == 0);
+		smUserVO.setLockFlag(lockObj.plWrongNum != 0);
 		smUserVO.setCreator(userInfo.createUser);
 		smUserVO.setCreateTime(VciDateUtil.long2Date(userInfo.createTime));
 		smUserVO.setLastModifier(userInfo.updateUser);
@@ -417,7 +416,7 @@
 	 */
 	private SmUserVO smUserDO2VO(SmUserDO smUserDO){
 		SmUserVO smUserVO = new SmUserVO();
-		BeanUtil.convert(smUserDO,smUserVO);
+		BeanUtilForVCI.convert(smUserDO,smUserVO);
 		return smUserVO;
 	}
 
@@ -465,7 +464,7 @@
 		}else{
 			userDO.setLockFlag(BooleanEnum.TRUE.getValue());
 		}
-		BeanUtil.convert(userDO,userVO);
+		BeanUtilForVCI.convert(userDO,userVO);
 		return userVO;
 	}
 
@@ -532,44 +531,49 @@
 	 * @return
 	 */
 	@Override
-	public DataGrid<SmUserVO> getDataGridUsers(Map<String, String> conditionMap, PageHelper pageHelper) throws PLException {
+	public DataGrid<SmUserVO> getDataGridUsers(Map<String, String> conditionMap, PageHelper pageHelper) {
 		if(pageHelper == null){
 			pageHelper = new PageHelper(-1);
 		}
 		pageHelper.addDefaultAsc("PLTRUENAME");
 		String loginUserId = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId();
-		//String loginUserId = "Ludc";
-		//鍒嗛〉鏌ヨ
-		UserInfo[] userInfos = platformClientUtil.getFrameworkService().fetchUserInfoByCondition(
-				conditionMap.get("name"),
-				conditionMap.get("id"),
-				conditionMap.get("pkDepartment"),
-				conditionMap.get("pkPerson"),
-				loginUserId,  //褰撳墠鐧诲綍鐨勭敤鎴峰悕
-				pageHelper.getPage(),
-				pageHelper.getLimit()
-		);
-		DataGrid<SmUserVO> dataGrid = new DataGrid<>();
-		if(Func.isNotEmpty(userInfos)){
-			List<String> idList = Arrays.stream(userInfos).map(item -> item.id).collect(Collectors.toList());
-			orgDepartmentVOMap = orgDeptQueryService.batchMapDeptNameByUserOids(idList, null);
-			smRoleVOMap = smRoleQueryService.batchListRoleByUserOids(idList,null);
-			smPwdStrategyVOMap = smPwdStrategyQueryService.batchSmPwdStrategyByUserOids(idList);
-			dataGrid.setData(userInfoArr2VO(userInfos));
-			//鐢ㄥ畬浜嗘竻绌�
-			orgDepartmentVOMap = null;
-			smRoleVOMap = null;
-			smPwdStrategyVOMap = null;
-			//TODO: 杩欎釜缁熻鎬绘暟鏈夐棶棰橈紝甯﹁繃鍘荤殑鍙傛暟涓嶈兘鍍忎笂闈㈤偅涓猣etchUserInfoByCondition鏌ヨ涓�鏍风粺璁$殑鍗寸殑鎬绘暟
-			dataGrid.setTotal(
-					platformClientUtil.getFrameworkService().getUserTotalByCondition(
-						conditionMap.get("name"),
-						conditionMap.get("id"),
-						conditionMap.get("pkDepartment"),
-						conditionMap.get("pkPerson"),
-						loginUserId  //褰撳墠鐧诲綍鐨勭敤鎴峰悕
-					)
+		DataGrid<SmUserVO> dataGrid = null;
+		try {
+			//String loginUserId = "Ludc";
+			//鍒嗛〉鏌ヨ
+			UserInfo[] userInfos = platformClientUtil.getFrameworkService().fetchUserInfoByCondition(
+					conditionMap.get("name"),
+					conditionMap.get("id"),
+					conditionMap.get("pkDepartment"),
+					conditionMap.get("pkPerson"),
+					loginUserId,  //褰撳墠鐧诲綍鐨勭敤鎴峰悕
+					pageHelper.getPage(),
+					pageHelper.getLimit()
 			);
+			dataGrid = new DataGrid<>();
+			if(Func.isNotEmpty(userInfos)){
+				List<String> idList = Arrays.stream(userInfos).map(item -> item.id).collect(Collectors.toList());
+				orgDepartmentVOMap = orgDeptQueryService.batchMapDeptNameByUserOids(idList, null);
+				smRoleVOMap = smRoleQueryService.batchListRoleByUserOids(idList,null);
+				smPwdStrategyVOMap = smPwdStrategyQueryService.batchSmPwdStrategyByUserOids(idList);
+				dataGrid.setData(userInfoArr2VO(userInfos));
+				//鐢ㄥ畬浜嗘竻绌�
+				orgDepartmentVOMap = null;
+				smRoleVOMap = null;
+				smPwdStrategyVOMap = null;
+				//TODO: 杩欎釜缁熻鎬绘暟鏈夐棶棰橈紝甯﹁繃鍘荤殑鍙傛暟涓嶈兘鍍忎笂闈㈤偅涓猣etchUserInfoByCondition鏌ヨ涓�鏍风粺璁$殑鍗寸殑鎬绘暟
+				dataGrid.setTotal(
+						platformClientUtil.getFrameworkService().getUserTotalByCondition(
+							conditionMap.get("name"),
+							conditionMap.get("id"),
+							conditionMap.get("pkDepartment"),
+							conditionMap.get("pkPerson"),
+							loginUserId  //褰撳墠鐧诲綍鐨勭敤鎴峰悕
+						)
+				);
+			}
+		} catch (Exception e) {
+			throw new VciBaseException("鑾峰彇鐢ㄦ埛鍒楄〃澶辫触锛�", new Object[]{}, e);
 		}
 		return dataGrid;
 	}
@@ -625,7 +629,7 @@
 	 * @throws VciBaseException
 	 */
 	@Override
-	public List<SmUserVO> countSmUserByDeptOid(String deptOid, Map<String, String> queryMap) throws VciBaseException {
+	public List<SmUserVO> countSmUserByDeptOid(String deptOid, Map<String, String> queryMap) {
 		//鏄惁鏌ヨ瀛愰儴闂ㄤ笅鍏宠仈鐨勭敤鎴�
 		List<OrgDepartmentVO> orgDepartmentVOList = orgDeptQueryService.listAllLevelChildrenDeptByParentOid(deptOid, null);
 		List<String> deptOidCollection = orgDepartmentVOList.stream().map(OrgDepartmentVO::getOid).collect(Collectors.toList());
@@ -658,7 +662,7 @@
      * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
      */
 	@Override
-	public List<SmUserVO> listUserByDeptOid(String deptOid, Map<String, String> queryMap) throws VciBaseException {
+	public List<SmUserVO> listUserByDeptOid(String deptOid, Map<String, String> queryMap) {
 		//鏌ヨ褰撳墠閫変腑鐨勯儴闂ㄤ笅鐨勭敤鎴�
 		return listUserVOByDeptOid(queryMap,Arrays.asList(deptOid),false );
 	}
@@ -671,7 +675,7 @@
 	 * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
 	 */
 	@Override
-	public List<SmUserVO> listUserUnInDeptOid(String deptOid, Map<String, String> queryMap) throws VciBaseException {
+	public List<SmUserVO> listUserUnInDeptOid(String deptOid, Map<String, String> queryMap) {
 		// TODO:鏍规嵁褰撳墠鐧诲綍鐨勭敤鎴峰喅瀹氳兘鏌ラ偅浜涚敤鎴�
 		String userType = "0";//WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUsertype();
 		//鏍规嵁褰撳墠鐧诲綍鐨勭敤鎴风被鍨嬩笉鍚岋紝鏌ヨ涓嶅悓鐨勭敤鎴�
@@ -790,7 +794,7 @@
      */
 	@Override
 	public Map<String, List<SmUserVO>> batchListUserByDeptOids(
-			Collection<String> deptOidCollection) throws VciBaseException {
+			Collection<String> deptOidCollection) {
 		if(CollectionUtils.isEmpty(deptOidCollection)){
 			return new HashMap<>();
 		}
@@ -810,7 +814,7 @@
      */
 	@Override
 	public List<SmUserVO> listUserByRoleOid(String roleOid,
-			Map<String, String> queryMap) throws VciBaseException {
+			Map<String, String> queryMap) {
 		return listUserVOByRoleOid(queryMap,roleOid,false);
 	}
 
@@ -823,7 +827,7 @@
      */
 	@Override
 	public List<SmUserVO> listUserUnInRoleOid(String roleOid,
-			Map<String, String> queryMap) throws VciBaseException {
+			Map<String, String> queryMap) {
 		// TODO:鏍规嵁褰撳墠鐧诲綍鐨勭敤鎴峰喅瀹氳兘鏌ラ偅浜涚敤鎴�
 		String usertype = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUsertype();
 		//鏍规嵁褰撳墠鐧诲綍鐨勭敤鎴风被鍨嬩笉鍚岋紝鏌ヨ涓嶅悓鐨勭敤鎴�
@@ -882,7 +886,7 @@
      */
 	@Override
 	public Map<String, List<SmUserVO>> batchListUserByRoleOids(
-			Collection<String> roleOidCollection) throws VciBaseException {
+			Collection<String> roleOidCollection) {
 		if(CollectionUtils.isEmpty(roleOidCollection)){
 			return new HashMap<>();
 		}
@@ -928,7 +932,7 @@
      */
 	@Override
 	public DataGrid<SmUserVO> refGridUsers(Map<String, String> queryMap,
-			PageHelper pageHelper) throws VciBaseException {
+			PageHelper pageHelper) {
 		return gridUserByQueryField(null,null,queryMap,pageHelper,false);
 	}
 
@@ -939,8 +943,7 @@
      * @throws VciBaseException 鏌ヨ鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
      */
 	@Override
-	public List<Tree> refTreeUsers(TreeQueryObject treeQueryObject)
-			throws VciBaseException {
+	public List<Tree> refTreeUsers(TreeQueryObject treeQueryObject) {
 		VciQueryWrapperForDO queryWrapper = getQueryWrapper(null, null, treeQueryObject.getConditionMap(), null, false);
 		queryWrapper.wrapperSql();
 		String sql =  queryWrapper.getSelectFieldSql();
@@ -972,7 +975,7 @@
 	 * @throws VciBaseException
 	 */
 	@Override
-	public List<Tree> refPersonOrgTree(TreeQueryObject treeQueryObject) throws VciBaseException {
+	public List<Tree> refPersonOrgTree(TreeQueryObject treeQueryObject) {
 		List<Tree> rootTreeList=new ArrayList<>();
 	 	Map<String,String> conditionMap=treeQueryObject.getConditionMap();
 	 	if(CollectionUtils.isEmpty(conditionMap)) {
@@ -1254,8 +1257,7 @@
      * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呭瓨鍌ㄥ埌鏁版嵁搴撲腑鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
      */
 	@Override
-	public void updateUserPwdWrongCount(String userOid, int wrongCount)
-			throws VciBaseException {
+	public void updateUserPwdWrongCount(String userOid, int wrongCount){
 		WebUtil.alertNotNull(userOid,"鐢ㄦ埛涓婚敭");
 		String sql = "update pllogoninfo set plwrongnum = " + wrongCount +" where pluserid ='" + userOid + "'";
 		try {
@@ -1271,7 +1273,7 @@
      * @throws VciBaseException 鍙傛暟涓虹┖鐨勬椂鍊欎細鎶涘嚭寮傚父
      */
 	@Override
-	public void updateUserLoginTime(String userOid) throws VciBaseException {
+	public void updateUserLoginTime(String userOid) {
 		WebUtil.alertNotNull(userOid,"鐢ㄦ埛涓婚敭");
 		String sql = "update pllogoninfo set pllogontime = sysdate where pluserid ='" + userOid + "'";
 		try {
@@ -1501,8 +1503,7 @@
 		// 璁剧疆琛ㄥ崟鍒楀悕
 		List<String> columns = new ArrayList<>(Arrays.asList("璐﹀彿", "瀵嗙爜", "濮撳悕", "鐢靛瓙閭", "涓撲笟", "鎻忚堪", "閮ㄩ棬(涓婁笅绾ч儴闂ㄤ箣闂翠互鍙嶆枩鏉犻殧寮�(/))"));
 		//鑾峰彇鏄惁瀵煎嚭瀵嗙骇閰嶇疆椤�
-		String flag = ConfigCorbaReader.getConfigValue("exportSecretGrade");
-		if (flag != null && flag.equalsIgnoreCase("true")) {
+		if (osConfig.isExportSecretGrade()) {
 			columns = new ArrayList<>(Arrays.asList("璐﹀彿", "瀵嗙爜", "濮撳悕", "鐢靛瓙閭", "涓撲笟", "鎻忚堪", "閮ㄩ棬(涓婁笅绾ч儴闂ㄤ箣闂翠互鍙嶆枩鏉犻殧寮�(/))" ,"瀵嗙骇"));
 		}
 		//璁剧疆蹇呭~鍒�
@@ -1553,7 +1554,7 @@
 			String loginUserId = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId();
 			UserEntityInfo userEntityInfo = new UserEntityInfo(loginUserId,null);
 			//鏄惁瀵煎叆瀵嗙骇閰嶇疆
-			boolean exportSecretGrade = Boolean.parseBoolean(ConfigCorbaReader.getConfigValue("exportSecretGrade"));
+			boolean exportSecretGrade = osConfig.isExportSecretGrade();
 			List<SmUserPO> poList = ExcelUtil.readDataObjectFromExcel(file, SmUserPO.class,excelOption,(value, po, fieldName)->{
 				Integer secretValue = UserSecretEnum.getSecretValueByText(po.getSecretGradeText());
 				//鏄惁蹇呴』瀵煎叆瀵嗙骇
@@ -1606,7 +1607,7 @@
 			//淇濆瓨閫昏緫
 			poList.stream().forEach(smUserPO->{
 				SmUserDTO smUserDTO = new SmUserDTO();
-				BeanUtil.convert(smUserPO,smUserDTO);
+				BeanUtilForVCI.convert(smUserPO,smUserDTO);
 				//鐢ㄦ埛淇℃伅鏄惁瑙勮寖妫�鏌�
 				this.check(smUserDTO,true,true);
 				//鐢熸垚瀛樺偍鐨凞O瀵硅薄
@@ -1649,7 +1650,7 @@
 	 * @return
 	 */
 	@Override
-	public List<String> queryUserNameByRoleType(String roleType) throws PLException {
+	public List<String> queryUserNameByRoleType(String roleType) {
 		List<String> userNameList = new ArrayList<>();
 		if(Func.isBlank(roleType)){
 			return userNameList;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WFWorkflowNodeFavItemServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WFWorkflowNodeFavItemServiceImpl.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WFWorkflowNodeFavItemServiceImpl.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WFWorkflowNodeFavItemServiceImpl.java
index 96652a4..699aa13 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WFWorkflowNodeFavItemServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WFWorkflowNodeFavItemServiceImpl.java
@@ -1,5 +1,9 @@
 package com.vci.web.service.impl;
 
+import com.vci.dto.WFWorkflowNodeFavItemDTO;
+import com.vci.model.WFWorkflowNodeFavItemDO;
+import com.vci.pagemodel.BatchCBO;
+import com.vci.pagemodel.WFWorkflowNodeFavItemVO;
 import com.vci.starter.revision.service.RevisionModelUtil;
 import com.vci.starter.web.annotation.bus.VciChangeDocument;
 import com.vci.starter.web.enumpck.VciChangeDocumentTypeEnum;
@@ -7,14 +11,10 @@
 import com.vci.starter.web.pagemodel.BaseResult;
 import com.vci.starter.web.pagemodel.DataGrid;
 import com.vci.starter.web.pagemodel.PageHelper;
-import com.vci.starter.web.util.BeanUtil;
+import com.vci.starter.web.util.BeanUtilForVCI;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
 import com.vci.web.dao.WFWorkflowNodeFavItemDaoI;
-import com.vci.dto.WFWorkflowNodeFavItemDTO;
-import com.vci.model.WFWorkflowNodeFavItemDO;
-import com.vci.pagemodel.BatchCBO;
-import com.vci.pagemodel.WFWorkflowNodeFavItemVO;
 import com.vci.web.service.WFWorkflowNodeFavItemServiceI;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -109,7 +109,7 @@
     public  WFWorkflowNodeFavItemVO wFWorkflowNodeFavItemDO2VO(WFWorkflowNodeFavItemDO wFWorkflowNodeFavItemDO) throws VciBaseException{
         WFWorkflowNodeFavItemVO vo = new WFWorkflowNodeFavItemVO();
         if(wFWorkflowNodeFavItemDO != null){
-            BeanUtil.convert(wFWorkflowNodeFavItemDO,vo);
+            BeanUtilForVCI.convert(wFWorkflowNodeFavItemDO,vo);
             //杩橀渶瑕佸鐞嗘灇涓剧瓑鍏朵粬鐨勫唴瀹�
         }
         return vo;
@@ -128,7 +128,7 @@
         VciBaseUtil.alertNotNull(wFWorkflowNodeFavItemDTO,"闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄");
         //灏咲TO杞崲涓篋O
         WFWorkflowNodeFavItemDO wFWorkflowNodeFavItemDO = new WFWorkflowNodeFavItemDO();
-        BeanUtil.convert(wFWorkflowNodeFavItemDTO,wFWorkflowNodeFavItemDO);
+        BeanUtilForVCI.convert(wFWorkflowNodeFavItemDTO,wFWorkflowNodeFavItemDO);
 
         revisionModelUtil.wrapperForAdd(wFWorkflowNodeFavItemDO);
         BatchCBO batchCBO = wFWorkflowNodeFavItemMapper.insert(wFWorkflowNodeFavItemDO);
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WFWorkflowNodeFavServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WFWorkflowNodeFavServiceImpl.java
similarity index 97%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WFWorkflowNodeFavServiceImpl.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WFWorkflowNodeFavServiceImpl.java
index 180de6b..6379d4e 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WFWorkflowNodeFavServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WFWorkflowNodeFavServiceImpl.java
@@ -1,5 +1,11 @@
 package com.vci.web.service.impl;
 
+import com.vci.dto.WFWorkflowNodeFavDTO;
+import com.vci.model.WFWorkflowNodeFavDO;
+import com.vci.model.WFWorkflowNodeFavItemDO;
+import com.vci.pagemodel.BatchCBO;
+import com.vci.pagemodel.WFWorkflowNodeFavItemVO;
+import com.vci.pagemodel.WFWorkflowNodeFavVO;
 import com.vci.starter.revision.service.RevisionModelUtil;
 import com.vci.starter.web.annotation.bus.VciChangeDocument;
 import com.vci.starter.web.enumpck.VciChangeDocumentTypeEnum;
@@ -7,17 +13,11 @@
 import com.vci.starter.web.pagemodel.BaseResult;
 import com.vci.starter.web.pagemodel.DataGrid;
 import com.vci.starter.web.pagemodel.PageHelper;
-import com.vci.starter.web.util.BeanUtil;
+import com.vci.starter.web.util.BeanUtilForVCI;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
 import com.vci.web.dao.WFWorkflowNodeFavDaoI;
 import com.vci.web.dao.WFWorkflowNodeFavItemDaoI;
-import com.vci.dto.WFWorkflowNodeFavDTO;
-import com.vci.model.WFWorkflowNodeFavDO;
-import com.vci.model.WFWorkflowNodeFavItemDO;
-import com.vci.pagemodel.BatchCBO;
-import com.vci.pagemodel.WFWorkflowNodeFavItemVO;
-import com.vci.pagemodel.WFWorkflowNodeFavVO;
 import com.vci.web.service.WFWorkflowNodeFavItemServiceI;
 import com.vci.web.service.WFWorkflowNodeFavServiceI;
 import org.apache.commons.lang3.StringUtils;
@@ -127,7 +127,7 @@
     public  WFWorkflowNodeFavVO wFWorkflowNodeFavDO2VO(WFWorkflowNodeFavDO wFWorkflowNodeFavDO) throws VciBaseException{
         WFWorkflowNodeFavVO vo = new WFWorkflowNodeFavVO();
         if(wFWorkflowNodeFavDO != null){
-            BeanUtil.convert(wFWorkflowNodeFavDO,vo);
+            BeanUtilForVCI.convert(wFWorkflowNodeFavDO,vo);
             //杩橀渶瑕佸鐞嗘灇涓剧瓑鍏朵粬鐨勫唴瀹�
         }
         return vo;
@@ -161,7 +161,7 @@
         }else{
             //灏咲TO杞崲涓篋O
             WFWorkflowNodeFavDO wFWorkflowNodeFavDO = new WFWorkflowNodeFavDO();
-            BeanUtil.convert(wFWorkflowNodeFavDTO,wFWorkflowNodeFavDO);
+            BeanUtilForVCI.convert(wFWorkflowNodeFavDTO,wFWorkflowNodeFavDO);
             wFWorkflowNodeFavDO.setUserId(userId);
             revisionModelUtil.wrapperForAdd(wFWorkflowNodeFavDO);
             wFWorkflowNodeFavMapper.insert(wFWorkflowNodeFavDO);
@@ -170,7 +170,7 @@
         String schemaOid = favDO.getOid();
         wFWorkflowNodeFavDTO.getItems().stream().forEach(item->{
             WFWorkflowNodeFavItemDO itemDO = new WFWorkflowNodeFavItemDO();
-            BeanUtil.convert(item,itemDO);
+            BeanUtilForVCI.convert(item,itemDO);
             itemDO.setWorkflowNodeFavOid(schemaOid);
             newItems.add(itemDO);
         });
@@ -211,7 +211,7 @@
                 List<WFWorkflowNodeFavItemDO> newItems = new ArrayList<>();
                 wFWorkflowNodeFavDTO.getItems().stream().forEach(item -> {
                     WFWorkflowNodeFavItemDO itemDO = new WFWorkflowNodeFavItemDO();
-                    BeanUtil.convert(item, itemDO);
+                    BeanUtilForVCI.convert(item, itemDO);
                     itemDO.setWorkflowNodeFavOid(wFWorkflowNodeFavDO.getOid());
                     newItems.add(itemDO);
                 });
diff --git a/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebAttributeServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebAttributeServiceImpl.java
new file mode 100644
index 0000000..a0d43f9
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebAttributeServiceImpl.java
@@ -0,0 +1,257 @@
+package com.vci.web.service.impl;
+
+import com.vci.corba.common.PLException;
+import com.vci.corba.omd.atm.AttributeDef;
+import com.vci.enumpck.UI.ItemTypeEnum;
+import com.vci.pagemodel.OsAttributeVO;
+import com.vci.starter.web.annotation.log.VciUnLog;
+import com.vci.starter.web.enumpck.VciFieldTypeEnum;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.util.Lcm.Func;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.util.VciDateUtil;
+import com.vci.web.service.WebAttributeServiceI;
+import com.vci.web.util.PlatformClientUtil;
+import com.vci.web.util.WebUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @Description 灞炴�ф湇鍔�
+ * @Author dangsn
+ * @Date 2024/11/28 14:26
+ */
+@Service
+public class WebAttributeServiceImpl implements WebAttributeServiceI {
+    /**
+     * 鏃ュ織
+     */
+    private Logger logger = LoggerFactory.getLogger(getClass());
+
+    /**
+     * 骞冲彴鐨勮皟鐢ㄥ伐鍏风被
+     */
+    @Autowired
+    private PlatformClientUtil platformClientUtil;
+
+    /**
+     * 浣跨敤灞炴�х紪鍙疯幏鍙栧璞�--鎵归噺
+     *
+     * @param attrCodes 灞炴�х殑鑻辨枃鍚嶇О
+     * @return 灞炴�х殑鏄剧ず瀵硅薄
+     */
+    @Override
+    public List<OsAttributeVO> listAttrByIds(Collection<String> attrCodes) {
+        if(CollectionUtils.isEmpty(attrCodes)){
+            return null;
+        }
+        Map<String, OsAttributeVO> attributeVOMap = selectAllAttributeMap();
+        List<OsAttributeVO> attributeVOS = new ArrayList<>();
+        attrCodes.stream().forEach(attrCode->{
+            OsAttributeVO attributeVO = attributeVOMap.getOrDefault(attrCode.toLowerCase(),null);
+            if(attributeVO!=null){
+                attributeVOS.add(attributeVO);
+            }
+        });
+        return attributeVOS;
+    }
+
+    /**
+     * 浣跨敤灞炴�х紪鍙疯幏鍙栧璞�--鎵归噺
+     *
+     * @param attrCodes 灞炴�х殑鑻辨枃鍚嶇О
+     * @param attributeVOMap 灞炴�у璞�
+     * @return 灞炴�х殑鏄剧ず瀵硅薄
+     */
+    @Override
+    public List<OsAttributeVO> listAttrByIds(Collection<String> attrCodes,Map<String, OsAttributeVO> attributeVOMap) {
+        if(CollectionUtils.isEmpty(attrCodes)){
+            return null;
+        }
+        if(attributeVOMap == null){
+            attributeVOMap = selectAllAttributeMap();
+        }
+        List<OsAttributeVO> attributeVOS = new ArrayList<>();
+        Map<String, OsAttributeVO> finalAttributeVOMap = attributeVOMap;
+        attrCodes.stream().forEach(attrCode->{
+            OsAttributeVO attributeVO = finalAttributeVOMap.getOrDefault(attrCode.toLowerCase(),null);
+            if(attributeVO!=null){
+                attributeVOS.add(attributeVO);
+            }
+        });
+        return attributeVOS;
+    }
+
+    /**
+     * 鏌ヨ鎵�鏈夌殑灞炴��
+     *
+     * @return 灞炴�х殑鏄剧ず瀵硅薄
+     */
+    @Override
+    public List<OsAttributeVO> selectAllAttribute() {
+        //鍚庨潰涓や釜鍒嗛〉鏁帮紝瀹屽叏娌℃湁鐢�
+        try {
+            return attributeDO2VOs(Arrays.stream(platformClientUtil.getAttributeService().getAttributeDefs("",1,1)).collect(Collectors.toList()));
+        } catch (PLException vciError) {
+            throw WebUtil.getVciBaseException(vciError);
+        }
+    }
+
+    /**
+     * 鏌ヨ鎵�鏈夌殑灞炴�ф槧灏�
+     *
+     * @return key鏄睘鎬х殑鑻辨枃鍚嶇О灏忓啓锛寁alue鏄睘鎬х殑鏄剧ず瀵硅薄
+     */
+    @Override
+    @VciUnLog
+    public Map<String, OsAttributeVO> selectAllAttributeMap() {
+        return Optional.ofNullable(selectAllAttribute()).orElseGet(()->new ArrayList<>()).stream().collect(Collectors.toMap(s->s.getId().toLowerCase(),t->t,(o1,o2)->o1));
+    }
+
+    /**
+     * 灞炴�х殑鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+     *
+     * @param attribItems 鏁版嵁瀵硅薄
+     * @return 鏄剧ず瀵硅薄
+     */
+    @Override
+    public List<OsAttributeVO> attributeDO2VOs(Collection<AttributeDef> attribItems) {
+        List<OsAttributeVO> vos = new ArrayList<>();
+        Optional.ofNullable(attribItems).orElseGet(()->new ArrayList<>()).stream().forEach(attribItem -> {
+            vos.add(attributeDO2VO(attribItem));
+        });
+        return vos;
+    }
+
+    /**
+     * 灞炴�х殑鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+     *
+     * @param attribItem 鏁版嵁瀵硅薄
+     * @return 鏄剧ず瀵硅薄
+     */
+    @Override
+    public OsAttributeVO attributeDO2VO(AttributeDef attribItem) {
+        OsAttributeVO attributeVO = new OsAttributeVO();
+        if(attribItem!=null){
+            attributeVO.setOid(attribItem.oid);
+            attributeVO.setId(attribItem.name);
+            attributeVO.setCreator(attribItem.creator);
+            try {
+                attributeVO.setCreateTime(new Date(attribItem.createTime));
+                attributeVO.setLastModifyTime(new Date(attribItem.modifyTime));
+                attributeVO.setTs(VciDateUtil.str2Date(attribItem.ts,VciDateUtil.DateTimeMillFormat));
+            }catch (Throwable e){
+                e.printStackTrace();
+                String errorLog = "灞炴�O杞琕O鏃跺嚭閿欙紝鍘熷洜锛�"+ VciBaseUtil.getExceptionMessage(e);
+                logger.error(errorLog);
+                throw new VciBaseException(errorLog);
+            }
+            attributeVO.setLastModifier(attribItem.modifier);
+            attributeVO.setName(attribItem.label);
+            attributeVO.setDescription(attribItem.description);
+            attributeVO.setAttributeDataType(attribItem.vtDataType);
+            attributeVO.setAttributeDataTypeText(VciFieldTypeEnum.getTextByValue(attribItem.vtDataType));
+            //鑾峰彇UI灞炴�х被鍨�
+            attributeVO.setAttributeUIType(ItemTypeEnum.convertAttributeTypeTOUITypeTextByValue(attribItem.vtDataType,false));
+            //鑾峰彇UI灞炴�х被鍨嬫枃鏈�
+            attributeVO.setAttributeUITypeText(ItemTypeEnum.convertAttributeTypeTOUITypeTextByValue(attribItem.vtDataType,true));
+            attributeVO.setDefaultValue(attribItem.defValue);
+            if(Func.isNotBlank(attribItem.rage)){
+                attributeVO.setRange(attribItem.rage.replace("&lt;","<"));
+            }else{
+                attributeVO.setRange(attribItem.rage);
+            }
+            attributeVO.setOther(attribItem.other);
+            //澶勭悊鍙傜収鐩稿叧灞炴��
+            if(StringUtils.isNotBlank(attribItem.other)) {
+                if (isReferAttr(attribItem.other)) {
+                    //璇存槑杩欎釜鐨勭‘鏄弬鐓у瓧娈�
+                    String[] others = attribItem.other.split(";");
+                    for (String s : others) {
+                        if (s.toLowerCase().contains("btm") && s.split("=").length > 1) {//蹇呴』瑕佸垽鏂暱搴︼紝鍥犱负鏋氫妇鐨勬椂鍊欎篃鏄寘鍚繖涓猙tm鐨�
+                            attributeVO.setBtmTypeId(s.split("=")[1].trim());
+                        }
+                        //閾炬帴绫诲瀷涓嶆敮鎸�
+                        if (s.toLowerCase().contains("link") && s.split("=").length > 1) {//蹇呴』瑕佸垽鏂暱搴︼紝鍥犱负鏋氫妇鐨勬椂鍊欎篃鏄寘鍚繖涓猙tm鐨�
+                            attributeVO.setLinkTypeName(s.split("=")[1].trim());
+                        }
+                        if (s.toLowerCase().contains("version") && s.split("=").length > 1) {//蹇呴』瑕佸垽鏂暱搴︼紝鍥犱负鏋氫妇鐨勬椂鍊欎篃鏄寘鍚繖涓猙tm鐨�
+                            attributeVO.setVersion(WebUtil.getInt(s.split("=")[1].trim()));
+                        }
+                    }
+                }
+                //蹇呰緭鍜岄暱搴�
+                String[] others = attribItem.other.split(";");
+                for (String s : others) {
+                    if (s.toLowerCase().contains("allownull") && s.split("=").length > 1) {//蹇呴』瑕佸垽鏂暱搴︼紝鍥犱负鏋氫妇鐨勬椂鍊欎篃鏄寘鍚繖涓猙tm鐨�
+                        boolean allownull = false;
+                        if (s.split("=")[1].trim().toLowerCase().equals("yes")) {
+                            allownull = true;
+                        }
+                        attributeVO.setNullableFlag(allownull);
+                    }
+                    if (s.toLowerCase().indexOf("length") > -1 && s.split("=").length > 1) {
+                        int length = WebUtil.getInt(s.split("=")[1].trim());
+                        if (length > 0) {
+                            attributeVO.setAttrLength(length);
+                        }
+                    }
+                }
+                //鏋氫妇
+                if(isEnumAttr(attribItem.other)){
+                    for (String s : others) {
+                        if(s.contains("enumName") && s.split("=").length>1) {
+                            attributeVO.setEnumId(s.split("=")[1].trim());
+                        }
+                    }
+                }
+            }
+        }
+        return attributeVO;
+    }
+
+    /**
+     * 鏄惁涓哄弬鐓у睘鎬�
+     * @param other 閰嶇疆鐨勫叾浠�
+     * @return true 鏄弬鐓�
+     */
+    private boolean isReferAttr(String other){
+        if(StringUtils.isNotBlank(other)
+                && (other.toLowerCase().contains("btm") || other.toLowerCase().contains("link"))){
+            //杩樹笉鑳界‘瀹氾紝鍥犱负鏋氫妇鐨勬椂鍊欎篃浼氳缃産tm
+            String[] temp = other.split(";");
+            for(String s : temp){
+                if((s.contains("btm") || s.contains("link")) && s.split("=").length>1){
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    /**
+     * 鏄惁涓烘灇涓剧殑灞炴��
+     * @param other 閰嶇疆鐨勫唴瀹�
+     * @return true 鏄灇涓�
+     */
+    private boolean isEnumAttr(String other){
+        if(StringUtils.isNotBlank(other)
+                && other.contains("enumName")){
+            //杩樹笉鑳界‘瀹氾紝鍥犱负鏋氫妇鐨勬椂鍊欎篃浼氳缃産tm
+            String[] temp = other.split(";");
+            for(String s : temp){
+                if(s.contains("enumName")&& s.split("=").length>1){
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+}
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebBoServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebBoServiceImpl.java
similarity index 97%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebBoServiceImpl.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebBoServiceImpl.java
index 4fab207..b21f501 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebBoServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebBoServiceImpl.java
@@ -12,7 +12,6 @@
 import com.vci.corba.query.ObjectQueryServicePrx;
 import com.vci.corba.query.data.BtmRefQueryOption;
 import com.vci.corba.query.data.KV;
-import com.vci.frameworkcore.compatibility.SmUserQueryServiceI;
 import com.vci.omd.utils.ObjectTool;
 import com.vci.pagemodel.*;
 import com.vci.starter.web.annotation.Column;
@@ -21,23 +20,24 @@
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.DataGrid;
 import com.vci.starter.web.pagemodel.PageHelper;
-import com.vci.starter.web.util.BeanUtil;
+import com.vci.starter.web.util.BeanUtilForVCI;
+import com.vci.starter.web.util.Lcm.Func;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
 import com.vci.web.properties.WebProperties;
 import com.vci.web.service.*;
-import com.vci.web.util.Func;
 import com.vci.web.util.PlatformClientUtil;
 import com.vci.web.util.WebUtil;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.math3.distribution.TDistribution;
 import org.dom4j.DocumentException;
 import org.dom4j.DocumentHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
+import javax.annotation.Resource;
 import java.lang.reflect.Field;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -48,76 +48,64 @@
  * @author weidy
  */
 @Service
-public class WebBoServiceImpl implements WebBoServiceI{
-	
-	/**
-	 * 鏋氫妇鏈嶅姟
-	 */
-	@Autowired
-	private OsEnumServiceI enumService;//鏋氫妇鏈嶅姟
-	
-	/**
-	 * 灞炴�ф湇鍔�
-	 */
-	@Autowired
-	private OsAttributeServiceI attrService;//灞炴�ф湇鍔�
+public class WebBoServiceImpl implements WebBoServiceI {
 
-	/**
-	 * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
-	 */
-	@Autowired
-	private OsLifeCycleServiceI lifeService;//鐢熷懡鍛ㄦ湡鏈嶅姟
-
-	/**
-	 * 鐘舵�佺殑鏈嶅姟
-	 */
-	@Autowired
-	private OsStatusServiceI statusService;
-
-	/**
-	 * 鐢ㄦ埛鏌ヨ鏈嶅姟
-	 */
-	@Autowired
-	private SmUserQueryServiceI userQueryService;
-
-	/**
-	 * 閾炬帴绫诲瀷鏈嶅姟
-	 */
-	@Autowired
-	private WebLoServiceI loService;
-
-	/**
-	 * 閰嶇疆淇℃伅
-	 */
-	@Autowired
-	private WebProperties webProperties;
-	
-	/**
-	 * 澶氳瑷�鍓嶇紑
-	 */
-	private final String msgCodePrefix = "com.vci.web.boService.";
-	
 	/**
 	 * 鏃ュ織瀵硅薄
 	 */
 	private Logger logger = LoggerFactory.getLogger(getClass());
 
 	/**
+	 * 澶氳瑷�鍓嶇紑
+	 */
+	private final String msgCodePrefix = "com.vci.web.boService.";
+
+	/**
+	 * 鏋氫妇鏈嶅姟
+	 */
+	@Resource
+	private WebEnumServiceI enumService;//鏋氫妇鏈嶅姟
+
+	/**
+	 * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
+	 */
+	@Resource
+	private WebLifeCycleServiceI lifeService;//鐢熷懡鍛ㄦ湡鏈嶅姟
+
+	/**
+	 * 鐘舵�佺殑鏈嶅姟
+	 */
+	@Resource
+	private WebStatusServiceI statusService;
+
+	/**
+	 * 鐢ㄦ埛鏌ヨ鏈嶅姟
+	 */
+	@Resource
+	private SmUserQueryServiceI userQueryService;
+
+	/**
+	 * 閰嶇疆淇℃伅
+	 */
+	@Resource
+	private WebProperties webProperties;
+
+	/**
 	 * 涓氬姟绫诲瀷鐨勬湇鍔�
 	 */
-	@Autowired
-	private OsBtmServiceI btmService;
+	@Resource
+	private WebBtmServiceI btmService;
 
 	/**
 	 * 鐗堟湰瑙勫垯鐨勬湇鍔�
 	 */
-	@Autowired
-	private OsRevisionRuleServiceI revisionRuleService;
+	@Resource
+	private WebRevisionRuleServiceI revisionRuleService;
 
 	/**
 	 * 骞冲彴璋冪敤瀹㈡埛绔�
 	 */
-	@Autowired
+	@Resource
 	private PlatformClientUtil platformClientUtil;
 
 	/**
@@ -893,7 +881,7 @@
 	 */
 	@Override
 	public List<BusinessObject> queryCBOByScheme(String queryScheme,
-			Map<String, String> conditionMap, Map<String, String> replaceMap)
+			Map<String, String> conditionMap, Map<String, Object> replaceMap)
 			throws VciBaseException {
 		PageHelper ph = new PageHelper(-1);
 		return queryCBOByScheme(queryScheme,conditionMap,replaceMap,ph);
@@ -911,7 +899,7 @@
 	 */
 	@Override
 	public List<BusinessObject> queryCBOByScheme(String queryScheme,
-			Map<String, String> conditionMap, Map<String, String> replaceMap,
+			Map<String, String> conditionMap, Map<String, Object> replaceMap,
 			PageHelper ph) throws VciBaseException {
 		List<String> clauseList = new ArrayList<String>();
 		clauseList.add("*");
@@ -926,7 +914,7 @@
 	 * @throws VciBaseException 鏌ヨ鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
 	 */
 	@Override
-	public QueryTemplate getQtByName(String name, Map<String, String> replaceMap) throws VciBaseException{
+	public QueryTemplate getQtByName(String name, Map<String, Object> replaceMap) throws VciBaseException{
 		QueryTemplate qt = null;
 		try{
 			VciBaseUtil.alertNotNull(name,"鏌ヨ妯℃澘鐨勫悕绉�");
@@ -935,9 +923,10 @@
 			//鍥犱负涔嬪墠骞冲彴鐨凾ool.replaceQTValues 娌℃湁澶勭悊 ${xxx}銆傦紝 涓轰簡蹇界暐澶у皬鍐欙紝鎴戜滑杩欓噷鍗曠嫭澶勭悊 weidy@2021-3-10
 			//鎴戜滑杞崲涓哄皬鍐�
 			Condition condition = qt.getCondition();
-			Map<String,String> replaceLowMap = new HashMap<>();
+			Map<String,Object> replaceLowMap = new HashMap<>();
 			if(condition !=null && condition.getCIMap()!=null){
 				// Map<String, String> systemVarValueMap = VciSystemVarConstants.getSystemVarValueMap();
+				//杞皬鍐�
 				if(!CollectionUtils.isEmpty(replaceMap)){
 					replaceMap.forEach((key,value)->{
 						replaceLowMap.put(key.toLowerCase(),value);
@@ -985,7 +974,7 @@
 	 * @param qt
 	 * @param replaceLowMap
 	 */
-	private void recurReplaceCiMap(QueryTemplate qt, Map<String,String> replaceLowMap){
+	private void recurReplaceCiMap(QueryTemplate qt, Map<String,Object> replaceLowMap){
 		//璺冲嚭閫掑綊
 		if(Func.isEmpty(qt)){
 			return;
@@ -1009,7 +998,7 @@
 							}
 						}
 					}else if(replaceLowMap.containsKey(value.toLowerCase())){
-						lInfo.getValue().setOrdinaryValue(replaceLowMap.get(value.toLowerCase()));
+						lInfo.getValue().setOrdinaryValue((String) replaceLowMap.get(value.toLowerCase()));
 					}
 				}else {
 					recurReplaceCiMap(lInfo.getValue().getQueryTemplate(),replaceLowMap);
@@ -1030,7 +1019,7 @@
 	 */
 	@Override
 	public List<BusinessObject> queryCBOByScheme(String queryScheme,
-			Map<String, String> conditionMap, Map<String, String> replaceMap,
+			Map<String, String> conditionMap, Map<String, Object> replaceMap,
 			PageHelper ph, List<String> clauseList) throws VciBaseException {
 		QueryTemplate qt = getQtByName(queryScheme,replaceMap);
 		return baseQueryCBO(qt,conditionMap,ph,clauseList);
@@ -1134,7 +1123,7 @@
 	 */
 	@Override
 	public int queryCountByScheme(String queryScheme,
-			Map<String, String> conditionMap, Map<String, String> replaceMap)
+			Map<String, String> conditionMap, Map<String, Object> replaceMap)
 			throws VciBaseException {
 		QueryTemplate qt = getQtByName(queryScheme,replaceMap);
 		return baseQueryCount(qt,conditionMap);
@@ -1482,7 +1471,7 @@
 	@Override
 	public <T> List<T> queryObjectByScheme(String queryScheme, Class<T> c,
 			Map<String, String> conditionMap, PageHelper ph,
-			Map<String, String> replaceMap) throws VciBaseException {
+			Map<String, Object> replaceMap) throws VciBaseException {
 		WebUtil.alertNotNull(queryScheme,"鏌ヨ鏂规");
 		//鐩存帴浠庡璞¢噷鍘绘煡璇笟鍔$被鍨嬬殑鍚嶇О
 		swapConditionMap(c,conditionMap);
@@ -2108,7 +2097,7 @@
      */
 	@Override
 	public DataGrid queryGridByScheme(String queryScheme,
-			Map<String, String> conditionMap, Map<String, String> replaceMap)
+			Map<String, String> conditionMap, Map<String, Object> replaceMap)
 			throws VciBaseException {
 		return queryGridByScheme(queryScheme,conditionMap,replaceMap,new PageHelper(-1,true),null);
 	}
@@ -2124,7 +2113,7 @@
      */
 	@Override
 	public DataGrid queryGridByScheme(String queryScheme,
-			Map<String, String> conditionMap, Map<String, String> replaceMap,
+			Map<String, String> conditionMap, Map<String, Object> replaceMap,
 			PageHelper ph) throws VciBaseException {
 		return queryGridByScheme(queryScheme,conditionMap,replaceMap,ph,null);
 	}
@@ -2141,7 +2130,7 @@
      */
 	@Override
 	public DataGrid queryGridByScheme(String queryScheme,
-			Map<String, String> conditionMap, Map<String, String> replaceMap,
+			Map<String, String> conditionMap, Map<String, Object> replaceMap,
 			PageHelper ph, List<String> clauseList) throws VciBaseException {
 		if(ph == null){
 			ph = new PageHelper(-1,true);
@@ -2212,7 +2201,7 @@
      */
 	@Override
 	public DataGrid queryGridClassByScheme(String queryScheme, Class c,
-			Map<String, String> conditionMap,Map<String,String> replaceMap) throws VciBaseException {
+			Map<String, String> conditionMap,Map<String,Object> replaceMap) throws VciBaseException {
 		return queryGridClassByScheme(queryScheme,c,conditionMap,replaceMap,new PageHelper(-1,true));
 	}
 	
@@ -2227,7 +2216,7 @@
      */
 	@Override
 	public DataGrid queryGridClassByScheme(String queryScheme, Class c,
-			Map<String, String> conditionMap, Map<String,String> replaceMap,PageHelper ph)
+			Map<String, String> conditionMap, Map<String,Object> replaceMap,PageHelper ph)
 			throws VciBaseException {
 		if(ph == null){
 			ph = new PageHelper(-1,true);
@@ -2272,9 +2261,13 @@
 	public Map cbo2Map(BusinessObject cbo) throws VciBaseException {
 		Map<String,String> map = new HashMap<String, String>();
 		WebUtil.copyValueToMapFromCbos(cbo, map);
-		return map;
+		//TODO锛�20241128 杩囨护鎺夌┖key鍜岀┖value
+		Map<String, Object> filteredCbo2Map = map.entrySet()
+				.stream()
+				.filter(entry -> entry.getKey() != null && !entry.getKey().isEmpty() && entry.getValue() != null && !entry.getValue().toString().isEmpty())
+				.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
+		return filteredCbo2Map;
 	}
-
 
     /**
      * map杞负BusinessObject
@@ -2525,7 +2518,7 @@
 	@Override
 	public <T> int countByQueryWrapper(VciQueryWrapperForDO queryWrapper, Class<T> doClass) throws VciBaseException {
 		VciQueryWrapperForDO queryWrapperForDO = new VciQueryWrapperForDO(null,doClass);
-		BeanUtil.convert(queryWrapper,queryWrapperForDO);
+		BeanUtilForVCI.convert(queryWrapper,queryWrapperForDO);
 		queryWrapperForDO.clearPage();
 		queryWrapperForDO.wrapperSql();
 		String sql= queryWrapperForDO.getSelectFieldSql() + " from " + queryWrapperForDO.getTableName() + " " + queryWrapperForDO.getTableNick() + queryWrapperForDO.getLinkTableSql() ;
diff --git a/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebBtmServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebBtmServiceImpl.java
new file mode 100644
index 0000000..d779322
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebBtmServiceImpl.java
@@ -0,0 +1,363 @@
+package com.vci.web.service.impl;
+
+import com.vci.corba.common.PLException;
+import com.vci.corba.omd.btm.BizType;
+import com.vci.pagemodel.*;
+import com.vci.starter.web.annotation.log.VciUnLog;
+import com.vci.starter.web.enumpck.BooleanEnum;
+import com.vci.starter.web.util.BeanUtilForVCI;
+import com.vci.starter.web.util.Lcm.ConcurrentDateFormat;
+import com.vci.starter.web.util.Lcm.Func;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.util.VciDateUtil;
+import com.vci.web.service.WebAttributeServiceI;
+import com.vci.web.service.WebBtmServiceI;
+import com.vci.web.service.WebEnumServiceI;
+import com.vci.web.service.WebLinkTypeServiceI;
+import com.vci.web.util.PlatformClientUtil;
+import com.vci.web.util.WebUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @Description 涓氬姟绫诲瀷鏈嶅姟
+ * @Author dangsn
+ * @Date 2024/11/28 11:32
+ */
+@Service
+public class WebBtmServiceImpl implements WebBtmServiceI {
+
+    /**
+     * 鏃ュ織
+     */
+    private Logger logger = LoggerFactory.getLogger(getClass());
+
+    /**
+     * 骞冲彴鐨勮皟鐢ㄥ伐鍏风被
+     */
+    @Resource
+    private PlatformClientUtil platformClientUtil;
+
+    /**
+     * 鏋氫妇鐨勬湇鍔�
+     */
+    @Resource
+    private WebEnumServiceI enumService;
+
+    /**
+     * 閾炬帴绫诲瀷鐨勬湇鍔�
+     */
+    @Resource
+    private WebLinkTypeServiceI linkTypeService;
+
+    /**
+     * 灞炴�х殑鏈嶅姟
+     */
+    @Resource
+    private WebAttributeServiceI attributeService;
+
+    /**
+     * 浣跨敤缂栧彿鑾峰彇涓氬姟绫诲瀷
+     *
+     * @param id 缂栧彿
+     * @return 涓氬姟绫诲瀷
+     */
+    @Override
+    public OsBtmTypeVO getBtmById(String id) throws PLException {
+        if (StringUtils.isBlank(id)) {
+            return null;
+        }
+        BizType bizType = platformClientUtil.getBtmService().getBizTypeByName(id);
+        return btmDO2VO(bizType,null);
+    }
+
+    /**
+     * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+     *
+     * @param btmItem 鏁版嵁瀵硅薄
+     * @return 鏄剧ず瀵硅薄
+     */
+    @Override
+    public OsBtmTypeVO btmDO2VO(BizType btmItem, Map<String, OsAttributeVO> attributeVOMap) {
+        OsBtmTypeVO vo = new OsBtmTypeVO();
+        if (btmItem != null) {
+            vo.setOid(btmItem.oid);
+            vo.setCreator(btmItem.creator);
+            vo.setLastModifier(btmItem.modifier);
+            try {
+                // btmItem.createTime鎷垮埌鐨勬槸鏃堕棿鎴筹紝浣嗘槸杩欏効瑕佺殑鏄緥濡�2017-12-27 09:32:20.034杩欐牱鐨勬牸寮忥紝鎵�浠ヤ笉璋冪敤杩欎釜鏂规硶锛屾敼璋冪敤鍏朵粬鏂规硶
+                //vo.setCreateTime(VciDateUtil.str2Date(String.valueOf(btmItem.createTime),VciDateUtil.DateTimeFormat));
+                vo.setCreateTime(Func.parse(btmItem.createTime, ConcurrentDateFormat.of(VciDateUtil.DateTimeFormat)));
+                vo.setLastModifyTime(Func.parse(btmItem.modifyTime, ConcurrentDateFormat.of(VciDateUtil.DateTimeFormat)));
+                vo.setTs(Func.parse(btmItem.ts, ConcurrentDateFormat.of(VciDateUtil.DateTimeMillFormat)));
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+            vo.setDescription(btmItem.description);
+            vo.setId(btmItem.name);
+            vo.setName(btmItem.label);
+            vo.setLifeCycleId(btmItem.lifeCycle);
+            vo.setAbstractFlag(btmItem.isAbstract);
+            vo.setImplClass(btmItem.implClass);
+            vo.setShape(btmItem.shape);
+            vo.setRevLevel(btmItem.revLevel);
+            vo.setRevisionRuleId(btmItem.revRuleName);
+            vo.setTableName(VciBaseUtil.getTableName(vo.getId()));
+            vo.setInputRevisionFlag(btmItem.revInput);
+            vo.setDelimiter(btmItem.delimiter);
+            vo.setfName(btmItem.fName);
+            vo.setVersionRule(String.valueOf(btmItem.verRuleName));
+            if (StringUtils.isNotBlank(vo.getRevisionRuleId()) || vo.isInputRevisionFlag()) {
+                vo.setRevisionFlag(true);
+            }
+            vo.setLifeCycleIds(Arrays.stream(btmItem.lifeCycles).collect(Collectors.joining(",")));
+            vo.setApNameArray(btmItem.apNameArray);
+            List<OsAttributeVO> attributeVOS = attributeService.listAttrByIds(Arrays.stream(btmItem.apNameArray).collect(Collectors.toList()),attributeVOMap);
+            List<OsBtmTypeAttributeVO> btmTypeAttributeVOS = new ArrayList<>();
+            Optional.ofNullable(attributeVOS).orElseGet(() -> new ArrayList<>()).stream().forEach(attributeVO -> {
+                OsBtmTypeAttributeVO btmTypeAttributeVO = new OsBtmTypeAttributeVO();
+                BeanUtilForVCI.convert(attributeVO, btmTypeAttributeVO);
+                btmTypeAttributeVO.setPkBtmType(vo.getOid());
+                btmTypeAttributeVO.setBtmTypeId(vo.getId());
+                btmTypeAttributeVO.setAttributeDataType(attributeVO.getAttributeDataType());
+                btmTypeAttributeVO.setAttributeLength(attributeVO.getAttrLength());
+                btmTypeAttributeVO.setDefaultValue(attributeVO.getDefaultValue());
+                if ("secretgrade".equalsIgnoreCase(attributeVO.getId())) {
+                    vo.setSecretFlag(true);
+                }
+                if (StringUtils.isNotBlank(attributeVO.getBtmTypeId())) {
+                    btmTypeAttributeVO.setReferFlag(true);
+                    btmTypeAttributeVO.setReferBtmTypeId(attributeVO.getBtmTypeId());
+                }
+                if (StringUtils.isNotBlank(attributeVO.getEnumId())) {
+                    btmTypeAttributeVO.setEnumFlag(true);
+                    btmTypeAttributeVO.setEnumItemMap(enumService.getEnumValueMap(btmTypeAttributeVO.getEnumId()));
+                }
+                btmTypeAttributeVOS.add(btmTypeAttributeVO);
+            });
+            vo.setAttributes(btmTypeAttributeVOS);
+        }
+        return vo;
+    }
+
+    /**
+     * 鑾峰彇涓氬姟绫诲瀷鐨勫湪鍝釜灞炴�т腑浣跨敤
+     *
+     * @param btmName 涓氬姟绫诲瀷
+     * @return 寮曠敤鐨勪俊鎭�
+     */
+    @Override
+    public List<OsUsedAttributeVO> listBtmUsedInfo(String btmName) {
+        return listBtmUsedInfo(btmName, false);
+    }
+
+    /**
+     * 鑾峰彇涓氬姟绫诲瀷鐨勫湪鍝釜灞炴�т腑浣跨敤
+     *
+     * @param btmId   涓氬姟绫诲瀷
+     * @param hasLink 鏄惁鍖呭惈閾炬帴绫诲瀷涓�
+     * @return 寮曠敤鐨勪俊鎭�
+     */
+    @Override
+    public List<OsUsedAttributeVO> listBtmUsedInfo(String btmId, boolean hasLink) {
+        VciBaseUtil.alertNotNull(btmId, "涓氬姟绫诲瀷鐨勫悕绉�");
+        List<OsAttributeVO> allReferThisBtmAttributes = Optional.ofNullable(attributeService.selectAllAttribute()).orElseGet(() -> new ArrayList<>()).stream().filter(s -> btmId.equalsIgnoreCase(s.getBtmTypeId())).collect(Collectors.toList());
+        if (CollectionUtils.isEmpty(allReferThisBtmAttributes)) {
+            return null;
+        }
+        //鏍规嵁杩欎簺灞炴�э紝鎵惧畠浣跨敤鐨勪笟鍔$被鍨�
+        List<OsUsedAttributeVO> usedInfos = new ArrayList<>();
+        List<OsBtmTypeVO> btmTypeVOMap = selectAllBtmMap().values().stream().collect(Collectors.toList());
+        List<OsLinkTypeVO> linkTypeVOS = linkTypeService.selectAllLinkMap().values().stream().collect(Collectors.toList());
+        allReferThisBtmAttributes.stream().forEach(attribute -> {
+            //鍏朵粬鐨勪笟鍔$被鍨嬪寘鍚簡杩欎釜灞炴�х殑
+            List<OsBtmTypeVO> usedBtms = btmTypeVOMap.stream().filter(btmTypeVO -> !CollectionUtils.isEmpty(btmTypeVO.getAttributes()) && btmTypeVO.getAttributes().stream().anyMatch(s -> attribute.getId().equalsIgnoreCase(s.getId()))).collect(Collectors.toList());
+            if (!CollectionUtils.isEmpty(usedBtms)) {
+                usedBtms.stream().forEach(btm -> {
+                    btm.getAttributes().stream().filter(s -> attribute.getId().equalsIgnoreCase(s.getId())).forEach(attrInBtm -> {
+                        OsUsedAttributeVO usedAttributeVO = new OsUsedAttributeVO();
+                        usedAttributeVO.setId(attrInBtm.getId());
+                        usedAttributeVO.setName(attrInBtm.getName());
+                        usedAttributeVO.setPkBtmType(btm.getId());
+                        usedAttributeVO.setBusinessType(BooleanEnum.TRUE.getValue());
+                        usedInfos.add(usedAttributeVO);
+                    });
+                });
+            }
+            if (hasLink) {
+                List<OsLinkTypeVO> usedLinks = linkTypeVOS.stream().filter(linkTypeVO -> !CollectionUtils.isEmpty(linkTypeVO.getAttributes()) && linkTypeVO.getAttributes().stream().anyMatch(s -> attribute.getId().equalsIgnoreCase(s.getId()))).collect(Collectors.toList());
+                if (!CollectionUtils.isEmpty(usedLinks)) {
+                    usedLinks.stream().forEach(link -> {
+                        link.getAttributes().stream().filter(s -> attribute.getId().equalsIgnoreCase(s.getId())).forEach(attrInBtm -> {
+                            OsUsedAttributeVO usedAttributeVO = new OsUsedAttributeVO();
+                            usedAttributeVO.setId(attrInBtm.getId());
+                            usedAttributeVO.setName(attrInBtm.getName());
+                            usedAttributeVO.setPkBtmType(link.getId());
+                            usedAttributeVO.setBusinessType(BooleanEnum.FASLE.getValue());
+                            usedInfos.add(usedAttributeVO);
+                        });
+                    });
+                }
+            }
+        });
+        return usedInfos;
+    }
+
+    /**
+     * 鏌ヨ鎵�鏈夌殑涓氬姟绫诲瀷鏄犲皠
+     *
+     * @return key 鏄笟鍔$殑鑻辨枃鍚嶇О鐨勫皬鍐�
+     */
+    @Override
+    @VciUnLog
+    public Map<String, OsBtmTypeVO> selectAllBtmMap() {
+        return Optional.ofNullable(selectAllBtm()).orElseGet(() -> new ArrayList<OsBtmTypeVO>()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(), t -> t, (o1, o2) -> o1));
+    }
+
+    /**
+     * 鏌ヨ鎵�鏈夌殑涓氬姟绫诲瀷鏄犲皠
+     *
+     * @return key 鏄笟鍔$殑鑻辨枃鍚嶇О鐨勫皬鍐�
+     */
+    @Override
+    @VciUnLog
+    public Map<String, OsBtmTypeVO> selectAllBtmMap(Map<String, OsAttributeVO> attributeVOMap) {
+        return Optional.ofNullable(selectAllBtm(attributeVOMap)).orElseGet(() -> new ArrayList<OsBtmTypeVO>()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(), t -> t, (o1, o2) -> o1));
+    }
+
+    /**
+     * 鏌ヨ鎵�鏈夌殑涓氬姟绫诲瀷
+     *
+     * @return 涓氬姟绫诲瀷瀵硅薄
+     */
+    @Override
+    @VciUnLog
+    public List<OsBtmTypeVO> selectAllBtm() {
+        try {
+            return btmDO2VOs(Arrays.stream(platformClientUtil.getBtmService().getBizTypes("")).collect(Collectors.toList()),null);
+        } catch (PLException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * 鏌ヨ鎵�鏈夌殑涓氬姟绫诲瀷
+     *
+     * @return 涓氬姟绫诲瀷瀵硅薄
+     */
+    @Override
+    @VciUnLog
+    public List<OsBtmTypeVO> selectAllBtm(Map<String, OsAttributeVO> attributeVOMap) {
+        try {
+            return btmDO2VOs(Arrays.stream(platformClientUtil.getBtmService().getBizTypes("")).collect(Collectors.toList()),attributeVOMap);
+        } catch (PLException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+     *
+     * @param btmItems 鏁版嵁瀵硅薄
+     * @return 鏄剧ず瀵硅薄
+     */
+    @Override
+    public List<OsBtmTypeVO> btmDO2VOs(Collection<BizType> btmItems,Map<String, OsAttributeVO> attributeVOMap) {
+        List<OsBtmTypeVO> VOS = new ArrayList<>();
+        Optional.ofNullable(btmItems).orElseGet(() -> new ArrayList<>()).parallelStream().forEach(btmItem -> {
+            OsBtmTypeVO vo = btmDO2VO(btmItem,attributeVOMap);
+            VOS.add(vo);
+        });
+        return VOS;
+    }
+
+    /**
+     * 浣跨敤缂栧彿鑾峰彇涓氬姟绫诲瀷
+     *
+     * @param btmIds 缂栧彿
+     * @return 涓氬姟绫诲瀷
+     */
+    @Override
+    public List<OsBtmTypeVO> listBtmByIds(Collection<String> btmIds) {
+        if (CollectionUtils.isEmpty(btmIds)) {
+            return null;
+        }
+        BtmDataFetcher btmDataFetcher = new BtmDataFetcher();
+        List<OsBtmTypeVO> btmTypeVOS = new ArrayList<>();
+        btmIds.stream().forEach(id -> {
+            OsBtmTypeVO btmType = btmDataFetcher.getBtmType(id);
+            btmTypeVOS.add(btmType);
+        });
+        return btmTypeVOS;
+    }
+
+    private class BtmDataFetcher {
+
+        //涓氬姟绫诲瀷
+        private Map<String, BizType> btmTypeVOMap = new HashMap<String, BizType>();
+
+        public BtmDataFetcher() {
+            initBtmDataFetcher();
+        }
+
+        private void initBtmDataFetcher(){
+            try {
+                BizType[] bizTypes = platformClientUtil.getBtmService().getBizTypes("");
+                //List<OsBtmTypeVO> osBtmTypeVOS = btmDO2VOs(Arrays.asList(bizTypes), null);
+                if(Func.isNotEmpty(bizTypes)){
+                    btmTypeVOMap = Arrays.stream(bizTypes).collect(Collectors.toMap(btm -> btm.name, btm -> btm));
+                }
+            }catch (Exception e){
+                e.printStackTrace();
+            }
+        }
+
+        /**
+         * 鑾峰彇涓氬姟绫诲瀷
+         * @param id
+         * @return
+         */
+        public OsBtmTypeVO getBtmType(String id) {
+            BizType bizType = btmTypeVOMap.get(id);
+            if(Func.isEmpty(bizType)){
+                return null;
+            }
+            //鑾峰彇鐨勬椂鍊欐墠璧歏O瀵硅薄锛岃繖鏍烽伩鍏嶄竴娆℃�у叏閮˙tm杞琕O澶參鐨勯棶棰�
+            return btmDO2VO(bizType,null);
+        }
+    }
+
+    /**
+     * 鏍规嵁涓氬姟绫诲瀷鑾峰彇鍖呭惈鐨勫睘鎬�--涓嶅寘鍚熀纭�灞炴��
+     *
+     * @param btmId 涓氬姟绫诲瀷鐨勭紪鍙�
+     * @return 灞炴�х殑鍐呭
+     */
+    @Override
+    public List<OsBtmTypeAttributeVO> listAttributeByBtmId(String btmId) {
+        VciBaseUtil.alertNotNull(btmId, "涓氬姟绫诲瀷鐨勭紪鍙�");
+        BizType[] bizTypes = new BizType[0];
+        try {
+            bizTypes = platformClientUtil.getBtmService().getBizTypes(btmId);
+        } catch (PLException e) {
+            throw WebUtil.getVciBaseException(e);
+        }
+        if (Func.isEmpty(bizTypes)) {
+            return new ArrayList<>();
+        }
+        BizType bizType = bizTypes[0];
+        OsBtmTypeVO btmTypeVO = btmDO2VO(bizType,null);
+        List<OsBtmTypeAttributeVO> attributes = btmTypeVO.getAttributes();
+        if (attributes == null) {
+            attributes = new ArrayList<>();
+        }
+        return attributes.stream().sorted(((o1, o2) -> o1.getId().toLowerCase(Locale.ROOT).compareTo(o2.getId().toLowerCase(Locale.ROOT)))).collect(Collectors.toList());
+    }
+}
diff --git a/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebEnumServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebEnumServiceImpl.java
new file mode 100644
index 0000000..8b8fe7f
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebEnumServiceImpl.java
@@ -0,0 +1,280 @@
+package com.vci.web.service.impl;
+
+import com.vci.constant.EnumIdConstant;
+import com.vci.corba.common.PLException;
+import com.vci.corba.omd.etm.EnumItem;
+import com.vci.corba.omd.etm.EnumType;
+import com.vci.pagemodel.KeyValue;
+import com.vci.pagemodel.OsEnumItemVO;
+import com.vci.pagemodel.OsEnumVO;
+import com.vci.pagemodel.OsStatusVO;
+import com.vci.starter.web.annotation.log.VciUnLog;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.util.VciDateUtil;
+import com.vci.web.service.WebEnumServiceI;
+import com.vci.web.service.WebLifeCycleServiceI;
+import com.vci.web.util.PlatformClientUtil;
+import com.vci.web.util.WebUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.util.HtmlUtils;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+import static com.vci.constant.EnumIdConstant.LC_STATUS_SUBFIX;
+
+/**
+ * @Description 鏋氫妇鏈嶅姟
+ * @Author dangsn
+ * @Date 2024/11/28 11:18
+ */
+@Service
+public class WebEnumServiceImpl implements WebEnumServiceI {
+
+    /**
+     * 鏃ュ織
+     */
+    private Logger logger = LoggerFactory.getLogger(getClass());
+
+    /**
+     * 鐢ㄦ埛鏂板鏁版嵁鐨勬椂鍊欏彲浠ユ煡鐪嬬殑瀵嗙骇
+     */
+    public static final String MY_DATA_SECRET = "myDataSecret";
+
+    /**
+     * 骞冲彴璋冪敤瀹㈡埛绔�
+     */
+    @Autowired
+    private PlatformClientUtil platformClientUtil;
+
+    /**
+     * 鐢熷懡鍛ㄦ湡
+     */
+    @Autowired
+    private WebLifeCycleServiceI lifeCycleService;
+
+    /**
+     * 鑾峰彇鏋氫妇鐨勫唴瀹�
+     * @param enumCode 鏋氫妇鐨勭紪鍙凤紙鑻辨枃鍚嶇О锛�
+     * @return key鏄嫳鏂囧�硷紝value鏄腑鏂囨枃鏈�
+     */
+    @Override
+    public List<KeyValue> getEnum(String enumCode) throws VciBaseException {
+        if(StringUtils.isEmpty(enumCode)){
+            return null;
+        }
+        enumCode = HtmlUtils.htmlUnescape(enumCode);
+        if(enumCode.endsWith(LC_STATUS_SUBFIX)){
+            List<OsStatusVO> statusVOS = lifeCycleService.listStatusById(enumCode.replace(LC_STATUS_SUBFIX, ""));
+            if(CollectionUtils.isEmpty(statusVOS)){
+                return new ArrayList<>();
+            }
+            List<KeyValue> keyValueList = new ArrayList<>();
+            statusVOS.stream().forEach(statusVO->{
+                KeyValue kv = new KeyValue();
+                kv.setKey(statusVO.getId());
+                kv.setValue(statusVO.getName());
+                kv.setAttributes(VciBaseUtil.objectToMap(statusVO));
+                keyValueList.add(kv);
+            });
+            return keyValueList;
+        }
+        return enumItem2KV(getEnumItemById(enumCode));
+    }
+
+    /**
+     * 鑾峰彇鏋氫妇鐨勪腑鏂囨枃鏈�
+     * @param enumCode 鏋氫妇鐨勭紪鍙凤紙鑻辨枃鍚嶇О锛�
+     * @param enumKey 鏋氫妇鐨勮嫳鏂囧�硷紝鍖哄垎澶у皬鍐�
+     */
+    @Override
+    public String getValue(String enumCode, String enumKey){
+        List<KeyValue> allKV = getEnum(enumCode);
+        if(allKV.size()>0){
+            for(KeyValue kv : allKV){
+                if(kv.getKey().equalsIgnoreCase(enumKey)){
+                    return kv.getValue();
+                }
+            }
+        }
+        return "";
+    }
+
+    /**
+     * 鏋氫妇鐨勬暟鎹璞¤浆鎹负鏄剧ず瀵硅薄
+     *
+     * @param enumType 鏁版嵁瀵硅薄
+     * @return 鏄剧ず瀵硅薄
+     */
+    @Override
+    public OsEnumVO enumDO2VO(EnumType enumType) {
+        OsEnumVO enumVO = new OsEnumVO();
+        if(enumType!=null){
+            enumVO.setOid(enumType.oid);
+            enumVO.setCreator(enumType.creator);
+            enumVO.setLastModifier(enumType.modifier);
+            enumVO.setId(enumType.name);
+            enumVO.setName(enumType.label);
+            enumVO.setEnumValueDataType(enumType.type);
+            enumVO.setEnumValueDataTypeText("String".equalsIgnoreCase(enumType.type) ? "瀛楃涓�":"鏁村瀷");
+            enumVO.setLength((int) enumType.length);
+
+            try {
+                enumVO.setLastModifyTime(new Date(enumType.createTime));
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+            try {
+                enumVO.setCreateTime(new Date(enumType.createTime));
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+            try {
+                enumVO.setTs(VciDateUtil.str2Date(enumType.ts,VciDateUtil.DateTimeMillFormat));
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+            //鏋氫妇椤瑰鐞�
+            List<OsEnumItemVO> itemVOS = new ArrayList<>();
+            Map<String,String> itemVOMap = new HashMap<>();
+            if(enumType.items!=null && enumType.items.length > 0){
+                for(int i = 0 ; i < enumType.items.length ; i ++){
+                    OsEnumItemVO enumItemVO = new OsEnumItemVO();
+                    EnumItem enumChild = enumType.items[i];
+                    enumItemVO.setValue(enumChild.value);
+                    enumItemVO.setName(enumChild.name);
+                    enumItemVO.setDescription(enumChild.description);
+                    itemVOS.add(enumItemVO);
+                    itemVOMap.put(enumChild.value,enumChild.name);
+                }
+            }
+            enumVO.setItems(itemVOS);
+            enumVO.setItemMaps(itemVOMap);
+        }
+        return enumVO;
+    }
+
+    /**
+     * 鏋氫妇鏄庣粏杞崲涓篕V
+     *
+     * @param enumItemVO 鏋氫妇鏄庣粏鏄剧ず瀵硅薄
+     * @return KV
+     */
+    @Override
+    public List<KeyValue> enumItem2KV(Collection<OsEnumItemVO> enumItemVO) {
+        List<KeyValue> keyValueList = new ArrayList<>();
+        if(!CollectionUtils.isEmpty(enumItemVO)){
+            enumItemVO.forEach(itemVO->{
+                KeyValue keyValue = new KeyValue();
+                keyValue.setKey(itemVO.getValue());
+                keyValue.setValue(itemVO.getName());
+                keyValueList.add(keyValue);
+            });
+        }
+        return keyValueList;
+    }
+
+    /**
+     * 浣跨敤缂栧彿鑾峰彇鏋氫妇鏄庣粏
+     * @param enumCode 缂栧彿
+     * @return 鏄庣粏
+     * @throws VciBaseException 璋冪敤鏈嶅姟绔嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+     */
+    private List<OsEnumItemVO> getEnumItemById(String enumCode)  throws VciBaseException{
+        if(StringUtils.isBlank(enumCode)){
+            return  null;
+        }
+        Map<String, OsEnumVO> enumVOMap = selectAllEnumMap();
+        if(MY_DATA_SECRET.equalsIgnoreCase(enumCode)){
+            //褰撳墠鐢ㄦ埛
+            OsEnumVO enumVO = enumVOMap.getOrDefault(EnumIdConstant.DATASECRET_ENUMNAME, null);
+            int userSecret = WebUtil.getInt(WebUtil.getCurrentUserSessionInfoNotException().getUserSecret());
+            List<OsEnumItemVO> itemVOS = new ArrayList<>();
+            if(enumVO!=null && !CollectionUtils.isEmpty(enumVO.getItems())){
+                itemVOS = enumVO.getItems().stream().filter(item->WebUtil.getInt(item.getValue()) <= userSecret).collect(Collectors.toList());
+            }
+            return itemVOS;
+        }else{
+            return enumVOMap.getOrDefault(enumCode.toLowerCase(),new OsEnumVO()).getItems();
+        }
+    }
+
+    /**
+     * 鏌ヨ鎵�鏈夌殑鏋氫妇鏄犲皠
+     *
+     * @return key鏄灇涓剧殑鑻辨枃鍚嶇О
+     */
+    @Override
+    @VciUnLog
+    public Map<String, OsEnumVO> selectAllEnumMap() {
+        return Optional.ofNullable(selectAllEnum()).orElseGet(()->new ArrayList<>()).stream().collect(Collectors.toMap(s->s.getId().toLowerCase(),t->t,(o1,o2)->o1));
+    }
+
+    /**
+     * 鏌ヨ鎵�鏈夌殑鏋氫妇
+     *
+     * @return 鏋氫妇鐨勬樉绀哄璞�
+     */
+    @Override
+    @VciUnLog
+    public List<OsEnumVO> selectAllEnum() {
+        //鍚庨潰涓や釜鍙傛暟灞呯劧瀹屽叏娌℃湁浣滅敤
+        try {
+            return enumDO2VOs(Arrays.stream(platformClientUtil.getEnumService().getEnumTypes("",1,1)).collect(Collectors.toList()));
+        } catch (PLException vciError) {
+            throw WebUtil.getVciBaseException(vciError);
+        }
+    }
+
+    /**
+     * 鏋氫妇鐨勬暟鎹璞¤浆鎹负鏄剧ず瀵硅薄
+     *
+     * @param enumItems 鏋氫妇鐨勫璞�
+     * @return 鏄剧ず瀵硅薄
+     */
+    @Override
+    public List<OsEnumVO> enumDO2VOs(Collection<EnumType> enumItems) {
+        List<OsEnumVO> enumVOS = new ArrayList<>();
+        Optional.ofNullable(enumItems).orElseGet(()->new ArrayList<>()).stream().forEach(enumItem -> {
+            OsEnumVO enumVO = enumDO2VO(enumItem);
+            enumVOS.add(enumVO);
+        });
+        return enumVOS;
+    }
+
+    /**
+     * 鑾峰彇鏋氫妇鐨勬槧灏�
+     *
+     * @param enumCode 鏋氫妇鐨�=缂栧彿
+     * @return 鏋氫妇鐨勫�兼槧灏�
+     */
+    @Override
+    public Map<String, String> getEnumValueMap(String enumCode) {
+        if(StringUtils.isBlank(enumCode)){
+            return  null;
+        }
+        Map<String, OsEnumVO> enumVOMap = selectAllEnumMap();
+        if(MY_DATA_SECRET.equalsIgnoreCase(enumCode)){
+            //褰撳墠鐢ㄦ埛
+            OsEnumVO enumVO = enumVOMap.getOrDefault(EnumIdConstant.DATASECRET_ENUMNAME, null);
+            int userSecret = WebUtil.getInt(WebUtil.getCurrentUserSessionInfoNotException().getUserSecret());
+            Map<String,String> itemVOMap = new HashMap<>();
+            if(enumVO!=null && !CollectionUtils.isEmpty(enumVO.getItemMaps())){
+                enumVO.getItemMaps().forEach((key,value)->{
+                    if(WebUtil.getInt(key) <= userSecret){
+                        itemVOMap.put(key,value);
+                    }
+                });
+            }
+            return itemVOMap;
+        }else{
+            return enumVOMap.getOrDefault(enumCode.toLowerCase(),new OsEnumVO()).getItemMaps();
+        }
+    }
+}
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebHomeTaskServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebHomeTaskServiceImpl.java
similarity index 93%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebHomeTaskServiceImpl.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebHomeTaskServiceImpl.java
index 31ff447..802b49f 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebHomeTaskServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebHomeTaskServiceImpl.java
@@ -1,15 +1,15 @@
 package com.vci.web.service.impl;
 
 
+import com.vci.dto.WebHomeTaskActionDTO;
+import com.vci.model.WebHomeTaskActionDO;
+import com.vci.pagemodel.WebHomeTaskActionVO;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.DataGrid;
 import com.vci.starter.web.pagemodel.PageHelper;
 import com.vci.starter.web.pagemodel.SessionInfo;
-import com.vci.starter.web.util.BeanUtil;
+import com.vci.starter.web.util.BeanUtilForVCI;
 import com.vci.starter.web.util.VciBaseUtil;
-import com.vci.dto.WebHomeTaskActionDTO;
-import com.vci.model.WebHomeTaskActionDO;
-import com.vci.pagemodel.WebHomeTaskActionVO;
 import com.vci.web.service.WebBoServiceI;
 import com.vci.web.service.WebHomeTaskServiceI;
 import com.vci.web.util.WebUtil;
@@ -19,7 +19,9 @@
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -60,7 +62,7 @@
         if(!CollectionUtils.isEmpty(allActions)){
             allActions.stream().forEach(action->{
                 WebHomeTaskActionVO taskActionVO = new WebHomeTaskActionVO();
-                BeanUtil.convert(action,taskActionVO);
+                BeanUtilForVCI.convert(action,taskActionVO);
                 actionVOS.add(taskActionVO);
             });
         }
@@ -84,7 +86,7 @@
     public void addAction(WebHomeTaskActionDTO action){
         WebUtil.alertNotNull(action,"瑕佹坊鍔犵殑淇℃伅涓虹┖",action.getId(),"鑿滃崟鐨勪富閿�",action.getName(),"鑿滃崟鐨勫悕绉�",action.getCountUrl(),"璋冪敤鐨勫湴鍧�");
         WebHomeTaskActionDO actionDO = new WebHomeTaskActionDO();
-        BeanUtil.convert(action,actionDO);
+        BeanUtilForVCI.convert(action,actionDO);
         actionDO.setOid(VciBaseUtil.getPk());
         boService.addSave(actionDO);
     }
@@ -98,7 +100,7 @@
     public void editAction(WebHomeTaskActionDTO action)  {
         WebUtil.alertNotNull(action,"瑕佷慨鏀圭殑淇℃伅涓虹┖",action.getOid(),"涓婚敭",action.getTs(),"鏃堕棿鎴�");
         WebHomeTaskActionDO actionDO = boService.selectByOid(action.getOid(),WebHomeTaskActionDO.class);
-        BeanUtil.convert(action,actionDO);
+        BeanUtilForVCI.convert(action,actionDO);
         boService.editSave(actionDO);
     }
 
@@ -134,7 +136,7 @@
             List<WebHomeTaskActionVO> taskActionVOS = new ArrayList<>();
             dataGrid.getData().forEach(action->{
                 WebHomeTaskActionVO taskActionVO = new WebHomeTaskActionVO();
-                BeanUtil.convert((WebHomeTaskActionDO)action,taskActionVO);
+                BeanUtilForVCI.convert(action,taskActionVO);
                 taskActionVOS.add(taskActionVO);
             });
             dataGrid.setData(taskActionVOS);
diff --git a/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebLifeCycleServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebLifeCycleServiceImpl.java
new file mode 100644
index 0000000..878a2b4
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebLifeCycleServiceImpl.java
@@ -0,0 +1,409 @@
+package com.vci.web.service.impl;
+
+import com.vci.corba.common.PLException;
+import com.vci.corba.omd.data.BusinessObject;
+import com.vci.corba.omd.lcm.Bound;
+import com.vci.corba.omd.lcm.LifeCycle;
+import com.vci.corba.omd.lcm.TransitionVO;
+import com.vci.corba.omd.lcm.TransitionVOEvent;
+import com.vci.pagemodel.*;
+import com.vci.starter.web.annotation.log.VciUnLog;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.util.Lcm.Func;
+import com.vci.starter.web.util.VciDateUtil;
+import com.vci.web.service.WebLifeCycleServiceI;
+import com.vci.web.service.WebStatusServiceI;
+import com.vci.web.util.PlatformClientUtil;
+import com.vci.web.util.WebUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
+
+import static com.vci.constant.FrameWorkBusLangCodeConstant.DATA_ID_NOT_EXIST;
+import static com.vci.constant.WebLangCodeConstant.LIFE_CYCLE_ROUTER_NULL;
+import static com.vci.constant.WebLangCodeConstant.LIFE_CYCLE_TRANS_ERROR;
+
+/**
+ * @Description 鐢熷懡鍛ㄦ湡鏈嶅姟
+ * @Author dangsn
+ * @Date 2024/11/28 10:39
+ */
+@Service
+public class WebLifeCycleServiceImpl implements WebLifeCycleServiceI {
+
+    /**
+     * 鏃ュ織
+     */
+    private Logger logger = LoggerFactory.getLogger(getClass());
+
+    /**
+     * 骞冲彴瀹㈡埛绔�
+     */
+    @Resource
+    private PlatformClientUtil platformClientUtil;
+
+    /**
+     * 鐢熷懡鍛ㄦ湡鏈嶅姟
+     */
+    @Resource
+    private WebStatusServiceI statusServiceI;
+
+    /**
+     * 璺冭縼鐢熷懡鍛ㄦ湡鐘舵�侊紝娉ㄦ剰璋冪敤姝ゆ柟娉曞氨浼氳鎸佷箙鍖栵紝涓嶅彈浜嬪姟鎺у埗
+     * @param bo 涓氬姟绫诲瀷鐨勬暟鎹璞�
+     * @param targetStatus 鐩爣鐨勭敓鍛藉懆鏈熺姸鎬侊紝涓嶅尯鍒嗗ぇ灏�
+     * @throws VciBaseException 濡傛灉鐩爣鐢熷懡鍛ㄦ湡鍜屽綋鍓嶇敓鍛藉懆鏈熺姸鎬佹病鏈夎繛鎺ョ嚎鏃舵姏鍑哄紓甯�
+     */
+    @Override
+    public void transStatus(BusinessObject bo, String targetStatus) {
+        WebUtil.alertNotNull(bo,"涓氬姟鏁版嵁瀵硅薄",bo.lctId,"鐢熷懡鍛ㄦ湡缂栫爜",bo.lcStatus,"褰撳墠鐢熷懡鍛ㄦ湡鐘舵��",targetStatus,"鐩爣鐢熷懡鍛ㄦ湡鐘舵��");
+        try {
+            OsLifeCycleLineVO transVO = getTransVO(bo.lctId, bo.lcStatus, targetStatus);
+            if(transVO!=null) {
+                doTransVO(bo, transVO);
+            }else{
+                if(!targetStatus.equalsIgnoreCase(bo.lcStatus)){
+                    //鐘舵�佺浉鍚岀殑鏃跺�欍�傦紝涓嶆姏鍑哄紓甯�
+                    throw new VciBaseException(LIFE_CYCLE_ROUTER_NULL,new String[]{bo.lcStatus,targetStatus});
+                }
+            }
+        } catch (Exception e) {
+            throw new VciBaseException("璺冭縼鐢熷懡鍛ㄦ湡鐘舵�佸け璐ワ紒", new Object[]{}, e);
+        }
+    }
+
+    /**
+     * 鎵归噺璺冭縼鐢熷懡鍛ㄦ湡鐘舵�侊紝杩欎簺鏁版嵁涓殑褰撳墠鐘舵�佸繀椤婚兘鏄竴鏍凤紝鎴栬�呮槸褰撳墠鐘舵�侀兘鍙互杩炴帴鍒扮洰鏍囩姸鎬�
+     * @param cboList 涓氬姟绫诲瀷瀵硅薄鏁版嵁
+     * @param targetStatus  鐩爣鐘舵�侊紝涓嶅尯鍒嗗ぇ灏忓啓
+     * @throws VciBaseException 杞崲鐢熷懡鍛ㄦ湡鍑洪敊鐨勬椂鍊欐姏鍑哄紓甯�
+     */
+    @Override
+    public void transCboStatus(List<BusinessObject> cboList,String targetStatus){
+        WebUtil.alertNotNull(cboList,"涓氬姟鏁版嵁瀵硅薄",targetStatus,"鐩爣瀵硅薄");
+        BusinessObject[] bos = new BusinessObject[cboList.size()];
+        for(int i = 0 ; i < cboList.size() ; i ++){
+            bos[i] = cboList.get(i);
+        }
+        transStatus(bos, targetStatus);
+    }
+
+    /**
+     * 鎵归噺璺冭縼鐢熷懡鍛ㄦ湡鐘舵�侊紝杩欎簺鏁版嵁涓殑褰撳墠鐘舵�佸繀椤婚兘鏄竴鏍凤紝鎴栬�呮槸褰撳墠鐘舵�侀兘鍙互杩炴帴鍒扮洰鏍囩姸鎬�
+     * @param bos 涓氬姟绫诲瀷瀵硅薄鏁版嵁
+     * @param targetStatus  鐩爣鐘舵�侊紝涓嶅尯鍒嗗ぇ灏忓啓
+     * @throws VciBaseException 杞崲鐢熷懡鍛ㄦ湡鍑洪敊鐨勬椂鍊欐姏鍑哄紓甯�
+     */
+    @Override
+    public void transStatus(BusinessObject[] bos, String targetStatus){
+        WebUtil.alertNotNull(bos,"涓氬姟鏁版嵁瀵硅薄",targetStatus,"鐩爣瀵硅薄");
+        List<OsLifeCycleLineVO> transVOList = new ArrayList<>();
+        List<BusinessObject> transBOs = new ArrayList<>();
+        for(int i = 0 ; i < bos.length ; i ++){
+            BusinessObject bo = bos[i];
+            WebUtil.alertNotNull(bo,"涓氬姟鏁版嵁瀵硅薄",bo.lctId,"鐢熷懡鍛ㄦ湡缂栫爜",bo.lcStatus,"褰撳墠鐢熷懡鍛ㄦ湡鐘舵��");
+            OsLifeCycleLineVO transVO = getTransVO(bo.lctId, bo.lcStatus, targetStatus);
+            if(transVO!=null){
+                transVOList.add(transVO);
+                transBOs.add(bo);
+            }else{
+                if(!targetStatus.equalsIgnoreCase(bo.lcStatus)){
+                    throw new VciBaseException("涓嶅瓨鍦ㄤ粠銆恵0}銆戠姸鎬佸埌銆恵1}銆戠姸鎬佺殑鐢熷懡鍛ㄦ湡杩炴帴绾匡紝璇疯仈绯荤鐞嗗憳杩涜閰嶇疆",new String[]{bo.lcStatus, targetStatus} );
+                }
+            }
+        }
+        if(!CollectionUtils.isEmpty(transBOs)) {
+            batchTransVo(transBOs.toArray(new BusinessObject[0]), transVOList.toArray(new OsLifeCycleLineVO[0]));
+        }
+    }
+
+    /**
+     * 鑾峰彇杩炴帴绾�
+     * @param lcid 鐢熷懡鍛ㄦ湡鐨勭紪鍙�
+     * @param currentStatus 褰撳墠鐨勭姸鎬�
+     * @param targetStatus 鐩爣鐨勭姸鎬�
+     * @return 杩炴帴绾�
+     * @throws VciBaseException 璇诲彇鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
+     */
+    @Override
+    public OsLifeCycleLineVO getTransVO(String lcid, String currentStatus,String targetStatus){
+        WebUtil.alertNotNull(lcid,"鐢熷懡鍛ㄦ湡缂栫爜",currentStatus,"褰撳墠鐘舵��",targetStatus,"鐩爣鐘舵��");
+        OsLifeCycleVO life = getLifeCycleById(lcid);
+        if(life == null ){
+            throw new VciBaseException(DATA_ID_NOT_EXIST,new String[]{lcid});
+        }
+        if(CollectionUtils.isEmpty(life.getLines())){
+            throw new VciBaseException(LIFE_CYCLE_ROUTER_NULL,new String[]{lcid});
+        }
+        return Optional.ofNullable(life.getLines()).orElseGet(()->new ArrayList<>()).stream().filter(s->s.getSourceLifeStatus().equalsIgnoreCase(currentStatus) && s.getTargetLifeStatus().equalsIgnoreCase(targetStatus)).findFirst().orElseGet(()->null);
+    }
+
+    /**
+     * 璺冭縼涓氬姟绫诲瀷鐨勭敓鍛藉懆鏈熺姸鎬�
+     * @param obj 涓氬姟绫诲瀷鏁版嵁瀵硅薄
+     * @param lineVO 璺冭縼璺敱
+     * @throws VciBaseException 璺冭縼鍑洪敊鐨勬槸浼氭姏鍑哄紓甯�
+     */
+    @Override
+    public void doTransVO(BusinessObject obj,OsLifeCycleLineVO lineVO) throws VciBaseException {
+        if(lineVO!=null){
+            try {
+                TransitionVO transitionVO = lifeCycleLineVO2DO(lineVO);
+                platformClientUtil.getBOFService().transferBusinessObject(obj, transitionVO.destination);
+            } catch (PLException e) {
+                throw WebUtil.getVciBaseException(e);
+            }
+        }else{
+            throw new VciBaseException(LIFE_CYCLE_ROUTER_NULL);
+        }
+    }
+
+    /**
+     * 鎵归噺鎵ц璺冭縼鎿嶄綔
+     * @param bos 涓氬姟绫诲瀷鏁版嵁
+     * @param vos 璺冭縼瀵硅薄
+     * @throws VciBaseException 璺冭縼鍑洪敊鐨勬槸浼氭姏鍑哄紓甯�
+     */
+    @Override
+    public void batchTransVo(BusinessObject[] bos,OsLifeCycleLineVO[] vos){
+        batchTransVo(bos,vos,null);
+    }
+
+    /**
+     * 鎵归噺鎵ц璺冭縼鎿嶄綔锛岃姹傚繀椤绘槸鍚屼竴涓笟鍔$被鍨嬩笅鐨�
+     * @param bos 涓氬姟绫诲瀷鏁版嵁瀵硅薄
+     * @param lineVOs 璺冭縼瀵硅薄
+     * @param releaseStatus 鍙戝竷鐘舵�侊紝濡傛灉鐩爣鐘舵�佹槸鍙戝竷鐘舵�佹椂浼犻�掕繖涓��
+     * @throws VciBaseException  璺冭縼鍑洪敊鐨勬槸浼氭姏鍑哄紓甯�
+     */
+    @Override
+    public void batchTransVo(BusinessObject[] bos,OsLifeCycleLineVO[] lineVOs,String[] releaseStatus){
+        if(bos!=null && lineVOs != null && lineVOs.length == bos.length){
+            try {
+                if(releaseStatus == null){
+                    releaseStatus = new String[lineVOs.length];
+                    for(int i = 0 ; i < lineVOs.length ; i ++ ){
+                        releaseStatus[i] = "";
+                    }
+                }
+                TransitionVO[] vos = new TransitionVO[lineVOs.length];
+                for(int i = 0 ; i < lineVOs.length; i ++){
+                    vos[i] = lifeCycleLineVO2DO(lineVOs[i]);
+                }
+                platformClientUtil.getBOFService().batchTransferBusinessObjectAndRelease(
+                        bos, vos, releaseStatus);
+            } catch (PLException e) {
+                throw WebUtil.getVciBaseException(e);
+            }
+        }else{
+            if(bos == null){
+                throw new VciBaseException(LIFE_CYCLE_TRANS_ERROR,new String[]{"涓氬姟绫诲瀷鏁版嵁涓虹┖"});
+            }else if(lineVOs ==null){
+                throw new VciBaseException(LIFE_CYCLE_TRANS_ERROR,new String[]{"璺冭縼璺敱涓虹┖"});
+            }else{
+                throw new VciBaseException(LIFE_CYCLE_TRANS_ERROR,new String[]{"璺冭縼璺敱鍜屼笟鍔$被鍨嬫暟鎹暱搴︿笉鐩稿悓"});
+            }
+        }
+    }
+
+    /**
+     * 杩炴帴绾胯浆鎹负骞冲彴鐨勫璞�
+     * @param lineVO 杩炴帴绾垮璞�
+     * @return 骞冲彴鐨勮繛鎺ョ嚎瀵硅薄
+     */
+    private TransitionVO lifeCycleLineVO2DO(OsLifeCycleLineVO lineVO) throws PLException {
+        TransitionVO transitionVO = new TransitionVO();
+        transitionVO.id = lineVO.getOid();
+        transitionVO.source = lineVO.getSourceLifeStatus();
+        transitionVO.destination = lineVO.getTargetLifeStatus();
+        transitionVO.connect = lineVO.getName() == null?"":lineVO.getName();
+        //鍔犱簨浠�
+        TransitionVOEvent[] events;
+        if(lineVO.getEvents() == null || lineVO.getEvents().length == 0){
+            events = new TransitionVOEvent[0];
+        }else{
+            events = new TransitionVOEvent[lineVO.getEvents().length];
+            for (int j = 0; j < lineVO.getEvents().length; j++) {
+                OsLifeCycleLineEventVO eventVO = lineVO.getEvents()[j];
+                TransitionVOEvent event = new TransitionVOEvent();
+                event.id = eventVO.getOid();
+                event.name = Func.isBlank(eventVO.getEventFullName()) ?
+                        platformClientUtil.getLifeCycleService().getLCEventValueByKey(eventVO.getOid()):eventVO.getEventFullName();
+                events[j] = event;
+            }
+        }
+        transitionVO.transitionVOEvents = events;
+        return transitionVO;
+    }
+
+    /**
+     * 閫氳繃缂栧彿鑾峰彇鐢熷懡鍛ㄦ湡鐘舵�佸璞★紝
+     *
+     * @param lctId 鐢熷懡鍛ㄦ湡缂栧彿
+     * @return 鏄剧ず瀵硅薄
+     */
+    @Override
+    public OsLifeCycleVO getLifeCycleById(String lctId){
+        WebUtil.alertNotNull(lctId,"涓氬姟绫诲瀷缂栧彿");
+        return selectAllLifeCycleMap().getOrDefault(lctId,null);
+    }
+
+    /**
+     * 鏌ヨ鐢熷懡鍛ㄦ湡鐨勬槧灏�
+     * @return key鏄敓鍛藉懆鏈熺殑缂栧彿锛� value鏄敓鍛藉懆鏈熺殑瀵硅薄
+     * @throws VciBaseException 鏌ヨ鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
+     */
+    @Override
+    @VciUnLog
+    public Map<String,OsLifeCycleVO> selectAllLifeCycleMap(){
+        return Optional.ofNullable(selectAllLifeCycle()).orElseGet(()->new ArrayList<>()).stream().collect(Collectors.toMap(s->s.getId(), t->t,(o1, o2)->o1));
+    }
+
+    /**
+     * 鏌ヨ鎵�鏈夌敓鍛藉懆鏈熺姸鎬�
+     *
+     * @return 鐢熷懡鍛ㄦ湡鐘舵�佺殑瀵硅薄
+     * @throws VciBaseException 鏌ヨ鐨勬椂鍊欏嚭閿欑殑鏃跺��
+     */
+    @Override
+    @VciUnLog
+    public List<OsLifeCycleVO> selectAllLifeCycle(){
+        try {
+            LifeCycle[] lifeCyles = platformClientUtil.getLifeCycleService().getLifeCycles();
+            return lifeCycleDO2VOs(Arrays.stream(lifeCyles).collect(Collectors.toList()));
+        } catch (PLException vciError) {
+            if(logger.isErrorEnabled()){
+                logger.error(vciError.code,vciError);
+            }
+            throw WebUtil.getVciBaseException(vciError);
+        }
+    }
+
+    /**
+     * 鐢熷懡鍛ㄦ湡鐨勬暟鎹璞¤浆鎹负鏄剧ず瀵硅薄
+     * @param lifeCycles 鏁版嵁瀵硅薄
+     * @return 鏄剧ず瀵硅薄
+     */
+    @Override
+    public List<OsLifeCycleVO> lifeCycleDO2VOs(Collection<LifeCycle> lifeCycles){
+        List<OsLifeCycleVO> lifeCycleVOS = new ArrayList<>();
+        Optional.ofNullable(lifeCycles).orElseGet(()->new ArrayList<>()).stream().forEach(lifeCyle -> {
+            OsLifeCycleVO lifeCycleVO = lifeCycleDO2VO(lifeCyle);
+            lifeCycleVOS.add(lifeCycleVO);
+        });
+        return lifeCycleVOS;
+    }
+
+    /**
+     * 鐢熷懡鍛ㄦ湡鐨勬暟鎹璞¤浆鎹负鏄剧ず瀵硅薄
+     * @param lifeCycle 鏁版嵁瀵硅薄
+     * @return 鏄剧ず瀵硅薄
+     */
+    @Override
+    public OsLifeCycleVO lifeCycleDO2VO(LifeCycle lifeCycle){
+        OsLifeCycleVO life = new OsLifeCycleVO();
+        Map<String, OsStatusVO> statusVOMap = statusServiceI.selectAllStatusMap();
+        if(lifeCycle !=null) {
+            try {
+                life.setCreateTime(new Date(lifeCycle.createTime));
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+            life.setCreator(lifeCycle.creator);
+            life.setDescription(lifeCycle.description);
+            life.setId(lifeCycle.name);
+            life.setLastModifier(lifeCycle.modifier);
+            try {
+                life.setLastModifyTime(new Date(lifeCycle.modifyTime));
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+            life.setOid(lifeCycle.oid);
+            Bound[] bounds = lifeCycle.bounds;
+            if(bounds != null && bounds.length>0){
+                List<OsLifeCycleLineBoundVO> boundVOList = new ArrayList<>();
+                Arrays.stream(bounds).forEach(bound->{
+                    OsLifeCycleLineBoundVO boundVO = new OsLifeCycleLineBoundVO();
+                    boundVO.setId(bound.id);
+                    boundVO.setName(bound.name);
+                    boundVO.setCellx(bound.cellx);
+                    boundVO.setCelly(bound.celly);
+                    boundVO.setCellh(bound.cellh);
+                    boundVO.setCellw(bound.cellw);
+                    boundVO.setCellicon(bound.cellicon);
+                    boundVOList.add(boundVO);
+                });
+                life.setBounds(boundVOList.toArray(new OsLifeCycleLineBoundVO[boundVOList.size()]));
+            }else{
+                life.setBounds(new OsLifeCycleLineBoundVO[0]);
+            }
+            List<OsLifeCycleLineVO> lineVOS = new ArrayList<>();
+            if(lifeCycle.routes!=null && lifeCycle.routes.length>0){
+                Arrays.stream(lifeCycle.routes).forEach(route->{
+                    OsLifeCycleLineVO lineVO = new OsLifeCycleLineVO();
+                    lineVO.setSourceLifeStatus(route.source);
+                    lineVO.setSourceLifeStatusName(statusVOMap.getOrDefault(route.source,new OsStatusVO()).getName());
+                    lineVO.setTargetLifeStatus(route.destination);
+                    lineVO.setTargetLifeStatusName(statusVOMap.getOrDefault(route.destination,new OsStatusVO()).getName());
+                    lineVO.setOid(route.id);
+                    lineVO.setName(route.connect);
+                    if(route.transitionVOEvents ==null || route.transitionVOEvents.length == 0){
+                        lineVO.setEvents(new OsLifeCycleLineEventVO[0]);
+                    }else {
+                        OsLifeCycleLineEventVO[] eventVOs = new OsLifeCycleLineEventVO[route.transitionVOEvents.length];
+                        for (int i = 0; i < route.transitionVOEvents.length; i++) {
+                            com.vci.corba.omd.lcm.TransitionVOEvent event = route.transitionVOEvents[i];
+                            OsLifeCycleLineEventVO eventVO = new OsLifeCycleLineEventVO();
+                            eventVO.setOid(event.id);
+                            eventVO.setEventFullName(event.name);
+                            eventVOs[i] = eventVO;
+                        }
+                        lineVO.setEvents(eventVOs);
+                    }
+                    lineVOS.add(lineVO);
+                });
+            }
+            life.setLines(lineVOS);
+            life.setStartStatus(lifeCycle.startState);
+            life.setStartStatusName(statusVOMap.getOrDefault(lifeCycle.startState,new OsStatusVO()).getName());
+            life.setName(lifeCycle.tag);
+            try {
+                life.setTs(VciDateUtil.str2Date(lifeCycle.ts,VciDateUtil.DateTimeMillFormat));
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        return life;
+    }
+
+    /**
+     * 浣跨敤鐢熷懡鍛ㄦ湡鐨勭紪鍙疯幏鍙栧寘鍚殑鐘舵�佹樉绀哄璞�
+     *
+     * @param lifeCycleId 鐢熷懡鍛ㄦ湡鐨勭紪鍙�
+     * @return 鐘舵�佺殑鏄剧ず瀵硅薄
+     */
+    @Override
+    public List<OsStatusVO> listStatusById(String lifeCycleId) {
+        OsLifeCycleVO lifeCycleVO = getLifeCycleById(lifeCycleId);
+        if(lifeCycleVO == null || StringUtils.isBlank(lifeCycleVO.getOid())){
+            return new ArrayList<>();
+        }
+        Set<String> hasStatusIdSet = new HashSet<>();
+        lifeCycleVO.getLines().stream().forEach(lineVO->{
+            hasStatusIdSet.add(lineVO.getSourceLifeStatus());
+            hasStatusIdSet.add(lineVO.getTargetLifeStatus());
+        });
+        Map<String, OsStatusVO> statusVOMap = statusServiceI.selectAllStatusMap();
+        List<OsStatusVO> statusVOList = new ArrayList<>();
+        hasStatusIdSet.stream().forEach(statusId->{
+            statusVOList.add(statusVOMap.getOrDefault(statusId,new OsStatusVO()));
+        });
+        return statusVOList;
+    }
+}
diff --git a/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebLinkTypeServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebLinkTypeServiceImpl.java
new file mode 100644
index 0000000..7f72357
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebLinkTypeServiceImpl.java
@@ -0,0 +1,164 @@
+package com.vci.web.service.impl;
+
+import com.vci.corba.common.PLException;
+import com.vci.corba.omd.ltm.LinkType;
+import com.vci.pagemodel.OsAttributeVO;
+import com.vci.pagemodel.OsBtmTypeVO;
+import com.vci.pagemodel.OsLinkTypeAttributeVO;
+import com.vci.pagemodel.OsLinkTypeVO;
+import com.vci.starter.web.annotation.log.VciUnLog;
+import com.vci.starter.web.util.BeanUtilForVCI;
+import com.vci.starter.web.util.VciDateUtil;
+import com.vci.web.service.WebAttributeServiceI;
+import com.vci.web.service.WebBtmServiceI;
+import com.vci.web.service.WebEnumServiceI;
+import com.vci.web.service.WebLinkTypeServiceI;
+import com.vci.web.util.PlatformClientUtil;
+import com.vci.web.util.WebUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @Description 閾炬帴绫诲瀷鏈嶅姟
+ * @Author dangsn
+ * @Date 2024/11/28 11:42
+ */
+@Service
+public class WebLinkTypeServiceImpl implements WebLinkTypeServiceI {
+
+    /**
+     * 鏃ュ織
+     */
+    private Logger logger = LoggerFactory.getLogger(getClass());
+
+
+    /**
+     * 骞冲彴鐨勮皟鐢ㄥ伐鍏风被
+     */
+    @Resource
+    private PlatformClientUtil platformClientUtil;
+
+    /**
+     * 涓氬姟绫诲瀷鏈嶅姟
+     */
+    @Resource
+    private WebBtmServiceI btmService;
+
+    /**
+     * 鏋氫妇鐨勬湇鍔�
+     */
+    @Resource
+    private WebEnumServiceI enumService;
+
+    /**
+     * 灞炴�х殑鏈嶅姟
+     */
+    @Resource
+    private WebAttributeServiceI attributeService;
+
+    /**
+     * 鏌ヨ鎵�鏈夌殑閾炬帴绫诲瀷
+     *
+     * @return 閾炬帴绫诲瀷瀵硅薄
+     */
+    @Override
+    @VciUnLog
+    public List<OsLinkTypeVO> selectAllLink() {
+        try {
+            return linkTypeDO2VOs(Arrays.stream(platformClientUtil.getLinkTypeService().getLinkTypes()).collect(Collectors.toList()));
+        } catch (PLException vciError) {
+            throw WebUtil.getVciBaseException(vciError);
+        }
+    }
+
+    /**
+     * 鏌ヨ鎵�鏈夌殑涓氬姟绫诲瀷鏄犲皠
+     *
+     * @return key 鏄笟鍔$殑鑻辨枃鍚嶇О鐨勫皬鍐�
+     */
+    @Override
+    @VciUnLog
+    public Map<String, OsLinkTypeVO> selectAllLinkMap() {
+        return Optional.ofNullable(selectAllLink()).orElseGet(()->new ArrayList<>()).stream().collect(Collectors.toMap(s->s.getId().toLowerCase(), t->t,(o1, o2)->o1));
+    }
+
+    /**
+     * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+     *
+     * @param linkTypes 鏁版嵁瀵硅薄
+     * @return 鏄剧ず瀵硅薄
+     */
+    @Override
+    public List<OsLinkTypeVO> linkTypeDO2VOs(Collection<LinkType> linkTypes) {
+        List<OsLinkTypeVO> VOS = new ArrayList<>();
+        Optional.ofNullable(linkTypes).orElseGet(()->new ArrayList<>()).stream().forEach(linkType -> {
+            OsLinkTypeVO vo = linkTypeDO2VO(linkType);
+            VOS.add(vo);
+        });
+        return VOS;
+    }
+
+    /**
+     * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+     *
+     * @param linkType 鏁版嵁瀵硅薄
+     * @return 鏄剧ず瀵硅薄
+     */
+    @Override
+    public OsLinkTypeVO linkTypeDO2VO(LinkType linkType) {
+        OsLinkTypeVO vo = new OsLinkTypeVO();
+        if(linkType !=null){
+            vo.setOid(linkType.oid);
+            vo.setCreator(linkType.creator);
+            vo.setLastModifier(linkType.modifier);
+            try {
+                vo.setCreateTime(VciDateUtil.long2Date(linkType.createTime));
+                vo.setLastModifyTime(VciDateUtil.long2Date(linkType.modifyTime));
+                vo.setTs(VciDateUtil.long2Date(linkType.ts));
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+            vo.setDescription(linkType.description);
+            vo.setId(linkType.name);
+            vo.setName(linkType.tag);
+            vo.setFromBtmTypeVOS(btmService.listBtmByIds(Arrays.stream(linkType.btmItemsFrom).collect(Collectors.toSet())));
+            if(!CollectionUtils.isEmpty(vo.getFromBtmTypeVOS())){
+                vo.setFromBtmType(Arrays.stream(linkType.btmItemsFrom).collect(Collectors.joining(",")));
+                vo.setFromBtmTypeName(vo.getFromBtmTypeVOS().stream().map(OsBtmTypeVO::getName).collect(Collectors.joining(",")));
+            }
+            vo.setToBtmTypeVOS(btmService.listBtmByIds(Arrays.stream(linkType.btmItemsTo).collect(Collectors.toSet())));
+            if(!CollectionUtils.isEmpty(vo.getToBtmTypeVOS())){
+                vo.setToBtmType(Arrays.stream(linkType.btmItemsTo).collect(Collectors.joining(",")));
+                vo.setToBtmTypeName(vo.getToBtmTypeVOS().stream().map(OsBtmTypeVO::getName).collect(Collectors.joining(",")));
+            }
+            vo.setImplClass(linkType.implClass);
+            vo.setShape(linkType.shape);
+            List<OsAttributeVO> attributeVOS = attributeService.listAttrByIds(Arrays.stream(linkType.attributes).collect(Collectors.toList()));
+            List<OsLinkTypeAttributeVO> linkTypeAttributeVOS = new ArrayList<>();
+            Optional.ofNullable(attributeVOS).orElseGet(()->new ArrayList<>()).stream().forEach(attributeVO->{
+                OsLinkTypeAttributeVO linkTypeAttributeVO = new OsLinkTypeAttributeVO();
+                BeanUtilForVCI.convert(attributeVO,linkTypeAttributeVO);
+                linkTypeAttributeVO.setPkLinkType(vo.getOid());
+                if(StringUtils.isNotBlank(attributeVO.getBtmTypeId())){
+                    linkTypeAttributeVO.setReferFlag(true);
+                    linkTypeAttributeVO.setReferBtmTypeId(attributeVO.getBtmTypeId());
+                }
+                if(StringUtils.isNotBlank(attributeVO.getEnumId())){
+                    linkTypeAttributeVO.setEnumFlag(true);
+                    linkTypeAttributeVO.setEnumItemMap(enumService.getEnumValueMap(linkTypeAttributeVO.getEnumId()));
+                }
+                linkTypeAttributeVOS.add(linkTypeAttributeVO);
+            });
+            vo.setAttributes(linkTypeAttributeVOS);
+        }
+        return vo;
+    }
+}
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebLoServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebLoServiceImpl.java
similarity index 91%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebLoServiceImpl.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebLoServiceImpl.java
index 59d7a9f..1df3cbf 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebLoServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebLoServiceImpl.java
@@ -12,6 +12,7 @@
 import com.vci.corba.query.ObjectQueryService;
 import com.vci.corba.query.data.BOAndLO;
 import com.vci.omd.utils.ObjectTool;
+import com.vci.query.UILinkTypeDataQuery;
 import com.vci.starter.web.constant.QueryOptionConstant;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.DataGrid;
@@ -19,7 +20,6 @@
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.starter.web.util.VciDateUtil;
 import com.vci.web.properties.WebProperties;
-import com.vci.web.query.UILinkTypeDataQuery;
 import com.vci.web.service.WebBoServiceI;
 import com.vci.web.service.WebLoServiceI;
 import com.vci.web.util.PlatformClientUtil;
@@ -42,21 +42,22 @@
  */
 @Service
 public class WebLoServiceImpl implements WebLoServiceI {
+	/**
+	 * 鏃ュ織瀵硅薄
+	 */
+	private Logger logger = LoggerFactory.getLogger(getClass());
 
 	/**
 	 * 澶氳瑷�鍓嶇紑
 	 */
 	private final String msgCodePrefix = "com.vci.web.loService.";
 
-	/**
-	 * 鏃ュ織瀵硅薄
-	 */
-	private Logger logger = LoggerFactory.getLogger(getClass());
-
-
 	@Autowired
 	private WebBoServiceI boService;
 
+	/**
+	 *
+	 */
 	@Autowired
 	private WebProperties webProperties;
 
@@ -75,24 +76,17 @@
 		LO_BASE_FIELD_MAP.put("oid","oid");
 		LO_BASE_FIELD_MAP.put("creator","creator");
 		LO_BASE_FIELD_MAP.put("createTime","createTime");
-		//LO_BASE_FIELD_MAP.put("lastModifier","lastModifier");
-		//LO_BASE_FIELD_MAP.put("lastModifyTime","lastModifyTime");
 		LO_BASE_FIELD_MAP.put("modifier","lastModifier");
 		LO_BASE_FIELD_MAP.put("modifyTime","lastModifyTime");
 		LO_BASE_FIELD_MAP.put("fromOid","f_oid");
-		//LO_BASE_FIELD_MAP.put("fromRevisionOid","f_revisionoid");
 		LO_BASE_FIELD_MAP.put("fromRevOid","f_revisionoid");
 		LO_BASE_FIELD_MAP.put("fromNameOid","f_nameoid");
-		//LO_BASE_FIELD_MAP.put("fromBTMName","f_btwname");
 		LO_BASE_FIELD_MAP.put("fromBTName","f_btwname");
-		//LO_BASE_FIELD_MAP.put("toRevisionOid","t_revisionoid");
 		LO_BASE_FIELD_MAP.put("toRevOid","t_revisionoid");
 		LO_BASE_FIELD_MAP.put("toNameOid","t_nameoid");
-		//LO_BASE_FIELD_MAP.put("toBTMName","t_btwname");
 		LO_BASE_FIELD_MAP.put("toBTName","t_btwname");
 		LO_BASE_FIELD_MAP.put("toOid","t_oid");
 		LO_BASE_FIELD_MAP.put("ts","ts");
-		//LO_BASE_FIELD_MAP.put("linkTypeName","linkTypeName");
 		LO_BASE_FIELD_MAP.put("ltName","linkTypeName");
 	}
 
@@ -170,7 +164,7 @@
 				String[] sort = ph.getSort().split(",");
 				String[] order = ph.getOrder().split(",");
 				if(sort.length != order.length){
-					throw new VciBaseException(msgCodePrefix + ".sortlengtherror",new Object[]{sort.length,order.length});
+					throw new VciBaseException(msgCodePrefix + "sortLengthError",new Object[]{sort.length,order.length});
 				}
 				List<OrderInfo> orderInfoList = new ArrayList<OrderInfo>();
 				for(int i = 0 ; i < sort.length ;i++){
@@ -249,24 +243,12 @@
 				}
 				return rtnOBJs;
 			}
-		} catch (PLException e) {
-//			logger.error(e.error_code,e);
-//			throw WebUtil.getVciBaseException(e);
+		} catch (Exception e) {
+			logger.error("鏌ヨ杩炴帴绫诲瀷澶辫触锛�",e);
+			throw new VciBaseException("鏌ヨ閾炬帴绫诲瀷澶辫触锛�", new Object[]{}, e);
 		}
 		return rtnOBJs;
 	}
-//
-//	@Override
-//	public Map<String, BusinessObject> queryLinkedCbo(LinkObject[] lo,
-//			boolean isDirection) throws VciBaseException {
-//        LinkObject[] clos = new LinkObject[lo.length];
-//        for(int i =0 ; i < lo.length; i ++){
-//        	LinkObject clo = new LinkObject();
-//        	clo = lo[i];
-//        	clos[i] = clo;
-//        }
-//        return queryLinkedCbo(clos,isDirection);
-//	}
 
 	@Override
 	public Map<String, BusinessObject> queryLinkedCbo(List los,
@@ -367,7 +349,12 @@
 	public Map clo2Map(LinkObject clo) throws VciBaseException {
 		Map<String,String> map = new HashMap<String, String>();
 		WebUtil.copyValueToMapFromClos(clo, map);
-		return map;
+		//TODO:20241128 杩囨护鎺夌┖key鍜岀┖value
+		Map<String, Object> filteredClo2Map = map.entrySet()
+				.stream()
+				.filter(entry -> entry.getKey() != null && !entry.getKey().isEmpty() && entry.getValue() != null && !entry.getValue().toString().isEmpty())
+				.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
+		return filteredClo2Map;
 	}
 
 	@Override
@@ -452,7 +439,7 @@
 		WebUtil.alertNotNull(loName,"閾炬帴");
 		return null;
 		//todo 鍦ㄥ钩鍙伴噷闈㈤渶瑕佷紶鍏ュ璞★紝鐜板湪鏄瓧绗︿覆锛岄渶瑕佺湅骞冲彴濡備綍澶勭悊
-//			return loOperation.createLinkObject(loName,WebUtil.getCurrentUserId());
+		//return loOperation.createLinkObject(loName,WebUtil.getCurrentUserId());
 	}
 
 	/**
@@ -523,9 +510,9 @@
 	 * @return 閾炬帴绫诲瀷鍜屽叧鑱旂殑to绔�
 	 */
 	@Override
-	public List<com.vci.corba.query.data.BOAndLO> queryCLOAndBOBySchema(UILinkTypeDataQuery linkTypeDataQuery) {
+	public List<BOAndLO> queryCLOAndBOBySchema(UILinkTypeDataQuery linkTypeDataQuery) {
 		VciBaseUtil.alertNotNull(linkTypeDataQuery,"閾炬帴绫诲瀷鏌ヨ瀵硅薄",linkTypeDataQuery.getQueryTemplateName(),"鏌ヨ妯℃澘鐨勫悕绉�");
-		QueryTemplate qt =boService.getQtByName(linkTypeDataQuery.getQueryTemplateName(),linkTypeDataQuery.getReplaceMap());
+		QueryTemplate qt = boService.getQtByName(linkTypeDataQuery.getQueryTemplateName(),linkTypeDataQuery.getReplaceMap());
 		return queryCLOAndBOByQueryTemplate(qt,linkTypeDataQuery);
 	}
 
@@ -535,7 +522,7 @@
 	 * @param linkTypeDataQuery 閾炬帴绫诲瀷鐨勬煡璇㈠璞�
 	 * @return 閾炬帴绫诲瀷鍜屼笟鍔$被鍨�
 	 */
-	private List<com.vci.corba.query.data.BOAndLO> queryCLOAndBOByQueryTemplate(QueryTemplate qt,UILinkTypeDataQuery linkTypeDataQuery){
+	private List<BOAndLO> queryCLOAndBOByQueryTemplate(QueryTemplate qt,UILinkTypeDataQuery linkTypeDataQuery){
 		if(StringUtils.isNotBlank(linkTypeDataQuery.getToBtmType()) && StringUtils.isBlank(qt.getBtmType())) {
 			qt.setBtmType(linkTypeDataQuery.getToBtmType());
 		}
@@ -583,7 +570,7 @@
 		}
 		boService.setPageAndOrderToQT(qt,linkTypeDataQuery.getPageHelper());
 		try {
-			com.vci.corba.query.data.BOAndLO[] bos = platformClientUtil.getQueryService().getBOAndLOS(qt.getId(), OQTool.qtTOXMl(qt).asXML(),linkTypeDataQuery.getParentOid()==null?"":linkTypeDataQuery.getParentOid());
+			BOAndLO[] bos = platformClientUtil.getQueryService().getBOAndLOS(qt.getId(), OQTool.qtTOXMl(qt).asXML(),linkTypeDataQuery.getParentOid()==null?"":linkTypeDataQuery.getParentOid());
 			return Arrays.stream(bos).collect(Collectors.toList());
 		} catch (PLException e) {
 //			logger.error(e.error_code,e);
@@ -597,7 +584,7 @@
 	 * @return 閾炬帴瀵硅薄鍜宼o绔笟鍔″璞�
 	 */
 	@Override
-	public List<com.vci.corba.query.data.BOAndLO> queryCLOAndBoByLinkType(UILinkTypeDataQuery linkTypeDataQuery){
+	public List<BOAndLO> queryCLOAndBoByLinkType(UILinkTypeDataQuery linkTypeDataQuery){
 		VciBaseUtil.alertNotNull(linkTypeDataQuery,"閾炬帴绫诲瀷鏌ヨ瀵硅薄",linkTypeDataQuery.getLinkType(),"閾炬帴绫诲瀷鐨勫悕绉�");
 		QueryTemplate qt = null;
 		if(StringUtils.isBlank(linkTypeDataQuery.getQueryTemplateName())){
@@ -826,4 +813,48 @@
 		}
 	}
 
+	/**
+	 * 閾炬帴绫诲瀷
+	 *
+	 * @param clo            閾炬帴绫诲瀷
+	 * @param attributeName  灞炴�у悕绉�
+	 * @param attributeValue 灞炴�х殑鍊�
+	 */
+	@Override
+	public void setAttribute(LinkObject clo, String attributeName, String attributeValue) {
+		AttributeValue[] attrValues = clo.newAttrValList;
+		ArrayList<AttributeValue> attrValList = new ArrayList();
+		AttributeValue attrVal;
+		int i;
+		if (attrValues != null && attrValues.length > 0) {
+			AttributeValue[] var9 = attrValues;
+			i = attrValues.length;
+
+			for(int var7 = 0; var7 < i; ++var7) {
+				attrVal = var9[var7];
+				attrValList.add(attrVal);
+			}
+		}
+
+		attrVal = null;
+		boolean isExist = false;
+
+		for(i = 0; i < attrValList.size(); ++i) {
+			attrVal = attrValList.get(i);
+			if (attrVal.attrName.toUpperCase().equals(attributeName.toUpperCase())) {
+				attrVal.attrVal = attributeValue;
+				isExist = true;
+				break;
+			}
+		}
+
+		if (!isExist) {
+			attrVal = new AttributeValue();
+			attrVal.attrName = attributeName.toUpperCase();
+			attrVal.attrVal = attributeValue;
+			attrValList.add(attrVal);
+		}
+
+		clo.newAttrValList = attrValList.toArray(new AttributeValue[attrValList.size()]);
+	}
 }
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebProcessCommandServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebProcessCommandServiceImpl.java
similarity index 96%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebProcessCommandServiceImpl.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebProcessCommandServiceImpl.java
index 6e662f9..b200894 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebProcessCommandServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebProcessCommandServiceImpl.java
@@ -1,5 +1,7 @@
 package com.vci.web.service.impl;
 
+import com.vci.bo.FlowNoticeInfo;
+import com.vci.constant.WFVariablesKeyConstant;
 import com.vci.corba.common.PLException;
 import com.vci.corba.common.data.UserEntityInfo;
 import com.vci.corba.omd.data.BusinessObject;
@@ -7,6 +9,7 @@
 import com.vci.corba.workflow.data.FlowInstanceInfo;
 import com.vci.corba.workflow.data.MapTransfersInfo;
 import com.vci.corba.workflow.data.TasksAssignedInfo;
+import com.vci.dto.ProcessStartConfigDTO;
 import com.vci.dto.ProcessTemplateVO;
 import com.vci.dto.VciFileObjectDTO;
 import com.vci.omd.utils.ObjectTool;
@@ -14,23 +17,19 @@
 import com.vci.pagemodel.ProcessOutcomeVO;
 import com.vci.pagemodel.ProcessTaskVO;
 import com.vci.pagemodel.ProcessUserVO;
+import com.vci.starter.web.annotation.FlowNotifyAfter;
+import com.vci.starter.web.annotation.FlowNotifyBefore;
+import com.vci.starter.web.annotation.FlowNotifyWeb;
 import com.vci.starter.web.constant.QueryOptionConstant;
 import com.vci.starter.web.enumpck.DataSecretEnum;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.DataGrid;
 import com.vci.starter.web.pagemodel.SessionInfo;
+import com.vci.starter.web.util.BusAnnotationUtil;
 import com.vci.starter.web.util.LangBaseUtil;
 import com.vci.starter.web.util.VciDateUtil;
-import com.vci.web.annotation.FlowNotifyAfter;
-import com.vci.web.annotation.FlowNotifyBefore;
-import com.vci.web.annotation.FlowNotifyWeb;
-import com.vci.bo.FlowNoticeInfo;
-import com.vci.constant.WFVariablesKeyConstant;
 import com.vci.web.dao.WebProcessDaoI;
-import com.vci.dto.ProcessStartConfigDTO;
-import com.vci.web.properties.WebProperties;
 import com.vci.web.service.*;
-import com.vci.web.util.BusAnnotationUtil;
 import com.vci.web.util.PlatformClientUtil;
 import com.vci.web.util.WebUtil;
 import org.apache.commons.lang3.StringUtils;
@@ -69,11 +68,7 @@
     private WebProcessDaoI processDao;
 
     @Autowired
-    private OsLifeCycleServiceI lifeCycleService;
-
-
-    @Autowired
-    private WebProperties webProperties;
+    private WebLifeCycleServiceI lifeCycleService;
 
     /**
      * 鏂囦欢涓婁紶鏈嶅姟
@@ -261,7 +256,11 @@
             throw WebUtil.getVciBaseException(e);
         }
         if (StringUtils.isNotBlank(config.getStartStatus())) {
-            lifeCycleService.transCboStatus(allCbo, config.getStartStatus());
+            try {
+                lifeCycleService.transCboStatus(allCbo, config.getStartStatus());
+            } catch (Exception e) {
+                throw new VciBaseException("鍚姩娴佺▼鏃讹紝鎵归噺璺冭縼鐢熷懡鍛ㄦ湡鐘舵�佸け璐ワ紒", new Object[]{}, e);
+            }
         }
         callAfter(processInstanceId,null,null,currentTime);
     }
@@ -634,10 +633,19 @@
         }
         List<Map> mapList = boService.cbos2Map(workItemCbos);
         callBefore(mapList,"suspend",note,currentTime);
-        lifeCycleService.transCboStatus(needUpdateCbos, "Suspended");
+        try {
+            lifeCycleService.transCboStatus(needUpdateCbos, "Suspended");
+        } catch (Exception e) {
+            throw new VciBaseException("鎸傝捣娴佺▼鏃讹紝鎵归噺璺冭縼鐢熷懡鍛ㄦ湡鐘舵�佸け璐ワ紒", new Object[]{}, e);
+        }
         callAfter(null,null,mapList,currentTime);
     }
 
+    /**
+     * 鎭㈠娴佺▼
+     * @param executionId 娴佺▼涓婚敭
+     * @throws VciBaseException
+     */
     @Override
     public void resumeProcess(String executionId) throws VciBaseException {
         WebUtil.alertNotNull(executionId, "娴佺▼鎵ц瀹炰緥鐨勪富閿�");
@@ -674,7 +682,11 @@
         }
 
         callBefore(null,"resume","",currentTime);
-        lifeCycleService.transCboStatus(needUpdateCbos, "Executing");
+        try {
+            lifeCycleService.transCboStatus(needUpdateCbos, "Executing");
+        } catch (Exception e) {
+            throw new VciBaseException("鎭㈠娴佺▼鏃讹紝鎵归噺璺冭縼鐢熷懡鍛ㄦ湡鐘舵�佸け璐ワ紒", new Object[]{}, e);
+        }
         callAfter(null,boService.cbos2Map(workItemCbos),null,currentTime);
     }
 
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebProcessDefineServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebProcessDefineServiceImpl.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebProcessDefineServiceImpl.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebProcessDefineServiceImpl.java
index ca79668..26a475a 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebProcessDefineServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebProcessDefineServiceImpl.java
@@ -1,10 +1,10 @@
 package com.vci.web.service.impl;
 
+import com.vci.constant.FileTypeConstants;
+import com.vci.constant.WFVariablesKeyConstant;
 import com.vci.corba.omd.data.LinkObject;
 import com.vci.dto.ProcessTemplateVO;
-import com.vci.frameworkcore.compatibility.OrgDeptQueryServiceI;
-import com.vci.frameworkcore.compatibility.SmRoleQueryServiceI;
-import com.vci.frameworkcore.compatibility.SmUserQueryServiceI;
+import com.vci.model.WFProcessClassifyDO;
 import com.vci.pagemodel.*;
 import com.vci.starter.web.enumpck.DataSecretEnum;
 import com.vci.starter.web.enumpck.UserSecretEnum;
@@ -13,13 +13,9 @@
 import com.vci.starter.web.util.Md5;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
-import com.vci.constant.FileTypeConstants;
-import com.vci.constant.WFVariablesKeyConstant;
 import com.vci.web.dao.WebProcessDaoI;
-import com.vci.model.WFProcessClassifyDO;
 import com.vci.web.properties.WebProperties;
 import com.vci.web.service.*;
-import com.vci.web.util.PlatformClientUtil;
 import com.vci.web.util.WebUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.dom4j.Document;
@@ -49,17 +45,9 @@
 	
 	@Autowired
 	private WebProcessDaoI processDao;
-	
-
 
 	@Autowired
 	private WebProperties webProperties;
-	
-	@Autowired
-	private WebProcessCommandServiceI proCmdService;
-
-	@Autowired
-	private PlatformClientUtil platformClientUtil;
 
 	/**
 	 * 涓氬姟鏁版嵁鏈嶅姟
@@ -67,16 +55,18 @@
 	@Autowired
 	private WebBoServiceI boService;
 
-
 	/**
 	 * 瑙掕壊鏈嶅姟
 	 */
 	@Autowired
 	private SmRoleQueryServiceI roleQueryService;
+
 	@Autowired
 	private OrgDeptQueryServiceI deptQueryServiceI;
+
 	@Autowired
 	private SmUserQueryServiceI userQueryServiceI;
+
 	@Autowired
 	private WebSecretServiceI secretService;
 
@@ -85,11 +75,6 @@
 	 */
 	@Autowired
 	private VciFileObjectServiceI fileObjectService;
-
-
-	@Autowired
-	private OsEnumServiceI enumService;
-
 	
 	private final String msgCodePrefix = "com.vci.web.flow.";
 
diff --git a/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebPwdStrategyQueryServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebPwdStrategyQueryServiceImpl.java
new file mode 100644
index 0000000..8d23c32
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebPwdStrategyQueryServiceImpl.java
@@ -0,0 +1,230 @@
+package com.vci.web.service.impl;
+
+import com.vci.corba.common.PLException;
+import com.vci.corba.omd.data.BusinessObject;
+import com.vci.model.SmPasswordStrategyDO;
+import com.vci.omd.utils.ObjectTool;
+import com.vci.pagemodel.SmPasswordStrategyVO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.util.BeanUtilForVCI;
+import com.vci.starter.web.util.Lcm.Func;
+import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.service.SmUserQueryServiceI;
+import com.vci.web.service.WebBoServiceI;
+import com.vci.web.service.WebPwdStrategyQueryServiceI;
+import com.vci.web.util.PlatformClientUtil;
+import com.vci.web.util.WebUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import static com.vci.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
+
+/**
+ * @Description 瀵嗙爜绛栫暐鏌ヨ
+ * @Author dangsn
+ * @Date 2024/11/29 11:23
+ */
+@Service
+public class WebPwdStrategyQueryServiceImpl implements WebPwdStrategyQueryServiceI {
+
+    /**
+     * 鏃ュ織
+     */
+    private Logger logger = LoggerFactory.getLogger(getClass());
+
+    /**
+     * 骞冲彴璋冪敤瀹㈡埛绔�
+     */
+    @Autowired
+    private PlatformClientUtil platformClientUtil;
+
+    /**
+     * 涓氬姟鏁版嵁鏈嶅姟
+     */
+    @Autowired
+    private WebBoServiceI boService;
+
+    /**
+     * 鐢ㄦ埛鏌ヨ鏈嶅姟
+     */
+    @Autowired
+    private SmUserQueryServiceI smUserQueryService;
+
+    /**
+     * 鑾峰彇榛樿瀵嗙爜绛栫暐
+     * @return
+     */
+    public SmPasswordStrategyVO getPasswordStrategyVOByDefault(){
+        //鑾峰彇榛樿鐨�
+        VciQueryWrapperForDO queryWrapperForDO = new VciQueryWrapperForDO(null, SmPasswordStrategyDO.class);
+        queryWrapperForDO.eq("plisdefault","1");
+        List<BusinessObject> cboList = boService.queryBySql(queryWrapperForDO.getSelectFieldSql() + " from plpasswordstrategy " +
+                queryWrapperForDO.getTableNick() + queryWrapperForDO.getLinkTableSql() +
+                (StringUtils.isBlank(queryWrapperForDO.getWhereSql()) ? "" : (" where " + queryWrapperForDO.getWhereSql())), null);
+        if(!CollectionUtils.isEmpty(cboList)){
+            SmPasswordStrategyDO passwordStrategyDO = new SmPasswordStrategyDO();
+            WebUtil.copyValueToObjectFromCbos(cboList.get(0),passwordStrategyDO);
+            return pwdStrategyDO2VO(passwordStrategyDO);
+        }
+        return null;
+    }
+
+    /**
+     * 瀵嗙爜绛栫暐do瀵硅薄杞瑅o瀵硅薄
+     * @param smPasswordStrategyDO
+     * @return
+     */
+    private SmPasswordStrategyVO pwdStrategyDO2VO(SmPasswordStrategyDO smPasswordStrategyDO){
+        SmPasswordStrategyVO passwordStrategyVO = new SmPasswordStrategyVO();
+        BeanUtilForVCI.convert(smPasswordStrategyDO,passwordStrategyVO);
+        return passwordStrategyVO;
+    }
+
+    /**
+     * 鏍规嵁鐢ㄦ埛鐨勪富閿紝鑾峰彇鐢ㄦ埛鐨勫瘑鐮佸畨鍏ㄧ瓥鐣�
+     * @param userOid 鐢ㄦ埛鐨勪富閿�
+     * @return 瀵嗙爜瀹夊叏绛栫暐鐨勬樉绀哄璞★紝濡傛灉涓嶅瓨鍦ㄥ垯浼氳繑鍥濶ull
+     * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮暟鎹簱鏌ヨ鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
+     */
+    @Override
+    public SmPasswordStrategyVO getPasswordStrategyVOByUserOid(String userOid) throws PLException {
+        WebUtil.alertNotNull(userOid,"鐢ㄦ埛鐨勪富閿�");
+        if(!smUserQueryService.checkUserExist(null,userOid)){
+            throw new VciBaseException(DATA_OID_NOT_EXIST);
+        }
+        String sql = "select plpasswordstrategyuid,pluseruid from pluserpasswordstrategy where pluseruid = '"+ userOid +"'";
+        List<BusinessObject> cbos = boService.queryBySql(sql, null);
+        if(Func.isNotEmpty(cbos)){
+            return getPasswordStrategyVOByOid(ObjectTool.getNewBOAttributeValue(cbos.get(0), "plpasswordstrategyuid"));
+        }
+        return null;
+    }
+
+    /**
+     * 鎵归噺鏍规嵁鐢ㄦ埛鐨勪富閿潵鑾峰彇瀵嗙爜绛栫暐
+     * @param userOidCollection 鐢ㄦ埛涓婚敭闆嗗悎
+     * @return 瀵嗙爜绛栫暐鐨勬樉绀哄璞★紝key鏄敤鎴蜂富閿�,value鏄繖涓敤鎴峰叧鑱旂殑瀵嗙爜绛栫暐
+     */
+    @Override
+    public Map<String, SmPasswordStrategyVO> batchSmPwdStrategyByUserOids(Collection<String> userOidCollection) {
+        if(CollectionUtils.isEmpty(userOidCollection)){
+            return new HashMap<>();
+        }
+        Map<String,SmPasswordStrategyVO> smPasswordStrategyVOMap = new HashMap<>();
+        Map<String,String> userPasswordStrategyVOMap = new HashMap<>();
+
+        Map<String/*鐢ㄦ埛id*/, SmPasswordStrategyVO/*瀵嗙爜绛栫暐*/> returnMap = new HashMap<>();
+        WebUtil.switchCollectionForOracleIn(userOidCollection).stream().forEach(userOids->{
+            //鏌ヨ瀵嗙爜绛栫暐鍏宠仈淇℃伅锛宬ey涓虹敤鎴穙id锛歷alue涓哄瘑鐮佺瓥鐣id
+            Map<String, String> userPwdStrategyMap = mapUserPwdStrategy(userOids);
+            userPasswordStrategyVOMap.putAll(userPwdStrategyMap);
+            //鏌ヨ瀵嗙爜绛栫暐锛宬ey涓哄瘑鐮佺瓥鐣ヤ富閿細value涓哄瘑鐮佺瓥鐣�
+            smPasswordStrategyVOMap.putAll(mapPasswordStrategyVOMapByOid(userPwdStrategyMap.values()));
+        });
+        //鏌ヨ榛樿鐨勫瘑鐮佺瓥鐣�
+        SmPasswordStrategyVO passwordStrategyVOByDefault = getPasswordStrategyVOByDefault();
+        //寰幆鐢ㄦ埛id锛屾煡璇㈡槸鍚︽湁绗﹀悎鏉′欢鐨刼id
+        userOidCollection.stream().forEach(oid->{
+            SmPasswordStrategyVO smPasswordStrategyVO;
+            //閫氳繃鐢ㄦ埛oid娌¤幏鍙栧埌瀵嗙爜绛栫暐oid锛岃鏄庢病鏈夌粰褰撳墠鐢ㄦ埛璁剧疆绛栫暐锛岀洿鎺ヨ繑榛樿鐨勫瘑鐮佺瓥鐣�
+            String pwdStrategyId = userPasswordStrategyVOMap.get(oid);
+            if(Func.isNotBlank(pwdStrategyId)){
+                //閫氳繃瀵嗙爜绛栫暐oid鍘籱ap涓彇瀵嗙爜绛栫暐
+                smPasswordStrategyVO = smPasswordStrategyVOMap.get(pwdStrategyId);
+            }else {
+                smPasswordStrategyVO = passwordStrategyVOByDefault;
+            }
+            returnMap.put(oid,smPasswordStrategyVO);
+        });
+        return returnMap;
+    }
+
+    /**
+     * 鏍规嵁鐢ㄦ埛涓婚敭鏌ヨ瀵嗙爜绛栫暐鍏宠仈琛ㄤ腑鐨勫瘑鐮佺瓥鐣ヤ富閿�
+     * @param userOids
+     * @return key涓虹敤鎴穙id锛歷alue涓哄瘑鐮佺瓥鐣id
+     */
+    private Map<String,String> mapUserPwdStrategy(Collection<String> userOids){
+        Map<String,String> userPwdStrategyMap = new HashMap<>();
+        WebUtil.switchCollectionForOracleIn(userOids).stream().forEach(userOidSplit->{
+            //鏌ュ叧鑱旇〃sql
+            String sql = "select plpasswordstrategyuid,pluseruid from pluserpasswordstrategy where pluseruid in (" + WebUtil.toInSql(userOidSplit.toArray(new String[0])) + ")";
+            List<BusinessObject> cbos = boService.queryBySql(sql, null);
+            cbos.stream().forEach(cbo->{
+                String pluseruid = ObjectTool.getNewBOAttributeValue(cbo, "pluseruid");
+                String plpasswordstrategyuid = ObjectTool.getNewBOAttributeValue(cbo, "plpasswordstrategyuid");
+                userPwdStrategyMap.put(pluseruid,plpasswordstrategyuid);
+            });
+        });
+        return userPwdStrategyMap;
+    }
+
+    /**
+     * 鏍规嵁涓婚敭鏌ヨ瀵嗙爜绛栫暐map瀵硅薄
+     * @param oidList
+     * @return key涓哄瘑鐮佺瓥鐣ヤ富閿� value涓哄瘑鐮佺瓥鐣�
+     */
+    @Override
+    public Map<String, SmPasswordStrategyVO> mapPasswordStrategyVOMapByOid(Collection<String> oidList) {
+        VciQueryWrapperForDO queryWrapperForDO = new VciQueryWrapperForDO(null, SmPasswordStrategyDO.class);
+        queryWrapperForDO.in("oid",oidList.stream().collect(Collectors.joining(",")));
+        List<BusinessObject> cboList = boService.queryBySql(queryWrapperForDO.getSelectFieldSql() + " from plpasswordstrategy " +
+                queryWrapperForDO.getTableNick() + queryWrapperForDO.getLinkTableSql() +
+                (StringUtils.isBlank(queryWrapperForDO.getWhereSql()) ? "" : (" where " + queryWrapperForDO.getWhereSql())), null);
+        Map<String,SmPasswordStrategyVO> smPasswordStrategyVOMap = new HashMap<>();
+        if(Func.isEmpty(cboList)){
+            return new HashMap<>();
+        }
+        cboList.stream().forEach(item->{
+            SmPasswordStrategyDO passwordStrategyDO = new SmPasswordStrategyDO();
+            WebUtil.copyValueToObjectFromCbos(item,passwordStrategyDO);
+            SmPasswordStrategyVO passwordStrategyVO = new SmPasswordStrategyVO();
+            BeanUtilForVCI.convert(passwordStrategyDO,passwordStrategyVO);
+            smPasswordStrategyVOMap.put(passwordStrategyVO.getOid(),passwordStrategyVO);
+        });
+        return smPasswordStrategyVOMap;
+    }
+
+    /**
+     * 浣跨敤涓婚敭鑾峰彇瀵嗙爜绛栫暐
+     * @param oid 涓婚敭
+     * @return 瀵嗙爜绛栫暐鏄剧ず瀵硅薄
+     */
+    public SmPasswordStrategyVO getPasswordStrategyVOByOid(String oid){
+        VciQueryWrapperForDO queryWrapperForDO = new VciQueryWrapperForDO(null, SmPasswordStrategyDO.class);
+        queryWrapperForDO.eq("oid",oid.trim());
+        List<BusinessObject> cboList = boService.queryBySql(queryWrapperForDO.getSelectFieldSql() + " from plpasswordstrategy " +
+                queryWrapperForDO.getTableNick() + queryWrapperForDO.getLinkTableSql() +
+                (StringUtils.isBlank(queryWrapperForDO.getWhereSql()) ? "" : (" where " + queryWrapperForDO.getWhereSql())), null);
+        if(!CollectionUtils.isEmpty(cboList)){
+            SmPasswordStrategyDO passwordStrategyDO = new SmPasswordStrategyDO();
+            WebUtil.copyValueToObjectFromCbos(cboList.get(0),passwordStrategyDO);
+            SmPasswordStrategyVO passwordStrategyVO = new SmPasswordStrategyVO();
+            BeanUtilForVCI.convert(passwordStrategyDO,passwordStrategyVO);
+            return passwordStrategyVO;
+        }else{
+            //鑾峰彇榛樿鐨�
+            queryWrapperForDO = new VciQueryWrapperForDO(null, SmPasswordStrategyDO.class);
+            queryWrapperForDO.eq("plisdefault","1");
+            cboList = boService.queryBySql(queryWrapperForDO.getSelectFieldSql() + " from plpasswordstrategy " +
+                    queryWrapperForDO.getTableNick() + queryWrapperForDO.getLinkTableSql() +
+                    (StringUtils.isBlank(queryWrapperForDO.getWhereSql()) ? "" : (" where " + queryWrapperForDO.getWhereSql())), null);
+            if(!CollectionUtils.isEmpty(cboList)){
+                SmPasswordStrategyDO passwordStrategyDO = new SmPasswordStrategyDO();
+                WebUtil.copyValueToObjectFromCbos(cboList.get(0),passwordStrategyDO);
+                return pwdStrategyDO2VO(passwordStrategyDO);
+            }
+        }
+        return null;
+    }
+}
diff --git a/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebRevisionRuleServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebRevisionRuleServiceImpl.java
new file mode 100644
index 0000000..4ddadaa
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebRevisionRuleServiceImpl.java
@@ -0,0 +1,126 @@
+package com.vci.web.service.impl;
+
+import com.vci.corba.common.PLException;
+import com.vci.corba.omd.vrm.VersionRule;
+import com.vci.pagemodel.OsRevisionRuleVO;
+import com.vci.starter.web.annotation.log.VciUnLog;
+import com.vci.starter.web.util.VciDateUtil;
+import com.vci.web.service.WebRevisionRuleServiceI;
+import com.vci.web.util.PlatformClientUtil;
+import com.vci.web.util.WebUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @Description 鐗堟湰瑙勫垯鏈嶅姟
+ * @Author dangsn
+ * @Date 2024/11/28 14:20
+ */
+@Service
+public class WebRevisionRuleServiceImpl implements WebRevisionRuleServiceI {
+
+    /**
+     * 鏃ュ織
+     */
+    private Logger logger = LoggerFactory.getLogger(getClass());
+
+    /**
+     * 骞冲彴璋冪敤瀹㈡埛绔�
+     */
+    @Autowired
+    private PlatformClientUtil platformClientUtil;
+
+    /**
+     * 鏌ヨ鎵�鏈夌殑鐗堟湰瑙勫垯
+     *
+     * @return 鐗堟湰瀵硅薄
+     */
+    @Override
+    public List<OsRevisionRuleVO> selectAllRevision() {
+        try {
+            return revisionRuleDO2VOs(Arrays.stream(platformClientUtil.getVersionService().getVersionRules()).collect(Collectors.toList()));
+        } catch (PLException e) {
+            throw WebUtil.getVciBaseException(e);
+        }
+    }
+
+    /**
+     * 鏌ヨ鎵�鏈夌殑鐗堟湰瑙勫垯鏄犲皠
+     *
+     * @return key 鏄増鏈殑鑻辨枃鍚嶇О
+     */
+    @Override
+    @VciUnLog
+    public Map<String, OsRevisionRuleVO> selectAllRevisionMap() {
+        return Optional.ofNullable(selectAllRevision()).orElseGet(()->new ArrayList<>()).stream().collect(Collectors.toMap(s->s.getId().toLowerCase(), t->t,(o1, o2)->o1));
+    }
+
+    /**
+     * 浣跨敤缂栧彿鑾峰彇瑙勫垯鐨勫��
+     *
+     * @param id 缂栧彿
+     * @return 鏄剧ず瀵硅薄
+     */
+    @Override
+    public OsRevisionRuleVO getRevisionRuleById(String id) {
+        if(StringUtils.isNotBlank(id)){
+            return selectAllRevisionMap().getOrDefault(id.toLowerCase().trim(),null);
+        }
+        return null;
+    }
+
+    /**
+     * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+     *
+     * @param versionRules 鏁版嵁瀵硅薄
+     * @return 鏄剧ず瀵硅薄
+     */
+    @Override
+    public List<OsRevisionRuleVO> revisionRuleDO2VOs(Collection<VersionRule> versionRules) {
+        List<OsRevisionRuleVO> ruleVOS = new ArrayList<>();
+        Optional.ofNullable(versionRules).orElseGet(()->new ArrayList<>()).stream().forEach(versionRule -> {
+            OsRevisionRuleVO ruleVO = revisionRuleDO2VO(versionRule);
+            ruleVOS.add(ruleVO);
+        });
+        return ruleVOS;
+    }
+
+    /**
+     * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+     *
+     * @param versionRule 鏁版嵁瀵硅薄
+     * @return 鏄剧ず瀵硅薄
+     */
+    @Override
+    public OsRevisionRuleVO revisionRuleDO2VO(VersionRule versionRule) {
+        OsRevisionRuleVO ruleVO = new OsRevisionRuleVO();
+        if(versionRule !=null){
+            ruleVO.setOid(versionRule.oid);
+            ruleVO.setCreator(versionRule.creator);
+            ruleVO.setLastModifier(versionRule.modifier);
+            try {
+                ruleVO.setCreateTime(VciDateUtil.long2Date(versionRule.createTime));
+                ruleVO.setLastModifyTime(VciDateUtil.long2Date(versionRule.modifyTime));
+                ruleVO.setTs(VciDateUtil.str2Date(versionRule.ts,VciDateUtil.DateTimeMillFormat));
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+            ruleVO.setDescription(versionRule.description);
+            ruleVO.setId(versionRule.name);
+            ruleVO.setName(versionRule.tag);
+            ruleVO.setStepLength(WebUtil.getInt(versionRule.stepLength));
+            ruleVO.setJumpCharacter(versionRule.jumpCharacter);
+            ruleVO.setPrefixion(versionRule.prefixion);
+            ruleVO.setSuffix(versionRule.suffix);
+            ruleVO.setInitialValue(versionRule.initialValue);
+            //associated鏆傛椂娌℃湁浣跨敤
+        }
+        return ruleVO;
+    }
+}
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebSecretServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebSecretServiceImpl.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebSecretServiceImpl.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebSecretServiceImpl.java
index e42e7e9..22991ba 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebSecretServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebSecretServiceImpl.java
@@ -1,18 +1,18 @@
 package com.vci.web.service.impl;
 
+import com.vci.constant.EnumIdConstant;
 import com.vci.corba.omd.data.BusinessObject;
-import com.vci.frameworkcore.compatibility.SmUserQueryServiceI;
-import com.vci.pagemodel.SmUserVO;
 import com.vci.omd.utils.ObjectTool;
+import com.vci.pagemodel.KeyValue;
+import com.vci.pagemodel.SmUserVO;
 import com.vci.starter.web.enumpck.DataSecretEnum;
 import com.vci.starter.web.enumpck.UserSecretEnum;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.util.VciBaseUtil;
-import com.vci.constant.EnumIdConstant;
-import com.vci.pagemodel.KeyValue;
 import com.vci.web.properties.WebProperties;
-import com.vci.web.service.OsEnumServiceI;
+import com.vci.web.service.SmUserQueryServiceI;
 import com.vci.web.service.WebBoServiceI;
+import com.vci.web.service.WebEnumServiceI;
 import com.vci.web.service.WebSecretServiceI;
 import com.vci.web.util.WebUtil;
 import org.apache.commons.lang3.StringUtils;
@@ -43,7 +43,7 @@
      */
     @Autowired(required = false)
     @Lazy
-    private OsEnumServiceI enumService;
+    private WebEnumServiceI enumService;
 
     /**
      * 鐢ㄦ埛鏌ヨ鏈嶅姟
diff --git a/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebStatusServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebStatusServiceImpl.java
new file mode 100644
index 0000000..850c3ab
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/WebStatusServiceImpl.java
@@ -0,0 +1,109 @@
+package com.vci.web.service.impl;
+
+import com.vci.corba.common.PLException;
+import com.vci.corba.omd.stm.StatePool;
+import com.vci.pagemodel.OsStatusVO;
+import com.vci.starter.web.annotation.log.VciUnLog;
+import com.vci.starter.web.util.VciDateUtil;
+import com.vci.web.service.WebStatusServiceI;
+import com.vci.web.util.PlatformClientUtil;
+import com.vci.web.util.WebUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @Description 鐘舵�佹睜鏈嶅姟
+ * @Author dangsn
+ * @Date 2024/11/28 10:52
+ */
+@Service
+public class WebStatusServiceImpl implements WebStatusServiceI {
+
+    /**
+     * 鏃ュ織
+     */
+    private Logger logger = LoggerFactory.getLogger(getClass());
+
+    /**
+     * 骞冲彴瀹㈡埛绔�
+     */
+    @Resource
+    private PlatformClientUtil platformClientUtil;
+
+    /**
+     * 鏌ヨ鎵�鏈夌殑鐘舵��
+     *
+     * @return 鐘舵�佺殑鏄剧ず瀵硅薄
+     */
+    @Override
+    @VciUnLog
+    public List<OsStatusVO> selectAllStatus() {
+        try {
+            return statusDO2VOs(Arrays.stream(platformClientUtil.getStatePoolService().getStatePools()).collect(Collectors.toList()));
+        } catch (PLException vciError) {
+            throw WebUtil.getVciBaseException(vciError);
+        }
+    }
+
+    /**
+     * 鏌ヨ鍏ㄩ儴鐨勭姸鎬佹槧灏�
+     * @return key鏄姸鎬佺殑鑻辨枃鍚嶇О
+     */
+    @Override
+    @VciUnLog
+    public Map<String, OsStatusVO> selectAllStatusMap(){
+        return Optional.ofNullable(selectAllStatus()).orElseGet(()->new ArrayList<>()).stream().collect(Collectors.toMap(s->s.getId(), t->t,(o1, o2)->o1));
+    }
+
+    /**
+     * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+     *
+     * @param statePool 鐘舵�佹睜鐨勬暟鎹璞�
+     * @return 鏄剧ず瀵硅薄
+     */
+    @Override
+    public OsStatusVO statusDO2VO(StatePool statePool) {
+        OsStatusVO statusVO = new OsStatusVO();
+        if(statePool!=null){
+            statusVO.setOid(statePool.oid);
+            statusVO.setCreator(statePool.creator);
+            statusVO.setImagePath(statePool.imagePath);
+            statusVO.setLastModifier(statePool.modifier);
+            try {
+                statusVO.setCreateTime(new Date(statePool.createTime));
+                statusVO.setLastModifyTime(new Date(statePool.modifyTime));
+                statusVO.setTs(VciDateUtil.str2Date(statePool.ts,VciDateUtil.DateTimeMillFormat));
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+            statusVO.setDescription(statePool.description);
+            statusVO.setId(statePool.name);
+            statusVO.setName(statePool.tag);
+        }
+        return statusVO;
+    }
+
+    /**
+     * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+     *
+     * @param statePools 鐘舵�佹睜鐨勬暟鎹璞� 闆嗗悎
+     * @return 鏄剧ず瀵硅薄
+     */
+    @Override
+    public List<OsStatusVO> statusDO2VOs(Collection<StatePool> statePools) {
+        List<OsStatusVO> statusVOS = new ArrayList<>();
+        if(!CollectionUtils.isEmpty(statePools)){
+            statePools.stream().forEach(statePool -> {
+                OsStatusVO statusVO = statusDO2VO(statePool);
+                statusVOS.add(statusVO);
+            });
+        }
+        return statusVOS;
+    }
+}
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/OsScanAnnotationTool.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/util/OsScanAnnotationTool.java
similarity index 99%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/OsScanAnnotationTool.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/util/OsScanAnnotationTool.java
index 64041e6..bc73e70 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/OsScanAnnotationTool.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/util/OsScanAnnotationTool.java
@@ -1,5 +1,7 @@
 package com.vci.web.util;
 
+import com.vci.bo.BtmOrLinkProcessAttributeInfo;
+import com.vci.constant.FieldConstant;
 import com.vci.dto.*;
 import com.vci.starter.web.annotation.*;
 import com.vci.starter.web.enumpck.BaseEnum;
@@ -8,14 +10,10 @@
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.util.ApplicationContextProvider;
 import com.vci.starter.web.util.VciBaseUtil;
-import com.vci.bo.BtmOrLinkProcessAttributeInfo;
-import com.vci.constant.FieldConstant;
-import com.vci.web.service.WebBtmIOServiceI;
 import org.apache.commons.lang3.StringUtils;
 import org.reflections.Reflections;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.util.CollectionUtils;
 
@@ -34,13 +32,6 @@
  */
 @Component
 public class OsScanAnnotationTool {
-
-
-    /**
-     * 瀵煎叆鐨勬湇鍔�
-     */
-    @Autowired
-    private WebBtmIOServiceI btmIOService;
 
     /**
      * 鏃ュ織
@@ -292,7 +283,8 @@
         //閾炬帴绫诲瀷
         btmTypeExportDTO.setLinkTypeDTOList(linkTypeDTOMap.values());
         //鎵ц瀵煎叆鐨�
-        btmIOService.importBtmTypes(btmTypeExportDTO);
+        //鍏堟殏鏃剁粰娉ㄩ噴鎺夛紝绛夐渶瑕佹椂锛屽啀鏀惧紑
+        //btmIOService.importBtmTypes(btmTypeExportDTO);
     }
 
     /**
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/PinyinCommon.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/util/PinyinCommon.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/PinyinCommon.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/util/PinyinCommon.java
index 12cefb5..aba9049 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/PinyinCommon.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/util/PinyinCommon.java
@@ -17,7 +17,7 @@
  * @version:  
    
  */
-	public class PinyinCommon {
+public class PinyinCommon {
 	
 	/**
 	 * 寰楀埌 鍏ㄦ嫾
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/PlatformClientUtil.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/util/PlatformClientUtil.java
similarity index 100%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/PlatformClientUtil.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/util/PlatformClientUtil.java
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/WebUtil.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/util/WebUtil.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/WebUtil.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/util/WebUtil.java
index dad510b..b797540 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/WebUtil.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/util/WebUtil.java
@@ -78,10 +78,9 @@
 				return errContent;
 			}
 			if (e instanceof PLException ) {
-//				String error_code = ((VCIError) e).error_code;
-//				String[] error_message = ((VCIError) e).error_message;
-//				return MessageUtils.get(error_code, error_message);
-				return null;
+				String error_code = ((PLException) e).code;
+				String[] error_message = ((PLException) e).messages;
+				return MessageUtils.get(error_code, error_message);
 			} else if(e instanceof VciBaseException || e.getClass().getSuperclass().equals(VciBaseException.class)){
 				return LangBaseUtil.getErrorMsg(e);
 			}else if (e instanceof VciException){
@@ -1266,24 +1265,24 @@
 	 * @param lo 閾炬帴绫诲瀷
 	 * @param map map
 	 */
-	public static void copyValueToMapFromLos(com.vci.corba.omd.data.LinkObject lo,Map<String,String> map){
+	public static void copyValueToMapFromLos(LinkObject lo,Map<String,String> map){
     	if(lo!=null){
-			WebLoServiceImpl.LO_BASE_FIELD_MAP.forEach((field,attr)->{
+			WebLoServiceImpl.LO_BASE_FIELD_MAP.forEach((field, attr)->{
 				map.put(attr.toLowerCase(),getValueFromFieldForCbo(getFieldForObject(field,lo),lo));
 			});
     		//鍏堟妸鎵�鏈夌殑瀛楁鏄犲皠鎵惧埌
-			com.vci.corba.omd.data.AttributeValue[] newAList = lo.newAttrValList;
-			com.vci.corba.omd.data.AttributeValue[] hisAList = lo.hisAttrValList;
+			AttributeValue[] newAList = lo.newAttrValList;
+			AttributeValue[] hisAList = lo.hisAttrValList;
 			if(hisAList!=null&&hisAList.length>0){
 				for(int i = 0 ; i < hisAList.length;i++){
-					com.vci.corba.omd.data.AttributeValue av = hisAList[i];
+					AttributeValue av = hisAList[i];
 					String attrName = av.attrName.toLowerCase();
 					map.put(attrName, av.attrVal);
 				}
 			}
 			if(newAList!=null&&newAList.length>0){
 				for(int i = 0 ; i < newAList.length;i++){
-					com.vci.corba.omd.data.AttributeValue av = newAList[i];
+					AttributeValue av = newAList[i];
 					String attrName = av.attrName.toLowerCase();
 					map.put(attrName, av.attrVal);
 				}
@@ -1494,19 +1493,8 @@
 	 * @param e 寮傚父瀵硅薄
 	 * @return base寮傚父瀵硅薄
 	 */
-//	public static VciBaseException getVciBaseException(PLException e){
-////		return new VciBaseException(e.error_code, e.error_message);
-//		return null;
-//	}
-
-	/**
-	 * 杞崲寮傚父
-	 * @param e 寮傚父瀵硅薄
-	 * @return base寮傚父瀵硅薄
-	 */
 	public static VciBaseException getVciBaseException(PLException e){
 		return new VciBaseException(e.code, new java.lang.String[]{e.getMessage()});
-//		return null;
 	}
 
 	/**
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/file/VciZipUtil.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/util/file/VciZipUtil.java
similarity index 99%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/file/VciZipUtil.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/util/file/VciZipUtil.java
index 1182e4e..fc4f860 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/file/VciZipUtil.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/util/file/VciZipUtil.java
@@ -3,10 +3,6 @@
 import com.vci.properties.VciFileTransProperties;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.util.LangBaseUtil;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.tools.zip.ZipEntry;
@@ -14,6 +10,10 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+
 /**
  * @author ludc
  * @date 2024/7/16 14:27
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/file/clientutil/VciFileDocClassifyClientUtil.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/util/file/clientutil/VciFileDocClassifyClientUtil.java
similarity index 100%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/file/clientutil/VciFileDocClassifyClientUtil.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/util/file/clientutil/VciFileDocClassifyClientUtil.java
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/file/clientutil/VciFileServerClientUtil.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/util/file/clientutil/VciFileServerClientUtil.java
similarity index 99%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/file/clientutil/VciFileServerClientUtil.java
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/util/file/clientutil/VciFileServerClientUtil.java
index 35aebbf..9bed63d 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/file/clientutil/VciFileServerClientUtil.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/util/file/clientutil/VciFileServerClientUtil.java
@@ -12,7 +12,7 @@
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.BaseModelVO;
 import com.vci.starter.web.pagemodel.BaseResult;
-import com.vci.starter.web.util.BeanUtil;
+import com.vci.starter.web.util.BeanUtilForVCI;
 import com.vci.starter.web.util.LangBaseUtil;
 import com.vci.starter.web.util.LocalFileUtil;
 import com.vci.starter.web.util.VciBaseUtil;
@@ -210,7 +210,7 @@
             while(var11.hasNext()) {
                 File file = (File)var11.next();
                 VciFileObjectDTO tempDTO = new VciFileObjectDTO();
-                BeanUtil.convert(fileObjectDTO, tempDTO);
+                BeanUtilForVCI.convert(fileObjectDTO, tempDTO);
                 tempDTO.setFileExtension(this.getFileExtension(file.getName()));
                 tempDTO.setName(this.getFileNameNoExtension(file.getName()));
                 tempDTO.setId(this.getFileNameNoExtension(file.getName()));
@@ -771,13 +771,13 @@
 
     public VciFileObjectDTO fileObjectVO2DTO(VciFileObjectVO fileObjectVO) {
         VciFileObjectDTO fileObjectDTO = new VciFileObjectDTO();
-        BeanUtil.convert(fileObjectVO, fileObjectDTO);
+        BeanUtilForVCI.convert(fileObjectVO, fileObjectDTO);
         return fileObjectDTO;
     }
 
     public VciFileObjectDTO fileObjectVO2DTOForUpdate(VciFileObjectVO fileObjectVO) {
         VciFileObjectDTO fileObjectDTO = new VciFileObjectDTO();
-        BeanUtil.convert(fileObjectVO, fileObjectDTO);
+        BeanUtilForVCI.convert(fileObjectVO, fileObjectDTO);
         fileObjectDTO.setFileOid(fileObjectVO.getOid());
         fileObjectDTO.setUpdateFileFlag(true);
         return fileObjectDTO;
diff --git a/Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/application-dev.yml b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/application-dev.yml
new file mode 100644
index 0000000..a95a1a4
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/application-dev.yml
@@ -0,0 +1,102 @@
+#####搴旂敤鍩烘湰閰嶇疆
+app:
+  name: web
+  group: 鍖椾含瀹忓崥杩滆揪绉戞妧鏈夐檺鍏徃
+  description: 骞冲彴B/S瀹㈡埛绔�
+  private-token-key: vciweb20210212
+###tomcat鐩稿叧鐨勯厤缃�
+server:
+  port: 12000
+  servlet:
+    context-path: /web
+  tomcat:
+    uri-encoding: UTF-8
+###log4j2鐨勯厤缃紝闇�瑕佸摢涓寘涓嬬殑鏂囦欢寮�鍚煇涓瓑绾э紝灏辩洿鎺xxxx: yy杩欐牱鏂瑰紡
+logging:
+  config: "classpath:log4j2-spring-dev.xml"
+  level:
+    com.vci: debug
+  root: info
+#缂撳瓨
+spring:
+  # redis閰嶇疆
+  redis:  ###### redis 閰嶇疆
+    enabled: true  #true锛屽惎鐢╮edi锛宖alse涓嶅惎鐢紝榛樿false,閰嶇疆鏂囦欢娌℃湁杩欎簺榛樿涓嶅惎鐢╮edis
+    host: localhost  # ip鍦板潃
+    database: 2  # redis鏁版嵁搴�  0-15
+    port: 6379  # 绔彛鍙�
+    password: foobared # 鏃犲瘑鐮佷笉濉�
+    timeout: 30000s   # 杩炴帴瓒呮椂鏃堕棿 锛堥粯璁�1澶╋級
+    lettuce:
+      shutdown-timeout: 100ms # 鍏抽棴瓒呮椂鏃堕棿 榛樿 100ms
+      pool: # lettuce 杩炴帴姹�
+        max-active: 8 # 杩炴帴姹犳渶澶ц繛鎺ユ暟 榛樿 8锛�-1 锛氳〃绀烘病鏈夐檺鍒讹級
+        max-wait: 60000ms # 杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂� 榛樿-1ms 锛�-1 :琛ㄧず娌℃湁闄愬埗锛� 杩欓噷璁剧疆1鍒嗛挓
+        max-idle: 8 # 鏈�澶х┖闂茶繛鎺�  榛樿 8
+        min-idle: 0 # 鏈�灏忕┖闂茶繛鎺�  榛樿 0
+  resources:
+    chain:
+      cache: false
+      strategy:
+        content:
+          enabled: true
+          paths: /**
+  cache:
+    type: ehcache
+  servlet:
+    multipart:
+      enabled: true
+      ###鍗曚釜鏂囦欢澶у皬锛�50M
+      max-file-size: 52428800
+      ###鎬讳笂浼犵殑鏂囦欢澶у皬锛�50M
+      max-request-size: 52428800
+  mvc:
+    view:
+      suffix: .html
+
+#骞冲彴鐩稿叧閰嶇疆
+plt:
+  #浜哄憳淇℃伅褰曞叆鏃�,鏄惁闇�瑕佸瘑绾у瓧娈�
+  export-secret-grade: false
+
+###涓氬姟椤圭洰鐨勯厤缃紝娉ㄦ剰spring瀹舵棌璇诲彇閰嶇疆鏃讹紝澶у啓瀛楁瘝闇�瑕佽浆鎹负-鐨勬柟寮忥紝鑰宖eign闇�瑕佸ぇ灏忓啓瀹屽叏鐩稿悓
+session:
+  session-info-storage-type: "database"
+  database-platform: oracle
+  clear-session-on-start: false
+  ###鏄惁寮�鍚敤鎴峰湪绾挎鏌�
+  checkSessionTimeout: false
+  ###瀹㈡埛绔垽鏂秴鏃惰疆璇㈡椂闂达紝鍗曚綅涓虹
+  sessionInterval: 10
+  ###瀹㈡埛绔渶澶у瓨鍦ㄦ椂闂达紝鍗曚綅涓哄垎閽�
+  sessionIdlTime: 30
+  ###瓒呮椂鎻愰啋鏃堕棿锛屽崟浣嶄负鍒嗛挓
+  sessionRemind: 3
+
+##web閰嶇疆
+vciweb:
+    debug: true
+
+#鏂囦欢棰勮閰嶇疆
+file-preview:
+  enabled: true
+  preview-service-url: "http://dev.yunkeruida.top:28090/vciFilePreview/ajaxPreview.html"
+  preview-system-key: plt2020
+
+#feign鍦板潃
+feign:
+  #鎵弿宸ュ叿鏈嶅姟
+  scanServiceUrl: ""
+  #骞冲彴鏈嶅姟
+  pltServiceUrl: ""
+  #鏂囦欢鏈嶅姟
+  fileServiceUrl: ""
+
+#springmvc閰嶇疆
+vcispringmvc:
+  enabled: true
+  #涓嶆牎楠屽畨鍏ㄧ殑閾炬帴鍦板潃
+  un-check-urls:
+  #涓嶆洿鏂拌姹傛椂闂寸殑閾炬帴鍦板潃
+  un-storage-request-time-urls:
+
diff --git a/Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/application-prod.yml b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/application-prod.yml
new file mode 100644
index 0000000..707f55d
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/application-prod.yml
@@ -0,0 +1,101 @@
+#####搴旂敤鍩烘湰閰嶇疆
+app:
+  name: web
+  group: 鍖椾含瀹忓崥杩滆揪绉戞妧鏈夐檺鍏徃
+  description: 骞冲彴B/S瀹㈡埛绔�
+  private-token-key: vciweb20210212
+###tomcat鐩稿叧鐨勯厤缃�
+server:
+  port: 12000
+  servlet:
+    context-path: /web
+  tomcat:
+    uri-encoding: UTF-8
+###log4j2鐨勯厤缃紝闇�瑕佸摢涓寘涓嬬殑鏂囦欢寮�鍚煇涓瓑绾э紝灏辩洿鎺xxxx: yy杩欐牱鏂瑰紡
+logging:
+  config: "classpath:log4j2-spring-prod.xml"
+  level:
+    com.vci: debug
+  root: info
+#缂撳瓨
+spring:
+  # redis閰嶇疆
+  redis:  ###### redis 閰嶇疆
+    enabled: true  #true锛屽惎鐢╮edi锛宖alse涓嶅惎鐢紝榛樿false,閰嶇疆鏂囦欢娌℃湁杩欎簺榛樿涓嶅惎鐢╮edis
+    host: localhost  # ip鍦板潃
+    database: 2  # redis鏁版嵁搴�  0-15
+    port: 6379  # 绔彛鍙�
+    password: foobared # 鏃犲瘑鐮佷笉濉�
+    timeout: 30000s   # 杩炴帴瓒呮椂鏃堕棿 锛堥粯璁�1澶╋級
+    lettuce:
+      shutdown-timeout: 100ms # 鍏抽棴瓒呮椂鏃堕棿 榛樿 100ms
+      pool: # lettuce 杩炴帴姹�
+        max-active: 8 # 杩炴帴姹犳渶澶ц繛鎺ユ暟 榛樿 8锛�-1 锛氳〃绀烘病鏈夐檺鍒讹級
+        max-wait: 60000ms # 杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂� 榛樿-1ms 锛�-1 :琛ㄧず娌℃湁闄愬埗锛� 杩欓噷璁剧疆1鍒嗛挓
+        max-idle: 8 # 鏈�澶х┖闂茶繛鎺�  榛樿 8
+        min-idle: 0 # 鏈�灏忕┖闂茶繛鎺�  榛樿 0
+  resources:
+    chain:
+      cache: false
+      strategy:
+        content:
+          enabled: true
+          paths: /**
+  cache:
+    type: ehcache
+  servlet:
+    multipart:
+      enabled: true
+      ###鍗曚釜鏂囦欢澶у皬锛�50M
+      max-file-size: 52428800
+      ###鎬讳笂浼犵殑鏂囦欢澶у皬锛�50M
+      max-request-size: 52428800
+  mvc:
+    view:
+      suffix: .html
+
+#骞冲彴鐩稿叧閰嶇疆
+plt:
+  #浜哄憳淇℃伅褰曞叆鏃�,鏄惁闇�瑕佸瘑绾у瓧娈�
+  export-secret-grade: false
+
+###涓氬姟椤圭洰鐨勯厤缃紝娉ㄦ剰spring瀹舵棌璇诲彇閰嶇疆鏃讹紝澶у啓瀛楁瘝闇�瑕佽浆鎹负-鐨勬柟寮忥紝鑰宖eign闇�瑕佸ぇ灏忓啓瀹屽叏鐩稿悓
+session:
+  session-info-storage-type: "database"
+  database-platform: oracle
+  clear-session-on-start: false
+  ###鏄惁寮�鍚敤鎴峰湪绾挎鏌�
+  checkSessionTimeout: false
+  ###瀹㈡埛绔垽鏂秴鏃惰疆璇㈡椂闂达紝鍗曚綅涓虹
+  sessionInterval: 10
+  ###瀹㈡埛绔渶澶у瓨鍦ㄦ椂闂达紝鍗曚綅涓哄垎閽�
+  sessionIdlTime: 30
+  ###瓒呮椂鎻愰啋鏃堕棿锛屽崟浣嶄负鍒嗛挓
+  sessionRemind: 3
+
+##web閰嶇疆
+vciweb:
+  debug: true
+
+#鏂囦欢棰勮閰嶇疆
+file-preview:
+  enabled: true
+  preview-service-url: "http://dev.yunkeruida.top:28090/vciFilePreview/ajaxPreview.html"
+  preview-system-key: plt2020
+
+#feign鍦板潃
+feign:
+  #鎵弿宸ュ叿鏈嶅姟
+  scanServiceUrl: ""
+  #骞冲彴鏈嶅姟
+  pltServiceUrl: ""
+  #鏂囦欢鏈嶅姟
+  fileServiceUrl: ""
+
+#springmvc閰嶇疆
+vcispringmvc:
+  enabled: true
+  #涓嶆牎楠屽畨鍏ㄧ殑閾炬帴鍦板潃
+  un-check-urls:
+  #涓嶆洿鏂拌姹傛椂闂寸殑閾炬帴鍦板潃
+  un-storage-request-time-urls:
\ No newline at end of file
diff --git a/Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/application.yml b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/application.yml
new file mode 100644
index 0000000..2b40fa6
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/application.yml
@@ -0,0 +1,7 @@
+spring:
+  profiles:
+    active: dev
+    include: web
+  messages:
+    encoding: UTF-8
+    basename: i18n/messages
\ No newline at end of file
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/resources/codeTemplate/Controller.java.vm b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/codeTemplate/Controller.java.vm
similarity index 100%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/resources/codeTemplate/Controller.java.vm
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/codeTemplate/Controller.java.vm
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/resources/codeTemplate/DO.java.vm b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/codeTemplate/DO.java.vm
similarity index 100%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/resources/codeTemplate/DO.java.vm
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/codeTemplate/DO.java.vm
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/resources/codeTemplate/DTO.java.vm b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/codeTemplate/DTO.java.vm
similarity index 100%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/resources/codeTemplate/DTO.java.vm
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/codeTemplate/DTO.java.vm
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/resources/codeTemplate/Mapper.impl.java.vm b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/codeTemplate/Mapper.impl.java.vm
similarity index 100%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/resources/codeTemplate/Mapper.impl.java.vm
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/codeTemplate/Mapper.impl.java.vm
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/resources/codeTemplate/Mapper.java.vm b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/codeTemplate/Mapper.java.vm
similarity index 100%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/resources/codeTemplate/Mapper.java.vm
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/codeTemplate/Mapper.java.vm
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/resources/codeTemplate/Mapper.xml.vm b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/codeTemplate/Mapper.xml.vm
similarity index 100%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/resources/codeTemplate/Mapper.xml.vm
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/codeTemplate/Mapper.xml.vm
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/resources/codeTemplate/PO.java.vm b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/codeTemplate/PO.java.vm
similarity index 100%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/resources/codeTemplate/PO.java.vm
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/codeTemplate/PO.java.vm
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/resources/codeTemplate/Service.impl.java.vm b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/codeTemplate/Service.impl.java.vm
similarity index 99%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/resources/codeTemplate/Service.impl.java.vm
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/codeTemplate/Service.impl.java.vm
index 39f4df3..9cb62e2 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/resources/codeTemplate/Service.impl.java.vm
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/codeTemplate/Service.impl.java.vm
@@ -8,6 +8,7 @@
 #if(${lcStatusFullClassName} !="")
 import ${lcStatusFullClassName};
 #end
+import com.vci.lcstatuspck.FrameworkDataLCStatus;
 import com.vci.starter.revision.service.RevisionModelUtil;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.*;
@@ -24,7 +25,6 @@
 
 import java.util.*;
 import com.vci.web.service.WebBoServiceI;
-import com.vci.frameworkcore.lcstatuspck.*;
 import com.vci.pagemodel.BatchCBO;
 import static com.vci.constant.FrameWorkLangCodeConstant.*;
 import static com.vci.frameworkcore.constant.FrameWorkDefaultValueConstant.*;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/resources/codeTemplate/Service.java.vm b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/codeTemplate/Service.java.vm
similarity index 100%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/resources/codeTemplate/Service.java.vm
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/codeTemplate/Service.java.vm
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/resources/codeTemplate/VO.java.vm b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/codeTemplate/VO.java.vm
similarity index 100%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/resources/codeTemplate/VO.java.vm
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/codeTemplate/VO.java.vm
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/resources/codeTemplate/ui.js.vm b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/codeTemplate/ui.js.vm
similarity index 100%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/resources/codeTemplate/ui.js.vm
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/codeTemplate/ui.js.vm
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/resources/compatibility_field_map.yml b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/compatibility_field_map.yml
similarity index 93%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/resources/compatibility_field_map.yml
rename to Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/compatibility_field_map.yml
index b967070..2d00510 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/resources/compatibility_field_map.yml
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/compatibility_field_map.yml
@@ -1,5 +1,5 @@
 compatibility:
-    user-table-field-map: {"oid":"pluid","id":"plusername","name":"pltruename","password":"plpassword","usertype":"plusertype","email":"plemail","description":"pldesc","creator":"plcreateuser","createtime":"plcreatetime","lastmodifier":"plupdateuser","lastmodifytime":"plupdatetime",secretgrade":"plsecretgrade"}
+    user-table-field-map: {"oid":"pluid","id":"plusername","name":"pltruename","password":"plpassword","usertype":"plusertype","email":"plemail","description":"pldesc","creator":"plcreateuser","createtime":"plcreatetime","lastmodifier":"plupdateuser","lastmodifytime":"plupdatetime","secretgrade":"plsecretgrade"}
     role-table-field-map: {"oid:":"pluid","name":"plname","description":"pldesc","creator":"plcreateuser","createtime":"plcreatetime","lastmodifier":"plupdateuser","lastmodifytime":"plupdatetime"}
     dept-table-field-map: {"oid":"pluid","id":"plnum","name":"plname","pkfatherdepartment":"plparentuid","description":"pldesc","creator":"plcreateuser","createtime":"plcreatetime","lastmodifier":"plupdateuser","lastmodifytime":"plupdatetime"}
     function-table-field-map: {"oid":"ploid","id":"plmoduleno","name":"plname","logname":"plaliasname","parentfunctionid":"plparentid"}
\ No newline at end of file
diff --git a/Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/log4j2-spring-dev.xml b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/log4j2-spring-dev.xml
new file mode 100644
index 0000000..2972952
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/log4j2-spring-dev.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--Configuration鍚庨潰鐨剆tatus锛岃繖涓敤浜庤缃甽og4j2鑷韩鍐呴儴鐨勪俊鎭緭鍑猴紝鍙互涓嶈缃紝褰撹缃垚trace鏃讹紝浣犱細鐪嬪埌log4j2鍐呴儴鍚勭璇︾粏杈撳嚭-->
+<!--monitorInterval锛歀og4j2 鑷姩妫�娴嬩慨鏀归厤缃枃浠跺拰閲嶆柊閰嶇疆鏈韩锛岃缃棿闅旂鏁�-->
+<configuration monitorInterval="5" status="debug">
+    <!--鏃ュ織绾у埆浠ュ強浼樺厛绾ф帓搴�: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
+    <!--鍙橀噺閰嶇疆-->
+    <Properties>
+        <!-- 鏍煎紡鍖栬緭鍑猴細%date琛ㄧず鏃ユ湡锛�%thread琛ㄧず绾跨▼鍚嶏紝%-5level锛氱骇鍒粠宸︽樉绀�5涓瓧绗﹀搴� %msg锛氭棩蹇楁秷鎭紝%n鏄崲琛岀-->
+        <!-- %logger{36} 琛ㄧず Logger 鍚嶅瓧鏈�闀�36涓瓧绗� -->
+<!--        <property name="LOG_PATTERN" value="%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" />-->
+        <property name="LOG_PATTERN" value="[TRACEID:%X{logTraceId}] %d{HH:mm:ss.SSS} %-5level %logger{-1} - %msg%xEx%n"/>
+        <!-- 瀹氫箟鏃ュ織瀛樺偍鐨勮矾寰勶紝涓嶈閰嶇疆鐩稿璺緞 -->
+        <property name="FILE_PATH" value="./logs/web" />
+        <property name="FILE_NAME" value="web" />
+    </Properties>
+
+    <appenders>
+        <console name="Console" target="SYSTEM_OUT">
+            <!--杈撳嚭鏃ュ織鐨勬牸寮�-->
+            <PatternLayout pattern="${LOG_PATTERN}"/>
+            <!--鎺у埗鍙板彧杈撳嚭level鍙婂叾浠ヤ笂绾у埆鐨勪俊鎭紙onMatch锛夛紝鍏朵粬鐨勭洿鎺ユ嫆缁濓紙onMismatch锛�-->
+            <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>
+        </console>
+
+        <!--鏂囦欢浼氭墦鍗板嚭鎵�鏈変俊鎭紝杩欎釜log姣忔杩愯绋嬪簭浼氳嚜鍔ㄦ竻绌猴紝鐢盿ppend灞炴�у喅瀹氾紝閫傚悎涓存椂娴嬭瘯鐢�-->
+        <File name="Filelog" fileName="${FILE_PATH}/web.log" append="false">
+            <PatternLayout pattern="${LOG_PATTERN}"/>
+        </File>
+
+        <!-- 杩欎釜浼氭墦鍗板嚭鎵�鏈夌殑info鍙婁互涓嬬骇鍒殑淇℃伅锛屾瘡娆″ぇ灏忚秴杩噑ize锛屽垯杩檚ize澶у皬鐨勬棩蹇椾細鑷姩瀛樺叆鎸夊勾浠�-鏈堜唤寤虹珛鐨勬枃浠跺す涓嬮潰骞惰繘琛屽帇缂╋紝浣滀负瀛樻。-->
+        <RollingFile name="RollingFileInfo" fileName="${FILE_PATH}/info.log" filePattern="${FILE_PATH}/${FILE_NAME}-INFO-%d{yyyy-MM-dd HH-mm}_%i.log.gz">
+            <!--鎺у埗鍙板彧杈撳嚭level鍙婁互涓婄骇鍒殑淇℃伅锛坥nMatch锛夛紝鍏朵粬鐨勭洿鎺ユ嫆缁濓紙onMismatch锛�-->
+            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
+            <PatternLayout pattern="${LOG_PATTERN}"/>
+            <Policies>
+                <!--interval灞炴�х敤鏉ユ寚瀹氬涔呮粴鍔ㄤ竴娆★紝榛樿鏄�1 hour-->
+                <TimeBasedTriggeringPolicy interval="1"/>
+                <SizeBasedTriggeringPolicy size="10MB"/>
+            </Policies>
+            <!-- DefaultRolloverStrategy鍚屼竴鏂囦欢澶逛笅15涓枃浠跺紑濮嬭鐩� 涓嶈缃紝鍒欓粯璁や负鏈�澶氬悓涓�鏂囦欢澶逛笅7涓枃浠跺紑濮嬭鐩�-->
+            <DefaultRolloverStrategy max="15"/>
+        </RollingFile>
+
+        <!-- 杩欎釜浼氭墦鍗板嚭鎵�鏈夌殑warn鍙婁互涓嬬骇鍒殑淇℃伅锛屾瘡娆″ぇ灏忚秴杩噑ize锛屽垯杩檚ize澶у皬鐨勬棩蹇椾細鑷姩瀛樺叆鎸夊勾浠�-鏈堜唤寤虹珛鐨勬枃浠跺す涓嬮潰骞惰繘琛屽帇缂╋紝浣滀负瀛樻。-->
+        <RollingFile name="RollingFileWarn" fileName="${FILE_PATH}/warn.log" filePattern="${FILE_PATH}/${FILE_NAME}-WARN-%d{yyyy-MM-dd HH-mm}_%i.log.gz">
+            <!--鎺у埗鍙板彧杈撳嚭level鍙婁互涓婄骇鍒殑淇℃伅锛坥nMatch锛夛紝鍏朵粬鐨勭洿鎺ユ嫆缁濓紙onMismatch锛�-->
+            <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
+            <PatternLayout pattern="${LOG_PATTERN}"/>
+            <Policies>
+                <!--interval灞炴�х敤鏉ユ寚瀹氬涔呮粴鍔ㄤ竴娆★紝榛樿鏄�1 hour-->
+                <TimeBasedTriggeringPolicy interval="1"/>
+                <SizeBasedTriggeringPolicy size="10MB"/>
+            </Policies>
+            <!-- DefaultRolloverStrategy鍚屼竴鏂囦欢澶逛笅15涓枃浠跺紑濮嬭鐩� 涓嶈缃紝鍒欓粯璁や负鏈�澶氬悓涓�鏂囦欢澶逛笅7涓枃浠跺紑濮嬭鐩�-->
+            <DefaultRolloverStrategy max="15"/>
+        </RollingFile>
+
+        <!-- 杩欎釜浼氭墦鍗板嚭鎵�鏈夌殑error鍙婁互涓嬬骇鍒殑淇℃伅锛屾瘡娆″ぇ灏忚秴杩噑ize锛屽垯杩檚ize澶у皬鐨勬棩蹇椾細鑷姩瀛樺叆鎸夊勾浠�-鏈堜唤寤虹珛鐨勬枃浠跺す涓嬮潰骞惰繘琛屽帇缂╋紝浣滀负瀛樻。-->
+        <RollingFile name="RollingFileError" fileName="${FILE_PATH}/error.log" filePattern="${FILE_PATH}/${FILE_NAME}-ERROR-%d{yyyy-MM-dd HH-mm}_%i.log.gz">
+            <!--鎺у埗鍙板彧杈撳嚭level鍙婁互涓婄骇鍒殑淇℃伅锛坥nMatch锛夛紝鍏朵粬鐨勭洿鎺ユ嫆缁濓紙onMismatch锛�-->
+            <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
+            <PatternLayout pattern="${LOG_PATTERN}"/>
+            <Policies>
+                <!--interval灞炴�х敤鏉ユ寚瀹氬涔呮粴鍔ㄤ竴娆★紝榛樿鏄�1 hour-->
+                <TimeBasedTriggeringPolicy interval="1"/>
+                <SizeBasedTriggeringPolicy size="10MB"/>
+            </Policies>
+            <!-- DefaultRolloverStrategy鍚屼竴鏂囦欢澶逛笅15涓枃浠跺紑濮嬭鐩� 涓嶈缃紝鍒欓粯璁や负鏈�澶氬悓涓�鏂囦欢澶逛笅7涓枃浠跺紑濮嬭鐩�-->
+            <DefaultRolloverStrategy max="15"/>
+        </RollingFile>
+    </appenders>
+
+    <!--Logger鑺傜偣鐢ㄦ潵鍗曠嫭鎸囧畾鏃ュ織鐨勫舰寮忥紝姣斿瑕佷负鎸囧畾鍖呬笅鐨刢lass鎸囧畾涓嶅悓鐨勬棩蹇楃骇鍒瓑銆�-->
+    <!--鐒跺悗瀹氫箟loggers锛屽彧鏈夊畾涔変簡logger骞跺紩鍏ョ殑appender锛宎ppender鎵嶄細鐢熸晥-->
+    <loggers>
+        <!--鐩戞帶绯荤粺淇℃伅-->
+        <!--鑻ユ槸additivity璁句负false锛屽垯 瀛怢ogger 鍙細鍦ㄨ嚜宸辩殑appender閲岃緭鍑猴紝鑰屼笉浼氬湪 鐖禠ogger 鐨刟ppender閲岃緭鍑恒��-->
+        <Logger name="org.springframework" level="debug" additivity="false">
+            <AppenderRef ref="Console"/>
+        </Logger>
+        <!--鏃ュ織绾у埆-->
+        <root level="info">
+            <appender-ref ref="Console"/>
+            <appender-ref ref="Filelog"/>
+            <appender-ref ref="RollingFileInfo"/>
+            <appender-ref ref="RollingFileWarn"/>
+            <appender-ref ref="RollingFileError"/>
+        </root>
+    </loggers>
+
+</configuration>
\ No newline at end of file
diff --git a/Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/log4j2-spring-prod.xml b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/log4j2-spring-prod.xml
new file mode 100644
index 0000000..3cb9718
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/resources/log4j2-spring-prod.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--Configuration鍚庨潰鐨剆tatus锛岃繖涓敤浜庤缃甽og4j2鑷韩鍐呴儴鐨勪俊鎭緭鍑猴紝鍙互涓嶈缃紝褰撹缃垚trace鏃讹紝浣犱細鐪嬪埌log4j2鍐呴儴鍚勭璇︾粏杈撳嚭-->
+<!--monitorInterval锛歀og4j2 鑷姩妫�娴嬩慨鏀归厤缃枃浠跺拰閲嶆柊閰嶇疆鏈韩锛岃缃棿闅旂鏁�-->
+<configuration monitorInterval="5" status="debug">
+    <!--鏃ュ織绾у埆浠ュ強浼樺厛绾ф帓搴�: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
+    <!--鍙橀噺閰嶇疆-->
+    <Properties>
+        <!-- 鏍煎紡鍖栬緭鍑猴細%date琛ㄧず鏃ユ湡锛�%thread琛ㄧず绾跨▼鍚嶏紝%-5level锛氱骇鍒粠宸︽樉绀�5涓瓧绗﹀搴� %msg锛氭棩蹇楁秷鎭紝%n鏄崲琛岀-->
+        <!-- %logger{36} 琛ㄧず Logger 鍚嶅瓧鏈�闀�36涓瓧绗� -->
+<!--        <property name="LOG_PATTERN" value="%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" />-->
+        <property name="LOG_PATTERN" value="[TRACEID:%X{logTraceId}] %d{HH:mm:ss.SSS} %-5level %class{-1}.%M()/%L - %msg%xEx%n"/>
+        <!-- 瀹氫箟鏃ュ織瀛樺偍鐨勮矾寰勶紝涓嶈閰嶇疆鐩稿璺緞 -->
+        <property name="FILE_PATH" value="./../logs/web" />
+        <property name="FILE_NAME" value="web" />
+    </Properties>
+
+    <appenders>
+        <console name="Console" target="SYSTEM_OUT">
+            <!--杈撳嚭鏃ュ織鐨勬牸寮�-->
+            <PatternLayout pattern="${LOG_PATTERN}"/>
+            <!--鎺у埗鍙板彧杈撳嚭level鍙婂叾浠ヤ笂绾у埆鐨勪俊鎭紙onMatch锛夛紝鍏朵粬鐨勭洿鎺ユ嫆缁濓紙onMismatch锛�-->
+            <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>
+        </console>
+
+        <!--鏂囦欢浼氭墦鍗板嚭鎵�鏈変俊鎭紝杩欎釜log姣忔杩愯绋嬪簭浼氳嚜鍔ㄦ竻绌猴紝鐢盿ppend灞炴�у喅瀹氾紝閫傚悎涓存椂娴嬭瘯鐢�-->
+        <File name="Filelog" fileName="${FILE_PATH}/web.log" append="false">
+            <PatternLayout pattern="${LOG_PATTERN}"/>
+        </File>
+
+        <!-- 杩欎釜浼氭墦鍗板嚭鎵�鏈夌殑info鍙婁互涓嬬骇鍒殑淇℃伅锛屾瘡娆″ぇ灏忚秴杩噑ize锛屽垯杩檚ize澶у皬鐨勬棩蹇椾細鑷姩瀛樺叆鎸夊勾浠�-鏈堜唤寤虹珛鐨勬枃浠跺す涓嬮潰骞惰繘琛屽帇缂╋紝浣滀负瀛樻。-->
+        <RollingFile name="RollingFileInfo" fileName="${FILE_PATH}/info.log" filePattern="${FILE_PATH}/${FILE_NAME}-INFO-%d{yyyy-MM-dd}_%i.log.gz">
+            <!--鎺у埗鍙板彧杈撳嚭level鍙婁互涓婄骇鍒殑淇℃伅锛坥nMatch锛夛紝鍏朵粬鐨勭洿鎺ユ嫆缁濓紙onMismatch锛�-->
+            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
+            <PatternLayout pattern="${LOG_PATTERN}"/>
+            <Policies>
+                <!--interval灞炴�х敤鏉ユ寚瀹氬涔呮粴鍔ㄤ竴娆★紝榛樿鏄�1 hour-->
+                <TimeBasedTriggeringPolicy interval="1"/>
+                <SizeBasedTriggeringPolicy size="10MB"/>
+            </Policies>
+            <!-- DefaultRolloverStrategy鍚屼竴鏂囦欢澶逛笅15涓枃浠跺紑濮嬭鐩� 涓嶈缃紝鍒欓粯璁や负鏈�澶氬悓涓�鏂囦欢澶逛笅7涓枃浠跺紑濮嬭鐩�-->
+            <DefaultRolloverStrategy max="15"/>
+        </RollingFile>
+
+        <!-- 杩欎釜浼氭墦鍗板嚭鎵�鏈夌殑warn鍙婁互涓嬬骇鍒殑淇℃伅锛屾瘡娆″ぇ灏忚秴杩噑ize锛屽垯杩檚ize澶у皬鐨勬棩蹇椾細鑷姩瀛樺叆鎸夊勾浠�-鏈堜唤寤虹珛鐨勬枃浠跺す涓嬮潰骞惰繘琛屽帇缂╋紝浣滀负瀛樻。-->
+        <RollingFile name="RollingFileWarn" fileName="${FILE_PATH}/warn.log" filePattern="${FILE_PATH}/${FILE_NAME}-WARN-%d{yyyy-MM-dd}_%i.log.gz">
+            <!--鎺у埗鍙板彧杈撳嚭level鍙婁互涓婄骇鍒殑淇℃伅锛坥nMatch锛夛紝鍏朵粬鐨勭洿鎺ユ嫆缁濓紙onMismatch锛�-->
+            <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
+            <PatternLayout pattern="${LOG_PATTERN}"/>
+            <Policies>
+                <!--interval灞炴�х敤鏉ユ寚瀹氬涔呮粴鍔ㄤ竴娆★紝榛樿鏄�1 hour-->
+                <TimeBasedTriggeringPolicy interval="1"/>
+                <SizeBasedTriggeringPolicy size="10MB"/>
+            </Policies>
+            <!-- DefaultRolloverStrategy鍚屼竴鏂囦欢澶逛笅15涓枃浠跺紑濮嬭鐩� 涓嶈缃紝鍒欓粯璁や负鏈�澶氬悓涓�鏂囦欢澶逛笅7涓枃浠跺紑濮嬭鐩�-->
+            <DefaultRolloverStrategy max="15"/>
+        </RollingFile>
+
+        <!-- 杩欎釜浼氭墦鍗板嚭鎵�鏈夌殑error鍙婁互涓嬬骇鍒殑淇℃伅锛屾瘡娆″ぇ灏忚秴杩噑ize锛屽垯杩檚ize澶у皬鐨勬棩蹇椾細鑷姩瀛樺叆鎸夊勾浠�-鏈堜唤寤虹珛鐨勬枃浠跺す涓嬮潰骞惰繘琛屽帇缂╋紝浣滀负瀛樻。-->
+        <RollingFile name="RollingFileError" fileName="${FILE_PATH}/error.log" filePattern="${FILE_PATH}/${FILE_NAME}-ERROR-%d{yyyy-MM-dd}_%i.log.gz">
+            <!--鎺у埗鍙板彧杈撳嚭level鍙婁互涓婄骇鍒殑淇℃伅锛坥nMatch锛夛紝鍏朵粬鐨勭洿鎺ユ嫆缁濓紙onMismatch锛�-->
+            <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
+            <PatternLayout pattern="${LOG_PATTERN}"/>
+            <Policies>
+                <!--interval灞炴�х敤鏉ユ寚瀹氬涔呮粴鍔ㄤ竴娆★紝榛樿鏄�1 hour-->
+                <TimeBasedTriggeringPolicy interval="1"/>
+                <SizeBasedTriggeringPolicy size="10MB"/>
+            </Policies>
+            <!-- DefaultRolloverStrategy鍚屼竴鏂囦欢澶逛笅15涓枃浠跺紑濮嬭鐩� 涓嶈缃紝鍒欓粯璁や负鏈�澶氬悓涓�鏂囦欢澶逛笅7涓枃浠跺紑濮嬭鐩�-->
+            <DefaultRolloverStrategy max="15"/>
+        </RollingFile>
+    </appenders>
+
+    <!--Logger鑺傜偣鐢ㄦ潵鍗曠嫭鎸囧畾鏃ュ織鐨勫舰寮忥紝姣斿瑕佷负鎸囧畾鍖呬笅鐨刢lass鎸囧畾涓嶅悓鐨勬棩蹇楃骇鍒瓑銆�-->
+    <!--鐒跺悗瀹氫箟loggers锛屽彧鏈夊畾涔変簡logger骞跺紩鍏ョ殑appender锛宎ppender鎵嶄細鐢熸晥-->
+    <loggers>
+        <!--杩囨护鎺塻pring鍜宮ybatis鐨勪竴浜涙棤鐢ㄧ殑DEBUG淇℃伅-->
+        <logger name="org.mybatis" level="info" additivity="false">
+            <AppenderRef ref="Console"/>
+        </logger>
+        <!--鐩戞帶绯荤粺淇℃伅-->
+        <!--鑻ユ槸additivity璁句负false锛屽垯 瀛怢ogger 鍙細鍦ㄨ嚜宸辩殑appender閲岃緭鍑猴紝鑰屼笉浼氬湪 鐖禠ogger 鐨刟ppender閲岃緭鍑恒��-->
+        <Logger name="org.springframework" level="info" additivity="false">
+            <AppenderRef ref="Console"/>
+        </Logger>
+        <!--鏃ュ織绾у埆-->
+        <root level="info">
+            <appender-ref ref="Console"/>
+            <appender-ref ref="Filelog"/>
+            <appender-ref ref="RollingFileInfo"/>
+            <appender-ref ref="RollingFileWarn"/>
+            <appender-ref ref="RollingFileError"/>
+        </root>
+    </loggers>
+
+</configuration>
\ No newline at end of file
diff --git a/Source/plt-web/plt-web-parent/plt-web/pom.xml b/Source/plt-web/plt-web-parent/plt-web/pom.xml
index 5f6386a..12d5e13 100644
--- a/Source/plt-web/plt-web-parent/plt-web/pom.xml
+++ b/Source/plt-web/plt-web-parent/plt-web/pom.xml
@@ -12,6 +12,7 @@
     <artifactId>plt-web</artifactId>
 
     <dependencies>
+        <!--骞冲彴鐨勫寘-->
         <dependency>
             <groupId>com.vci</groupId>
             <artifactId>plt-web-base</artifactId>
@@ -33,24 +34,20 @@
         <dependency>
             <groupId>com.vci</groupId>
             <artifactId>plt-web-api</artifactId>
-            <version>2024.1-SNAPSHOT</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>com.vci</groupId>
-                    <artifactId>plt-web-base</artifactId>
-                </exclusion>
-            </exclusions>
         </dependency>
+        <dependency>
+            <groupId>com.vci</groupId>
+            <artifactId>plt-starter</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.vci</groupId>
+            <artifactId>plt-web-permission</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>eu.bitwalker</groupId>
             <artifactId>UserAgentUtils</artifactId>
             <version>1.20</version>
-        </dependency>
-        <!-- https://mvnrepository.com/artifact/com.github.jsqlparser/jsqlparser -->
-        <dependency>
-            <groupId>com.github.jsqlparser</groupId>
-            <artifactId>jsqlparser</artifactId>
-            <version>4.9</version>
         </dependency>
 
         <!--寮�鍚� cache 缂撳瓨 -->
@@ -72,45 +69,11 @@
             <artifactId>xstream</artifactId>
             <version>1.4.10</version>
         </dependency>
-        <dependency><!--浠g爜鐢熸垚鍣ㄦ墍闇�妯℃澘-->
-            <artifactId>velocity</artifactId>
-            <groupId>org.apache.velocity</groupId>
-            <version>1.7</version>
-        </dependency>
-        <dependency>
-            <groupId>com.vci</groupId>
-            <artifactId>plt-starter</artifactId>
-            <version>${platform.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.reflections</groupId>
-            <artifactId>reflections</artifactId>
-            <version>0.9.11</version>
-        </dependency>
-
     </dependencies>
 
     <build>
         <finalName>plt-web</finalName>
         <plugins>
-<!--            <plugin>-->
-<!--                <groupId>org.apache.maven.plugins</groupId>-->
-<!--                <artifactId>maven-jar-plugin</artifactId>-->
-<!--                <configuration>-->
-<!--                    <archive>-->
-<!--                        <manifest>-->
-<!--                            <addClasspath>false</addClasspath>-->
-<!--                            <classpathPrefix>lib/</classpathPrefix>-->
-<!--                            <useUniqueVersions>false</useUniqueVersions>-->
-<!--                        </manifest>-->
-<!--                    </archive>-->
-<!--                    <excludes>-->
-<!--                        <exclude>application-prod.yml</exclude>-->
-<!--                        <exclude>application-db.yml</exclude>-->
-<!--                        <exclude>properties/conf.properties</exclude>-->
-<!--                    </excludes>-->
-<!--                </configuration>-->
-<!--            </plugin>-->
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-dependency-plugin</artifactId>
@@ -124,7 +87,6 @@
                         </goals>
                         <configuration>
                             <outputDirectory>${project.build.directory}/lib</outputDirectory>
-<!--                            <excludeGroupIds>com.vci.platform</excludeGroupIds>-->
                         </configuration>
                     </execution>
                 </executions>
@@ -147,35 +109,6 @@
                     </excludes>
                 </configuration>
             </plugin>
-            <!--            <plugin>-->
-            <!--                <groupId>org.springframework.boot</groupId>-->
-            <!--                <artifactId>spring-boot-maven-plugin</artifactId>-->
-            <!--                <configuration>-->
-            <!--                    &lt;!&ndash;閲嶅啓鍖呭惈渚濊禆锛屽寘鍚笉瀛樺湪鐨勪緷璧栵紝jar閲屾病鏈塸om閲岀殑渚濊禆&ndash;&gt;-->
-            <!--                    <includes>-->
-            <!--                        <include>-->
-            <!--                            <groupId>null</groupId>-->
-            <!--                            <artifactId>null</artifactId>-->
-            <!--                        </include>-->
-            <!--                    </includes>-->
-            <!--                    <layout>ZIP</layout>-->
-            <!--                    &lt;!&ndash;浣跨敤澶栭儴閰嶇疆鏂囦欢锛宩ar鍖呴噷娌℃湁璧勬簮鏂囦欢&ndash;&gt;-->
-            <!--                    <addResources>true</addResources>-->
-            <!--                </configuration>-->
-            <!--                <executions>-->
-            <!--                    <execution>-->
-            <!--                        <goals>-->
-            <!--                            <goal>repackage</goal>-->
-            <!--                        </goals>-->
-            <!--                        <configuration>-->
-            <!--                            &lt;!&ndash;閰嶇疆jar鍖呯壒娈婃爣璇� 閰嶇疆鍚庯紝淇濈暀鍘熸枃浠讹紝鐢熸垚鏂版枃浠� *-run.jar &ndash;&gt;-->
-            <!--                            &lt;!&ndash;閰嶇疆jar鍖呯壒娈婃爣璇� 涓嶉厤缃紝鍘熸枃浠跺懡鍚嶄负 *.jar.original锛岀敓鎴愭柊鏂囦欢 *.jar &ndash;&gt;-->
-            <!--                            &lt;!&ndash;<classifier>run</classifier>&ndash;&gt;-->
-            <!--                        </configuration>-->
-            <!--                    </execution>-->
-            <!--                </executions>-->
-            <!--            </plugin>-->
-
         </plugins>
     </build>
 
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/enumpck/DataObjectEnum.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/enumpck/DataObjectEnum.java
deleted file mode 100644
index 8d748a9..0000000
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/enumpck/DataObjectEnum.java
+++ /dev/null
@@ -1,152 +0,0 @@
-package com.vci.frameworkcore.enumpck;
-
-import com.alibaba.fastjson.JSONObject;
-import com.vci.client.common.objects.DeptObject;
-import com.vci.client.common.objects.RoleObject;
-import com.vci.client.common.objects.UserObject;
-import com.vci.pagemodel.OrgDepartmentVO;
-import com.vci.pagemodel.SmRoleVO;
-import com.vci.pagemodel.SmUserVO;
-
-import java.text.ParsePosition;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-/**
- * @author lenovo
- *
- */
-public enum DataObjectEnum {
-	USER_FIELD_MAP("user-table-field-map"),
-	DEPT_FIELD_MAP("dept-table-field-map"),
-	ROLE_FIELD_MAP("role-table-field-map"),
-	FUNCTION_FIELD_MAP("function-table-field-map");
-	public JSONObject jsonObject;
-	
-	
-	private DataObjectEnum(String key) {
-		Object parse = JSONObject.parse(this.jsonObjecttr);
-		if(parse instanceof  JSONObject){
-			JSONObject tt=(JSONObject)parse;
-			Object object = tt.get("compatibility");
-			if(object instanceof  JSONObject){
-				JSONObject jsonObject2=(JSONObject)object;
-				if(jsonObject2 instanceof JSONObject){
-				this.jsonObject=(JSONObject)jsonObject2.get(key);
-				}
-			}
-		}
-		
-	}
-	
-	private String jsonObjecttr="{'compatibility':{" +
- 		    "'user-table-field-map':{'oid':'pluid','id':'plusername','name':'pltruename','password':'plpassword','usertype':'plusertype','email':'plemail','description':'pldesc','creator':'plcreateuser','createtime':'plcreatetime','lastmodifier':'plupdateuser','lastmodifytime':'plupdatetime','secretgrade':'plsecretgrade'},"+
- 		    "'role-table-field-map':{'oid':'pluid','name':'plname','description':'pldesc','creator':'plcreateuser','createtime':'plcreatetime','lastmodifier':'plupdateuser','lastmodifytime':'plupdatetime'},"+
- 		   "'dept-table-field-map':{'oid':'pluid','id':'plnum','name':'plname','pkfatherdepartment':'plparentuid','description':'pldesc','creator':'plcreateuser','createtime':'plcreatetime','lastmodifier':'plupdateuser','lastmodifytime':'plupdatetime'},"+
- 		   "'function-table-field-map':{'oid':'ploid','id':'plmoduleno','name':'plname','logname':'plaliasname','parentfunctionid':'plparentid'}" +
- 		   "}}";
-		
-	
-	public SmUserVO[] changeUserObjectToSmUserVOs(UserObject[] userObjects){
-		SmUserVO[] smUserVOs=new SmUserVO[userObjects.length];
-		for (int i=0; i<userObjects.length;i++) {
-			smUserVOs[i]=changeUserObjectToSmUserVO(userObjects[i]);
-		}
-		return smUserVOs;
-	}
-	public SmUserVO changeUserObjectToSmUserVO(UserObject userObject){
-		SmUserVO smUserVO=new SmUserVO();
-		smUserVO.setBtmname("user");
-		smUserVO.setOid(userObject.getId());//鐢ㄦ埛涓婚敭
-		smUserVO.setId(userObject.getUserName());//鐢ㄦ埛璐﹀彿
-		smUserVO.setName(userObject.getTrueName());//鐢ㄦ埛濮撳悕
-		smUserVO.setUserType(userObject.getUserType()+"");//鐢ㄦ埛绫诲瀷锛�
-		if(userObject.getUserType()==1){//绠$悊鍛樼敤鎴�
-			smUserVO.setUserTypeText("绠$悊鍛樼敤鎴�");//鐢ㄦ埛绫诲瀷鏄剧ず鏂囨湰
-		}else{
-			smUserVO.setUserTypeText("鏅�氱敤鎴�");//鐢ㄦ埛绫诲瀷鏄剧ず鏂囨湰
-		}
-		smUserVO.setPkPersonName("");//鎵�灞炰汉鍛樺悕绉�
-		smUserVO.setPkPerson("");//鎵�灞炰汉鍛�
-		smUserVO.setDisabledate(null);//澶辨晥鏃ユ湡
-		smUserVO.setEmail(userObject.getEmail());//閭
-		smUserVO.setDescription(userObject.getDesc());//鎻忚堪
-		smUserVO.setTel(null);//鐢佃瘽
-		smUserVO.setRtxNo(null);//RTX鑱旂郴鍙�
-		smUserVO.setIMNo(null);// 瀹炴椂閫氳杞欢璐﹀彿
-		smUserVO.setPkDepartment(null);//鎵�灞為儴闂紱
-		smUserVO.setPkDepartmentName(null);//鎵�灞為儴闂ㄥ悕绉帮紱
-		smUserVO.setPkDuty(null);//鎵�灞炶亴鍔�
-		smUserVO.setPkDutyName(null);//鎵�灞炶亴鍔″悕绉�
-		smUserVO.setPkPasswordStrategy(null);//鎵�灞炲瘑鐮佸畨鍏ㄧ瓥鐣�
-		smUserVO.setPkPasswordStrategyName(null);//鎵�灞炲瘑鐮佸畨鍏ㄧ瓥鐣�
-		smUserVO.setLastLoginTime(null);//鏈�鍚庣櫥褰曟椂闂�
-		smUserVO.setLastModifyPasswordTime(new Date(userObject.getPwdUpdateTime()));//鏈�鍚庝慨鏀瑰瘑鐮佹槸鍑�
-		smUserVO.setPwdWrongCount(0);//瀵嗙爜閿欒娆℃暟
-		smUserVO.setSex(null);//鎬у埆
-		smUserVO.setSexText(null);//鎬у埆鏄剧ず鍚嶇О
-		smUserVO.setLangCode(null);//榛樿鐨勮瑷�缂栫爜
-		smUserVO.setLangCodeText(null);//榛樿鐨勮瑷�鍚嶇О
-		smUserVO.setLockFlag(userObject.getStatus()==1?true:false);//鏄惁閿佸畾;
-		smUserVO.setPhoto(null);//澶村儚
-		//smUserVO.setSecretGrade(userObject.getSecretGrade());
-		smUserVO.setCreator(userObject.getCreateUser());//鍒涘缓鑰�
-		smUserVO.setCreateTime(ChangeStrToDate(String.valueOf(new Date(userObject.getCreateTime()))));//鍒涘缓鏃堕棿
-		smUserVO.setLastModifier(userObject.getUpdateUser());//淇敼鑰�
-		smUserVO.setLastModifyTime(new Date(userObject.getUpdateTime()));//淇敼鏃堕棿
-		return smUserVO;
-	}
-	public OrgDepartmentVO[] changeDeptObjectToOrgDepartmentVOs(DeptObject[] deptObjects){
-		OrgDepartmentVO[] departmentVOs=new OrgDepartmentVO[deptObjects.length];
-		for (int i = 0; i < deptObjects.length; i++) {
-			departmentVOs[i]=changeDeptObjectToOrgDepartmentVO(deptObjects[i]);
-		}
-		return departmentVOs;
-		
-	}
-	public OrgDepartmentVO changeDeptObjectToOrgDepartmentVO(
-			DeptObject deptObject) {
-		// TODO Auto-generated method stub
-		OrgDepartmentVO departmentVOs=new OrgDepartmentVO();
-		departmentVOs.setBtmname("pldept");
-		departmentVOs.setOid(deptObject.getId());
-		departmentVOs.setId(deptObject.getNum());
-		departmentVOs.setName(deptObject.getName());
-		departmentVOs.setPkFatherDepartment(deptObject.getParentId());
-		departmentVOs.setDescription(deptObject.getDescription());
-		departmentVOs.setCreator(deptObject.getCreateUser());
-		departmentVOs.setCreateTime(new Date(deptObject.getCreateTime()));
-		departmentVOs.setLastModifier(deptObject.getUpdateUser());
-		departmentVOs.setLastModifyTime(new Date(deptObject.getUpdateTime()));
-		departmentVOs.setLcStatus(deptObject.getStatus()+"");
-		return departmentVOs;
-	}
-	public <RoleObject> SmRoleVO[]	changeRoleObjectToSmRoleVOs(com.vci.client.common.objects.RoleObject[] objects){
-		SmRoleVO[] smRoleVOs=new SmRoleVO[objects.length];
-		
-		for (int i=0;i<objects.length;i++) {
-			smRoleVOs[i]=changeRoleObjectToSmRoleVO(objects[i]);
-		}
-		return smRoleVOs;
-	}
-	public SmRoleVO	changeRoleObjectToSmRoleVO(RoleObject object){
-		SmRoleVO smRoleVO=new SmRoleVO();
-		smRoleVO.setOid(object.getId());
-		smRoleVO.setName(object.getName());
-		smRoleVO.setDescription(object.getDescription());
-		smRoleVO.setCreator(object.getCreateUser());
-		smRoleVO.setCreateTime(new Date(object.getCreateTime()));
-		smRoleVO.setLastModifier(object.getUpdateUser());
-		smRoleVO.setBtmname("plrole");
-		smRoleVO.setLastModifyTime(new Date(object.getUpdateTime()));
-		return smRoleVO;
-	}
-	
-	private Date ChangeStrToDate(String strDate) {
-		    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-		    ParsePosition pos = new ParsePosition(0);
-		    Date strtodate = formatter.parse(strDate, pos);
-		    return strtodate;
-		  }
-
-	}
\ No newline at end of file
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/test/DataTestController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/test/DataTestController.java
deleted file mode 100644
index 3572bcc..0000000
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/test/DataTestController.java
+++ /dev/null
@@ -1,199 +0,0 @@
-package com.vci.test;
-
-import com.vci.starter.web.annotation.controller.VciUnCheckRight;
-import com.vci.starter.web.pagemodel.BaseResult;
-import com.vci.starter.web.pagemodel.Tree;
-import com.vci.web.service.WebBoServiceI;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.util.CollectionUtils;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @Description 娴嬭瘯鎺у埗鍣�
- * @Author dangsn
- * @Date 2024/11/14 10:08
- */
-@RestController
-@RequestMapping("/dataTestController")
-public class DataTestController {
-
-    @Resource
-    private WebBoServiceI boServiceI;
-
-    /**
-     * 鑾峰彇浜у搧
-     * @return
-     */
-    @VciUnCheckRight
-    @GetMapping("/getProduct")
-    public BaseResult getProduct(){
-        String sql = "select * from platformbtm_workcontext where workcontexttype = 'product'";
-        List<Map> productList = boServiceI.queryByOnlySqlForMap(sql);
-        BaseResult baseResult = new BaseResult();
-        baseResult.setSuccess(true);
-        baseResult.setCode(200);
-        baseResult.setData(productList);
-        return baseResult;
-    }
-
-    /**
-     * 鑾峰彇ebom淇℃伅
-     * @param productNo 浜у搧缂栧彿
-     * @param productOid 浜у搧涓婚敭
-     * @param parentOid 涓婄骇闆朵欢涓婚敭
-     * @return
-     */
-    @VciUnCheckRight
-    @GetMapping("/getEbomInfo")
-    public BaseResult getEbomInfo(String productNo, String productOid, String parentOid){
-        if(StringUtils.isBlank(productNo)){
-            return BaseResult.fail("浜у搧缂栧彿涓虹┖锛�");
-        }
-        if(StringUtils.isBlank(productOid)){
-            return BaseResult.fail("浜у搧涓婚敭涓虹┖锛�");
-        }
-        BaseResult baseResult = new BaseResult();
-        List<Map> ebomList;
-        if(StringUtils.isBlank(parentOid)){
-            String sql = "select * from platformbtm_part t where t.ownproduct = '"+productOid+"' and t.code = '"+productNo+"'";
-            ebomList = boServiceI.queryByOnlySqlForMap(sql);
-
-        }else{
-            String sql = "select p.*,e.oid as eoid from platformbtm_part p left join platformlt_ebom e on p.oid = e.t_oid \n" +
-                    "where e.f_oid = '"+parentOid+"' and e.workcontextoid = '"+productOid+"' \n" +
-                    "and p.islastr = '1' and p.islastv = '1' order by p.code asc";
-            ebomList = boServiceI.queryByOnlySqlForMap(sql);
-        }
-        List<Tree> treeList = new ArrayList<>();
-        if(!CollectionUtils.isEmpty(ebomList)){
-            for(Map ebom : ebomList){
-                String oid = ebom.get("OID").toString();
-                String id = ebom.get("CODE").toString();
-                String name = ebom.get("NAME").toString();
-                String revisionvalue = ebom.get("REVISIONVALUE").toString();
-                String versionrule = ebom.get("VERSIONRULE").toString();
-                String versionvalue = ebom.get("VERSIONVALUE").toString();
-                String parttype = ebom.get("PARTTYPE").toString();
-                String lcStatus = ebom.get("LCSTATUS").toString();
-                String parttypetext = "";
-                String lcStatusText = "";
-                if(parttype.equals("20")){
-                    parttypetext = "浜у搧";
-                }
-                if(parttype.equals("6")){
-                    parttypetext = "瑁呴厤浠�";
-                }
-                if(parttype.equals("7")){
-                    parttypetext = "闆朵欢";
-                }
-                if(parttype.equals("8")){
-                    parttypetext = "鏍囧噯浠�";
-                }
-                if(lcStatus.equals("Editing")){
-                    lcStatusText = "缂栬緫涓�";
-                }
-                if(lcStatus.equals("Published")){
-                    lcStatusText = "宸插彂甯�";
-                }
-                Tree tree = new Tree();
-                tree.setLeaf(false);
-                tree.setExpanded(false);
-                tree.setOid(oid);
-                tree.setId(id);
-                tree.setText(id+" "+name+"["+parttypetext+"]["+revisionvalue+versionrule+versionvalue+"]銆�"+lcStatusText+"銆�");
-                if(StringUtils.isNotBlank(parentOid)){
-                    tree.setParentId(parentOid);
-                }
-                if(ebom.containsKey("EOID")){
-                    Map<String, String> atrrMap = new HashMap<>();
-                    atrrMap.put("eoid", ebom.get("EOID").toString());
-                    tree.setAttributes(atrrMap);
-                }
-                treeList.add(tree);
-            }
-        }
-        baseResult.setData(treeList);
-        baseResult.setSuccess(true);
-        baseResult.setCode(200);
-        return baseResult;
-    }
-
-    /**
-     * 鑾峰彇涓嬬骇闆朵欢淇℃伅
-     * @param productOid 浜у搧涓婚敭
-     * @param parentOid 涓婄骇闆朵欢涓婚敭
-     * @return
-     */
-    @VciUnCheckRight
-    @GetMapping("/getChildInfo")
-    public BaseResult getChildInfo(String productOid, String parentOid){
-        if(StringUtils.isBlank(productOid)){
-            return BaseResult.fail("浜у搧涓婚敭涓虹┖锛�");
-        }
-        if(StringUtils.isBlank(parentOid)){
-            return BaseResult.fail("闆朵欢涓婄骇涓婚敭涓虹┖锛�");
-        }
-        String sql = "select p.*,e.oid as eoid from platformbtm_part p left join platformlt_ebom e on p.oid = e.t_oid \n" +
-                "where e.f_oid = '"+parentOid+"' and e.workcontextoid = '"+productOid+"' \n" +
-                "and p.islastr = '1' and p.islastv = '1' order by p.code asc";
-        List<Map> ebomList = boServiceI.queryByOnlySqlForMap(sql);
-        BaseResult baseResult = new BaseResult();
-        baseResult.setData(ebomList);
-        baseResult.setSuccess(true);
-        return baseResult;
-    }
-
-    /**
-     * 鑾峰彇闆朵欢瀹炰緥淇℃伅
-     * @param productOid 浜у搧涓婚敭
-     * @param partOid 闆朵欢涓婚敭
-     * @param eoid 鏍戣妭鐐逛笂鐨勬墿灞曞睘鎬oid鐨勫��
-     * @return
-     */
-    @VciUnCheckRight
-    @GetMapping("/getPartInstance")
-    public BaseResult getPartInstance(String productOid, String partOid, String eoid){
-        if(StringUtils.isBlank(productOid)){
-            return BaseResult.fail("浜у搧涓婚敭涓虹┖锛�");
-        }
-        if(StringUtils.isBlank(partOid)){
-            return BaseResult.fail("闆朵欢涓婚敭涓虹┖锛�");
-        }
-        if(StringUtils.isBlank(eoid)){
-            return BaseResult.fail("EBOM鍏崇郴涓婚敭涓虹┖锛�");
-        }
-        String sql = "select t.* from platformbtm_partinstance t where t.partoid = '"+partOid+"' \n" +
-                "and t.workcontextoid = '"+productOid+"' and t.ebomoid = '"+eoid+"'";
-        List<Map> mapList = boServiceI.queryByOnlySqlForMap(sql);
-        BaseResult baseResult = new BaseResult();
-        baseResult.setData(mapList);
-        baseResult.setSuccess(true);
-        return baseResult;
-    }
-
-    /**
-     * 鑾峰彇闆朵欢鍩烘湰淇℃伅
-     * @param partOid 闆朵欢涓婚敭
-     * @return
-     */
-    @GetMapping("/getPartInfo")
-    public BaseResult getPartInfo(String partOid){
-        if(StringUtils.isBlank(partOid)){
-            return BaseResult.fail("闆朵欢涓婚敭涓虹┖锛�");
-        }
-        String sql = "select * from platformbtm_part where oid = '"+partOid+"'";
-        List<Map> mapList = boServiceI.queryByOnlySqlForMap(sql);
-        BaseResult baseResult = new BaseResult();
-        baseResult.setData(mapList);
-        baseResult.setSuccess(true);
-        return baseResult;
-    }
-}
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/HMSysModConfigController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/HMSysModConfigController.java
index 07c2980..e3cb02f 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/HMSysModConfigController.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/HMSysModConfigController.java
@@ -5,11 +5,10 @@
 import com.vci.corba.framework.data.FuncOperationInfo;
 import com.vci.corba.framework.data.OperateInfo;
 import com.vci.dto.RoleInfoDTO;
-import com.vci.dto.RoleRightDTO;
 import com.vci.dto.RoleRightParamDTO;
 import com.vci.dto.RoleRightParamDTOS;
-import com.vci.frameworkcore.compatibility.ISmFunctionQueryService;
-import com.vci.frameworkcore.compatibility.SmHMSysModConfigServiceI;
+import com.vci.web.service.ISmFunctionQueryService;
+import com.vci.web.service.SmHMSysModConfigServiceI;
 import com.vci.pagemodel.AppConfigDetailInfoVO;
 import com.vci.pagemodel.ExpExcelConditionVO;
 import com.vci.pagemodel.MenuVO;
@@ -18,7 +17,7 @@
 import com.vci.starter.web.util.ControllerUtil;
 import com.vci.starter.web.util.LocalFileUtil;
 import com.vci.starter.web.util.VciBaseUtil;
-import com.vci.web.util.Func;
+import com.vci.starter.web.util.Lcm.Func;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/LogBasicController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/LogBasicController.java
index aeb3b35..0fee834 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/LogBasicController.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/LogBasicController.java
@@ -7,7 +7,7 @@
 import com.vci.starter.web.util.ControllerUtil;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.web.service.LogBasicServiceI;
-import com.vci.web.util.Func;
+import com.vci.starter.web.util.Lcm.Func;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/LoginController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/LoginController.java
deleted file mode 100644
index df11726..0000000
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/LoginController.java
+++ /dev/null
@@ -1,345 +0,0 @@
-package com.vci.web.controller;
-
-import com.vci.starter.web.annotation.controller.VciUnCheckRight;
-import com.vci.starter.web.annotation.log.VciBusinessLog;
-import com.vci.starter.web.constant.TokenKeyConstant;
-import com.vci.starter.web.pagemodel.BaseResult;
-import com.vci.starter.web.pagemodel.RequestClientInfo;
-import com.vci.starter.web.pagemodel.SessionInfo;
-import com.vci.starter.web.util.LangBaseUtil;
-import com.vci.starter.web.util.MessageUtils;
-import com.vci.starter.web.util.VciBaseUtil;
-import com.vci.starter.web.util.WebThreadLocalUtil;
-import com.vci.bo.LoginResultBO;
-import com.vci.dto.LoginUserDTO;
-import com.vci.web.service.LoginServiceI;
-import eu.bitwalker.useragentutils.*;
-import org.apache.commons.lang3.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.servlet.ModelAndView;
-
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.security.Principal;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Locale;
-import java.util.Map;
-
-/**
- * 鐧诲綍鎺у埗鍣�
- * @author weidy
- * @date 2021-1-28
- */
-@Controller
-@RequestMapping("/framework/loginController")
-@VciBusinessLog(modelName="鐧诲綍鏈嶅姟")
-public class LoginController{
-
-	/**
-	 * 鐧诲綍鏈嶅姟
-	 */
-	@Autowired
-	private LoginServiceI loginService;
-
-	/**
-	 * 鏃ュ織
-	 */
-	private Logger logger = LoggerFactory.getLogger(getClass());
-
-	/**
-	 * 鐧诲綍锛岃繖涓湴鏂逛富瑕佹槸涓轰簡鐧诲綍鍚庡崟鐙殑涓氬姟
-	 * @param userDTO 鐢ㄦ埛鐨勫璞�
-	 * @param request 璇锋眰瀵硅薄
-	 * @param clientInfo 瀹㈡埛绔殑淇℃伅
-	 * @return 鎵ц缁撴灉
-	 */
-	@VciBusinessLog(operateName="鐧诲綍")
-	@PostMapping(value = "/login")
-	@ResponseBody
-	@VciUnCheckRight()
-	public BaseResult login(LoginUserDTO userDTO, HttpServletRequest request, RequestClientInfo clientInfo){
-		VciBaseUtil.alertNotNull(userDTO,"鐢ㄦ埛瀵硅薄",clientInfo,"璇锋眰瀹㈡埛绔俊鎭�");
-		try {
-			wrapperBrowserInfo(clientInfo,request);
-			LoginResultBO loginResultBO = loginService.login(userDTO,clientInfo);
-			if(loginResultBO.isSuccess()){
-				return BaseResult.success(loginResultBO);
-			}else{
-				BaseResult result = BaseResult.fail(loginResultBO.getFailMsg());
-				result.setCode(200);//鐘舵�佺爜涓嶆槸200鍓嶇鏃犳硶鑾峰彇鍒皁bj涓殑淇℃伅
-				if(StringUtils.isBlank(loginResultBO.getFailMsg())){
-					result.setMsg(MessageUtils.get(loginResultBO.getFailCode(),loginResultBO.getFailMsgArray()));
-				}
-				result.setObj(loginResultBO);
-				return result;
-			}
-		}catch (Exception e){
-			e.printStackTrace();
-			String msg = "璋冪敤鐧诲綍鏂规硶鏃跺嚭鐜伴敊璇紝鍘熷洜锛�"+VciBaseUtil.getExceptionMessage(e);
-			logger.error(msg);
-			return BaseResult.fail(msg);
-		}
-	}
-	
-	/**
-	 *  CAS鐨勫崟鐐圭櫥褰�
-	 *  1. cas鍗曠偣鐧诲綍锛屽垯浠巙serPrincipal閲岃幏鍙�
-	 *  2. 鍦ㄥご閲岄潰鍔爄v-user
-	 *  3. 鍦╮equest閲岄潰鏀剧敤鎴�
-	 * @param request 璇锋眰鐨勫璞�
-	 * @param response 鍝嶅簲瀵硅薄
-	 * @return html鐨勫悕瀛楃殑鍓嶇紑锛屽叿浣撴槸Jsp杩樻槸html锛屾槸spring-mvc閲岄厤缃殑
-	 */
-	@VciBusinessLog(operateName="鍗曠偣鐧诲綍")
-	@RequestMapping("/singleLoginCas")
-	@VciUnCheckRight()
-	public ModelAndView singleLoginCas(HttpServletRequest request,HttpServletResponse response){
-		return doSingleLogin(request,response,"");
-	}
-
-	/**
-	 * 鎵ц鍗曠偣鐧诲綍
-	 * @param request 璇锋眰鐨勪俊鎭�
-	 * @param userParam 鐢ㄦ埛鐨勫弬鏁板悕瀛�
-	 * @return 杩斿洖main.html
-	 */
-	private ModelAndView doSingleLogin(HttpServletRequest request, HttpServletResponse response,String userParam){
-		String msg = "";
-		String token = "";
-		if(request.getSession() == null){
-			msg = "session宸茬粡杩囨湡鎴栦笉瀛樺湪,浣犲彲鑳介渶瑕侀噸鏂版墽琛屽崟鐐圭櫥褰�";
-		}else {
-			String username = "";
-			Principal principal = request.getUserPrincipal();
-			if(principal!=null){
-				Object ivUser = principal.getName();
-				if (ivUser != null ) {
-					username = ivUser.toString();
-				}
-			}
-			//鐢ㄦ埛鐨勫弬鏁�
-			if(StringUtils.isBlank(userParam)){
-				userParam = request.getParameter("userParam");
-			}
-			userParam = StringUtils.isBlank(userParam)?"iv-user":userParam;
-			if(StringUtils.isBlank(username)){
-				//涓嶆槸cas鐨勬柟寮忥紝鑰屾槸澶寸殑鏂瑰紡
-				username = request.getHeader(userParam);
-			}
-			if(StringUtils.isBlank(username)){
-				//鐪嬬湅鏄笉鍙傛暟
-				username = request.getParameter(userParam);
-			}
-			if(StringUtils.isBlank(username)){
-				msg = "娌℃湁鑾峰彇鍒扮敤鎴风殑淇℃伅";
-			}else{
-				RequestClientInfo clientInfo =new RequestClientInfo();
-				wrapperBrowserInfo(clientInfo,request);
-				LoginUserDTO userDTO = new LoginUserDTO();
-				userDTO.setUserId(username);
-				try {
-					LoginResultBO loginResultBO = loginService.singleLogin(userDTO, clientInfo);
-					if(!loginResultBO.isSuccess()){
-						msg = loginResultBO.getFailMsg();
-					}else {
-						token = loginResultBO.getTokenVO().getAccessToken();
-					}
-				}catch (Throwable e){
-					msg = LangBaseUtil.getErrorMsg(e);
-				}
-			}
-		}
-		Enumeration<?> parameterNames = request.getParameterNames();
-		Map<String,String> paramMap = new HashMap<>();
-		while (parameterNames.hasMoreElements()){
-			String paramName = (String)parameterNames.nextElement();
-			String value  = request.getParameter(paramName);
-			if(!userParam.equalsIgnoreCase(paramName)) {
-				paramMap.put(paramName, value);
-			}
-			//sb.append("&" + paramName + "=" + value);
-		}
-		String html = request.getParameter("html");
-		if(StringUtils.isBlank(html)){
-			html = "main";
-		}
-		ModelAndView view = new ModelAndView();
-		Cookie cookie = new Cookie("msg", msg);
-		cookie.setPath("/");
-		response.addCookie(cookie);
-		Cookie cookie1 = new Cookie(TokenKeyConstant.USER_TOKEN_KEY, token);
-		cookie1.setPath("/");
-		response.addCookie(cookie1);
-		view.addAllObjects(paramMap);
-		view.setViewName("redirect:/" + html + ".html");
-
-		return view;
-		//鐗瑰埆娉ㄦ剰锛屽崟鐐圭櫥褰曚竴瀹氬湪杩愯鐜閲岃皟璇曪紝寮�鍙戠幆澧冩病鏈夎繖涓枃浠�
-	}
-
-	/**
-	 * 鎵ц鍗曠偣鐧诲綍,鏍规嵁username
-	 * @param request 璇锋眰鐨勪俊鎭�
-	 * @param username 鐢ㄦ埛鐨勫弬鏁板悕瀛�
-	 * @return 杩斿洖main.html
-	 */
-	public BaseResult doSingleLoginByUsername(HttpServletRequest request, HttpServletResponse response,String username){
-		String msg = "";
-		String token = "";
-		if(request.getSession() == null){
-			msg = "session宸茬粡杩囨湡鎴栦笉瀛樺湪,浣犲彲鑳介渶瑕侀噸鏂版墽琛屽崟鐐圭櫥褰�";
-			return BaseResult.fail(msg);
-		}else {
-
-			if(StringUtils.isBlank(username)){
-				msg = "娌℃湁鑾峰彇鍒扮敤鎴风殑淇℃伅";
-				return BaseResult.fail(msg);
-			}else{
-				RequestClientInfo clientInfo =new RequestClientInfo();
-				wrapperBrowserInfo(clientInfo,request);
-				LoginUserDTO userDTO = new LoginUserDTO();
-				userDTO.setUserId(username);
-				try {
-					LoginResultBO loginResultBO = loginService.singleLogin(userDTO, clientInfo);
-					if(!loginResultBO.isSuccess()){
-						msg = loginResultBO.getFailMsg();
-						return BaseResult.fail(msg);
-					}else {
-						token = loginResultBO.getTokenVO().getAccessToken();
-						msg="鐧诲綍鎴愬姛锛�";
-					}
-				}catch (Throwable e){
-					msg = LangBaseUtil.getErrorMsg(e);
-				}
-			}
-		}
-
-
-		return BaseResult.success(msg);
-		//鐗瑰埆娉ㄦ剰锛屽崟鐐圭櫥褰曚竴瀹氬湪杩愯鐜閲岃皟璇曪紝寮�鍙戠幆澧冩病鏈夎繖涓枃浠�
-	}
-
-	/**
-	 * 浣跨敤鐢ㄦ埛鍚嶆潵鎵ц鍗曠偣鐧诲綍
-	 * @param request 璇锋眰瀵硅薄
-	 * @param response 鍝嶅簲瀵硅薄
-	 * @return main.html
-	 */
-	@RequestMapping("/singleLoginByUsername")
-	@VciUnCheckRight
-	@VciBusinessLog(operateName="鍗曠偣鐧诲綍")
-	public ModelAndView singleLoginByUsername(HttpServletRequest request,HttpServletResponse response){
-		return doSingleLogin(request,response,"username");
-	}
-
-
-
-	/**
-	 * 鑾峰彇瀹㈡埛绔姹備俊鎭�,涓轰簡闅旂粷鍦╯erver灞備娇鐢╮equest
-	 * @param request 璇锋眰瀵硅薄
-	 * @param clientInfo 瀹㈡埛绔俊鎭�
-	 */
-	private void wrapperBrowserInfo(RequestClientInfo clientInfo,HttpServletRequest request) {
-		UserAgent userAgent = UserAgent.parseUserAgentString(request.getHeader("User-Agent"));
-		if(StringUtils.isBlank(clientInfo.getIpaddress())){
-			//鎵綢P鍦板潃
-			clientInfo.setIpaddress(getIpAddressFromRequest(request));
-		}
-		if(userAgent !=null) {
-			Browser browser = userAgent.getBrowser();
-			OperatingSystem os = userAgent.getOperatingSystem();
-
-			clientInfo.setOsversion(os != null ? os.getName() : "");
-			clientInfo.setBrowser(browser != null ? browser.getName() : "IE");
-			String version = "";
-			if (browser != null) {
-				Version version1 = browser.getVersion(request.getHeader("User-Agent"));
-				if (version1 != null) {
-					version = version1.getVersion();
-				}
-			}
-			clientInfo.setBrowserversion(version);
-			if (os != null) {
-				clientInfo.setRequestType(os.getDeviceType().getName());
-				if (DeviceType.COMPUTER.getName().equals(clientInfo.getRequestType())) {
-					clientInfo.setRequestType("browser");
-				}
-			}
-
-			Locale loc = Locale.getDefault();
-			clientInfo.setCountry(loc.getCountry());
-			clientInfo.setLanguage(loc.toLanguageTag());
-
-			Map<String,String> map = System.getenv();
-			clientInfo.setMachine(map.get("COMPUTERNAME"));
-			clientInfo.setOsUser(map.get("USERNAME"));
-		}
-	}
-
-	/**
-	 * 浠庤姹備腑鑾峰彇ip鍦板潃锛屼负浜嗛殧缁濆湪server灞備娇鐢╮equest
-	 * @param request 璇锋眰瀵硅薄
-	 * @return ip鍦板潃锛屾病鏈夋壘鍒伴粯璁や负127.0.0.1
-	 */
-	private String getIpAddressFromRequest(HttpServletRequest request){
-		String ip = request.getHeader("X-Forwarded-For");
-		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
-			ip = request.getHeader("Proxy-Client-IP");
-		}
-		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
-			ip = request.getHeader("WL-Proxy-Client-IP");
-		}
-		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
-			ip = request.getHeader("HTTP_CLIENT_IP");
-		}
-		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
-			ip = request.getHeader("HTTP_X_FORWARDED_FOR");
-		}
-		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
-			ip = request.getRemoteAddr();
-		}
-		if (ip == null || ip.length() == 0 || ip.indexOf("0:0:0:0:0:0:0:1") >-1) {
-			//0:0:0:0:0:0:0:1鏄湰鏈哄湪璁块棶
-			ip = "127.0.0.1";
-		}
-		return ip;
-	}
-
-	/**
-	 * 鑾峰彇鐢ㄦ埛鐨勪細璇濅俊鎭�
-	 * @return success涓簍rue琛ㄧず鑾峰彇鎴愬姛锛屽惁鍒檓sg鏄敊璇俊鎭紝obj灞炴�ф槸鑾峰彇鐨勪細璇濆璞′俊鎭�
-	 */
-	@VciUnCheckRight
-	@PostMapping("/getSessionInfo")
-	@ResponseBody
-	public BaseResult getSessionInfo(){
-		BaseResult<SessionInfo> json = new BaseResult<>();
-		SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread();
-		if(sessionInfo != null){
-			json = json.success(sessionInfo);
-		}
-		return json;
-	}
-
-	/**
-	 * 鎵ц閫�鍑�
-	 * @param request 璇锋眰瀵硅薄
-	 * @return success涓簍rue琛ㄧず閫�鍑烘垚鍔燂紝鍓嶇涓嶉渶瑕佸垽鏂粨鏋�
-	 */
-	@VciUnCheckRight
-	@PostMapping("/logout")
-	@ResponseBody
-	public BaseResult logout(HttpServletRequest request){
-		String userToken = request.getHeader(TokenKeyConstant.USER_TOKEN_KEY);
-		loginService.logout(userToken);
-		return BaseResult.success();
-	}
-}
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsAttributeController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsAttributeController.java
index 2c265ad..8f20767 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsAttributeController.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsAttributeController.java
@@ -2,7 +2,6 @@
 
 import com.vci.constant.FrameWorkLangCodeConstant;
 import com.vci.dto.OsAttributeDTO;
-import com.vci.starter.web.annotation.controller.VciUnCheckRight;
 import com.vci.starter.web.annotation.log.VciBusinessLog;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.BaseQueryObject;
@@ -14,7 +13,7 @@
 import com.vci.starter.web.util.LocalFileUtil;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.web.service.OsAttributeServiceI;
-import com.vci.web.util.Func;
+import com.vci.starter.web.util.Lcm.Func;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsDataAuthController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsDataAuthController.java
index 0186199..e16819f 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsDataAuthController.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsDataAuthController.java
@@ -2,23 +2,15 @@
 
 import com.vci.corba.common.PLException;
 import com.vci.corba.framework.data.GrandValue;
-import com.vci.dto.OsPvolumeDTO;
-import com.vci.starter.web.annotation.log.VciBusinessLog;
 import com.vci.starter.web.pagemodel.BaseResult;
-import com.vci.starter.web.util.ControllerUtil;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.web.service.OsDataAuthServiceI;
-import com.vci.web.util.Func;
-import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
 import java.util.Arrays;
-import java.util.Date;
 import java.util.List;
 
 /**
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsLifeCycleController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsLifeCycleController.java
index 0eb1e24..22408a6 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsLifeCycleController.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsLifeCycleController.java
@@ -2,7 +2,6 @@
 
 import com.vci.constant.FrameWorkLangCodeConstant;
 import com.vci.dto.OsLifeCycleDTO;
-import com.vci.starter.web.annotation.controller.VciUnCheckRight;
 import com.vci.starter.web.annotation.log.VciBusinessLog;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.BaseQueryObject;
@@ -14,7 +13,7 @@
 import com.vci.starter.web.util.LocalFileUtil;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.web.service.OsLifeCycleServiceI;
-import com.vci.web.util.Func;
+import com.vci.starter.web.util.Lcm.Func;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsLinkTypeController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsLinkTypeController.java
index 1ae1fc1..319c7cf 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsLinkTypeController.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsLinkTypeController.java
@@ -1,17 +1,14 @@
 package com.vci.web.controller;
 
-import com.vci.constant.FrameWorkLangCodeConstant;
 import com.vci.corba.common.PLException;
 import com.vci.corba.omd.ltm.LinkType;
 import com.vci.pagemodel.OsBtmTypeAttributeVO;
 import com.vci.pagemodel.OsLinkTypeAttributeVO;
 import com.vci.pagemodel.OsLinkTypeVO;
-import com.vci.starter.web.annotation.controller.VciUnCheckRight;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.BaseQueryObject;
 import com.vci.starter.web.pagemodel.BaseResult;
 import com.vci.starter.web.pagemodel.DataGrid;
-import com.vci.starter.web.util.LocalFileUtil;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.web.service.OsLinkTypeServiceI;
 import org.apache.commons.lang3.StringUtils;
@@ -23,13 +20,10 @@
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
-import java.io.File;
 import java.io.IOException;
 import java.text.ParseException;
 import java.util.Arrays;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsLoginController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsLoginController.java
new file mode 100644
index 0000000..097a66e
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsLoginController.java
@@ -0,0 +1,186 @@
+package com.vci.web.controller;
+
+import com.vci.bo.LoginResultBO;
+import com.vci.dto.LoginUserDTO;
+import com.vci.starter.web.annotation.controller.VciUnCheckRight;
+import com.vci.starter.web.annotation.log.VciBusinessLog;
+import com.vci.starter.web.constant.TokenKeyConstant;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.RequestClientInfo;
+import com.vci.starter.web.pagemodel.SessionInfo;
+import com.vci.starter.web.util.MessageUtils;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.util.WebThreadLocalUtil;
+import com.vci.web.service.OsLoginServiceI;
+import eu.bitwalker.useragentutils.*;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Locale;
+import java.util.Map;
+
+/**
+ * 鐧诲綍鎺у埗鍣�
+ * @author weidy
+ * @date 2021-1-28
+ */
+@Controller
+@RequestMapping("/framework/loginController")
+@VciBusinessLog(modelName="鐧诲綍鏈嶅姟")
+public class OsLoginController {
+
+	/**
+	 * 鐧诲綍鏈嶅姟
+	 */
+	@Autowired
+	private OsLoginServiceI loginService;
+
+	/**
+	 * 鏃ュ織
+	 */
+	private Logger logger = LoggerFactory.getLogger(getClass());
+
+	/**
+	 * 鐧诲綍锛岃繖涓湴鏂逛富瑕佹槸涓轰簡鐧诲綍鍚庡崟鐙殑涓氬姟
+	 * @param userDTO 鐢ㄦ埛鐨勫璞�
+	 * @param request 璇锋眰瀵硅薄
+	 * @param clientInfo 瀹㈡埛绔殑淇℃伅
+	 * @return 鎵ц缁撴灉
+	 */
+	@VciBusinessLog(operateName="鐧诲綍")
+	@PostMapping(value = "/login")
+	@ResponseBody
+	@VciUnCheckRight()
+	public BaseResult login(LoginUserDTO userDTO, HttpServletRequest request, RequestClientInfo clientInfo){
+		VciBaseUtil.alertNotNull(userDTO,"鐢ㄦ埛瀵硅薄",clientInfo,"璇锋眰瀹㈡埛绔俊鎭�");
+		try {
+			wrapperBrowserInfo(clientInfo,request);
+			LoginResultBO loginResultBO = loginService.login(userDTO,clientInfo);
+			if(loginResultBO.isSuccess()){
+				return BaseResult.success(loginResultBO);
+			}else{
+				BaseResult result = BaseResult.fail(loginResultBO.getFailMsg());
+				result.setCode(200);//鐘舵�佺爜涓嶆槸200鍓嶇鏃犳硶鑾峰彇鍒皁bj涓殑淇℃伅
+				if(StringUtils.isBlank(loginResultBO.getFailMsg())){
+					result.setMsg(MessageUtils.get(loginResultBO.getFailCode(),loginResultBO.getFailMsgArray()));
+				}
+				result.setObj(loginResultBO);
+				return result;
+			}
+		}catch (Exception e){
+			e.printStackTrace();
+			String msg = "璋冪敤鐧诲綍鏂规硶鏃跺嚭鐜伴敊璇紝鍘熷洜锛�"+VciBaseUtil.getExceptionMessage(e);
+			logger.error(msg);
+			return BaseResult.fail(msg);
+		}
+	}
+
+	/**
+	 * 鑾峰彇瀹㈡埛绔姹備俊鎭�,涓轰簡闅旂粷鍦╯erver灞備娇鐢╮equest
+	 * @param request 璇锋眰瀵硅薄
+	 * @param clientInfo 瀹㈡埛绔俊鎭�
+	 */
+	private void wrapperBrowserInfo(RequestClientInfo clientInfo,HttpServletRequest request) {
+		UserAgent userAgent = UserAgent.parseUserAgentString(request.getHeader("User-Agent"));
+		if(StringUtils.isBlank(clientInfo.getIpaddress())){
+			//鎵綢P鍦板潃
+			clientInfo.setIpaddress(getIpAddressFromRequest(request));
+		}
+		if(userAgent !=null) {
+			Browser browser = userAgent.getBrowser();
+			OperatingSystem os = userAgent.getOperatingSystem();
+
+			clientInfo.setOsversion(os != null ? os.getName() : "");
+			clientInfo.setBrowser(browser != null ? browser.getName() : "IE");
+			String version = "";
+			if (browser != null) {
+				Version version1 = browser.getVersion(request.getHeader("User-Agent"));
+				if (version1 != null) {
+					version = version1.getVersion();
+				}
+			}
+			clientInfo.setBrowserversion(version);
+			if (os != null) {
+				clientInfo.setRequestType(os.getDeviceType().getName());
+				if (DeviceType.COMPUTER.getName().equals(clientInfo.getRequestType())) {
+					clientInfo.setRequestType("browser");
+				}
+			}
+
+			Locale loc = Locale.getDefault();
+			clientInfo.setCountry(loc.getCountry());
+			clientInfo.setLanguage(loc.toLanguageTag());
+
+			Map<String,String> map = System.getenv();
+			clientInfo.setMachine(map.get("COMPUTERNAME"));
+			clientInfo.setOsUser(map.get("USERNAME"));
+		}
+	}
+
+	/**
+	 * 浠庤姹備腑鑾峰彇ip鍦板潃锛屼负浜嗛殧缁濆湪server灞備娇鐢╮equest
+	 * @param request 璇锋眰瀵硅薄
+	 * @return ip鍦板潃锛屾病鏈夋壘鍒伴粯璁や负127.0.0.1
+	 */
+	private String getIpAddressFromRequest(HttpServletRequest request){
+		String ip = request.getHeader("X-Forwarded-For");
+		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+			ip = request.getHeader("Proxy-Client-IP");
+		}
+		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+			ip = request.getHeader("WL-Proxy-Client-IP");
+		}
+		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+			ip = request.getHeader("HTTP_CLIENT_IP");
+		}
+		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+			ip = request.getHeader("HTTP_X_FORWARDED_FOR");
+		}
+		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+			ip = request.getRemoteAddr();
+		}
+		if (ip == null || ip.length() == 0 || ip.indexOf("0:0:0:0:0:0:0:1") >-1) {
+			//0:0:0:0:0:0:0:1鏄湰鏈哄湪璁块棶
+			ip = "127.0.0.1";
+		}
+		return ip;
+	}
+
+	/**
+	 * 鑾峰彇鐢ㄦ埛鐨勪細璇濅俊鎭�
+	 * @return success涓簍rue琛ㄧず鑾峰彇鎴愬姛锛屽惁鍒檓sg鏄敊璇俊鎭紝obj灞炴�ф槸鑾峰彇鐨勪細璇濆璞′俊鎭�
+	 */
+	@VciUnCheckRight
+	@PostMapping("/getSessionInfo")
+	@ResponseBody
+	public BaseResult getSessionInfo(){
+		BaseResult<SessionInfo> json = new BaseResult<>();
+		SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread();
+		if(sessionInfo != null){
+			json = json.success(sessionInfo);
+		}
+		return json;
+	}
+
+	/**
+	 * 鎵ц閫�鍑�
+	 * @param request 璇锋眰瀵硅薄
+	 * @return success涓簍rue琛ㄧず閫�鍑烘垚鍔燂紝鍓嶇涓嶉渶瑕佸垽鏂粨鏋�
+	 */
+	@VciUnCheckRight
+	@PostMapping("/logout")
+	@ResponseBody
+	public BaseResult logout(HttpServletRequest request){
+		String userToken = request.getHeader(TokenKeyConstant.USER_TOKEN_KEY);
+		loginService.logout(userToken);
+		return BaseResult.success();
+	}
+
+}
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsPvolumesController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsPvolumesController.java
index 5e088d1..362ddc4 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsPvolumesController.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsPvolumesController.java
@@ -1,26 +1,21 @@
 package com.vci.web.controller;
 
 import com.vci.corba.common.PLException;
-import com.vci.corba.framework.data.PvolumeInfo;
 import com.vci.dto.*;
 import com.vci.starter.web.annotation.log.VciBusinessLog;
-import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.BaseResult;
 import com.vci.starter.web.util.ControllerUtil;
 import com.vci.starter.web.util.VciBaseUtil;
-import com.vci.web.service.OsActionServiceI;
 import com.vci.web.service.OsPvolumesServiceI;
-import com.vci.web.util.Func;
+import com.vci.starter.web.util.Lcm.Func;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.Date;
-import java.util.List;
 
 /**
  * 鏂囦欢鏌滅鐞嗙殑鎺у埗鍣�
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsQueryTemplateController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsQueryTemplateController.java
index e6d97ae..47e59f1 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsQueryTemplateController.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsQueryTemplateController.java
@@ -10,7 +10,7 @@
 import com.vci.starter.web.util.LocalFileUtil;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.web.service.OsQuereyTemplateServiceI;
-import com.vci.web.util.Func;
+import com.vci.starter.web.util.Lcm.Func;
 import org.apache.commons.lang3.StringUtils;
 import org.dom4j.DocumentException;
 import org.slf4j.Logger;
@@ -24,7 +24,6 @@
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.Date;
-import java.util.List;
 import java.util.Map;
 
 /**
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsRevisionRuleController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsRevisionRuleController.java
index 2f5aed5..7b34799 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsRevisionRuleController.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsRevisionRuleController.java
@@ -2,8 +2,6 @@
 
 import com.vci.constant.FrameWorkLangCodeConstant;
 import com.vci.dto.OsRevisionRuleDTO;
-import com.vci.pagemodel.OsRevisionRuleVO;
-import com.vci.starter.web.annotation.controller.VciUnCheckRight;
 import com.vci.starter.web.annotation.log.VciBusinessLog;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.BaseResult;
@@ -11,7 +9,7 @@
 import com.vci.starter.web.util.LocalFileUtil;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.web.service.OsRevisionRuleServiceI;
-import com.vci.web.util.Func;
+import com.vci.starter.web.util.Lcm.Func;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/SmFunctionController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/SmFunctionController.java
index d386a91..c7d0a5a 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/SmFunctionController.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/SmFunctionController.java
@@ -1,15 +1,13 @@
 package com.vci.web.controller;
 
 import com.vci.corba.common.PLException;
-import com.vci.frameworkcore.compatibility.ISmFunctionQueryService;
-import com.vci.frameworkcore.enumpck.ResourceControlTypeEnum;
+import com.vci.web.service.ISmFunctionQueryService;
+import com.vci.web.enumpck.ResourceControlTypeEnum;
 import com.vci.pagemodel.MenuVO;
 import com.vci.pagemodel.SmFunctionVO;
 import com.vci.starter.web.annotation.controller.VciUnCheckRight;
-import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.*;
 import com.vci.pagemodel.UIContentVO;
-import com.vci.starter.web.util.VciBaseUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/SmPwdStrategyQueryController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/SmPwdStrategyQueryController.java
similarity index 96%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/SmPwdStrategyQueryController.java
rename to Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/SmPwdStrategyQueryController.java
index df34042..ff2d4de 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/SmPwdStrategyQueryController.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/SmPwdStrategyQueryController.java
@@ -1,9 +1,8 @@
-package com.vci.frameworkcore.controller;
+package com.vci.web.controller;
 
 import com.vci.dto.SmPasswordStrategyDTO;
-import com.vci.frameworkcore.compatibility.SmPwdStrategyQueryServiceI;
+import com.vci.web.service.SmPwdStrategyQueryServiceI;
 import com.vci.pagemodel.SmPasswordStrategyVO;
-import com.vci.starter.web.annotation.controller.VciUnCheckRight;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.BaseQueryObject;
 import com.vci.starter.web.pagemodel.BaseResult;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/UIManagerController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/UIManagerController.java
index 052bdbb..055a527 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/UIManagerController.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/UIManagerController.java
@@ -20,7 +20,7 @@
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.web.service.OsBtmServiceI;
 import com.vci.web.service.UIManagerServiceI;
-import com.vci.web.util.Func;
+import com.vci.starter.web.util.Lcm.Func;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -33,7 +33,6 @@
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.Date;
-import java.util.List;
 import java.util.Map;
 
 /**
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/VciOsStatusController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/VciOsStatusController.java
index 31076f5..2a54d4b 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/VciOsStatusController.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/VciOsStatusController.java
@@ -1,7 +1,6 @@
 package com.vci.web.controller;
 
 import com.vci.constant.FrameWorkLangCodeConstant;
-import com.vci.dto.OsAttributeDTO;
 import com.vci.starter.web.annotation.controller.VciUnCheckRight;
 import com.vci.starter.web.annotation.log.VciBusinessLog;
 import com.vci.starter.web.exception.VciBaseException;
@@ -15,7 +14,7 @@
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.web.service.OsLifeCycleServiceI;
 import com.vci.web.service.OsStatusServiceI;
-import com.vci.web.util.Func;
+import com.vci.starter.web.util.Lcm.Func;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebBtmTypeController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebBtmTypeController.java
index ea31dba..6ae0bdc 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebBtmTypeController.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebBtmTypeController.java
@@ -1,11 +1,11 @@
 package com.vci.web.controller;
 
 import com.vci.corba.common.PLException;
-import com.vci.corba.omd.btm.BizType;
-import com.vci.corba.omd.ltm.LinkType;
 import com.vci.dto.OsBtmTypeDTO;
 import com.vci.model.IndexObject;
-import com.vci.starter.web.annotation.controller.VciUnCheckRight;
+import com.vci.pagemodel.OsBtmTypeAttributeVO;
+import com.vci.pagemodel.OsBtmTypeVO;
+import com.vci.pagemodel.OsERVO;
 import com.vci.starter.web.annotation.log.VciBusinessLog;
 import com.vci.starter.web.enumpck.BooleanEnum;
 import com.vci.starter.web.exception.VciBaseException;
@@ -13,18 +13,14 @@
 import com.vci.starter.web.pagemodel.BaseResult;
 import com.vci.starter.web.pagemodel.DataGrid;
 import com.vci.starter.web.pagemodel.Tree;
-import com.vci.starter.web.util.BeanUtil;
+import com.vci.starter.web.util.BeanUtilForVCI;
 import com.vci.starter.web.util.ControllerUtil;
 import com.vci.starter.web.util.LangBaseUtil;
 import com.vci.starter.web.util.VciBaseUtil;
-import com.vci.pagemodel.OsBtmTypeAttributeVO;
-import com.vci.pagemodel.OsBtmTypeVO;
-import com.vci.pagemodel.OsERVO;
 import com.vci.web.service.OsAttributeServiceI;
 import com.vci.web.service.OsBtmServiceI;
 import com.vci.web.service.OsLinkTypeServiceI;
 import com.vci.web.service.WebBtmIOServiceI;
-import feign.Param;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -41,7 +37,6 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
-import java.util.Map;
 import java.util.stream.Collectors;
 
 import static com.vci.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
@@ -480,7 +475,7 @@
             List<OsBtmTypeAttributeVO> finalBoAttrs = boAttrs;
             attributeService.getDefaultAttributeVOs().stream().forEach(attr->{
                 OsBtmTypeAttributeVO attributeVO = new OsBtmTypeAttributeVO();
-                BeanUtil.convert(attr,attributeVO);
+                BeanUtilForVCI.convert(attr,attributeVO);
                 attributeVO.setAttributeLength(attr.getAttrLength());
                 attributeVO.setAttributeDataType(attr.getAttributeDataType());
                 attributeVO.setReferBtmTypeId(attr.getBtmTypeId());
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebDataRightController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebDataRightController.java
index 0e2fc7a..660d459 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebDataRightController.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebDataRightController.java
@@ -102,15 +102,13 @@
         if(StringUtils.isBlank(boData.getNameOid())){
             throw new PLException("娌℃湁鑾峰彇鍒版暟鎹殑椤逛富閿�",new String[0]);
         }
-        if(StringUtils.isBlank(boData.getBtmname())){
+        if(StringUtils.isBlank(boData.getBtmName())){
             throw new PLException("娌℃湁鑾峰彇鍒版暟鎹殑涓氬姟绫诲瀷",new String[0]);
         }
         cbo.oid = boData.getOid();
         cbo.revisionid = boData.getRevisionOid();
         cbo.nameoid = boData.getNameOid();
-        cbo.btName = boData.getBtmname();
-//        selectedObject.setMasterObject(cbo);
-//        return selectedObject;
+        cbo.btName = boData.getBtmName();
         return null;
     }
 
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebEnumController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebEnumController.java
index 971c715..5337f9c 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebEnumController.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebEnumController.java
@@ -2,7 +2,6 @@
 
 import com.vci.constant.FrameWorkLangCodeConstant;
 import com.vci.dto.OsEnumDTO;
-import com.vci.starter.web.annotation.controller.VciUnCheckRight;
 import com.vci.starter.web.annotation.log.VciBusinessLog;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.BaseQueryObject;
@@ -12,11 +11,10 @@
 import com.vci.pagemodel.OsEnumItemVO;
 import com.vci.pagemodel.OsEnumVO;
 import com.vci.starter.web.util.ControllerUtil;
-import com.vci.starter.web.util.LangBaseUtil;
 import com.vci.starter.web.util.LocalFileUtil;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.web.service.OsEnumServiceI;
-import com.vci.web.util.Func;
+import com.vci.starter.web.util.Lcm.Func;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -29,7 +27,6 @@
 import java.io.IOException;
 import java.util.Date;
 import java.util.List;
-import java.util.Map;
 
 
 /**
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebOnlineUserController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebOnlineUserController.java
deleted file mode 100644
index 66a88e0..0000000
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebOnlineUserController.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.vci.web.controller;
-
-import com.vci.starter.web.pagemodel.BaseQueryObject;
-import com.vci.starter.web.pagemodel.DataGrid;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import javax.annotation.Resource;
-
-/**
- * 鍦ㄧ嚎鐢ㄦ埛鎺у埗
- * @author weidy
- */
-@Controller
-@RequestMapping("/webOnlineUserController")
-public class WebOnlineUserController{
-
-    /**
-     *  鍦ㄧ嚎鐢ㄦ埛鍒楄〃
-     * @return Json
-     */
-    @RequestMapping("/dataGrid")
-    @ResponseBody
-    public DataGrid dataGrid(BaseQueryObject baseQueryObject){
-        return new DataGrid();
-        //return userDao.dataGridOnline(baseQueryObject.getConditionMap(), baseQueryObject.getPageHelper());
-    }
-}
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebPortalVIController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebPortalVIController.java
index aa8f0f9..cd18e44 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebPortalVIController.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebPortalVIController.java
@@ -17,7 +17,7 @@
 import com.vci.starter.web.util.LocalFileUtil;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.web.enumpck.ItemDblEnum;
-import com.vci.web.enumpck.ItemTypeEnum;
+import com.vci.enumpck.UI.ItemTypeEnum;
 import com.vci.web.service.OsPortalVIServiceI;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebUIController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebUIController.java
index 93a5a43..73df4c7 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebUIController.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebUIController.java
@@ -1,14 +1,12 @@
 package com.vci.web.controller;
 
 import com.vci.corba.common.PLException;
-import com.vci.starter.web.annotation.controller.VciUnCheckRight;
-import com.vci.starter.web.annotation.log.VciBusinessLog;
-import com.vci.starter.web.pagemodel.BaseResult;
 import com.vci.pagemodel.UIContentVO;
 import com.vci.pagemodel.UIFormDefineVO;
 import com.vci.pagemodel.UITableDefineVO;
+import com.vci.starter.web.annotation.controller.VciUnCheckRight;
+import com.vci.starter.web.annotation.log.VciBusinessLog;
 import com.vci.web.service.UIEngineServiceI;
-import com.vci.web.service.impl.WebInitServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -29,12 +27,6 @@
 	 */
 	@Autowired
 	private UIEngineServiceI uiService;
-
-	/**
-	 * 鍒濆鍖�
-	 */
-	@Autowired
-	private WebInitServiceImpl initService;
 
 	/**
 	 * 鑾峰彇UI涓婁笅鏂囩殑瀹氫箟
@@ -69,18 +61,6 @@
 	@GetMapping("/getTableDefineById")
 	public UITableDefineVO getTableDefineById(String btmType,String id) throws PLException {
 		return uiService.getTableById(btmType,id);
-	}
-
-	/**
-	 * 娓呴櫎缂撳瓨
-	 * @return 鎵ц缁撴灉
-	 */
-	@GetMapping("/clearCache")
-	public BaseResult clearCache(){
-		//鏈嶅姟绔偅涓紝涓�瑷�闅惧敖
-		initService.clearAllCache();
-		initService.initServerCache();
-		return BaseResult.success();
 	}
 	
 
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebUIDataController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebUIDataController.java
index fcd2b12..d267657 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebUIDataController.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebUIDataController.java
@@ -12,9 +12,9 @@
 import com.vci.pagemodel.ReferConfigVO;
 import com.vci.pagemodel.UIFormDataVO;
 import com.vci.starter.web.util.VciBaseUtil;
-import com.vci.web.query.UIDataGridQuery;
-import com.vci.web.query.UIFormQuery;
-import com.vci.web.query.UITreeQuery;
+import com.vci.query.UIDataGridQuery;
+import com.vci.query.UIFormQuery;
+import com.vci.query.UITreeQuery;
 import com.vci.web.service.UIDataServiceI;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/ActionEnum.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/ActionEnum.java
index 538646b..c05eead 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/ActionEnum.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/ActionEnum.java
@@ -1,6 +1,8 @@
 package com.vci.web.enumpck;
+
 import com.vci.pagemodel.KeyValue;
 import com.vci.starter.web.enumpck.BaseEnum;
+
 import java.util.ArrayList;
 import java.util.List;
 /**
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/enumpck/CombinationEnum.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/CombinationEnum.java
similarity index 93%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/enumpck/CombinationEnum.java
rename to Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/CombinationEnum.java
index 1d5793b..e5d3114 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/enumpck/CombinationEnum.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/CombinationEnum.java
@@ -1,11 +1,8 @@
-package com.vci.frameworkcore.enumpck;
-
-//import com.vci.frameworkcore.constant.FrameWorkEnumConstant;
-//import com.vci.starter.web.annotation.VciEnum;
+package com.vci.web.enumpck;
 
 import com.vci.starter.web.annotation.VciEnum;
 import com.vci.starter.web.enumpck.BaseEnum;
-import com.vci.web.util.Func;
+import com.vci.starter.web.util.Lcm.Func;
 
 import java.util.List;
 import java.util.Objects;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/ControlType.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/ControlType.java
index e011ffd..6a2194c 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/ControlType.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/ControlType.java
@@ -1,5 +1,8 @@
 package com.vci.web.enumpck;
 
+/**
+ * 杈撳叆妗嗘灇涓�
+ */
 public enum ControlType {
 	Text,
 	TextBtn,
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/ItemDblEnum.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/ItemDblEnum.java
index 456ec30..3ae31a3 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/ItemDblEnum.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/ItemDblEnum.java
@@ -6,6 +6,9 @@
 import java.util.ArrayList;
 import java.util.List;
 
+/**
+ * 绐楀彛鏋氫妇
+ */
 public enum ItemDblEnum implements BaseEnum {
     EDIT_PANEL("0","淇敼椤甸潰"),
     CUSTOM_PANEL("1","鑷畾涔夐〉闈�"),
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/enumpck/ResourceControlTypeEnum.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/ResourceControlTypeEnum.java
similarity index 92%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/enumpck/ResourceControlTypeEnum.java
rename to Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/ResourceControlTypeEnum.java
index 34309f8..43301f0 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/enumpck/ResourceControlTypeEnum.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/ResourceControlTypeEnum.java
@@ -1,7 +1,4 @@
-package com.vci.frameworkcore.enumpck;
-
-//import com.vci.frameworkcore.constant.FrameWorkEnumConstant;
-//import com.vci.starter.web.annotation.VciEnum;
+package com.vci.web.enumpck;
 
 import com.vci.starter.web.annotation.VciEnum;
 import com.vci.starter.web.enumpck.BaseEnum;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/initTask/OsInitTaskComponet.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/initTask/OsInitTaskComponet.java
new file mode 100644
index 0000000..45dac35
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/initTask/OsInitTaskComponet.java
@@ -0,0 +1,67 @@
+package com.vci.web.initTask;
+
+import com.alibaba.fastjson.JSONObject;
+import com.vci.pagemodel.OsAttributeVO;
+import com.vci.starter.web.util.LocalFileUtil;
+import com.vci.web.service.OsAttributeServiceI;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+import java.util.Locale;
+import java.util.stream.Collectors;
+
+/**
+ * @Description 骞冲彴鍒濆璇濅换鍔�
+ * @Author dangsn
+ * @Date 2024/11/28 15:38
+ */
+@Component
+public class OsInitTaskComponet implements ApplicationRunner {
+
+    /**
+     * 鏃ュ織瀵硅薄
+     */
+    private Logger logger = LoggerFactory.getLogger(getClass());
+
+    /**
+     * 灞炴�х殑鏈嶅姟
+     */
+    @Autowired
+    private OsAttributeServiceI attributeService;
+
+    @Override
+    public void run(ApplicationArguments args) throws Exception {
+        //鍒濆鍖栭粯璁ょ殑灞炴��
+        initDefaultAttribute();
+
+
+    }
+
+    /**
+     * 鍒濆鍖栭粯璁ょ殑灞炴��
+     */
+    private void initDefaultAttribute() {
+        try {
+            String attrJson = LocalFileUtil.readContentForFileInJar("DefaultAttribute.json");
+            if (StringUtils.isBlank(attrJson)) {
+                logger.info("娌℃湁璇诲彇鍒癱lasspath*:DefaultAttribute.json鏂囦欢鐨勫唴瀹�");
+                return;
+            }
+            List<OsAttributeVO> attributeVOS = JSONObject.parseArray(attrJson, OsAttributeVO.class);
+            if(!CollectionUtils.isEmpty(attributeVOS)){
+                attributeService.setDefaultAttributeVOs(attributeVOS.stream().sorted(((o1, o2) -> o1.getId().compareTo(o2.getId()))).collect(Collectors.toList()));
+                attributeService.setDefaultAttributeVOMap(attributeVOS.stream().collect(Collectors.toMap(s->s.getId().toLowerCase(Locale.ROOT), t->t)));
+            }
+            logger.info("璇诲彇榛樿灞炴�у畬鎴�");
+        }catch (Throwable e){
+            logger.error("璇诲彇classpath*:DefaultAttribute.json鐨勫唴瀹瑰苟杞崲鐨勬椂鍊欏嚭閿欎簡",e);
+        }
+    }
+}
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/lifeCycle/ReleaseDataLCStatus.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/lifeCycle/ReleaseDataLCStatus.java
deleted file mode 100644
index c55db6c..0000000
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/lifeCycle/ReleaseDataLCStatus.java
+++ /dev/null
@@ -1,115 +0,0 @@
-package com.vci.web.lifeCycle;
-
-import com.vci.starter.web.annotation.VciLifeCycle;
-import com.vci.starter.web.annotation.VciLifeCycleTrans;
-import com.vci.starter.web.enumpck.BaseEnum;
-
-/**
- * 鍙戝竷鐢熷懡鍛ㄦ湡
- * @author weidy
- * @date 2020/1/2
- */
-@VciLifeCycle(name= "releaseLC",text = "鍙戝竷閫氱敤鐢熷懡鍛ㄦ湡",startStatus = "Editing",
-        translations = {
-                @VciLifeCycleTrans(source = "Editing", target = "Auditing",name="鎻愪氦瀹℃壒"),
-                @VciLifeCycleTrans(source = "Auditing", target ="Released",name="瀹℃壒閫氳繃"),
-                @VciLifeCycleTrans(source = "Auditing", target ="Editing",name="瀹℃壒涓嶉�氳繃"),
-                @VciLifeCycleTrans(source ="Editing", target = "Released",name="鐩存帴鐢熸晥")
-        })
-public enum ReleaseDataLCStatus implements BaseEnum {
-    /**
-     * 缂栬緫涓�
-     */
-    EDITING("Editing","缂栬緫涓�"),
-
-    /**
-     * 瀹℃壒涓�
-     */
-    AUDITING("Auditing","瀹℃壒涓�"),
-
-    /**
-     * 宸插彂甯�
-     */
-    RELEASED("Released","宸插彂甯�");
-
-    /**
-     * 鏋氫妇鍊�
-     */
-    private String value;
-
-    /**
-     * 鏋氫妇鏄剧ず鍊�
-     */
-    private String text;
-    /**
-     * 鑾峰彇鏋氫妇鍊�
-     * @return 鏋氫妇鍊�
-     */
-    @Override
-    public String getValue() {
-        return value;
-    }
-
-    /**
-     * 璁剧疆鏋氫妇鍊�
-     * @param value 鏋氫妇鍊�
-     */
-    public void setValue(String value) {
-        this.value = value;
-    }
-
-    /**
-     * 鑾峰彇鏄剧ず鏂囨湰
-     * @return 鏄剧ず鏂囨湰
-     */
-    @Override
-    public String getText() {
-        return text;
-    }
-
-    /**
-     * 璁剧疆鏄剧ず鏂囨湰
-     * @param text 鏄剧ず鏂囨湰
-     */
-    public void setText(String text) {
-        this.text = text;
-    }
-
-    /**
-     * 鏋氫妇鍐呴儴鏋勯�犳柟娉�
-     * @param value 鏋氫妇鍊�
-     * @param text 鏄剧ず鏂囨湰
-     */
-    private ReleaseDataLCStatus(String value, String text){
-        this.value = value;
-        this.text = text;
-    }
-
-    /**
-     * 鏍规嵁鏋氫妇鐨勫�艰幏鍙栨樉绀烘枃鏈�
-     * @param value 鏋氫妇鍊�
-     * @return 鏄剧ず鏂囨湰
-     */
-    public static String getTextByValue(String value){
-        for(ReleaseDataLCStatus eu:ReleaseDataLCStatus.values()){
-            if(eu.value.equalsIgnoreCase(value)){
-                return eu.text;
-            }
-        }
-        return "";
-    }
-
-    /**
-     * 鏍规嵁鏋氫妇鏄剧ず鏂囨湰鑾峰彇鏋氫妇鍊�
-     * @param text 鏄剧ず鏂囨湰
-     * @return 鏋氫妇鍊�
-     */
-    public static String getValueByText(String text){
-        for(ReleaseDataLCStatus eu:ReleaseDataLCStatus.values()){
-            if(eu.text.equalsIgnoreCase(text)){
-                return eu.value;
-            }
-        }
-        return "";
-    }
-}
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/AllActionThreadLocal.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/AllActionThreadLocal.java
index bd07d53..ae5a418 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/AllActionThreadLocal.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/AllActionThreadLocal.java
@@ -1,6 +1,7 @@
 package com.vci.web.other;
 
 import com.vci.pagemodel.UIActionVO;
+
 import java.util.Map;
 
 public class AllActionThreadLocal {
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/BdSelectInputCharAspect.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/BdSelectInputCharAspect.java
index c991c3f..5bc0b41 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/BdSelectInputCharAspect.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/BdSelectInputCharAspect.java
@@ -1,8 +1,8 @@
 package com.vci.web.other;
 
-import com.vci.web.annotation.BdSelectInput;
-import com.vci.web.dao.BdSelectInputCharDaoI;
 import com.vci.model.BdSelectInputCharDO;
+import com.vci.starter.web.annotation.BdSelectInput;
+import com.vci.web.dao.BdSelectInputCharDaoI;
 import com.vci.web.util.WebUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.aspectj.lang.JoinPoint;
@@ -15,7 +15,6 @@
 import org.springframework.core.DefaultParameterNameDiscoverer;
 import org.springframework.core.ParameterNameDiscoverer;
 import org.springframework.stereotype.Component;
-
 
 import javax.annotation.Resource;
 import java.lang.reflect.Method;
@@ -48,7 +47,7 @@
     /**
      * 鎵�鏈夌殑BdSelectInput娉ㄨВ鐨�
      */
-    @Pointcut("execution(public * com.vci..*.*(..)) && @target(com.vci.web.annotation.BdSelectInput) ")
+    @Pointcut("execution(public * com.vci..*.*(..)) && @target(com.vci.starter.web.annotation.BdSelectInput) ")
     public void selectInputChar(){
 
     }
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/BtmQTExportData.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/BtmQTExportData.java
index 4c293f3..39b20c7 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/BtmQTExportData.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/BtmQTExportData.java
@@ -1,7 +1,6 @@
 package com.vci.web.other;
 
 import com.vci.corba.omd.btm.BizType;
-import com.vci.corba.omd.ltm.LinkType;
 import com.vci.corba.omd.qtm.QTD;
 import com.vci.corba.omd.qtm.QTInfo;
 
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/ExportBeans.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/ExportBeans.java
index 109e2cc..9403abb 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/ExportBeans.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/ExportBeans.java
@@ -1,12 +1,13 @@
 package com.vci.web.other;
 
+import com.vci.corba.portal.data.PLAction;
+import com.vci.corba.portal.data.PLActionCls;
+import com.vci.corba.portal.data.PLActionParam;
+
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Map.Entry;
-import com.vci.corba.portal.data.PLAction;
-import com.vci.corba.portal.data.PLActionCls;
-import com.vci.corba.portal.data.PLActionParam;
 
 
 public class ExportBeans implements Serializable{
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/FlowNoticeExample.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/FlowNoticeExample.java
index dcf69fe..67ace64 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/FlowNoticeExample.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/FlowNoticeExample.java
@@ -1,9 +1,9 @@
 package com.vci.web.other;
 
-import com.vci.web.annotation.FlowNotifyAfter;
-import com.vci.web.annotation.FlowNotifyBefore;
-import com.vci.web.annotation.FlowNotifyWeb;
 import com.vci.bo.FlowNoticeInfo;
+import com.vci.starter.web.annotation.FlowNotifyAfter;
+import com.vci.starter.web.annotation.FlowNotifyBefore;
+import com.vci.starter.web.annotation.FlowNotifyWeb;
 
 /**
  * 娴佺▼閫氱煡鐨勭ず渚�
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/LinkQTExportData.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/LinkQTExportData.java
index d2fe2f7..331450d 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/LinkQTExportData.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/LinkQTExportData.java
@@ -1,15 +1,12 @@
 package com.vci.web.other;
 
-import java.io.Serializable;
-import java.util.HashMap;
-import java.util.Map;
-
 import com.vci.corba.omd.ltm.LinkType;
 import com.vci.corba.omd.qtm.QTD;
 import com.vci.corba.omd.qtm.QTInfo;
-import com.vci.corba.common.PLException;
-import com.vci.web.util.PlatformClientUtil;
-import org.springframework.beans.factory.annotation.Autowired;
+
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
  * 鏌ヨ妯℃澘瀵煎嚭鏁版嵁绫伙細鍙簭鍒楀寲涓烘ā鏉挎枃浠�,鍚屾椂涔熷吋瀵煎嚭鏁版嵁鎺у埗绫�
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/WorkFlowEndedNotice.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/WorkFlowEndedNotice.java
index b45b0f3..4ce0d63 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/WorkFlowEndedNotice.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/WorkFlowEndedNotice.java
@@ -1,11 +1,11 @@
 package com.vci.web.other;
 
+import com.vci.bo.FlowNoticeInfo;
 import com.vci.corba.common.PLException;
 import com.vci.corba.omd.data.BusinessObject;
 import com.vci.omd.utils.ObjectTool;
-import com.vci.web.annotation.FlowNotifyBefore;
-import com.vci.web.annotation.FlowNotifyWeb;
-import com.vci.bo.FlowNoticeInfo;
+import com.vci.starter.web.annotation.FlowNotifyBefore;
+import com.vci.starter.web.annotation.FlowNotifyWeb;
 import com.vci.web.service.WebBoServiceI;
 import com.vci.web.util.PlatformClientUtil;
 import org.apache.commons.lang3.StringUtils;
@@ -13,7 +13,9 @@
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 
-import java.util.*;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * Description: 娴佺▼缁堟鏃讹紝鎭㈠CodeAllCode鐘舵��
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/BdSelectInputCharServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/BdSelectInputCharServiceI.java
index 600b2fb..73962a4 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/BdSelectInputCharServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/BdSelectInputCharServiceI.java
@@ -1,15 +1,19 @@
 package com.vci.web.service;
 
 
-import com.vci.pagemodel.BdSelectInputCharVO;
 import com.vci.dto.BdSelectInputCharDTO;
 import com.vci.model.BdSelectInputCharDO;
+import com.vci.pagemodel.BdSelectInputCharVO;
 import com.vci.pagemodel.KeyValue;
 import com.vci.starter.web.exception.VciBaseException;
-import com.vci.starter.web.pagemodel.*;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.pagemodel.PageHelper;
+import com.vci.starter.web.pagemodel.SessionInfo;
 
-
-import java.util.*;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
 
 /**
  * 鍙緭鍙�夊唴瀹规湇鍔℃帴鍙�
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/ISmFunctionQueryService.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/ISmFunctionQueryService.java
similarity index 97%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/ISmFunctionQueryService.java
rename to Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/ISmFunctionQueryService.java
index 4242734..f4284be 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/ISmFunctionQueryService.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/ISmFunctionQueryService.java
@@ -1,11 +1,10 @@
-package com.vci.frameworkcore.compatibility;
+package com.vci.web.service;
 
 import com.vci.common.exception.VciException;
 import com.vci.corba.common.PLException;
 import com.vci.dto.RoleInfoDTO;
-import com.vci.dto.RoleRightDTO;
 import com.vci.dto.RoleRightParamDTO;
-import com.vci.frameworkcore.enumpck.ResourceControlTypeEnum;
+import com.vci.web.enumpck.ResourceControlTypeEnum;
 import com.vci.pagemodel.MenuVO;
 import com.vci.pagemodel.SmFunctionVO;
 import com.vci.starter.web.exception.VciBaseException;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsActionServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsActionServiceI.java
index 5cf2c13..ffd459f 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsActionServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsActionServiceI.java
@@ -3,11 +3,9 @@
 import com.vci.corba.common.PLException;
 import com.vci.dto.*;
 import com.vci.starter.web.pagemodel.BaseResult;
-import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
-import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.util.List;
 
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsAttributeServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsAttributeServiceI.java
index 1b7c9fc..8c3eaa2 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsAttributeServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsAttributeServiceI.java
@@ -3,9 +3,8 @@
 import com.vci.corba.common.PLException;
 import com.vci.corba.omd.atm.AttributeDef;
 import com.vci.dto.OsAttributeDTO;
-import com.vci.starter.web.pagemodel.*;
 import com.vci.pagemodel.OsAttributeVO;
-import org.springframework.web.multipart.MultipartFile;
+import com.vci.starter.web.pagemodel.*;
 
 import java.io.File;
 import java.util.Collection;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsBaseServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsBaseServiceI.java
index 445cb70..e89b4a6 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsBaseServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsBaseServiceI.java
@@ -1,6 +1,5 @@
 package com.vci.web.service;
 
-import com.vci.corba.common.PLException;
 import com.vci.corba.omd.data.BusinessObject;
 import com.vci.starter.web.pagemodel.BaseQueryObject;
 import com.vci.starter.web.pagemodel.DataGrid;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsEnumServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsEnumServiceI.java
index 3c19f39..9bb8d74 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsEnumServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsEnumServiceI.java
@@ -1,17 +1,17 @@
 package com.vci.web.service;
+
 import com.vci.corba.common.PLException;
 import com.vci.corba.omd.etm.EnumType;
 import com.vci.dto.OsEnumDTO;
+import com.vci.pagemodel.KeyValue;
+import com.vci.pagemodel.OsEnumItemVO;
+import com.vci.pagemodel.OsEnumVO;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.BaseResult;
 import com.vci.starter.web.pagemodel.DataGrid;
 import com.vci.starter.web.pagemodel.PageHelper;
-import com.vci.pagemodel.KeyValue;
-import com.vci.pagemodel.OsEnumItemVO;
-import com.vci.pagemodel.OsEnumVO;
 
 import java.io.File;
-import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsLifeCycleServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsLifeCycleServiceI.java
index 066152f..eebef67 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsLifeCycleServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsLifeCycleServiceI.java
@@ -36,7 +36,7 @@
      * @param targetStatus 鐩爣鐨勭敓鍛藉懆鏈熺姸鎬侊紝涓嶅尯鍒嗗ぇ灏�
      * @throws VciBaseException 濡傛灉鐩爣鐢熷懡鍛ㄦ湡鍜屽綋鍓嶇敓鍛藉懆鏈熺姸鎬佹病鏈夎繛鎺ョ嚎鏃舵姏鍑哄紓甯�
      */
-    void transStatus(com.vci.corba.omd.data.BusinessObject bo, String targetStatus) throws VciBaseException;
+    void transStatus(BusinessObject bo, String targetStatus) throws VciBaseException;
     
     /**
      * 鎵归噺璺冭縼鐢熷懡鍛ㄦ湡鐘舵�侊紝杩欎簺鏁版嵁涓殑褰撳墠鐘舵�佸繀椤婚兘鏄竴鏍枫�傛垨鑰呮槸褰撳墠鐘舵�侀兘鍙互杩炴帴鍒扮洰鏍囩姸鎬�
@@ -44,7 +44,7 @@
      * @param targetStatus 鐩爣鐘舵�侊紝涓嶅尯鍒嗗ぇ灏忓啓
      * @throws VciBaseException 杞崲鐢熷懡鍛ㄦ湡鍑洪敊鐨勬椂鍊欐姏鍑哄紓甯�
      */
-    void transStatus(List<com.vci.corba.omd.data.BusinessObject> boList, String targetStatus) throws VciBaseException;
+    void transStatus(List<BusinessObject> boList, String targetStatus) throws VciBaseException;
     
     /**
      * 鎵归噺璺冭縼鐢熷懡鍛ㄦ湡鐘舵�侊紝杩欎簺鏁版嵁涓殑褰撳墠鐘舵�佸繀椤婚兘鏄竴鏍凤紝鎴栬�呮槸褰撳墠鐘舵�侀兘鍙互杩炴帴鍒扮洰鏍囩姸鎬�
@@ -52,7 +52,7 @@
      * @param targetStatus  鐩爣鐘舵�侊紝涓嶅尯鍒嗗ぇ灏忓啓
      * @throws VciBaseException 杞崲鐢熷懡鍛ㄦ湡鍑洪敊鐨勬椂鍊欐姏鍑哄紓甯�
      */
-    void transStatus(com.vci.corba.omd.data.BusinessObject[] bos, String targetStatus) throws VciBaseException;
+    void transStatus(BusinessObject[] bos, String targetStatus) throws VciBaseException;
     
     /**
      * 鎵归噺璺冭縼鐢熷懡鍛ㄦ湡鐘舵�侊紝杩欎簺鏁版嵁涓殑褰撳墠鐘舵�佸繀椤婚兘鏄竴鏍凤紝鎴栬�呮槸褰撳墠鐘舵�侀兘鍙互杩炴帴鍒扮洰鏍囩姸鎬�
@@ -120,7 +120,7 @@
      * @param lineVO 璺冭縼璺敱
      * @throws VciBaseException 璺冭縼鍑洪敊鐨勬槸浼氭姏鍑哄紓甯�
      */
-    void doTransVO(com.vci.corba.omd.data.BusinessObject obj, OsLifeCycleLineVO lineVO) throws VciBaseException;
+    void doTransVO(BusinessObject obj, OsLifeCycleLineVO lineVO) throws VciBaseException;
 
     /**
      * 鎵归噺鎵ц璺冭縼鎿嶄綔锛岃姹傚繀椤绘槸鍚屼竴涓笟鍔$被鍨嬩笅鐨�
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsLinkTypeServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsLinkTypeServiceI.java
index afb6229..b134fbd 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsLinkTypeServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsLinkTypeServiceI.java
@@ -2,12 +2,12 @@
 
 import com.vci.corba.common.PLException;
 import com.vci.corba.omd.ltm.LinkType;
-import com.vci.starter.web.pagemodel.BaseQueryObject;
-import com.vci.starter.web.pagemodel.BaseResult;
-import com.vci.starter.web.pagemodel.DataGrid;
 import com.vci.pagemodel.OsBtmTypeAttributeVO;
 import com.vci.pagemodel.OsLinkTypeAttributeVO;
 import com.vci.pagemodel.OsLinkTypeVO;
+import com.vci.starter.web.pagemodel.BaseQueryObject;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/LoginServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsLoginServiceI.java
similarity index 67%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/LoginServiceI.java
rename to Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsLoginServiceI.java
index 6f6179e..182ca2d 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/LoginServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsLoginServiceI.java
@@ -1,17 +1,16 @@
 package com.vci.web.service;
 
-import com.vci.corba.common.PLException;
-import com.vci.starter.web.exception.VciBaseException;
-import com.vci.starter.web.pagemodel.RequestClientInfo;
 import com.vci.bo.LoginResultBO;
 import com.vci.dto.LoginUserDTO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.RequestClientInfo;
 
 /**
  * 鐧诲綍鍜岄��鍑烘湇鍔�
  * @author weidy
  * @date 2020/1/29
  */
-public interface LoginServiceI {
+public interface OsLoginServiceI {
 
     /**
      * 鐧诲綍
@@ -21,15 +20,6 @@
      * @throws VciBaseException 鐧诲綍澶辫触鐨勬椂鍊欐姏鍑哄紓甯�
      */
     LoginResultBO login(LoginUserDTO userDTO, RequestClientInfo clientInfo) throws Exception;
-
-    /**
-     * 鍗曠偣鐧诲綍
-     * @param userDTO 鐧诲綍淇℃伅
-     * @param clientInfo 璇锋眰鐨勫鎴风鐨勪俊鎭�
-     * @return 鐧诲綍鐨勭粨鏋滃璞�
-     * @throws VciBaseException 鐧诲綍澶辫触鐨勬椂鍊欐姏鍑哄紓甯�
-     */
-    LoginResultBO singleLogin(LoginUserDTO userDTO, RequestClientInfo clientInfo) throws Exception;
 
     /**
      * 閫�鍑虹郴缁�
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsPortalVIServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsPortalVIServiceI.java
index abde37b..e075699 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsPortalVIServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsPortalVIServiceI.java
@@ -1,4 +1,5 @@
 package com.vci.web.service;
+
 import com.vci.corba.common.PLException;
 import com.vci.corba.portal.data.PortalVI;
 import com.vci.dto.ClonePortalVIDTOList;
@@ -9,10 +10,8 @@
 import com.vci.starter.web.pagemodel.BaseQueryObject;
 import com.vci.starter.web.pagemodel.BaseResult;
 import com.vci.starter.web.pagemodel.DataGrid;
-import org.springframework.web.multipart.MultipartFile;
 
 import java.io.File;
-import java.io.IOException;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsPvolumesServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsPvolumesServiceI.java
index dcd27a9..e5c2e98 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsPvolumesServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsPvolumesServiceI.java
@@ -2,7 +2,7 @@
 
 import com.vci.corba.common.PLException;
 import com.vci.corba.framework.data.PvolumeInfo;
-import com.vci.dto.*;
+import com.vci.dto.OsPvolumeDTO;
 import com.vci.starter.web.pagemodel.BaseResult;
 
 import java.util.List;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsStatusServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsStatusServiceI.java
index f003a48..f479364 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsStatusServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsStatusServiceI.java
@@ -2,11 +2,11 @@
 
 import com.vci.corba.common.PLException;
 import com.vci.corba.omd.stm.StatePool;
+import com.vci.dto.OsStatusDTO;
+import com.vci.pagemodel.OsStatusVO;
 import com.vci.starter.web.pagemodel.BaseResult;
 import com.vci.starter.web.pagemodel.DataGrid;
 import com.vci.starter.web.pagemodel.PageHelper;
-import com.vci.dto.OsStatusDTO;
-import com.vci.pagemodel.OsStatusVO;
 
 import java.io.File;
 import java.util.Collection;
@@ -25,14 +25,14 @@
      * @param statePool 鐘舵�佹睜鐨勬暟鎹璞�
      * @return 鏄剧ず瀵硅薄
      */
-    OsStatusVO statusDO2VO(com.vci.corba.omd.stm.StatePool statePool);
+    OsStatusVO statusDO2VO(StatePool statePool);
 
     /**
      * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
      * @param statePools 鐘舵�佹睜鐨勬暟鎹璞� 闆嗗悎
      * @return 鏄剧ず瀵硅薄
      */
-    List<OsStatusVO> statusDO2VOs(Collection<com.vci.corba.omd.stm.StatePool> statePools);
+    List<OsStatusVO> statusDO2VOs(Collection<StatePool> statePools);
 
     /**
      * 鏌ヨ鎵�鏈夌殑鐘舵��
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmHMSysModConfigServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/SmHMSysModConfigServiceI.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmHMSysModConfigServiceI.java
rename to Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/SmHMSysModConfigServiceI.java
index 0ace3d0..2e33f82 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmHMSysModConfigServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/SmHMSysModConfigServiceI.java
@@ -1,4 +1,4 @@
-package com.vci.frameworkcore.compatibility;
+package com.vci.web.service;
 
 import com.vci.common.exception.VciException;
 import com.vci.corba.common.PLException;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmPwdStrategyQueryServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/SmPwdStrategyQueryServiceI.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmPwdStrategyQueryServiceI.java
rename to Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/SmPwdStrategyQueryServiceI.java
index 1abb895..ef053cd 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmPwdStrategyQueryServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/SmPwdStrategyQueryServiceI.java
@@ -1,4 +1,4 @@
-package com.vci.frameworkcore.compatibility;
+package com.vci.web.service;
 
 import com.vci.dto.SmPasswordStrategyDTO;
 import com.vci.corba.common.PLException;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIDataServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIDataServiceI.java
index 7bcfcf6..c50a67e 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIDataServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIDataServiceI.java
@@ -6,16 +6,16 @@
 import com.vci.corba.omd.data.RevisionDataInfo;
 import com.vci.corba.omd.data.VersionDataInfo;
 import com.vci.dto.*;
+import com.vci.pagemodel.OsBtmTypeVO;
+import com.vci.pagemodel.ReferConfigVO;
+import com.vci.pagemodel.UIFormDataVO;
+import com.vci.query.UIDataGridQuery;
+import com.vci.query.UIFormQuery;
+import com.vci.query.UITreeQuery;
 import com.vci.starter.web.enumpck.VciChangeDocumentTypeEnum;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.model.BaseModel;
 import com.vci.starter.web.pagemodel.*;
-import com.vci.pagemodel.OsBtmTypeVO;
-import com.vci.pagemodel.ReferConfigVO;
-import com.vci.pagemodel.UIFormDataVO;
-import com.vci.web.query.UIDataGridQuery;
-import com.vci.web.query.UIFormQuery;
-import com.vci.web.query.UITreeQuery;
 
 import java.util.Collection;
 import java.util.List;
@@ -50,7 +50,7 @@
      * @return 鏍戝舰鏁版嵁
      * @throws VciBaseException 鏌ヨ鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
      */
-    List<Tree> getDataForTree(UITreeQuery treeQuery) throws VciBaseException, PLException;
+    List<UIDataTree> getDataForTree(UITreeQuery treeQuery) throws Exception;
 
     /**
      * 鑾峰彇鏍戝舰鏁版嵁(鏍规嵁鏌ヨ妯℃澘鏌ヨ瀵硅薄)
@@ -58,7 +58,7 @@
      * @return 鏍戝舰鏁版嵁
      * @throws VciBaseException 鏌ヨ鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
      */
-    BaseResult getDataByTemp(UITreeQuery treeQuery) throws VciBaseException, PLException;
+    BaseResult getDataByTemp(UITreeQuery treeQuery) throws Exception;
 
     /**
      * 璋冪敤鍓嶇疆浜嬩欢
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIEngineServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIEngineServiceI.java
index bbc26c9..95f9f5c 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIEngineServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIEngineServiceI.java
@@ -1,10 +1,10 @@
 package com.vci.web.service;
 
 import com.vci.corba.common.PLException;
+import com.vci.corba.portal.data.PLAction;
 import com.vci.corba.portal.data.PLTabButton;
 import com.vci.corba.portal.data.PLUILayout;
 import com.vci.corba.portal.data.PortalVI;
-import com.vci.corba.portal.data.PLAction;
 import com.vci.pagemodel.*;
 
 import java.util.Collection;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java
index 2b9dda6..ea5ad21 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java
@@ -4,18 +4,20 @@
 import com.vci.corba.omd.btm.BizType;
 import com.vci.corba.omd.ltm.LinkType;
 import com.vci.corba.omd.qtm.QTInfo;
-import com.vci.corba.portal.data.PLUILayout;
 import com.vci.corba.portal.data.PLTabPage;
+import com.vci.corba.portal.data.PLUILayout;
 import com.vci.corba.portal.data.PortalVI;
-import com.vci.pagemodel.*;
+import com.vci.dto.UIAuthorDTO;
+import com.vci.pagemodel.PLDefinationVO;
+import com.vci.pagemodel.PLTabButtonVO;
+import com.vci.pagemodel.PLUILayoutCloneVO;
+import com.vci.pagemodel.UICloneVO;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.BaseQueryObject;
 import com.vci.starter.web.pagemodel.BaseResult;
 import com.vci.starter.web.pagemodel.DataGrid;
-import com.vci.dto.UIAuthorDTO;
 import com.vci.starter.web.pagemodel.Tree;
-import org.springframework.web.multipart.MultipartFile;
-import javax.servlet.http.HttpServletResponse;
+
 import java.io.File;
 import java.io.IOException;
 import java.util.List;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/WebBtmIOServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/WebBtmIOServiceI.java
index 556ce7e..093ebd9 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/WebBtmIOServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/WebBtmIOServiceI.java
@@ -1,8 +1,8 @@
 package com.vci.web.service;
 
 import com.vci.corba.omd.btm.BizType;
-import com.vci.starter.web.exception.VciBaseException;
 import com.vci.dto.OsBtmTypeExportDTO;
+import com.vci.starter.web.exception.VciBaseException;
 
 import java.util.Collection;
 
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/BdSelectInputCharServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/BdSelectInputCharServiceImpl.java
index eb9046b..1144575 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/BdSelectInputCharServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/BdSelectInputCharServiceImpl.java
@@ -1,5 +1,10 @@
 package com.vci.web.service.impl;
 
+import com.vci.dto.BdSelectInputCharDTO;
+import com.vci.model.BdSelectInputCharDO;
+import com.vci.pagemodel.BatchCBO;
+import com.vci.pagemodel.BdSelectInputCharVO;
+import com.vci.pagemodel.KeyValue;
 import com.vci.starter.revision.service.RevisionModelUtil;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.BaseResult;
@@ -9,11 +14,6 @@
 import com.vci.starter.web.util.BeanUtilForVCI;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.web.dao.BdSelectInputCharDaoI;
-import com.vci.dto.BdSelectInputCharDTO;
-import com.vci.model.BdSelectInputCharDO;
-import com.vci.pagemodel.BatchCBO;
-import com.vci.pagemodel.BdSelectInputCharVO;
-import com.vci.pagemodel.KeyValue;
 import com.vci.web.service.BdSelectInputCharServiceI;
 import com.vci.web.service.WebBoServiceI;
 import com.vci.web.util.WebUtil;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LogBasicServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LogBasicServiceImpl.java
index 3dd6390..fc2702d 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LogBasicServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LogBasicServiceImpl.java
@@ -1,4 +1,5 @@
 package com.vci.web.service.impl;
+
 import com.vci.client.common.objects.UserObject;
 import com.vci.corba.common.PLException;
 import com.vci.corba.common.data.UserEntityInfo;
@@ -9,7 +10,7 @@
 import com.vci.dto.LogInfoDTO;
 import com.vci.dto.LogPeriodInfoDTO;
 import com.vci.dto.LogQueryCriteriaDTO;
-import com.vci.frameworkcore.compatibility.SmUserQueryServiceI;
+import com.vci.web.service.SmUserQueryServiceI;
 import com.vci.starter.poi.bo.WriteExcelData;
 import com.vci.starter.poi.bo.WriteExcelOption;
 import com.vci.starter.poi.util.ExcelUtil;
@@ -18,8 +19,10 @@
 import com.vci.starter.web.util.LangBaseUtil;
 import com.vci.starter.web.util.LocalFileUtil;
 import com.vci.starter.web.util.VciBaseUtil;
-import com.vci.web.service.*;
-import com.vci.web.util.*;
+import com.vci.web.service.LogBasicServiceI;
+import com.vci.starter.web.util.Lcm.Func;
+import com.vci.web.util.PlatformClientUtil;
+import com.vci.web.util.WebUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsActionServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsActionServiceImpl.java
index 8f6454e..0a8fec3 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsActionServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsActionServiceImpl.java
@@ -1,4 +1,5 @@
 package com.vci.web.service.impl;
+
 import cn.hutool.core.io.FileUtil;
 import com.vci.constant.FrameWorkLangCodeConstant;
 import com.vci.corba.common.PLException;
@@ -19,8 +20,11 @@
 import com.vci.web.enumpck.PlTypetypeEnum;
 import com.vci.web.other.ExportActionLogBean;
 import com.vci.web.other.ExportBeans;
-import com.vci.web.service.*;
-import com.vci.web.util.*;
+import com.vci.web.service.OsActionServiceI;
+import com.vci.starter.web.util.Lcm.Func;
+import com.vci.web.util.PinyinCommon;
+import com.vci.web.util.PlatformClientUtil;
+import com.vci.web.util.WebUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsAttributeServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsAttributeServiceImpl.java
index e9ee19a..7045ac8 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsAttributeServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsAttributeServiceImpl.java
@@ -4,20 +4,17 @@
 import com.vci.client.common.datatype.VTInteger;
 import com.vci.client.common.datatype.VTLong;
 import com.vci.client.common.datatype.VTString;
-import com.vci.client.mw.ClientSessionUtility;
 import com.vci.common.utility.ObjectUtility;
 import com.vci.corba.common.PLException;
 import com.vci.corba.omd.atm.AttributeDef;
-import com.vci.corba.omd.ltm.LinkType;
-import com.vci.corba.omd.vrm.VersionRule;
 import com.vci.dto.OsAttributeDTO;
-import com.vci.dto.OsEnumDTO;
-import com.vci.dto.OsEnumItemDTO;
+import com.vci.enumpck.UI.ItemTypeEnum;
+import com.vci.model.OsAttributeDO;
 import com.vci.omd.dataType.VTDataType;
 import com.vci.omd.objects.OtherInfo;
-import com.vci.pagemodel.*;
+import com.vci.pagemodel.OsAttributeVO;
+import com.vci.pagemodel.OsEnumVO;
 import com.vci.po.OsAttributePO;
-import com.vci.po.OsEnumPO;
 import com.vci.starter.poi.bo.ReadExcelOption;
 import com.vci.starter.poi.bo.WriteExcelData;
 import com.vci.starter.poi.bo.WriteExcelOption;
@@ -28,15 +25,12 @@
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.*;
 import com.vci.starter.web.util.*;
-import com.vci.model.OsAttributeDO;
-import com.vci.web.enumpck.ItemTypeEnum;
 import com.vci.web.enumpck.PortalVITypeFlag;
 import com.vci.web.properties.UsedNames;
 import com.vci.web.service.OsAttributeServiceI;
-import com.vci.web.service.OsBaseServiceI;
 import com.vci.web.service.OsEnumServiceI;
 import com.vci.web.service.OsLinkTypeServiceI;
-import com.vci.web.util.Func;
+import com.vci.starter.web.util.Lcm.Func;
 import com.vci.web.util.PlatformClientUtil;
 import com.vci.web.util.WebUtil;
 import org.apache.commons.lang3.StringUtils;
@@ -47,17 +41,12 @@
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
-import org.springframework.web.multipart.MultipartFile;
 
-import javax.swing.*;
-import java.awt.*;
 import java.io.File;
 import java.util.*;
-import java.util.List;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
-//import static com.vci.client.omd.attribpool.ui.VTDataTypePanel.*;
 import static com.vci.omd.constants.AttributeConstants.*;
 
 /**
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsBtmServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsBtmServiceImpl.java
index ce3999a..201d4fb 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsBtmServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsBtmServiceImpl.java
@@ -6,10 +6,8 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.vci.client.common.oq.OQTool;
 import com.vci.client.common.providers.ClientServiceProvider;
-import com.vci.client.mw.ClientSessionUtility;
 import com.vci.common.qt.object.Condition;
 import com.vci.common.qt.object.QueryTemplate;
-import com.vci.common.utility.ObjectUtility;
 import com.vci.constant.FrameWorkLangCodeConstant;
 import com.vci.corba.common.PLException;
 import com.vci.corba.omd.atm.AttributeDef;
@@ -22,9 +20,7 @@
 import com.vci.corba.omd.ltm.LinkType;
 import com.vci.corba.omd.stm.StatePool;
 import com.vci.corba.omd.vrm.VersionRule;
-import com.vci.corba.portal.data.PLUILayout;
 import com.vci.dto.OsBtmTypeDTO;
-import com.vci.dto.OsBtmTypeLinkAttributesDTO;
 import com.vci.model.IndexObject;
 import com.vci.omd.constants.AttributeConstants;
 import com.vci.omd.constants.FileObjectType;
@@ -32,14 +28,12 @@
 import com.vci.omd.utils.ObjectTool;
 import com.vci.pagemodel.*;
 import com.vci.po.OsBtmTypePO;
-import com.vci.po.OsLinkTypePO;
 import com.vci.starter.poi.bo.ReadExcelOption;
 import com.vci.starter.poi.bo.WriteExcelData;
 import com.vci.starter.poi.bo.WriteExcelOption;
 import com.vci.starter.poi.constant.ExcelLangCodeConstant;
 import com.vci.starter.poi.util.ExcelUtil;
 import com.vci.starter.web.annotation.log.VciUnLog;
-import com.vci.starter.web.constant.QueryOptionConstant;
 import com.vci.starter.web.enumpck.BooleanEnum;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.BaseResult;
@@ -47,9 +41,12 @@
 import com.vci.starter.web.pagemodel.PageHelper;
 import com.vci.starter.web.pagemodel.Tree;
 import com.vci.starter.web.util.*;
-import com.vci.starter.web.util.BeanUtil;
+import com.vci.starter.web.util.Lcm.ConcurrentDateFormat;
+import com.vci.starter.web.util.Lcm.DateUtil;
+import com.vci.starter.web.util.Lcm.Func;
 import com.vci.web.service.*;
-import com.vci.web.util.*;
+import com.vci.web.util.PlatformClientUtil;
+import com.vci.web.util.WebUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -60,7 +57,6 @@
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
-import javax.swing.*;
 import java.io.File;
 import java.io.IOException;
 import java.text.ParseException;
@@ -245,6 +241,7 @@
             vo.setTableName(VciBaseUtil.getTableName(vo.getId()));
             vo.setInputRevisionFlag(btmItem.revInput);
             vo.setDelimiter(btmItem.delimiter);
+            vo.setImageName(btmItem.imageName);
             vo.setfName(btmItem.fName);
             vo.setVersionRule(String.valueOf(btmItem.verRuleName));
             if (StringUtils.isNotBlank(vo.getRevisionRuleId()) || vo.isInputRevisionFlag()) {
@@ -256,7 +253,7 @@
             List<OsBtmTypeAttributeVO> btmTypeAttributeVOS = new ArrayList<>();
             Optional.ofNullable(attributeVOS).orElseGet(() -> new ArrayList<>()).stream().forEach(attributeVO -> {
                 OsBtmTypeAttributeVO btmTypeAttributeVO = new OsBtmTypeAttributeVO();
-                BeanUtil.convert(attributeVO, btmTypeAttributeVO);
+                BeanUtilForVCI.convert(attributeVO, btmTypeAttributeVO);
                 btmTypeAttributeVO.setPkBtmType(vo.getOid());
                 btmTypeAttributeVO.setBtmTypeId(vo.getId());
                 btmTypeAttributeVO.setAttributeDataType(attributeVO.getAttributeDataType());
@@ -450,7 +447,7 @@
             List<OsBtmTypeAttributeVO> finalAttrVOs = attrVOs;
             defaultAttributeVOs.stream().forEach(attr -> {
                 OsBtmTypeAttributeVO attributeVO = new OsBtmTypeAttributeVO();
-                BeanUtil.convert(attr, attributeVO);
+                BeanUtilForVCI.convert(attr, attributeVO);
                 attributeVO.setAttributeDataType(attr.getAttributeDataType());
                 attributeVO.setAttributeLength(attr.getAttrLength());
                 attributeVO.setReferBtmTypeId(attr.getBtmTypeId());
@@ -459,7 +456,8 @@
             });
             attrVOs = finalAttrVOs;
         }
-        return attrVOs;
+        //// TODO: 2024/12/2 Ludc 杩斿洖鍊兼帓搴�
+        return attrVOs.stream().sorted(Comparator.comparing(o->o.getId(),String.CASE_INSENSITIVE_ORDER)).collect(Collectors.toList());
     }
 
     /**
@@ -715,6 +713,7 @@
                 tree.setParentName(null);
                 tree.setParentId(null);
                 tree.setLeaf(true);
+                tree.setIcon(osBtmTypeVO.getImageName());
                 tree.setId(osBtmTypeVO.getId());
                 tree.setText(osBtmTypeVO.getDescription());
                 tree.setAttributes(WebUtil.objectToMapString(osBtmTypeVO));
@@ -811,6 +810,7 @@
         bizType.label = dto.getName();
         bizType.fName = dto.getfName();
         bizType.implClass = dto.getImplClass();
+        bizType.imageName = dto.getImageName();
         bizType.shape = "";
         bizType.lifeCycle = dto.getLifeCycleId();
         List<String> lcList = Arrays.asList(dto.getSubLifeCycleId().split(","));
@@ -823,14 +823,9 @@
         bizType.revLevel = dto.getRevLevel();
         bizType.revRuleName = dto.getRevisionRuleId();
         bizType.revInput = dto.isInputRevisionFlag();
-
         bizType.delimiter = (dto.getDelimiter() == null ? "" : dto.getDelimiter());
-
         bizType.verRuleName = Func.isBlank(dto.getVersionRule()) ? 0 : Short.parseShort(dto.getVersionRule());
-
-        //bizType.imageName = dto.get;
         //List<String> attrIdList = dto.getAttributesDTOList().stream().map(OsBtmTypeLinkAttributesDTO::getId).collect(Collectors.toList());
-
         bizType.apNameArray = dto.getApNameArray().split(",");//attrIdList.toArray(new String[attrIdList.size()]);
         String userId = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId();
         long timeMillis = System.currentTimeMillis();
@@ -1406,7 +1401,7 @@
         //璁剧疆鍒楀悕
         List<String> columns = new ArrayList<>(
                 Arrays.asList("绫诲瀷鍚嶇О", "鏍囩", "缁ф壙鑷�", "瀹炵幇绫�", "鎻忚堪", "鐗堟湰瑙勫垯", "鐗堟湰鍙疯鍒�",
-                        "鏄惁鎵嬪伐杈撳叆", "鍒嗛殧绗�", "鐗堟鍙疯鍒�", "鐢熷懡鍛ㄦ湡", "澶囬�夌敓鍛藉懆鏈熷垪琛�", "灞炴�у垪琛�")
+                        "鏄惁鎵嬪伐杈撳叆", "鍒嗛殧绗�", "鐗堟鍙疯鍒�","鍥炬爣", "鐢熷懡鍛ㄦ湡", "澶囬�夌敓鍛藉懆鏈熷垪琛�", "灞炴�у垪琛�")
         );
         try {
             new File(excelPath).createNewFile();
@@ -1430,9 +1425,10 @@
                 excelDataList.add(new WriteExcelData(i + 1, 7, bizType.revInput));
                 excelDataList.add(new WriteExcelData(i + 1, 8, bizType.delimiter));
                 excelDataList.add(new WriteExcelData(i + 1, 9, bizType.verRuleName));
-                excelDataList.add(new WriteExcelData(i + 1, 10, bizType.lifeCycle));
-                excelDataList.add(new WriteExcelData(i + 1, 11, String.join(",", bizType.lifeCycles)));
-                excelDataList.add(new WriteExcelData(i + 1, 12, String.join(",", bizType.apNameArray)));
+                excelDataList.add(new WriteExcelData(i + 1, 10, bizType.imageName));
+                excelDataList.add(new WriteExcelData(i + 1, 11, bizType.lifeCycle));
+                excelDataList.add(new WriteExcelData(i + 1, 12, String.join(",", bizType.lifeCycles)));
+                excelDataList.add(new WriteExcelData(i + 1, 13, String.join(",", bizType.apNameArray)));
                 attributes.addAll(Arrays.asList(bizType.apNameArray));
                 i++;
             }
@@ -1549,6 +1545,7 @@
                 bizType.revInput = Boolean.parseBoolean(osBtmTypePO.getRevInput().toLowerCase(Locale.ROOT));
                 bizType.delimiter = osBtmTypePO.getDelimiter();
                 bizType.verRuleName = osBtmTypePO.getVerRuleName();
+                bizType.imageName = osBtmTypePO.getImageName();
                 bizType.lifeCycle = osBtmTypePO.getLifeCycle();
                 bizType.lifeCycles = osBtmTypePO.getLifeCycles().split(",");
                 bizType.apNameArray = osBtmTypePO.getApNameArray().split(",");
@@ -1622,6 +1619,7 @@
                 tree.setParentName(parentBIzType.getfName());
                 tree.setParentId(parentBIzType.getOid());
                 tree.setLeaf(true);
+                tree.setIcon(bizType.getImageName());
                 tree.setText(bizType.getDescription());
                 tree.setAttributes(WebUtil.objectToMapString(bizType));
                 tree.setChildren(getChildren(osBtmTypeVOS, bizType));
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsDataAuthServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsDataAuthServiceImpl.java
index 1738a7c..67f015e 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsDataAuthServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsDataAuthServiceImpl.java
@@ -14,12 +14,10 @@
 import com.vci.starter.web.pagemodel.BaseResult;
 import com.vci.web.service.OsDataAuthServiceI;
 import com.vci.web.util.PlatformClientUtil;
-import com.vci.web.util.WebUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.*;
-import java.util.stream.Collectors;
 
 /**
  * 鏁版嵁鏉冮檺鐨勬帶鍒跺櫒
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsEnumServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsEnumServiceImpl.java
index 3af82b5..c874cc9 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsEnumServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsEnumServiceImpl.java
@@ -1,17 +1,18 @@
 package com.vci.web.service.impl;
 
 import com.alibaba.fastjson.JSON;
-import com.vci.client.common.providers.ClientServiceProvider;
+import com.vci.constant.EnumIdConstant;
 import com.vci.corba.common.PLException;
-import com.vci.corba.omd.atm.AttributeDef;
 import com.vci.corba.omd.data.BusinessObject;
 import com.vci.corba.omd.etm.EnumItem;
 import com.vci.corba.omd.etm.EnumType;
 import com.vci.dto.OsEnumDTO;
 import com.vci.dto.OsEnumItemDTO;
-import com.vci.omd.objects.OtherInfo;
 import com.vci.omd.utils.ObjectTool;
-import com.vci.pagemodel.*;
+import com.vci.pagemodel.KeyValue;
+import com.vci.pagemodel.OsEnumItemVO;
+import com.vci.pagemodel.OsEnumVO;
+import com.vci.pagemodel.OsStatusVO;
 import com.vci.po.OsEnumPO;
 import com.vci.starter.poi.bo.ReadExcelOption;
 import com.vci.starter.poi.bo.WriteExcelData;
@@ -25,11 +26,10 @@
 import com.vci.starter.web.pagemodel.DataGrid;
 import com.vci.starter.web.pagemodel.PageHelper;
 import com.vci.starter.web.util.*;
-import com.vci.constant.EnumIdConstant;
 import com.vci.web.service.OsEnumServiceI;
 import com.vci.web.service.OsLifeCycleServiceI;
 import com.vci.web.service.WebBoServiceI;
-import com.vci.web.util.Func;
+import com.vci.starter.web.util.Lcm.Func;
 import com.vci.web.util.PlatformClientUtil;
 import com.vci.web.util.WebUtil;
 import org.apache.commons.lang3.StringUtils;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsLifeCycleServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsLifeCycleServiceImpl.java
index 26e995a..4ae942e 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsLifeCycleServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsLifeCycleServiceImpl.java
@@ -6,7 +6,8 @@
 import com.vci.corba.omd.lcm.LifeCycle;
 import com.vci.corba.omd.lcm.TransitionVO;
 import com.vci.corba.omd.lcm.TransitionVOEvent;
-import com.vci.dto.*;
+import com.vci.dto.OsLifeCycleDTO;
+import com.vci.model.OsLifeCycleDO;
 import com.vci.pagemodel.*;
 import com.vci.po.OsLifeCyclePO;
 import com.vci.starter.poi.bo.ReadExcelOption;
@@ -20,11 +21,10 @@
 import com.vci.starter.web.pagemodel.BaseResult;
 import com.vci.starter.web.pagemodel.DataGrid;
 import com.vci.starter.web.util.*;
-import com.vci.model.OsLifeCycleDO;
+import com.vci.starter.web.util.Lcm.Func;
 import com.vci.web.service.OsLifeCycleServiceI;
 import com.vci.web.service.OsStatusServiceI;
 import com.vci.web.service.WebBoServiceI;
-import com.vci.web.util.Func;
 import com.vci.web.util.PlatformClientUtil;
 import com.vci.web.util.WebUtil;
 import org.apache.commons.lang3.StringUtils;
@@ -36,7 +36,6 @@
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
-import javax.swing.*;
 import java.io.File;
 import java.util.*;
 import java.util.stream.Collectors;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsLinkTypeServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsLinkTypeServiceImpl.java
index 4604743..edf8025 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsLinkTypeServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsLinkTypeServiceImpl.java
@@ -11,13 +11,10 @@
 import com.vci.corba.omd.btm.BizType;
 import com.vci.corba.omd.data.BusinessObject;
 import com.vci.corba.omd.ltm.LinkType;
-import com.vci.corba.omd.ltm.LinkTypeServicePrx;
-import com.vci.dto.OsAttributeDTO;
+import com.vci.model.OsLinkTypeDO;
 import com.vci.omd.constants.AttributeConstants;
-import com.vci.omd.constants.LinkTypeConstants;
 import com.vci.omd.utils.ObjectTool;
 import com.vci.pagemodel.*;
-import com.vci.po.OsAttributePO;
 import com.vci.po.OsLinkTypePO;
 import com.vci.starter.poi.bo.ReadExcelOption;
 import com.vci.starter.poi.bo.WriteExcelData;
@@ -25,19 +22,16 @@
 import com.vci.starter.poi.constant.ExcelLangCodeConstant;
 import com.vci.starter.poi.util.ExcelUtil;
 import com.vci.starter.web.annotation.log.VciUnLog;
-import com.vci.starter.web.enumpck.ResultCodeEnum;
 import com.vci.starter.web.enumpck.VciFieldTypeEnum;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.BaseQueryObject;
 import com.vci.starter.web.pagemodel.BaseResult;
 import com.vci.starter.web.pagemodel.DataGrid;
 import com.vci.starter.web.util.*;
-import com.vci.model.OsLinkTypeDO;
+import com.vci.starter.web.util.Lcm.Func;
 import com.vci.web.service.*;
-import com.vci.web.util.Func;
 import com.vci.web.util.PlatformClientUtil;
 import com.vci.web.util.WebUtil;
-import javafx.scene.shape.HLineTo;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -48,11 +42,11 @@
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
-import java.io.*;
+import java.io.File;
+import java.io.IOException;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
-import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -197,7 +191,7 @@
             List<OsLinkTypeAttributeVO> linkTypeAttributeVOS = new ArrayList<>();
             Optional.ofNullable(attributeVOS).orElseGet(()->new ArrayList<>()).stream().forEach(attributeVO->{
                 OsLinkTypeAttributeVO linkTypeAttributeVO = new OsLinkTypeAttributeVO();
-                BeanUtil.convert(attributeVO,linkTypeAttributeVO);
+                BeanUtilForVCI.convert(attributeVO,linkTypeAttributeVO);
                 linkTypeAttributeVO.setPkLinkType(vo.getOid());
                 if(StringUtils.isNotBlank(attributeVO.getBtmTypeId())){
                     linkTypeAttributeVO.setReferFlag(true);
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LoginServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsLoginServiceImpl.java
similarity index 61%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LoginServiceImpl.java
rename to Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsLoginServiceImpl.java
index 8bc2aa7..9e88c5c 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LoginServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsLoginServiceImpl.java
@@ -1,21 +1,17 @@
 package com.vci.web.service.impl;
 
+import com.vci.bo.LoginResultBO;
+import com.vci.constant.CacheNameConstant;
 import com.vci.corba.common.PLException;
 import com.vci.corba.framework.data.DeptInfo;
 import com.vci.corba.framework.data.LoginResult;
 import com.vci.corba.framework.data.LoginState;
 import com.vci.corba.framework.data.MachineInfo;
-import com.vci.frameworkcore.ajaxTask.SmUserUnLockTask;
-import com.vci.frameworkcore.ajaxTask.SmUserUnLockTaskManager;
-import com.vci.frameworkcore.compatibility.ISmFunctionQueryService;
-import com.vci.frameworkcore.compatibility.SmPwdStrategyQueryServiceI;
-import com.vci.frameworkcore.compatibility.SmUserQueryServiceI;
-import com.vci.frameworkcore.enumpck.ResourceControlTypeEnum;
-import com.vci.frameworkcore.lcstatuspck.FrameworkDataLCStatus;
+import com.vci.dto.LoginUserDTO;
+import com.vci.lcstatuspck.FrameworkDataLCStatus;
 import com.vci.pagemodel.SmFunctionVO;
 import com.vci.pagemodel.SmPasswordStrategyVO;
 import com.vci.pagemodel.SmUserVO;
-import com.vci.frameworkcore.properties.VciSecurityManageProperties;
 import com.vci.starter.web.annotation.bus.VciLoginAfter;
 import com.vci.starter.web.annotation.bus.VciLogoutBefore;
 import com.vci.starter.web.annotation.bus.VciLogoutPlugin;
@@ -25,15 +21,21 @@
 import com.vci.starter.web.pagemodel.RequestClientInfo;
 import com.vci.starter.web.pagemodel.SessionInfo;
 import com.vci.starter.web.pagemodel.TokenVO;
-import com.vci.starter.web.util.*;
-
-import com.vci.bo.LoginResultBO;
-import com.vci.constant.CacheNameConstant;
-import com.vci.dto.LoginUserDTO;
-import com.vci.web.properties.WebProperties;
 import com.vci.starter.web.redis.RedisService;
-import com.vci.web.service.LoginServiceI;
-import com.vci.web.util.Func;
+import com.vci.starter.web.util.ApplicationContextProvider;
+import com.vci.starter.web.util.Lcm.Func;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.util.VciDateUtil;
+import com.vci.starter.web.util.WebThreadLocalUtil;
+import com.vci.web.ajaxTask.SmUserUnLockTask;
+import com.vci.web.ajaxTask.SmUserUnLockTaskManager;
+import com.vci.web.enumpck.ResourceControlTypeEnum;
+import com.vci.web.properties.VciSecurityManageProperties;
+import com.vci.web.properties.WebProperties;
+import com.vci.web.service.ISmFunctionQueryService;
+import com.vci.web.service.OsLoginServiceI;
+import com.vci.web.service.SmPwdStrategyQueryServiceI;
+import com.vci.web.service.SmUserQueryServiceI;
 import com.vci.web.util.PlatformClientUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -55,7 +57,7 @@
  * @date 2020/1/29
  */
 @Service
-public class LoginServiceImpl implements LoginServiceI {
+public class OsLoginServiceImpl implements OsLoginServiceI {
 
     /**
      * 鏃ュ織
@@ -286,223 +288,6 @@
         return loginResult;
     }
 
-    /**
-     * 鐧诲綍_搴熷純鏂规硶锛屼富瑕佺敤鏉ュ浠�
-     * @param userDTO 鐢ㄦ埛鐨勬暟鎹紶杈撳璞�
-     * @param clientInfo 瀹㈡埛绔殑淇℃伅
-     * @param checkPassword 鏄惁鏍¢獙瀵嗙爜
-     * @return 鎵ц缁撴灉
-     * @throws VciBaseException 鍙傛暟閿欒锛岀敤鎴蜂笉鑳界櫥褰曠瓑浼氭姏鍑哄紓甯�
-     */
-    private LoginResultBO login_old(LoginUserDTO userDTO, RequestClientInfo clientInfo, boolean checkPassword/*鍗曠偣鐧诲綍涓嶉渶瑕佹牎楠屽瘑鐮�*/) throws VciBaseException, PLException {
-        LoginResultBO loginResult = new LoginResultBO();
-        loginResult.setSuccess(false);
-
-        //1.鍒ゆ柇鐢ㄦ埛鐨勫熀鏈俊鎭�
-        VciBaseUtil.alertNotNull(userDTO, "鐧诲綍淇℃伅", userDTO.getUserId(), "鐢ㄦ埛璐﹀彿");
-        if (checkPassword) {
-            VciBaseUtil.alertNotNull(userDTO.getPassword(), "鐧诲綍瀵嗙爜");
-        }
-        //2銆佸垽鏂崟璁惧鐧诲綍,鏄惁宸茬粡鐧诲綍浜�
-        String userIdTokenKey = CacheNameConstant.cacheKey(CacheNameConstant.USERID_TOKEN_KEY, userDTO.getUserId().trim());
-        if(redisService.hasKey(userIdTokenKey) && !userDTO.isForceLogin() && securityManageProperties.isUserOneLogin()){
-            loginResult.setFailCode(USER_IS_LOGINED);
-            loginResult.setFailMsg("褰撳墠鐢ㄦ埛宸茬粡鍦ㄥ叾浠栧湴鏂圭櫥褰曪紒");
-            return loginResult;
-        }
-        //璇存槑宸茬粡鐧诲綍浜嗭紝閭e簲璇ュ彇娑堝師鏉ョ殑鐧诲綍
-        if (redisService.hasKey(userIdTokenKey) && userDTO.isForceLogin() && securityManageProperties.isUserOneLogin()) {
-            String tokenKey = redisService.getCacheObject(userIdTokenKey);
-            redisService.deleteObject(tokenKey);
-            redisService.deleteObject(userIdTokenKey);
-        }
-
-        //3.鑾峰彇鐢ㄦ埛鐨勫璞★紙瀵硅薄涓寘鍚鑹查儴闂ㄨ繕鏈夊瘑鐮佺瓥鐣ヤ俊鎭級
-        SmUserVO user = getUserByUserId(userDTO.getUserId().trim());
-        if (user == null || StringUtils.isBlank(user.getOid())) {
-            loginResult.setFailCode(USER_NOT_FOUND);
-            loginResult.setFailMsgArray(new String[]{userDTO.getUserId()});
-            return loginResult;
-        }
-
-        //3銆佸垽鏂瘑鐮佹槸鍚︽纭�
-        if (checkPassword) {
-            boolean passwordIsEqual = userQueryService.checkPasswordEqual(userDTO.getPassword(), user.getName());
-            if (!passwordIsEqual) {
-                if (logger.isDebugEnabled()) {
-                    logger.debug("{}瀵嗙爜涓嶆纭�", user.getId());
-                }
-            }
-        }
-
-        //4銆佽皟鐢ㄥ钩鍙扮櫥褰曟帴鍙o紝杩涜鐧诲綍
-        MachineInfo machine = getMachieInfo(clientInfo);
-        machine.country = clientInfo.getCountry();
-        machine.language = clientInfo.getLanguage();
-        machine.osUser = clientInfo.getOsUser();
-        machine.machine = clientInfo.getMachine();
-        String token = null;
-        try {
-            LoginResult chkRes = platformClientUtil.getFrameworkService().checkLogin(userDTO.getUserId(),userDTO.getPassword(), machine);
-            loginResult.setFailCode(getErrorCode(chkRes));
-            loginResult.setFailMsgArray(new String[]{userDTO.getUserId(), String.valueOf(chkRes.auxInfo)});
-            if(chkRes.state == LoginState.Error || chkRes.state == LoginState.Locked || chkRes.state == LoginState.Freeze){
-                return loginResult;
-            }
-            token = chkRes.token;
-        } catch (Exception e) {
-            loginResult.setFailCode(SYSTEM_ERROR);
-            loginResult.setFailMsgArray(new String[]{userDTO.getUserId()});
-            return loginResult;
-        }
-        if(StringUtils.isBlank(token)){
-            loginResult.setFailMsg(TOKEN_EMPTY);
-            loginResult.setFailMsgArray(new String[]{userDTO.getUserId()});
-            return loginResult;
-        }
-
-        //濡傛灉鐢ㄦ埛宸茬粡琚仠鐢ㄥ拰閿佸畾锛屼笉鑳界櫥褰�
-        if (FrameworkDataLCStatus.DISABLED.getValue().equals(user.getLcStatus())) {
-            loginResult.setFailCode(USER_IS_DISABLED);
-            loginResult.setFailMsgArray(new String[]{userDTO.getUserId()});
-            return loginResult;
-        }
-        if (userQueryService.checkUserLock(user, user.getPwdWrongCount())) {
-            loginResult.setFailCode(USER_IS_LOCK);
-            loginResult.setFailMsgArray(new String[]{userDTO.getUserId()});
-            return loginResult;
-        }
-
-        //濡傛灉鐢ㄦ埛鐨勫け鏁堟棩鏈熷凡缁忚秴杩囦簡褰撳墠鏃堕棿锛屼笉鑳界櫥褰�
-        //鍙湁鏂板钩鍙扮殑鐢ㄦ埛鎵嶅垽鏂け鏁�
-        /*if (user.getDisabledate() != null) {
-            //2021鐗堟湰鎵嶆湁杩欎釜灞炴�х殑鍊硷紝褰撳墠杩欎釜娌℃湁杩欎釜鍊�
-            Date disableDate = VciDateUtil.addOrSubDate(user.getDisabledate(), Calendar.DATE, 1);
-            if (disableDate != null && disableDate.getTime() < System.currentTimeMillis()) {
-                loginResult.setFailCode(USER_MORE_THAN_DISABLE_DATE);
-                loginResult.setFailMsgArray(new String[]{userDTO.getUserId()});
-                return loginResult;
-            }
-        }*/
-        //褰撳墠鐢ㄦ埛娌℃湁閰嶇疆灏辨煡璇㈤粯璁ょ殑瀵嗙爜绛栫暐
-        SmPasswordStrategyVO passwordStrategyVO = pwdStrategyQueryService.getPasswordStrategyVOByUserOid(user.getOid());
-        if (checkPassword) {
-            //鍓嶇闇�瑕佸厛md5涓�娆★紝鐒跺悗鍚庡彴鍐峂D5涓�娆★紝
-            if (logger.isDebugEnabled()) {
-                logger.debug("{}瀵嗙爜涓嶆纭�", user.getId());
-            }
-            //鍙鏁版嵁娌℃湁闂灏变笉瀛樺湪瀵嗙爜绛栫暐涓虹┖鐨勬儏鍐�
-            if (passwordStrategyVO == null) {
-                //鍙兘鏁版嵁闂娌℃湁璁剧疆瀵嗙爜绛栫暐
-                passwordStrategyVO = new SmPasswordStrategyVO();
-                passwordStrategyVO.setRetryTime(6);
-                passwordStrategyVO.setLockTime(30);
-            }
-            //鍒ゆ柇瀵嗙爜閿欒娆℃暟鏄惁杈惧埌涓婇檺
-            if (passwordStrategyVO.getRetryTime() <= (user.getPwdWrongCount() + 1)) {
-                user.setLockFlag(true);
-                updateUserPwdWrongCount(user.getOid(), user.getPwdWrongCount() + 1);
-                addUserToUnLock(userDTO.getUserId(), passwordStrategyVO.getLockTime());
-                //updateUserPwdWrongCount(user.getOid(), user.getPwdWrongCount() + 1);
-                loginResult.setFailCode(USER_PWD_LOCK);
-                loginResult.setFailMsgArray(new String[]{userDTO.getUserId(), passwordStrategyVO.getLockTime() + ""});
-                return loginResult;
-            } else {
-                //杩樻病鏈夊埌閿佸畾鐨勬鏁�
-                updateUserPwdWrongCount(user.getOid(), user.getPwdWrongCount() + 1);
-                //5, 杩欐槸绗竴娆¢敊璇紝鍓╀笅鐨勬槸 5- 锛�0+1锛�
-                loginResult.setFailCode(USER_PWD_NOT_EQUAL);
-                loginResult.setFailMsgArray(new String[]{userDTO.getUserId(), (passwordStrategyVO.getRetryTime() - (user.getPwdWrongCount() + 1)) + ""});
-                return loginResult;
-            }
-        }
-
-        //妫�鏌ユ槸鍚﹁淇敼瀵嗙爜
-        if (!clientInfo.isSso() && checkPassword) {
-            //鏈�鍚庝慨鏀规椂闂� + 澶辨晥鏃堕棿锛屽ぇ浜庣瓑浜庡綋鍓嶆棩鏈燂紝鍒欓渶瑕侀┈涓婁慨鏀瑰瘑鐮�
-            Date currentDay = null;
-            try {
-                currentDay = VciDateUtil.getNow(VciDateUtil.DateFormat);
-            } catch (Throwable e) {
-                if (logger.isErrorEnabled()) {
-                    logger.error("鑾峰彇褰撳墠鏃ユ湡", e);
-                }
-            }
-            if (currentDay != null && passwordStrategyVO != null && passwordStrategyVO.getValidDay() != null) {
-                Date inValidDay = null;
-                if (user.getLastModifyPasswordTime() == null) {
-                    //浠庢潵娌℃湁鐧诲綍杩�
-                    loginResult.setMustChangePassword(true);
-                } else {
-                    inValidDay = VciDateUtil.addOrSubDate(user.getLastModifyPasswordTime(), Calendar.DATE, passwordStrategyVO.getValidDay());
-                    if (inValidDay.getTime() <= (currentDay).getTime()) {
-                        loginResult.setMustChangePassword(true);
-                    }
-                }
-                if (!loginResult.isMustChangePassword()) {
-                    if (VciDateUtil.addOrSubDate(inValidDay, Calendar.DATE, -(passwordStrategyVO.getRemindDay())).getTime()
-                            <= (currentDay).getTime()) {
-                        //鎮ㄧ殑瀵嗙爜杩樻湁{0}澶╄繃鏈燂紝璇峰強鏃朵慨鏀瑰瘑鐮�
-                        long remainDay = VciDateUtil.getDaySub(inValidDay, currentDay);
-                        loginResult.setPasswordInfo(MessageFormat.format(PASSWORD_REMAIN_DAY, new String[]{String.valueOf(remainDay)}));
-                    }
-                }
-            }
-        }
-
-        //璇存槑瀵嗙爜姝g‘鐨�
-        if (logger.isDebugEnabled()) {
-            logger.debug("{}鐨勫瘑鐮佹纭�", user.getId());
-        }
-        user.setLastLoginTime(new Date());
-        user.setPwdWrongCount(0);
-
-        SessionInfo sessionInfo = new SessionInfo();
-        sessionInfo.setToken(token);
-
-        //鍒濆鍖栧钩鍙扮殑token
-        sessionForLogin.initInvocationInfo(sessionInfo);
-
-        //鎷疯礉鐢ㄦ埛鐨勬柊鍒皊ession浼氳瘽涓�
-        copyUser2SessionInfo(user, sessionInfo, userDTO.getLangCode());
-        //鎷疯礉璇锋眰淇℃伅鍒皊ession浼氳瘽涓�
-        copyRequest2SessionInfo(clientInfo, sessionInfo);
-
-        //鑾峰彇浜哄憳鎵�灞炵殑閮ㄩ棬淇℃伅
-        try {
-            DeptInfo deptInfo = platformClientUtil.getFrameworkService().fetchDeptByUserId(user.getOid());
-            sessionInfo.setDeptOid(deptInfo.id);
-            sessionInfo.setDeptName(deptInfo.name);
-            sessionInfo.setDeptNum(deptInfo.num);
-        } catch (PLException e) {
-            throw new VciBaseException("鑾峰彇鐢ㄦ埛鎵�灞為儴闂ㄥけ璐�:"+e.getMessage());
-        }
-
-        /** //鏌ヨ鎵�鏈夌殑瑙掕壊
-         List<SmRoleVO> roleVOList = roleQueryService.listRoleByUserOid(user.getOid(), null);
-         if (!CollectionUtils.isEmpty(roleVOList)) {
-         Map<String, String> roleOidNameMap = roleVOList.stream().collect(Collectors.toMap(s -> s.getOid(), t -> t.getName()));
-         sessionInfo.setRolesName(roleOidNameMap);
-         } else {
-         sessionInfo.setRolesName(new HashMap());
-         }
-         //鏌ヨ鎵�鏈夌殑鏉冮檺
-         List<SmFunctionVO> functionVOList = functionQueryService.listFunctionByUserOid(user.getOid(), null, ResourceControlTypeEnum.BS);
-         if (!CollectionUtils.isEmpty(functionVOList)) {
-         List<String> functionOidList = functionVOList.stream().map(s -> s.getOid()).collect(Collectors.toList());
-         sessionInfo.setFunctionOids(functionOidList);
-         } else {
-         sessionInfo.setFunctionOids(new ArrayList());
-         }*/
-
-        //娣诲姞鍒颁細璇濅俊鎭�
-        TokenVO tokenVO = saveSessionInfo(sessionInfo);
-        loginResult.setTokenVO(tokenVO);
-
-        loginResult.setSuccess(true);
-        return loginResult;
-    }
-
     private MachineInfo getMachieInfo(RequestClientInfo clientInfo) {
         MachineInfo machine = new MachineInfo();
         machine.country = clientInfo.getCountry();
@@ -519,19 +304,6 @@
      */
     private SmUserVO getUserByUserId(String userId) {
         return userQueryService.getUserByUserId(userId);
-    }
-
-    /**
-     * 鍗曠偣鐧诲綍
-     *
-     * @param userDTO    鐧诲綍淇℃伅
-     * @param clientInfo 璇锋眰鐨勫鎴风鐨勪俊鎭�
-     * @return 鐧诲綍鐨勭粨鏋滃璞�
-     * @throws VciBaseException 鐧诲綍澶辫触鐨勬椂鍊欐姏鍑哄紓甯�
-     */
-    @Override
-    public LoginResultBO singleLogin(LoginUserDTO userDTO, RequestClientInfo clientInfo) throws Exception {
-        return login(userDTO,clientInfo,false);
     }
 
     /**
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java
index 4f196fe..d6ec36d 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java
@@ -11,7 +11,9 @@
 import com.vci.corba.portal.PortalService.GetPagePortalVIArrayByPageInfoResult;
 import com.vci.corba.portal.data.PortalVI;
 import com.vci.dto.*;
-import com.vci.model.*;
+import com.vci.enumpck.UI.ItemTypeEnum;
+import com.vci.model.PRMDO;
+import com.vci.model.PRMItemDO;
 import com.vci.pagemodel.*;
 import com.vci.po.PortalVIPO;
 import com.vci.po.QTDPO;
@@ -25,12 +27,8 @@
 import com.vci.starter.web.pagemodel.DataGrid;
 import com.vci.starter.web.util.LocalFileUtil;
 import com.vci.starter.web.util.VciBaseUtil;
-import com.vci.starter.word.bo.WordMergeStartTableDataBO;
-import com.vci.starter.word.util.WordUtil;
-import com.vci.web.enumpck.ItemTypeEnum;
 import com.vci.web.enumpck.PortalVIType;
 import com.vci.web.enumpck.PortalVITypeFlag;
-import com.vci.web.other.BtmQTExportData;
 import com.vci.web.service.OsAttributeServiceI;
 import com.vci.web.service.OsPortalVIServiceI;
 import com.vci.web.service.OsQuereyTemplateServiceI;
@@ -44,11 +42,12 @@
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
-import org.springframework.web.multipart.MultipartFile;
 
-import java.io.*;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
 import java.util.*;
-import java.util.concurrent.atomic.AtomicInteger;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPvolumesServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPvolumesServiceImpl.java
index 8baf55b..522fcf3 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPvolumesServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPvolumesServiceImpl.java
@@ -3,7 +3,7 @@
 import com.vci.corba.common.PLException;
 import com.vci.corba.common.data.UserEntityInfo;
 import com.vci.corba.framework.data.PvolumeInfo;
-import com.vci.dto.*;
+import com.vci.dto.OsPvolumeDTO;
 import com.vci.starter.poi.bo.WriteExcelData;
 import com.vci.starter.poi.bo.WriteExcelOption;
 import com.vci.starter.poi.util.ExcelUtil;
@@ -14,14 +14,14 @@
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.starter.web.util.WebThreadLocalUtil;
 import com.vci.web.service.OsPvolumesServiceI;
-import com.vci.web.util.Func;
+import com.vci.starter.web.util.Lcm.Func;
 import com.vci.web.util.PlatformClientUtil;
 import com.vci.web.util.WebUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.io.*;
+import java.io.File;
 import java.util.*;
 import java.util.stream.Collectors;
 
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsQueryTemplateImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsQueryTemplateImpl.java
index f5a32e1..72cc064 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsQueryTemplateImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsQueryTemplateImpl.java
@@ -1,11 +1,8 @@
 package com.vci.web.service.impl;
 
 import cn.hutool.core.io.FileUtil;
-import cn.hutool.core.util.ZipUtil;
 import com.alibaba.fastjson.JSONObject;
-import com.vci.client.ClientSession;
 import com.vci.client.common.oq.OQTool;
-import com.vci.client.common.providers.ClientServiceProvider;
 import com.vci.common.qt.object.*;
 import com.vci.constant.FrameWorkLangCodeConstant;
 import com.vci.corba.common.PLException;
@@ -19,42 +16,31 @@
 import com.vci.dto.*;
 import com.vci.omd.constants.SystemAttribute;
 import com.vci.omd.objects.OtherInfo;
-import com.vci.po.OsLinkTypePO;
-import com.vci.starter.poi.bo.ReadExcelOption;
-import com.vci.starter.poi.bo.WriteExcelData;
-import com.vci.starter.poi.bo.WriteExcelOption;
-import com.vci.starter.poi.constant.ExcelLangCodeConstant;
-import com.vci.starter.poi.util.ExcelUtil;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.BaseResult;
 import com.vci.starter.web.pagemodel.DataGrid;
-import com.vci.starter.web.pagemodel.Tree;
-import com.vci.starter.web.util.*;
+import com.vci.starter.web.util.ControllerUtil;
+import com.vci.starter.web.util.Lcm.DateUtil;
+import com.vci.starter.web.util.Lcm.Func;
+import com.vci.starter.web.util.LocalFileUtil;
+import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.web.other.BtmQTExportData;
 import com.vci.web.other.LinkQTExportData;
-import com.vci.web.service.*;
-import com.vci.web.util.DateUtil;
-import com.vci.web.util.Func;
+import com.vci.web.service.OsQuereyTemplateServiceI;
 import com.vci.web.util.PlatformClientUtil;
 import com.vci.web.util.WebUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.time.DateFormatUtils;
-import org.dom4j.Document;
 import org.dom4j.DocumentException;
 import org.dom4j.DocumentHelper;
 import org.dom4j.Element;
-import org.jdesktop.swingx.JXDatePicker;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
-import javax.swing.*;
-import java.awt.*;
 import java.io.*;
 import java.util.*;
-import java.util.List;
 import java.util.stream.Collectors;
 
 /**
@@ -98,7 +84,8 @@
         }else {
             qtdArray = platformClientUtil.getQTDService().getBizTypeQTDs(btmName);
         }
-        return BaseResult.dataList(Arrays.asList(qtdArray));
+        List<QTD> qtdList = Arrays.asList(qtdArray).stream().sorted(Comparator.comparing(s -> s.name,String.CASE_INSENSITIVE_ORDER)).collect(Collectors.toList());
+        return BaseResult.dataList(qtdList);
     }
 
     /**
@@ -195,6 +182,9 @@
     public BaseResult getObjTypeQTs(String btName) throws PLException, DocumentException {
         VciBaseUtil.alertNotNull(btName,"绫诲瀷鍚�");
         QTInfo[] objTypeQTs = platformClientUtil.getQTDService().getObjTypeQTs(btName);
+        if(Func.isEmpty(objTypeQTs)){
+            return BaseResult.success();
+        }
         List<QTInfoDTO> dtos = new ArrayList<>();
         Map<String, AttributeDef> allSysAttr = Arrays.stream(platformClientUtil.getBtmService().getSysAttributeDefs()).collect(Collectors.toMap(e -> e.name, e -> e));
         allSysAttr.putAll(Arrays.stream(platformClientUtil.getLinkTypeService().getSysAttributeDefs()).collect(Collectors.toMap(e -> e.name, e -> e)));
@@ -216,6 +206,8 @@
             qtInfoDTO.setCreateTimeText(DateFormatUtils.format(new Date(obj.createTime), DateUtil.PATTERN_DATETIME));
             dtos.add(qtInfoDTO);
         }
+        //// TODO: 2024/12/2 Ludc 杩斿洖鍊兼帓搴�
+        dtos = dtos.stream().sorted(Comparator.comparing(QTInfoDTO::getQtName,String.CASE_INSENSITIVE_ORDER)).collect(Collectors.toList());
         return BaseResult.dataList(dtos);
     }
 
@@ -1612,8 +1604,9 @@
     @Override
     public BaseResult getAllQTs() throws PLException {
         QTInfo[] allQTs = platformClientUtil.getQTDService().getAllQTs();
+        List<QTInfo> allQTList = Arrays.stream(allQTs).sorted(Comparator.comparing(o -> o.qtName, String.CASE_INSENSITIVE_ORDER)).collect(Collectors.toList());
         DataGrid<QTInfo> dataGrid = new DataGrid<>();
-        dataGrid.setData(Arrays.asList(allQTs));
+        dataGrid.setData(allQTList);
         dataGrid.setTotal(allQTs.length);
         return BaseResult.dataGrid(dataGrid);
     }
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsRevisionRuleServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsRevisionRuleServiceImpl.java
index f5c461b..ff0c654 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsRevisionRuleServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsRevisionRuleServiceImpl.java
@@ -1,17 +1,9 @@
 package com.vci.web.service.impl;
 
-import com.vci.client.mw.ClientSessionUtility;
 import com.vci.corba.common.PLException;
-import com.vci.corba.omd.stm.StatePool;
 import com.vci.corba.omd.vrm.VersionRule;
-import com.vci.dto.OsAttributeDTO;
 import com.vci.dto.OsRevisionRuleDTO;
-import com.vci.dto.OsStatusDTO;
-import com.vci.pagemodel.OsAttributeVO;
-import com.vci.pagemodel.OsEnumVO;
-import com.vci.pagemodel.OsStatusVO;
-import com.vci.po.OsAttributePO;
-import com.vci.po.OsEnumPO;
+import com.vci.pagemodel.OsRevisionRuleVO;
 import com.vci.po.OsRevisionRulePO;
 import com.vci.starter.poi.bo.ReadExcelOption;
 import com.vci.starter.poi.bo.WriteExcelData;
@@ -22,9 +14,8 @@
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.BaseResult;
 import com.vci.starter.web.util.*;
-import com.vci.pagemodel.OsRevisionRuleVO;
 import com.vci.web.service.OsRevisionRuleServiceI;
-import com.vci.web.util.Func;
+import com.vci.starter.web.util.Lcm.Func;
 import com.vci.web.util.PlatformClientUtil;
 import com.vci.web.util.WebUtil;
 import org.apache.commons.lang3.StringUtils;
@@ -36,11 +27,8 @@
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
-import javax.swing.*;
-import java.awt.*;
 import java.io.File;
 import java.util.*;
-import java.util.List;
 import java.util.stream.Collectors;
 
 /**
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsStatusServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsStatusServiceImpl.java
index 52e0be9..008f760 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsStatusServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsStatusServiceImpl.java
@@ -2,6 +2,9 @@
 
 import com.vci.corba.common.PLException;
 import com.vci.corba.omd.stm.StatePool;
+import com.vci.dto.OsStatusDTO;
+import com.vci.model.OsStatusDO;
+import com.vci.pagemodel.OsStatusVO;
 import com.vci.po.OsStatusPO;
 import com.vci.starter.poi.bo.ReadExcelOption;
 import com.vci.starter.poi.bo.WriteExcelData;
@@ -15,13 +18,10 @@
 import com.vci.starter.web.pagemodel.DataGrid;
 import com.vci.starter.web.pagemodel.PageHelper;
 import com.vci.starter.web.util.*;
-import com.vci.dto.OsStatusDTO;
-import com.vci.model.OsStatusDO;
-import com.vci.pagemodel.OsStatusVO;
+import com.vci.starter.web.util.Lcm.Func;
 import com.vci.web.service.OsLifeCycleServiceI;
 import com.vci.web.service.OsStatusServiceI;
 import com.vci.web.service.WebBoServiceI;
-import com.vci.web.util.Func;
 import com.vci.web.util.PlatformClientUtil;
 import com.vci.web.util.WebUtil;
 import org.apache.commons.lang3.StringUtils;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsTypeActionServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsTypeActionServiceImpl.java
index a3ae9f7..035a616 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsTypeActionServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsTypeActionServiceImpl.java
@@ -1,22 +1,19 @@
 package com.vci.web.service.impl;
 
-import com.vci.client.mw.ClientContextVariable;
 import com.vci.common.utility.ObjectUtility;
 import com.vci.corba.common.PLException;
 import com.vci.corba.portal.data.PLAction;
 import com.vci.corba.portal.data.PLTypeAction;
-import com.vci.dto.PLActionDTO;
 import com.vci.dto.PLTypeActionDTO;
 import com.vci.starter.web.pagemodel.BaseResult;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.web.service.OsTypeActionServiceI;
-import com.vci.web.util.Func;
+import com.vci.starter.web.util.Lcm.Func;
 import com.vci.web.util.PlatformClientUtil;
 import com.vci.web.util.UITools;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SecretGradeServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SecretGradeServiceImpl.java
index 205b38a..176f65c 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SecretGradeServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SecretGradeServiceImpl.java
@@ -1,7 +1,5 @@
 package com.vci.web.service.impl;
 
-import com.vci.client.common.providers.ClientServiceProvider;
-import com.vci.common.exception.VciException;
 import com.vci.corba.common.PLException;
 import com.vci.corba.common.data.UserEntityInfo;
 import com.vci.corba.framework.data.AppConfigCategoryInfo;
@@ -18,7 +16,6 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import javax.swing.*;
 import java.util.HashMap;
 import java.util.Map;
 
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmFavFunctionServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmFavFunctionServiceImpl.java
index c357587..6952616 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmFavFunctionServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmFavFunctionServiceImpl.java
@@ -1,12 +1,12 @@
 package com.vci.web.service.impl;
 
 import com.vci.constant.FrameWorkBtmTypeConstant;
-import com.vci.frameworkcore.compatibility.ISmFunctionQueryService;
+import com.vci.model.SmFavFunctionDO;
 import com.vci.pagemodel.SmFunctionVO;
 import com.vci.starter.revision.service.RevisionModelUtil;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.util.VciBaseUtil;
-import com.vci.model.SmFavFunctionDO;
+import com.vci.web.service.ISmFunctionQueryService;
 import com.vci.web.service.SmFavFunctionServiceI;
 import com.vci.web.service.WebBoServiceI;
 import com.vci.web.util.WebUtil;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmFunctionQueryServicePlatformImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmFunctionQueryServicePlatformImpl.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmFunctionQueryServicePlatformImpl.java
rename to Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmFunctionQueryServicePlatformImpl.java
index 08ded69..dc8ea53 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmFunctionQueryServicePlatformImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmFunctionQueryServicePlatformImpl.java
@@ -1,43 +1,35 @@
-package com.vci.frameworkcore.compatibility.impl;
+package com.vci.web.service.impl;
 
-import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
-import com.alibaba.fastjson.JSONReader;
-import com.vci.client.ClientSession;
-import com.vci.client.common.objects.RoleObject;
 import com.vci.common.exception.VciException;
-import com.vci.common.locale.LocaleDisplay;
 import com.vci.corba.common.PLException;
 import com.vci.corba.common.data.UserEntityInfo;
 import com.vci.corba.framework.data.*;
 import com.vci.corba.omd.data.BusinessObject;
 import com.vci.corba.portal.data.PLUILayout;
 import com.vci.dto.RoleInfoDTO;
-import com.vci.dto.RoleRightDTO;
 import com.vci.dto.RoleRightParamDTO;
-import com.vci.frameworkcore.compatibility.ISmFunctionQueryService;
-import com.vci.frameworkcore.enumpck.ResourceControlTypeEnum;
-import com.vci.model.RoleRightDO;
 import com.vci.model.SmFunctionForPlatform1;
 import com.vci.model.SmRoleForPlatform1;
+import com.vci.omd.utils.ObjectTool;
 import com.vci.pagemodel.MenuVO;
 import com.vci.pagemodel.SmFunctionVO;
-import com.vci.omd.utils.ObjectTool;
+import com.vci.pagemodel.UIContentVO;
 import com.vci.starter.web.constant.QueryOptionConstant;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.*;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
-import com.vci.pagemodel.UIContentVO;
+import com.vci.web.enumpck.ResourceControlTypeEnum;
 import com.vci.web.properties.JsonConfigReader;
+import com.vci.web.service.ISmFunctionQueryService;
 import com.vci.web.service.UIEngineServiceI;
 import com.vci.web.service.WebBoServiceI;
-import com.vci.web.util.Func;
+import com.vci.starter.web.util.Lcm.Func;
 import com.vci.web.util.PlatformClientUtil;
 import com.vci.web.util.RightControlUtil;
 import com.vci.web.util.WebUtil;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.el.stream.Stream;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmHMSysModConfigServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmHMSysModConfigServiceImpl.java
similarity index 99%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmHMSysModConfigServiceImpl.java
rename to Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmHMSysModConfigServiceImpl.java
index 4b62737..70f48bc 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmHMSysModConfigServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmHMSysModConfigServiceImpl.java
@@ -1,12 +1,12 @@
-package com.vci.frameworkcore.compatibility.impl;
+package com.vci.web.service.impl;
 
 import com.vci.common.exception.VciException;
 import com.vci.common.utility.ObjectUtility;
 import com.vci.corba.common.PLException;
 import com.vci.corba.common.data.UserEntityInfo;
 import com.vci.corba.framework.data.*;
-import com.vci.frameworkcore.compatibility.SmHMSysModConfigServiceI;
-import com.vci.pagemodel.*;
+import com.vci.pagemodel.ExpExcelConditionVO;
+import com.vci.pagemodel.MenuVO;
 import com.vci.starter.poi.bo.SheetDataSet;
 import com.vci.starter.poi.bo.SheetRowData;
 import com.vci.starter.poi.bo.WriteExcelData;
@@ -16,11 +16,12 @@
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.BaseResult;
 import com.vci.starter.web.pagemodel.SessionInfo;
+import com.vci.starter.web.redis.RedisService;
 import com.vci.starter.web.util.LocalFileUtil;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.starter.web.util.WebThreadLocalUtil;
-import com.vci.starter.web.redis.RedisService;
-import com.vci.web.util.Func;
+import com.vci.web.service.SmHMSysModConfigServiceI;
+import com.vci.starter.web.util.Lcm.Func;
 import com.vci.web.util.PlatformClientUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -28,7 +29,10 @@
 import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletResponse;
-import java.io.*;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
 import java.util.*;
 import java.util.stream.Collectors;
 
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmOperationServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmOperationServiceImpl.java
index b19055b..c8ffb15 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmOperationServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmOperationServiceImpl.java
@@ -2,8 +2,8 @@
 
 import com.vci.corba.omd.data.BusinessObject;
 import com.vci.omd.utils.ObjectTool;
-import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.pagemodel.SmOperationVO;
+import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.web.service.SmOperationServiceI;
 import com.vci.web.service.WebBoServiceI;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmPwdStrategyQueryServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmPwdStrategyQueryServiceImpl.java
similarity index 97%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmPwdStrategyQueryServiceImpl.java
rename to Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmPwdStrategyQueryServiceImpl.java
index 932c429..9abee0c 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmPwdStrategyQueryServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmPwdStrategyQueryServiceImpl.java
@@ -1,27 +1,27 @@
-package com.vci.frameworkcore.compatibility.impl;
+package com.vci.web.service.impl;
 
-import com.vci.dto.SmPasswordStrategyDTO;
 import com.vci.corba.common.PLException;
 import com.vci.corba.common.data.UserEntityInfo;
 import com.vci.corba.framework.data.PasswordStrategyInfo;
 import com.vci.corba.omd.data.BusinessObject;
-import com.vci.frameworkcore.compatibility.SmPwdStrategyQueryServiceI;
-import com.vci.frameworkcore.compatibility.SmUserQueryServiceI;
-import com.vci.frameworkcore.enumpck.CombinationEnum;
+import com.vci.dto.SmPasswordStrategyDTO;
 import com.vci.model.SmPasswordStrategyDO;
 import com.vci.model.SmPasswordStrategyForPlatform1;
-import com.vci.pagemodel.SmPasswordStrategyVO;
 import com.vci.omd.utils.ObjectTool;
+import com.vci.pagemodel.SmPasswordStrategyVO;
+import com.vci.starter.web.util.BeanUtilForVCI;
+import com.vci.web.service.SmUserQueryServiceI;
 import com.vci.starter.web.constant.QueryOptionConstant;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.DataGrid;
 import com.vci.starter.web.pagemodel.PageHelper;
-import com.vci.starter.web.util.BeanUtil;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.starter.web.util.WebThreadLocalUtil;
 import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
+import com.vci.web.enumpck.CombinationEnum;
+import com.vci.web.service.SmPwdStrategyQueryServiceI;
 import com.vci.web.service.WebBoServiceI;
-import com.vci.web.util.Func;
+import com.vci.starter.web.util.Lcm.Func;
 import com.vci.web.util.PlatformClientUtil;
 import com.vci.web.util.WebUtil;
 import org.apache.commons.lang3.StringUtils;
@@ -259,6 +259,9 @@
         if(strategy.getRequireCharCount() > strategy.getCombinations().split(",").length){
             throw new VciBaseException("蹇呭~绉嶇被涓嶈兘澶т簬鎵�閫夋嫨鐨勫瘑鐮佺粍鍚堟柟寮忕殑涓暟!");
         }
+        if(strategy.getRequireCharCount() <= 0){
+            throw new VciBaseException("蹇呭~绉嶇被涓嶈兘灏忎簬绛変簬0!");
+        }
         if(strategy.getMaxLength() < strategy.getMinLength()){
             throw new VciBaseException("瀵嗙爜鏈�澶ч暱搴︿笉鑳藉皬浜庢渶灏忛暱搴�!");
         }
@@ -453,7 +456,7 @@
             SmPasswordStrategyDO passwordStrategyDO = new SmPasswordStrategyDO();
             WebUtil.copyValueToObjectFromCbos(item,passwordStrategyDO);
             SmPasswordStrategyVO passwordStrategyVO = new SmPasswordStrategyVO();
-            BeanUtil.convert(passwordStrategyDO,passwordStrategyVO);
+            BeanUtilForVCI.convert(passwordStrategyDO,passwordStrategyVO);
             smPasswordStrategyVOMap.put(passwordStrategyVO.getOid(),passwordStrategyVO);
         });
         return smPasswordStrategyVOMap;
@@ -474,7 +477,7 @@
             SmPasswordStrategyDO passwordStrategyDO = new SmPasswordStrategyDO();
             WebUtil.copyValueToObjectFromCbos(cboList.get(0),passwordStrategyDO);
             SmPasswordStrategyVO passwordStrategyVO = new SmPasswordStrategyVO();
-            BeanUtil.convert(passwordStrategyDO,passwordStrategyVO);
+            BeanUtilForVCI.convert(passwordStrategyDO,passwordStrategyVO);
             return passwordStrategyVO;
         }else{
             //鑾峰彇榛樿鐨�
@@ -515,7 +518,7 @@
      */
     private SmPasswordStrategyVO pwdStrategyDO2VO(SmPasswordStrategyDO smPasswordStrategyDO){
         SmPasswordStrategyVO passwordStrategyVO = new SmPasswordStrategyVO();
-        BeanUtil.convert(smPasswordStrategyDO,passwordStrategyVO);
+        BeanUtilForVCI.convert(smPasswordStrategyDO,passwordStrategyVO);
         return passwordStrategyVO;
     }
 
@@ -602,7 +605,7 @@
             SmPasswordStrategyDO passwordStrategyDO = new SmPasswordStrategyDO();
             WebUtil.copyValueToObjectFromCbos(item,passwordStrategyDO);
             SmPasswordStrategyVO passwordStrategyVO = new SmPasswordStrategyVO();
-            BeanUtil.convert(passwordStrategyDO,passwordStrategyVO);
+            BeanUtilForVCI.convert(passwordStrategyDO,passwordStrategyVO);
             smPasswordStrategyVOList.add(passwordStrategyVO);
         });
         return smPasswordStrategyVOList;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmSessionForLoginImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmSessionForLoginImpl.java
similarity index 99%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmSessionForLoginImpl.java
rename to Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmSessionForLoginImpl.java
index 34f1d9a..d8b802e 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmSessionForLoginImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmSessionForLoginImpl.java
@@ -1,6 +1,7 @@
-package com.vci.frameworkcore.compatibility.impl;
+package com.vci.web.service.impl;
 
 import com.vci.client.mw.ClientSessionUtility;
+import com.vci.constant.CacheNameConstant;
 import com.vci.corba.common.PLException;
 import com.vci.corba.common.data.InvocationInfo;
 import com.vci.corba.omd.data.AttributeValue;
@@ -10,10 +11,9 @@
 import com.vci.starter.web.interceptor.VciSessionForLoginI;
 import com.vci.starter.web.pagemodel.SessionInfo;
 import com.vci.starter.web.pagemodel.TokenVO;
-import com.vci.starter.web.util.*;
-import com.vci.constant.CacheNameConstant;
-import com.vci.web.properties.WebProperties;
 import com.vci.starter.web.redis.RedisService;
+import com.vci.starter.web.util.*;
+import com.vci.web.properties.WebProperties;
 import com.vci.web.service.WebBoServiceI;
 import com.vci.web.util.PlatformClientUtil;
 import com.vci.web.util.WebUtil;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIDataServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIDataServiceImpl.java
index 5497ddb..1ce66c2 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIDataServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIDataServiceImpl.java
@@ -1,16 +1,26 @@
 package com.vci.web.service.impl;
 
+import com.vci.client.common.oq.OQTool;
+import com.vci.common.qt.object.QueryTemplate;
 import com.vci.corba.common.PLException;
 import com.vci.corba.framework.data.UserInfo;
-import com.vci.corba.omd.btm.BizType;
-import com.vci.corba.omd.data.*;
+import com.vci.corba.omd.data.BusinessObject;
+import com.vci.corba.omd.data.LinkObject;
+import com.vci.corba.omd.data.RevisionDataInfo;
+import com.vci.corba.omd.data.VersionDataInfo;
 import com.vci.corba.omd.lcm.LifeCycle;
 import com.vci.corba.omd.ltm.LinkType;
+import com.vci.corba.omd.qtm.QTInfo;
+import com.vci.corba.query.data.BOAndLO;
 import com.vci.dto.*;
-import com.vci.frameworkcore.lcstatuspck.FrameworkDataLCStatus;
-import com.vci.frameworkcore.lcstatuspck.ReleaseDataLCStatus;
+import com.vci.lcstatuspck.FrameworkDataLCStatus;
+import com.vci.lcstatuspck.ReleaseDataLCStatus;
 import com.vci.omd.utils.ObjectTool;
 import com.vci.pagemodel.*;
+import com.vci.query.UIDataGridQuery;
+import com.vci.query.UIFormQuery;
+import com.vci.query.UILinkTypeDataQuery;
+import com.vci.query.UITreeQuery;
 import com.vci.starter.revision.bo.TreeWrapperOptions;
 import com.vci.starter.web.annotation.bus.VciChangeDataAfter;
 import com.vci.starter.web.annotation.bus.VciChangeDataBefore;
@@ -22,19 +32,16 @@
 import com.vci.starter.web.model.BaseModel;
 import com.vci.starter.web.pagemodel.*;
 import com.vci.starter.web.util.*;
+import com.vci.starter.web.util.Lcm.Func;
 import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
 import com.vci.web.enumpck.DeleteTypeEnum;
 import com.vci.web.enumpck.UIFieldTypeEnum;
 import com.vci.web.enumpck.UITreeLoadTypeEnum;
-import com.vci.web.query.UIDataGridQuery;
-import com.vci.web.query.UIFormQuery;
-import com.vci.web.query.UILinkTypeDataQuery;
-import com.vci.web.query.UITreeQuery;
 import com.vci.web.service.*;
-import com.vci.web.util.Func;
 import com.vci.web.util.PlatformClientUtil;
 import com.vci.web.util.WebUtil;
 import org.apache.commons.lang3.StringUtils;
+import org.dom4j.DocumentHelper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -142,7 +149,7 @@
         VciBaseUtil.alertNotNull(dataGridQuery,"鏌ヨ瀵硅薄",dataGridQuery.getBtmname(),"涓氬姟绫诲瀷",dataGridQuery.getTableDefineId());
         //鍏堝垽鏂煡璇㈡ā鏉�
         UITableDefineVO tableDefineVO = uiEngineService.getComponentByOid(dataGridQuery.getComponentOid(),null).getTableDefineVO();
-        String queryTemplate = !CollectionUtils.isEmpty(dataGridQuery.getSourceData())?dataGridQuery.getSourceData().getOrDefault("querytemplate",tableDefineVO.getQueryTemplateName()):tableDefineVO.getQueryTemplateName();
+        String queryTemplate = !CollectionUtils.isEmpty(dataGridQuery.getSourceData())? (String) dataGridQuery.getSourceData().getOrDefault("querytemplate",tableDefineVO.getQueryTemplateName()) :tableDefineVO.getQueryTemplateName();
         if(StringUtils.isBlank(queryTemplate)){
             //璇存槑娌℃湁璁剧疆鏌ヨ妯℃澘锛岄渶瑕佺湅鐪嬪湪杩欎釜琛ㄦ牸鎵�鍦ㄧ殑缁勪欢鏈夋病鏈夎缃�
             tableDefineVO = uiEngineService.getTableById(dataGridQuery.getBtmname(), dataGridQuery.getTableDefineId());
@@ -187,7 +194,7 @@
         queryFieldList.add("creator_name");
         queryFieldList.add("lastmodifier_name");
         //鎴戜滑鍦ㄥ悗鍙版煡璇笟鍔℃暟鎹�
-        Map<String, String> replaceMap = wrapperReplaceMap(dataGridQuery.getSourceData());
+        Map<String, Object> replaceMap = wrapperReplaceMap(dataGridQuery.getSourceData());
 
         if(dataGridQuery.isLinkTypeFlag()){
             UILinkTypeDataQuery linkTypeDataQuery = new UILinkTypeDataQuery();
@@ -220,7 +227,7 @@
     public UIFormDataVO getDataForForm(UIFormQuery formQuery) throws VciBaseException, PLException {
         VciBaseUtil.alertNotNull(formQuery,"琛ㄥ崟鐨勬煡璇㈠璞�",formQuery.getBtmname(),"涓氬姟绫诲瀷鐨勪俊鎭�",formQuery.getOid(),"涓氬姟鏁版嵁鐨勪富閿�",formQuery.getFormDefineId(),"琛ㄥ崟鐨勫畾涔夌紪鍙�");
         UIFormDefineVO formDefineVO = uiEngineService.getFormById(formQuery.getBtmname(),formQuery.getFormDefineId());
-        String queryTemplate = !CollectionUtils.isEmpty(formQuery.getSourceData())?formQuery.getSourceData().getOrDefault("querytemplate",formDefineVO.getQueryTemplateName()):formDefineVO.getQueryTemplateName();
+        String queryTemplate = !CollectionUtils.isEmpty(formQuery.getSourceData())? (String) formQuery.getSourceData().getOrDefault("querytemplate",formDefineVO.getQueryTemplateName()) :formDefineVO.getQueryTemplateName();
         Set<String> queryFieldList = formDefineVO.getItems().stream().filter(s->!UIFieldTypeEnum.CUSTOM.getValue().equalsIgnoreCase(s.getType())).map(UIFormItemVO::getField).collect(Collectors.toSet());
         //鑾峰彇鍙傜収
         List<UIFormItemVO> referFieldList = formDefineVO.getItems().stream().filter(s -> UIFieldTypeEnum.REFER.getValue().equalsIgnoreCase(s.getType())).collect(Collectors.toList());
@@ -253,7 +260,7 @@
         queryFieldList.add("creator_name");
         queryFieldList.add("lastmodifier_name");
         Map<String,String> conditionMap = WebUtil.getOidQuery(formQuery.getOid());
-        Map<String, String> replaceMap = wrapperReplaceMap(formQuery.getSourceData());
+        Map<String, Object> replaceMap = wrapperReplaceMap(formQuery.getSourceData());
         UIFormDataVO formDataVO = new UIFormDataVO();
         replaceMap.put("oid", formQuery.getOid().trim());
         if(!formDefineVO.isLinkTypeFlag()) {
@@ -323,13 +330,14 @@
      * @param sourceDataMap 鏉ユ簮鏁版嵁
      * @return 鏇挎崲鍚庣殑鍊�
      */
-    private Map<String,String> wrapperReplaceMap(Map<String,String> sourceDataMap){
-        Map<String,String> replaceMap =!CollectionUtils.isEmpty(sourceDataMap)? sourceDataMap:new HashMap<>();
+    private Map<String,Object> wrapperReplaceMap(Map<String,Object> sourceDataMap){
+        Map<String,Object> replaceMap =!CollectionUtils.isEmpty(sourceDataMap)? sourceDataMap:new HashMap<>();
         if(!replaceMap.containsKey("f_oid")){
             replaceMap.put("f_oid",replaceMap.getOrDefault("oid",""));
         }
-        if(replaceMap.get("f_oid").contains(TREE_NODE_ID_SEP)){
-            replaceMap.put("f_oid",replaceMap.get("f_oid").split(TREE_NODE_ID_SEP)[1]);
+        String fOid = replaceMap.get("f_oid").toString();
+        if(fOid.contains(TREE_NODE_ID_SEP)){
+            replaceMap.put("f_oid",fOid.split(TREE_NODE_ID_SEP)[1]);
         }
         return replaceMap;
     }
@@ -347,7 +355,7 @@
      * @throws VciBaseException 鏌ヨ鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
      */
     @Override
-    public List<Tree> getDataForTree(UITreeQuery treeQuery) throws VciBaseException, PLException {
+    public List<UIDataTree> getDataForTree(UITreeQuery treeQuery) throws Exception {
         VciBaseUtil.alertNotNull(treeQuery,"琛ㄥ崟鐨勬煡璇㈠璞�",treeQuery.getBtmname(),"涓氬姟绫诲瀷鐨勪俊鎭�",treeQuery.getComponentOid(),"鏍戞墍鍦ㄧ殑缁勪欢鐨勪富閿�");
         Map<String, OsAttributeVO> attributeVOMap = attrService.selectAllAttributeMap();
         UIComponentVO componentVO = uiEngineService.getComponentByOid(treeQuery.getComponentOid(),attributeVOMap);
@@ -362,7 +370,14 @@
         if(!treeQuery.isLinkTypeFlag() && StringUtils.isBlank(treeQuery.getParentBtmName())){
             treeQuery.setParentBtmName(treeQuery.getBtmname());
         }
-
+        //TODO: 鏇挎崲鏍戝畾涔変笂鐨勬鍙嶅悜鏌ヨ灞炴�э紝鍥犱负姝e弽鍚戞煡璇㈡槸鐢遍摼鎺ョ被鍨嬫煡璇㈡ā鏉夸笂鎺у埗鐨�
+        boolean isOrientation = false; //鏄惁鍙嶅悜锛屼娇鐢ㄦā鏉夸笂閰嶇疆鐨�
+        String qtName = treeDefineVO.getQueryTemplateName();
+        if(Func.isNotBlank(treeDefineVO.getLinkType()) && Func.isNotBlank(qtName)){
+            QTInfo wrapper = platformClientUtil.getQTDService().getQT(qtName);
+            QueryTemplate qt = OQTool.getQTByDoc(DocumentHelper.parseText(wrapper.qtText), qtName);
+            isOrientation = qt.getDirection().equals("opposite");
+        }
         if(treeQuery.getConditionMap() == null){
             treeQuery.setConditionMap(new HashMap<>());
         }
@@ -381,15 +396,15 @@
         if(StringUtils.isNotBlank(treeQuery.getParentOid()) && treeQuery.getParentOid().contains(TREE_NODE_ID_SEP)){
             treeQuery.setParentOid(treeQuery.getParentOid().split(TREE_NODE_ID_SEP)[1]);
         }
-        String queryTemplate = StringUtils.isNotBlank(treeQuery.getQueryTemplate())?treeQuery.getQueryTemplate():(!CollectionUtils.isEmpty(treeQuery.getSourceData())?treeQuery.getSourceData().getOrDefault("querytemplate",treeDefineVO.getQueryTemplateName()):treeDefineVO.getQueryTemplateName());
-        String valueField = treeQuery.isLinkTypeFlag()?(!treeDefineVO.isOrientation()?"${oid}" + TREE_NODE_ID_SEP + "${t_oid}":"${oid}" + TREE_NODE_ID_SEP + "${f_oid}"):(StringUtils.isNotBlank(treeQuery.getValueField())?treeQuery.getValueField():"oid");
+        String queryTemplate = StringUtils.isNotBlank(treeQuery.getQueryTemplate())?treeQuery.getQueryTemplate():(!CollectionUtils.isEmpty(treeQuery.getSourceData())? (String) treeQuery.getSourceData().getOrDefault("querytemplate",treeDefineVO.getQueryTemplateName()) :treeDefineVO.getQueryTemplateName());
+        String valueField = treeQuery.isLinkTypeFlag()?(!isOrientation?"${oid}" + TREE_NODE_ID_SEP + "${t_oid}":"${oid}" + TREE_NODE_ID_SEP + "${f_oid}"):(StringUtils.isNotBlank(treeQuery.getValueField())?treeQuery.getValueField():"oid");
         String textField = StringUtils.isNotBlank(treeDefineVO.getTreeNodeExpression())?treeDefineVO.getTreeNodeExpression():(StringUtils.isNotBlank(treeQuery.getTextField())?treeQuery.getTextField():"name");
-        List<Tree> rootTreeList = new ArrayList<>();
+        List<UIDataTree> rootTreeList = new ArrayList<>();
         List<String> queryFieldList = new ArrayList<>();
         queryFieldList.add("creator_name");
         queryFieldList.add("lastmodifier_name");
         String rootExpress = StringUtils.isNotBlank(treeQuery.getRootExpress())?treeQuery.getRootExpress():treeDefineVO.getRootContent();
-        Map<String, String> replaceMap = wrapperReplaceMap(treeQuery.getSourceData());
+        Map<String, Object> replaceMap = wrapperReplaceMap(treeQuery.getSourceData());
         if(StringUtils.isBlank(treeDefineVO.getLinkType())){
             //杩欎釜鏄笟鍔$被鍨嬬殑鑷弬鐓�
             //浠ュ墠鐨勫钩鍙版病鏈夊鑷弬鐓ц繖绉嶆湁鍏ㄩ儴鏌ヨ鐨�
@@ -461,7 +476,7 @@
             linkTypeDataQuery.setConditionMap(treeQuery.getConditionMap());
             linkTypeDataQuery.setParentOid(treeQuery.getParentOid());
             linkTypeDataQuery.setClauseList(queryFieldList);
-            linkTypeDataQuery.setDirection(treeDefineVO.isOrientation());
+            linkTypeDataQuery.setDirection(isOrientation);
             linkTypeDataQuery.setToBtmType(treeDefineVO.getBtmType());
             linkTypeDataQuery.setLinkType(treeDefineVO.getLinkType());
             if(UITreeLoadTypeEnum.ALL.getValue().equalsIgnoreCase(treeDefineVO.getLoadType())){
@@ -469,7 +484,7 @@
             }
             if(treeQuery.isQueryRoot()){
                 //鏌ヨ鏍硅妭鐐�.鎴戜滑闇�瑕佸垽鏂槸鍚﹁缃簡鏍硅妭鐐圭殑鏌ヨ鏉′欢
-                List<com.vci.corba.query.data.BOAndLO> rootCbos = null;
+                List<BOAndLO> rootCbos = null;
                 String parentFieldNameAndValue = treeDefineVO.getShowLinkAbs();
                 if(StringUtils.isNotBlank(parentFieldNameAndValue)){
                     if(StringUtils.isNotBlank(queryTemplate)){
@@ -491,7 +506,7 @@
                     }
                     if(!CollectionUtils.isEmpty(rootCbos)){
                         if(StringUtils.isBlank(parentFieldName)){
-                            if(treeDefineVO.isOrientation()){
+                            if(isOrientation){
                                 parentFieldName = "t_oid";
                             }else{
                                 parentFieldName = "f_oid";
@@ -511,15 +526,15 @@
                     if(CollectionUtils.isEmpty(replaceMap)){
                         throw new VciBaseException("鏍硅妭鐐规病鏈夐厤缃煡璇㈡潯浠讹紝涔熸病鏈夋潵婧愭暟鎹�");
                     }
-                    Tree root = new Tree();
-                    root.setOid(replaceMap.getOrDefault("oid",replaceMap.getOrDefault("t_oid","")));
+                    UIDataTree root = new UIDataTree();
+                    root.setOid((String) replaceMap.getOrDefault("oid",replaceMap.getOrDefault("t_oid","")));
                     root.setText(getValueByExpressForBOAndLO(new HashMap<>(),replaceMap,rootExpress));
                     root.setAttributes(replaceMap);
                     root.setIndex("0");
                     rootTreeList.add(root);
 
                     if(StringUtils.isBlank(parentFieldName)){
-                        if(treeDefineVO.isOrientation()){
+                        if(isOrientation){
                             parentFieldName = "t_oid";
                         }else{
                             parentFieldName = "f_oid";
@@ -539,7 +554,7 @@
                     if(linkTypeDataQuery.getReplaceMap() == null){
                         linkTypeDataQuery.setReplaceMap(new HashMap<>());
                     }
-                    linkTypeDataQuery.getReplaceMap().put(treeDefineVO.isOrientation()?"t_oid":"f_oid",treeQuery.getParentOid());
+                    linkTypeDataQuery.getReplaceMap().put(isOrientation?"t_oid":"f_oid",treeQuery.getParentOid());
                 }
                 return cloAndCbo2Trees(loService.queryCLOAndBoByLinkType(linkTypeDataQuery),valueField,textField,parentFieldName,treeQuery.isShowCheckBox(),treeQuery.getParentOid());
             }
@@ -553,7 +568,7 @@
      * @throws VciBaseException 鏌ヨ鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
      */
     @Override
-    public BaseResult getDataByTemp(UITreeQuery treeQuery) throws VciBaseException, PLException {
+    public BaseResult getDataByTemp(UITreeQuery treeQuery) throws Exception {
         VciBaseUtil.alertNotNull(treeQuery,"琛ㄥ崟鐨勬煡璇㈠璞�",treeQuery.getComponentOid(),"褰撳墠缁勪欢鐨勪富閿�");
         //1銆佸厛鏌ヨ椤甸潰瀹氫箟缁勪欢
         Map<String, OsAttributeVO> attributeVOMap = attrService.selectAllAttributeMap();
@@ -563,12 +578,19 @@
         }
         // 2銆佹牴鎹厤缃殑鏌ヨ妯℃澘鏌ヨ鏁版嵁(闇�瑕佽�冭檻鍏ㄩ潰涓�鐐�),
         // 杩欏効鏍规嵁褰撳墠绫诲瀷鏉ヨ幏鍙栨槸浠�涔堢被鍨嬬殑鏌ヨ妯℃澘锛岀劧鍚庡仛瀵瑰簲鐨勬煡璇㈠鐞�
-
+        //TODO: 鏇挎崲鏍戝畾涔変笂鐨勬鍙嶅悜鏌ヨ灞炴�э紝鍥犱负姝e弽鍚戞煡璇㈡槸鐢遍摼鎺ョ被鍨嬫煡璇㈡ā鏉夸笂鎺у埗鐨�
         UITreeDefineVO treeDefineVO = componentVO.getTreeDefineVO();
-        String queryTemplate = StringUtils.isNotBlank(treeQuery.getQueryTemplate())?treeQuery.getQueryTemplate():(!CollectionUtils.isEmpty(treeQuery.getSourceData())?treeQuery.getSourceData().getOrDefault("querytemplate",treeDefineVO.getQueryTemplateName()):treeDefineVO.getQueryTemplateName());
-        Map<String, String> replaceMap = wrapperReplaceMap(treeQuery.getSourceData());
+        boolean isOrientation = false; //鏄惁鍙嶅悜锛屼娇鐢ㄦā鏉夸笂閰嶇疆鐨�
+        String qtName = treeDefineVO.getQueryTemplateName();
+        if(Func.isNotBlank(treeDefineVO.getLinkType()) && Func.isNotBlank(qtName)){
+            QTInfo wrapper = platformClientUtil.getQTDService().getQT(qtName);
+            QueryTemplate qt = OQTool.getQTByDoc(DocumentHelper.parseText(wrapper.qtText), qtName);
+            isOrientation = qt.getDirection().equals("opposite");
+        }
+        String queryTemplate = StringUtils.isNotBlank(treeQuery.getQueryTemplate())?treeQuery.getQueryTemplate():(!CollectionUtils.isEmpty(treeQuery.getSourceData())? (String) treeQuery.getSourceData().getOrDefault("querytemplate",treeDefineVO.getQueryTemplateName()) :treeDefineVO.getQueryTemplateName());
+        Map<String, Object> replaceMap = wrapperReplaceMap(treeQuery.getSourceData());
         List<String> queryFieldList = new ArrayList<>();
-        String valueField = treeQuery.isLinkTypeFlag()?(!treeDefineVO.isOrientation()?"${oid}" + TREE_NODE_ID_SEP + "${t_oid}":"${oid}" + TREE_NODE_ID_SEP + "${f_oid}"):(StringUtils.isNotBlank(treeQuery.getValueField())?treeQuery.getValueField():"oid");
+        String valueField = treeQuery.isLinkTypeFlag()?(!isOrientation?"${oid}" + TREE_NODE_ID_SEP + "${t_oid}":"${oid}" + TREE_NODE_ID_SEP + "${f_oid}"):(StringUtils.isNotBlank(treeQuery.getValueField())?treeQuery.getValueField():"oid");
         String textField = StringUtils.isNotBlank(treeDefineVO.getTreeNodeExpression())?treeDefineVO.getTreeNodeExpression():(StringUtils.isNotBlank(treeQuery.getTextField())?treeQuery.getTextField():"name");
         String rootExpress = StringUtils.isNotBlank(treeQuery.getRootExpress())?treeQuery.getRootExpress():treeDefineVO.getRootContent();
         String parentFieldName = treeQuery.getParentFieldName();
@@ -586,7 +608,7 @@
         List<BusinessObject> rootCbos = boService.queryCBOByScheme(queryTemplate, null, replaceMap);
 
         //3銆佹牴鎹笉鍚岀殑缁勪欢杩斿洖涓嶅悓鐨勬暟鎹被鍨嬶紙鏍戙�佸垪琛ㄣ�佹爲琛ㄣ�佽嚜瀹氫箟妯℃澘銆佽〃鍗曠瓑锛�
-        List<Tree> rootTreeList = null;
+        List<UIDataTree> rootTreeList = null;
         if(!CollectionUtils.isEmpty(rootCbos)){
             rootTreeList = cbo2Trees(rootCbos,valueField,StringUtils.isBlank(rootExpress)?textField:rootExpress,parentFieldName,treeQuery.isShowCheckBox(),null);
             TreeQueryObject treeQueryObject = new TreeQueryObject();
@@ -609,19 +631,19 @@
      * @param queryFieldList 鏌ヨ鐨勫瓧娈�
      * @param treeQueryObject 鏍戝舰鏌ヨ瀵硅薄锛岄渶瑕乿alueField鍜宼extField锛岃繕鏈塸arentFieldName,鍜宑heckBox
      */
-    private void queryTreeForBO(List<Tree> rootTreeList, String queryTemplate,List<String> queryFieldList,TreeQueryObject treeQueryObject) {
-        for (Tree rootTree : rootTreeList) {
+    private void queryTreeForBO(List<UIDataTree> rootTreeList, String queryTemplate,List<String> queryFieldList,TreeQueryObject treeQueryObject) {
+        for (UIDataTree rootTree : rootTreeList) {
             List<BusinessObject> thisChildren = null;
-            Map<String,String> sourceDataMap = rootTree.getAttributes();
+            Map<String,Object> sourceDataMap = rootTree.getAttributes();
             sourceDataMap.put("f_oid",rootTree.getOid());
             Map<String,String> conditionMap = new HashMap<>();
             conditionMap.put(treeQueryObject.getParentFieldName(),rootTree.getOid());
             if (StringUtils.isNotBlank(queryTemplate)) {
                 thisChildren = boService.queryCBOByScheme(queryTemplate, conditionMap, sourceDataMap, null, queryFieldList);
             } else {
-                thisChildren = boService.queryCBO(sourceDataMap.getOrDefault("btmname",sourceDataMap.getOrDefault("btmName",treeQueryObject.getParentBtmName())), conditionMap, null, queryFieldList);
+                thisChildren = boService.queryCBO((String) sourceDataMap.getOrDefault("btmname",sourceDataMap.getOrDefault("btmName",treeQueryObject.getParentBtmName())), conditionMap, null, queryFieldList);
             }
-            List<Tree> childrenTree = cbo2Trees(thisChildren, treeQueryObject.getValueField(), treeQueryObject.getTextField(), treeQueryObject.getParentFieldName(), treeQueryObject.isShowCheckBox(), null);
+            List<UIDataTree> childrenTree = cbo2Trees(thisChildren, treeQueryObject.getValueField(), treeQueryObject.getTextField(), treeQueryObject.getParentFieldName(), treeQueryObject.isShowCheckBox(), null);
             rootTree.setChildren(childrenTree);
             if(treeQueryObject.isQueryAllLevel() && !CollectionUtils.isEmpty(childrenTree) ) {
                 queryTreeForBO(childrenTree,queryTemplate,queryFieldList,treeQueryObject);
@@ -638,8 +660,8 @@
      * @param textField 鏄剧ず琛ㄨ揪寮�
      * @param showCheckBox 鏄惁鏄剧ず澶嶉�夋
      */
-    private void queryTreeForLO(List<Tree> rootTreeList, UILinkTypeDataQuery linkTypeDataQuery,String parentFieldName,String valueField,String textField,boolean showCheckBox) {
-        for (Tree rootTree : rootTreeList) {
+    private void queryTreeForLO(List<UIDataTree> rootTreeList, UILinkTypeDataQuery linkTypeDataQuery,String parentFieldName,String valueField,String textField,boolean showCheckBox) {
+        for (UIDataTree rootTree : rootTreeList) {
             Map<String,String> conditionMap = new HashMap<>();
             conditionMap.put(linkTypeDataQuery.isDirection()?"t_oid":"f_oid",rootTree.getOid());
             linkTypeDataQuery.setConditionMap(conditionMap);
@@ -658,18 +680,21 @@
      * @param parentOid 涓婄骇鐨勪富閿�
      * @return 鏍�
      */
-    private List<Tree> cbo2Trees(Collection<BusinessObject> cbos,String valueField,String textField,String parentFieldName,boolean showCheckBox,String parentOid){
+    private List<UIDataTree> cbo2Trees(Collection<BusinessObject> cbos,String valueField,String textField,String parentFieldName,boolean showCheckBox,String parentOid){
         final int[] i = {0};
-        List<Tree> rootList = new ArrayList<>();
-        List<Tree> children = new ArrayList<>();
+        List<UIDataTree> rootList = new ArrayList<>();
+        List<UIDataTree> children = new ArrayList<>();
         cbos.stream().forEach(cbo->{
-            Tree tree = new Tree();
+            UIDataTree tree = new UIDataTree();
             tree.setOid(getValueByExpress(cbo,valueField));
             tree.setText(getValueByExpress(cbo,textField));
             if(StringUtils.isNotBlank(parentFieldName)){
                 tree.setParentId(ObjectTool.getBOAttributeValue(cbo,parentFieldName));
             }
-            tree.setAttributes(boService.cbo2Map(cbo));
+            Map<String,Object> cbo2Map = boService.cbo2Map(cbo);
+            Map<String, Object> returnMap = new HashMap<>();
+            returnMap.put((String) cbo2Map.get("btmname"),cbo2Map);
+            tree.setAttributes(returnMap);
             tree.setIndex(i[0] + "");
             i[0]++;
             tree.setChecked(showCheckBox);
@@ -683,7 +708,7 @@
         if(rootList.size() == 0 && children.size() == 0){
             return rootList;
         }
-        return Tree.getChildList(rootList,children);
+        return UIDataTree.getChildList(rootList,children);
     }
 
     /**
@@ -696,42 +721,25 @@
      * @param parentOid 涓婄骇鐨勫��
      * @return 鏍戝舰鏁版嵁
      */
-    public List<Tree> cloAndCbo2Trees(Collection<com.vci.corba.query.data.BOAndLO> boAndLOS,String valueField,String textField,String parentFieldName,boolean showCheckBox,String parentOid){
+    public List<UIDataTree> cloAndCbo2Trees(Collection<BOAndLO> boAndLOS, String valueField, String textField, String parentFieldName, boolean showCheckBox, String parentOid){
         final int[] i = {0};
-        List<Tree> rootList = new ArrayList<>();
-        List<Tree> children = new ArrayList<>();
+        List<UIDataTree> rootList = new ArrayList<>();
+        List<UIDataTree> children = new ArrayList<>();
         boAndLOS.stream().forEach(boAndLO->{
-            Tree tree = new Tree();
+            UIDataTree tree = new UIDataTree();
             BusinessObject cbo = new BusinessObject();
             cbo = boAndLO.bo;
             LinkObject clo = new LinkObject();
             clo = boAndLO.lo;
-            Map<String,String> cloMap = loService.clo2Map(clo);
-            Map<String,String> cbo2Map = boService.cbo2Map(cbo);
-            //灏嗛摼鎺ョ被鍨嬬殑灞炴�т篃鏀捐繘杩涜杩斿洖
-            String linkName = Func.isNotBlank(cloMap.get("linktypename")) ? cloMap.get("linktypename"):parentFieldName;
-            Map<String, String> returnMap = new HashMap<>();
-            cloMap.forEach((key,value)->{
-                //杩囨护鎺夌┖鍊�
-                if(!returnMap.containsKey(linkName + key) && Func.isNotBlank(key) || Func.isNotBlank(value)){
-                    returnMap.put(linkName + key,value);
-                }
-            });
-            //杩囨护鎺夌┖鍊硷紝鐢ㄤ綔杩斿洖鐨刴ap
-           cbo2Map.entrySet().stream().forEach(entry -> {
-                String key = entry.getKey();
-                String value = entry.getValue();
-                if (!returnMap.containsKey(key) && Func.isNotBlank(key) && Func.isNotBlank(value)) {
-                    returnMap.put(key,value);
-                }
-            });
+            Map<String,Object> cloMap = loService.clo2Map(clo);
+            Map<String,Object> cbo2Map = boService.cbo2Map(cbo);
 
-            if(!CollectionUtils.isEmpty(cbo2Map)){
+            /*if(!CollectionUtils.isEmpty(cbo2Map)){
                 cbo2Map.forEach((key,value)->{
                     //TODO: 杩欏効涓哄暐瑕佹嫾鎺ヤ笂parentFieldName锛屽鑷村悗闈reemarker琛ㄨ揪寮忔棤娉曟纭浛鎹�
-                    cloMap.put(/*parentFieldName + "." +*/ key,value);
+                    cloMap.put(/*parentFieldName + "." + key,value);
                 });
-            }
+            }*/
             tree.setOid(getValueByExpressForBOAndLO(cloMap,cbo2Map,valueField));
             tree.setText(getValueByExpressForBOAndLO(cloMap,cbo2Map,textField));
             if(StringUtils.isBlank(parentFieldName)){
@@ -743,7 +751,10 @@
                     tree.setParentId(ObjectTool.getLOAttributeValue(clo,parentFieldName));
                 }
             }
-
+            //TODO锛氳繑鍥炵殑鏁版嵁鏀规垚鎸夐摼鎺ョ被鍨嬪拰涓氬姟绫诲瀷涓簁ey锛氬�间负瀵瑰簲鐨勫睘鎬ч泦鍚堝舰寮忚繑鍥�
+            Map<String, Object> returnMap = new HashMap<>();
+            returnMap.put((String) cloMap.get("linktypename"),cloMap);
+            returnMap.put((String) cbo2Map.get("btmname"),cbo2Map);
             tree.setAttributes(returnMap);
             tree.setIndex(i[0] + "");
             i[0]++;
@@ -756,7 +767,7 @@
             }
         });
 
-        return Tree.getChildList(rootList,children);
+        return UIDataTree.getChildList(rootList,children);
     }
 
     /**
@@ -788,17 +799,30 @@
      * @param fieldExpress 琛ㄨ揪寮�
      * @return 鏇挎崲鍚庣殑鍊�
      */
-    private String getValueByExpressForBOAndLO(Map<String,String> valueMap,Map<String,String> boValueMap,String fieldExpress){
+    private String getValueByExpressForBOAndLO(Map<String,Object> valueMap,Map<String,Object> boValueMap,String fieldExpress){
         if(fieldExpress.contains("${")){
             //浣跨敤freemarker澶勭悊
-            return VciBaseUtil.replaceByFreeMarker(fieldExpress,valueMap);
+            /*
+            TODO:琛ㄨ揪寮忓瓨鍦═_OID.name杩欑褰㈠紡鏃秄reemarker鏇挎崲瑙勫垯鏄粠T_OID杩欎釜瀵硅薄涓嫑name灞炴�э紝
+                浣嗘槸valueMap鏄竴涓猄tring,String鐨凪ap鎵�浠ラ渶瑕佸皢T_OID.鎴朏_OID.鍘绘帀锛屽洜涓轰笉绠℃槸鏌ヨ鐨�
+                form绔繕鏄痶o绔兘鏄钩鍙版煡濂芥斁鍦ㄤ笟鍔″睘鎬oValueMap闆嗗悎涓殑锛屾墍浠ョ洿鎺ユ浛灏卞彲浠�
+            */
+            if(fieldExpress.contains(".")){
+                //鍘婚櫎t_oid銆乀_OID浠ュ強f_oid銆丗_OID
+                fieldExpress = fieldExpress
+                        .replace("t_oid.","")
+                        .replace("T_OID.","")
+                        .replace("f_oid.","")
+                        .replace("F_OID.","");
+            }
+            return VciBaseUtil.replaceByFreeMarker(fieldExpress,boValueMap);
         }else {
             List<String> fieldList = VciBaseUtil.str2List(fieldExpress);
-            Map<String,String> valueLowMap = new HashMap<>();
+            Map<String,Object> valueLowMap = new HashMap<>();
             valueMap.forEach((key,value)->{
                 valueLowMap.put(key.toLowerCase(),value);
             });
-            Map<String,String> boLowValueMap = new HashMap<>();
+            Map<String,Object> boLowValueMap = new HashMap<>();
             if(!CollectionUtils.isEmpty(boValueMap)){
                 boValueMap.forEach((key,value)->{
                     boLowValueMap.put(key.toLowerCase(),value);
@@ -806,7 +830,7 @@
             }
             StringBuilder sb = new StringBuilder();
             fieldList.stream().forEach(field->{
-                sb.append(valueLowMap.getOrDefault(field,boLowValueMap.getOrDefault(field,""))).append(" ");
+                sb.append(boLowValueMap.getOrDefault(field,valueLowMap.getOrDefault(field,""))).append(" ");
             });
             return sb.toString().trim();
         }
@@ -854,7 +878,7 @@
         if((baseModelDTOList == null || CollectionUtils.isEmpty(baseModelDTOList.getDataList())) && (baseLinkModelDTOList == null || CollectionUtils.isEmpty(baseLinkModelDTOList.getDataList()))){
             return BaseResult.success();
         }
-        String btmType = (baseModelDTOList !=null && !CollectionUtils.isEmpty(baseModelDTOList.getDataList()))? baseModelDTOList.getDataList().get(0).getBtmname():null;
+        String btmType = (baseModelDTOList !=null && !CollectionUtils.isEmpty(baseModelDTOList.getDataList()))? baseModelDTOList.getDataList().get(0).getBtmName():null;
         String linkType = (baseLinkModelDTOList !=null && !CollectionUtils.isEmpty(baseLinkModelDTOList.getDataList()))?baseLinkModelDTOList.getDataList().get(0).getLinkType():null;
         if(StringUtils.isNotBlank(preEvent)){
             //鍓嶇疆浜嬩欢
@@ -1064,7 +1088,7 @@
     public BaseModelDTOList formData2DTOList(FormDataDTO formDataDTO){
         BaseModelDTOList modelDTOList = new BaseModelDTOList();
         BaseModelDTO modelDTO = new BaseModelDTO();
-        BeanUtil.convert((BaseModelDTO)formDataDTO,modelDTO);
+        BeanUtilForVCI.convert(formDataDTO,modelDTO);
         modelDTO.setData(formDataDTO.getData());
         List<BaseModelDTO> modelDTOS = new ArrayList<>();
         modelDTOS.add(modelDTO);
@@ -1082,7 +1106,7 @@
         BaseLinkModelDTOList modelDTOList = new BaseLinkModelDTOList();
         BaseLinkModelDTO modelDTO = new BaseLinkModelDTO();
         modelDTO.setData(formLinkDataDTO.getData());
-        BeanUtil.convert((BaseLinkModelDTO)formLinkDataDTO,modelDTO);
+        BeanUtilForVCI.convert(formLinkDataDTO,modelDTO);
         List<BaseLinkModelDTO> linkModelDTOS = new ArrayList<>();
         linkModelDTOS.add(modelDTO);
         modelDTOList.setDataList(linkModelDTOS);
@@ -1101,7 +1125,7 @@
         modelDTOS.stream().findAny().orElseGet(()->null);
         formDataDTOList.getFormDataDTOS().forEach(formDataDTO -> {
             BaseModelDTO modelDTO = new BaseModelDTO();
-            BeanUtil.convert((BaseModelDTO)formDataDTO,modelDTO);
+            BeanUtilForVCI.convert((BaseModelDTO)formDataDTO,modelDTO);
             modelDTO.setData(formDataDTO.getData());
             modelDTOS.add(modelDTO);
         });
@@ -1120,7 +1144,7 @@
         List<BaseLinkModelDTO> modelDTOS = new ArrayList<>();
         formLinkDataDTOList.getDataDTOList().forEach(formDataDTO -> {
             BaseLinkModelDTO modelDTO = new BaseLinkModelDTO();
-            BeanUtil.convert((BaseLinkModelDTO)formDataDTO,modelDTO);
+            BeanUtilForVCI.convert((BaseLinkModelDTO)formDataDTO,modelDTO);
             modelDTO.setData(formDataDTO.getData());
             modelDTOS.add(modelDTO);
         });
@@ -1138,8 +1162,8 @@
     @Override
     public BaseResult<Map<String, Object>> addSave(FormDataDTO formDataDTO) throws VciBaseException, PLException {
         //棣栧厛鍒ゆ柇瀵硅薄鏄惁涓虹┖
-        VciBaseUtil.alertNotNull(formDataDTO,"娣诲姞鐨勬暟鎹璞�",formDataDTO.getBtmname(),"涓氬姟绫诲瀷鐨勫悕绉�",formDataDTO.getFormDefineId(),"琛ㄥ崟瀹氫箟鐨勭紪鍙�");
-        UIFormDefineVO formDefineVO = uiEngineService.getFormById(formDataDTO.getBtmname(), formDataDTO.getFormDefineId());
+        VciBaseUtil.alertNotNull(formDataDTO,"娣诲姞鐨勬暟鎹璞�",formDataDTO.getBtmName(),"涓氬姟绫诲瀷鐨勫悕绉�",formDataDTO.getFormDefineId(),"琛ㄥ崟瀹氫箟鐨勭紪鍙�");
+        UIFormDefineVO formDefineVO = uiEngineService.getFormById(formDataDTO.getBtmName(), formDataDTO.getFormDefineId());
         String preEvent = formDataDTO.getPreEvent();
         BaseModelDTOList modelDTOList = formData2DTOList(formDataDTO);
         BaseResult beforeResult = callPreEvent(modelDTOList, null,preEvent, VciChangeDocumentTypeEnum.ADD);
@@ -1248,7 +1272,7 @@
         baseModel.setOid(cbo.oid);
         baseModel.setNameOid(cbo.nameoid);
         baseModel.setRevisionOid(cbo.revisionid);
-        baseModel.setBtmname(cbo.btName);
+        baseModel.setBtmName(cbo.btName);
         baseModel.setLastR(String.valueOf(cbo.isLastR));
         baseModel.setLastV(String.valueOf(cbo.isLastV));
         baseModel.setFirstR(String.valueOf(cbo.isFirstR));
@@ -1405,7 +1429,7 @@
         VciBaseUtil.alertNotNull(formDataDTOList,"瑕佹坊鍔犵殑鏁版嵁",formDataDTOList.getFormDataDTOS(),"瑕佹坊鍔犵殑鏁版嵁");
         //棣栧厛鍒ゆ柇瀵硅薄鏄惁涓虹┖
         FormDataDTO firstFormDataDTO = formDataDTOList.getFormDataDTOS().stream().findFirst().get();
-        UIFormDefineVO formDefineVO = uiEngineService.getFormById(firstFormDataDTO.getBtmname(), firstFormDataDTO.getId());
+        UIFormDefineVO formDefineVO = uiEngineService.getFormById(firstFormDataDTO.getBtmName(), firstFormDataDTO.getId());
         String preEvent = firstFormDataDTO.getPreEvent();
         BaseModelDTOList modelDTOList = formDataList2DTOList(formDataDTOList);
         BaseResult beforeResult = callPreEvent(modelDTOList, null, preEvent, VciChangeDocumentTypeEnum.ADD);
@@ -1442,7 +1466,7 @@
         }
         if(!CollectionUtils.isEmpty(releasedFileOids)){
             releasedFileOids.forEach((oid,fileOids)->{
-                fileObjectService.releasedFile(firstFormDataDTO.getBtmname(),oid,fileOids);
+                fileObjectService.releasedFile(firstFormDataDTO.getBtmName(),oid,fileOids);
             });
         }
         //鍚庣疆浜嬩欢
@@ -1473,8 +1497,8 @@
     @Override
     public BaseResult<Map<String, Object>> editSave(FormDataDTO formDataDTO) throws VciBaseException, PLException {
         //棣栧厛鍒ゆ柇瀵硅薄鏄惁涓虹┖
-        VciBaseUtil.alertNotNull(formDataDTO,"淇敼鐨勬暟鎹璞�",formDataDTO.getBtmname(),"涓氬姟绫诲瀷鐨勫悕绉�",formDataDTO.getFormDefineId(),"琛ㄥ崟瀹氫箟鐨勭紪鍙�");
-        UIFormDefineVO formDefineVO = uiEngineService.getFormById(formDataDTO.getBtmname(), formDataDTO.getFormDefineId());
+        VciBaseUtil.alertNotNull(formDataDTO,"淇敼鐨勬暟鎹璞�",formDataDTO.getBtmName(),"涓氬姟绫诲瀷鐨勫悕绉�",formDataDTO.getFormDefineId(),"琛ㄥ崟瀹氫箟鐨勭紪鍙�");
+        UIFormDefineVO formDefineVO = uiEngineService.getFormById(formDataDTO.getBtmName(), formDataDTO.getFormDefineId());
         String preEvent = formDataDTO.getPreEvent();
         BaseModelDTOList modelDTOList = formData2DTOList(formDataDTO);
         BaseResult beforeResult = callPreEvent(modelDTOList,null, preEvent, VciChangeDocumentTypeEnum.EDIT);
@@ -1518,8 +1542,8 @@
     @Override
     public BaseResult<Map<String, Object>> upRevision(FormDataDTO formDataDTO) throws VciBaseException, PLException {
         //棣栧厛鍒ゆ柇瀵硅薄鏄惁涓虹┖
-        VciBaseUtil.alertNotNull(formDataDTO,"淇敼鐨勬暟鎹璞�",formDataDTO.getBtmname(),"涓氬姟绫诲瀷鐨勫悕绉�",formDataDTO.getFormDefineId(),"琛ㄥ崟瀹氫箟鐨勭紪鍙�",formDataDTO.getCopyFromVersion(),"鑰佺増鏈殑涓婚敭");
-        UIFormDefineVO formDefineVO = uiEngineService.getFormById(formDataDTO.getBtmname(), formDataDTO.getFormDefineId());
+        VciBaseUtil.alertNotNull(formDataDTO,"淇敼鐨勬暟鎹璞�",formDataDTO.getBtmName(),"涓氬姟绫诲瀷鐨勫悕绉�",formDataDTO.getFormDefineId(),"琛ㄥ崟瀹氫箟鐨勭紪鍙�",formDataDTO.getCopyFromVersion(),"鑰佺増鏈殑涓婚敭");
+        UIFormDefineVO formDefineVO = uiEngineService.getFormById(formDataDTO.getBtmName(), formDataDTO.getFormDefineId());
         String preEvent = formDataDTO.getPreEvent();
         BaseModelDTOList modelDTOList = formData2DTOList(formDataDTO);
         BaseResult beforeResult = callPreEvent(modelDTOList, null,preEvent, VciChangeDocumentTypeEnum.UPREVISION);
@@ -1532,7 +1556,7 @@
         Map<String,String> conditionMap = WebUtil.getOidQuery(formDataDTO.getCopyFromVersion());
         conditionMap.put("ts", VciDateUtil.date2Str(ts,VciDateUtil.DateTimeMillFormat));
         conditionMap.put("oid",formDataDTO.getCopyFromVersion());
-        businessObjects = boService.queryCBO(formDataDTO.getBtmname(), conditionMap);
+        businessObjects = boService.queryCBO(formDataDTO.getBtmName(), conditionMap);
         if(businessObjects.size() ==0){
             throw new VciBaseException("鏁版嵁涓嶆槸鏈�鏂扮殑锛屽缓璁偍鍒锋柊鍚庨噸鏂版搷浣�");
         }
@@ -1579,7 +1603,7 @@
         VciBaseUtil.alertNotNull(formDataDTOList,"瑕佷慨鏀圭殑鏁版嵁",formDataDTOList.getFormDataDTOS(),"瑕佷慨鏀圭殑鏁版嵁");
         //棣栧厛鍒ゆ柇瀵硅薄鏄惁涓虹┖
         FormDataDTO firstFormDataDTO = formDataDTOList.getFormDataDTOS().stream().findFirst().get();
-        UIFormDefineVO formDefineVO = uiEngineService.getFormById(firstFormDataDTO.getBtmname(), firstFormDataDTO.getId());
+        UIFormDefineVO formDefineVO = uiEngineService.getFormById(firstFormDataDTO.getBtmName(), firstFormDataDTO.getId());
         String preEvent = firstFormDataDTO.getPreEvent();
         BaseModelDTOList modelDTOList = formDataList2DTOList(formDataDTOList);
         BaseResult beforeResult = callPreEvent(modelDTOList,null, preEvent, VciChangeDocumentTypeEnum.EDIT);
@@ -1609,7 +1633,7 @@
         }
         if(!CollectionUtils.isEmpty(releasedFileOids)){
             releasedFileOids.forEach((oid,fileOids)->{
-                fileObjectService.releasedFile(firstFormDataDTO.getBtmname(),oid,fileOids);
+                fileObjectService.releasedFile(firstFormDataDTO.getBtmName(),oid,fileOids);
             });
         }
         //鍚庣疆浜嬩欢
@@ -1634,7 +1658,7 @@
     @Override
     public BaseResult batchDelete(DeleteDataDTO deleteDataDTO) throws VciBaseException, PLException {
         VciBaseUtil.alertNotNull(deleteDataDTO,"鏁版嵁浼犺緭瀵硅薄",deleteDataDTO.getDataList(),"鏁版嵁浼犺緭瀵硅薄");
-        String btmName = deleteDataDTO.getDataList().get(0).getBtmname();
+        String btmName = deleteDataDTO.getDataList().get(0).getBtmName();
         List<String> oidList = deleteDataDTO.getDataList().stream().map(BaseModelDTO::getOid).collect(Collectors.toList());
         //鐪嬬湅绾ц仈鍒犻櫎銆傚彧鏈夎嚜宸卞紩鐢ㄨ嚜宸辩殑鏃跺�欏彲浠ョ骇鑱斿垹闄�
         List<BusinessObject> cbo = null;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIEngineServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIEngineServiceImpl.java
index 2d19927..d07d472 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIEngineServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIEngineServiceImpl.java
@@ -10,7 +10,10 @@
 import com.vci.pagemodel.*;
 import com.vci.starter.web.annotation.log.VciUnLog;
 import com.vci.starter.web.exception.VciBaseException;
-import com.vci.starter.web.util.*;
+import com.vci.starter.web.util.BeanUtilForVCI;
+import com.vci.starter.web.util.LangBaseUtil;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.util.VciDateUtil;
 import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
 import com.vci.web.enumpck.UIComponentDisplayTypeEnum;
 import com.vci.web.enumpck.UIComponentTypeEnum;
@@ -660,7 +663,7 @@
 						&& !UIFieldTypeEnum.CUSTOM.getValue().equalsIgnoreCase(s.getFieldType())).forEach(fieldVO->{
 					//鍒楄〃閲岄潰涓嶆斁edit锛岃�屾煡璇㈤噷闈㈤渶瑕佹斁edit
 					UITableFieldVO queryFieldVO = new UITableFieldVO();
-					BeanUtil.convert(fieldVO,queryFieldVO);
+					BeanUtilForVCI.convert(fieldVO,queryFieldVO);
 					canQueryFields.add(queryFieldVO);
 				});
 				tableDefineVO.setSeniorQueryColumns(canQueryFields);
@@ -928,7 +931,7 @@
 						List<UIComponentVO> southCompVO = componentVOs.stream().filter(s->!s.getOid().equals(firstCompVO.getOid())).collect(Collectors.toList());
 
 						UILayoutVO centerVO = new UILayoutVO();
-						BeanUtil.convert(layoutVO,centerVO);
+						BeanUtilForVCI.convert(layoutVO,centerVO);
 						centerVO.setOid(centerVO.getOid() + "_center");
 						centerVO.setLayoutAreaType(UILayoutAreaTypeEnum.CENTER.getValue());
 						centerVO.setOrderNum(0);
@@ -946,7 +949,7 @@
 						//鍏朵綑鐨勪綔涓簊outh
 						if(!CollectionUtils.isEmpty(southCompVO)) {
 							UILayoutVO southVO = new UILayoutVO();
-							BeanUtil.convert(layoutVO, southVO);
+							BeanUtilForVCI.convert(layoutVO, southVO);
 							southVO.setOid(centerVO.getOid() + "_south");
 							southVO.setLayoutAreaType(UILayoutAreaTypeEnum.SOUTH.getValue());
 							southVO.setOrderNum(0);
@@ -1316,7 +1319,7 @@
 				if(tableDefineVO != null) {
 
 					UITreeTableDefineVO treeTableDefineVO = new UITreeTableDefineVO();
-					BeanUtil.convert(tableDefineVO, treeTableDefineVO);
+					BeanUtilForVCI.convert(tableDefineVO, treeTableDefineVO);
 					if(isLink){
 						treeTableDefineVO.setTreeCurrentField("t_oid");
 						treeTableDefineVO.setTreeParentField("f_oid");
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java
index 15dda69..8def5a8 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java
@@ -1,7 +1,5 @@
 package com.vci.web.service.impl;
 
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
 import com.vci.common.utility.ObjectUtility;
 import com.vci.corba.common.PLException;
 import com.vci.corba.common.data.UserEntityInfo;
@@ -19,36 +17,32 @@
 import com.vci.starter.poi.util.ExcelUtil;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.*;
-import com.vci.starter.web.pagemodel.BaseQueryObject;
-import com.vci.starter.web.pagemodel.BaseResult;
-import com.vci.starter.web.pagemodel.DataGrid;
-import com.vci.starter.web.pagemodel.SessionInfo;
-import com.vci.starter.web.util.*;
 import com.vci.starter.web.redis.RedisService;
+import com.vci.starter.web.util.*;
+import com.vci.starter.web.util.Lcm.BeanUtil;
+import com.vci.starter.web.util.Lcm.CollectionUtil;
+import com.vci.starter.web.util.Lcm.Func;
 import com.vci.web.service.OsBtmServiceI;
 import com.vci.web.service.UIManagerServiceI;
-import com.vci.web.util.*;
-import com.vci.web.util.BeanUtil;
-import com.vci.web.utility.UIDataFetcher;
-import org.apache.commons.lang3.StringUtils;
-import com.vci.web.util.Func;
 import com.vci.web.util.PlatformClientUtil;
+import com.vci.web.util.RightControlUtil;
 import com.vci.web.util.UITools;
+import com.vci.web.utility.UIDataFetcher;
 import lombok.AllArgsConstructor;
 import lombok.NoArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+
 import javax.annotation.Resource;
-import javax.swing.tree.TreePath;
 import java.io.File;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
-import java.util.stream.Collectors;
 import java.util.regex.Pattern;
-import java.util.stream.Stream;
+import java.util.stream.Collectors;
 
 /**
  * UI瀹氫箟鏈嶅姟鐣岄潰鐩稿叧鎺ュ彛
@@ -1766,7 +1760,7 @@
     @Override
     public boolean authorizedUI(UIAuthorDTO uiAuthorDTO) throws Exception {
         boolean res=false;
-        if(uiAuthorDTO==null||CollectionUtil.isEmpty(uiAuthorDTO.getSelectTreeList())){
+        if(uiAuthorDTO==null|| CollectionUtil.isEmpty(uiAuthorDTO.getSelectTreeList())){
             throw  new VciBaseException("璇烽�夋嫨鑺傜偣杩涜鎺堟潈!");
         }
         BaseQueryObject treeQueryObject=new BaseQueryObject();
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebBtmIOServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebBtmIOServiceImpl.java
index 43a3303..b86be2a 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebBtmIOServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebBtmIOServiceImpl.java
@@ -21,7 +21,8 @@
 import com.vci.starter.web.constant.FrameWorkLcStatusConstant;
 import com.vci.starter.web.enumpck.VciFieldTypeEnum;
 import com.vci.starter.web.exception.VciBaseException;
-import com.vci.starter.web.util.BeanUtil;
+import com.vci.starter.web.util.BeanUtilForVCI;
+import com.vci.starter.web.util.Lcm.Func;
 import com.vci.starter.web.util.LocalFileUtil;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.starter.web.util.VciDateUtil;
@@ -29,7 +30,6 @@
 import com.vci.starter.word.util.WordUtil;
 import com.vci.web.properties.OsDDLExportWordFieldProperties;
 import com.vci.web.service.*;
-import com.vci.web.util.Func;
 import com.vci.web.util.PlatformClientUtil;
 import com.vci.web.util.WebUtil;
 import org.apache.commons.lang3.StringUtils;
@@ -801,7 +801,7 @@
                 List<OsBtmTypeAttributeVO> attributes = new ArrayList<>();
                 linkAttributes.stream().forEach(t -> {
                     OsBtmTypeAttributeVO attributeVO = new OsBtmTypeAttributeVO();
-                    BeanUtil.convert(t,attributeVO);
+                    BeanUtilForVCI.convert(t,attributeVO);
                     attributeVO.setPkBtmType(t.getPkLinkType());
                     attributes.add(attributeVO);
                 });
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebInitServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebInitServiceImpl.java
deleted file mode 100644
index a0e84d5..0000000
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebInitServiceImpl.java
+++ /dev/null
@@ -1,180 +0,0 @@
-package com.vci.web.service.impl;
-
-import com.vci.frameworkcore.compatibility.ISmFunctionQueryService;
-import com.vci.starter.web.enumpck.DataSecretEnum;
-import com.vci.starter.web.exception.VciBaseException;
-import com.vci.starter.web.properties.VciSessionProperties;
-import com.vci.starter.web.util.ApplicationContextProvider;
-import com.vci.web.properties.WebProperties;
-import com.vci.web.service.*;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import org.springframework.util.CollectionUtils;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * 鍒濆鍖栧悗鐨勫鐞嗙紦瀛樼殑鏈嶅姟
- * @author weidy
- * @date 2022-1-12
- */
-@Component
-public class WebInitServiceImpl {
-
-    /**
-     * 涓氬姟绫诲瀷
-     */
-    @Autowired
-    private OsBtmServiceI btmService;
-
-    /**
-     * 閾炬帴绫诲瀷
-     */
-    @Autowired
-    private OsLinkTypeServiceI linkTypeService;
-
-    /**
-     * UI
-     */
-    @Autowired
-    private UIEngineServiceI uiEngineService;
-
-    /**
-     * 鑿滃崟
-     */
-    @Autowired
-    private ISmFunctionQueryService functionQueryService;
-    /**
-     * 瀵嗙骇鏈嶅姟
-     */
-    @Autowired
-    private WebSecretServiceI webSecretService;
-
-    /**
-     * 鐘舵�佺殑鏈嶅姟
-     */
-    @Autowired
-    private OsStatusServiceI statusService;
-
-    /**
-     * 鐢熷懡鍛ㄦ湡鐨勬湇鍔�
-     */
-    @Autowired
-    private OsLifeCycleServiceI lifeCycleService;
-
-    /**
-     * 鏋氫妇鐨勬湇鍔�
-     */
-    @Autowired
-    private OsEnumServiceI enumService;
-
-    /**
-     * 瑙勫垯鐨勬湇鍔�
-     */
-    @Autowired
-    private OsRevisionRuleServiceI revisionRuleService;
-
-    /**
-     * 灞炴�х殑鏈嶅姟
-     */
-    @Autowired
-    private OsAttributeServiceI attributeService;
-
-    /**
-     * 浼氳瘽鐨勪俊鎭�
-     */
-    @Autowired(required = false)
-    private VciSessionProperties sessionProperties;
-
-    /**
-     * web鐩稿叧閰嶇疆
-     */
-    @Autowired
-    private WebProperties webProperties;
-
-    /**
-     * 涓氬姟绫诲瀷鐨勬湇鍔�
-     */
-    @Autowired
-    private WebBoServiceI boService;
-
-    /**
-     * 涓绘湇鍔℃槸鍚﹀湪鎵ц缂撳瓨
-     * @return true琛ㄧず娌℃湁鎵ц锛屾墽琛屼腑浼氭姏鍑哄紓甯�
-     */
-    public boolean checkMainServerUnCache(){
-        //鐪嬬湅涓绘湇鍔″湪鎵ц鍒锋柊缂撳瓨娌℃湁
-        boolean finishInitCache = false;
-        for(int i = 0 ; i < 10 ; i++){
-            if(boService.queryCountBySql("select count(*) from plcachetemp",new HashMap<>()) ==0){
-                finishInitCache = true;
-                break;
-            }else{
-                //璇存槑涓绘湇鍔″湪鎵ц
-                try {
-                    Thread.sleep(1000);
-                } catch (InterruptedException e) {
-                    e.printStackTrace();
-                }
-            }
-        }
-        if(!finishInitCache){
-            throw new VciBaseException("鏆傛椂涓嶈兘鍒锋柊锛屽洜涓轰富鏈嶅姟杩樻鍦ㄦ墽琛屽垵濮嬪寲缂撳瓨");
-        }
-        return finishInitCache;
-    }
-
-    /**
-     * 娓呴櫎鎵�鏈夌殑缂撳瓨
-     */
-    public void clearAllCache(){
-        Map<String, OsBaseServiceI> beans = ApplicationContextProvider.getApplicationContext().getBeansOfType(OsBaseServiceI.class);
-        if(!CollectionUtils.isEmpty(beans)){
-            beans.forEach((name,bean)->{
-                bean.clearCache();
-            });
-        }
-    }
-
-    /**
-     *  鍒濆鍖栨湇鍔$鐨勭紦瀛�
-     * @throws Exception 鏌ヨ鐨勬椂鍊欏嚭鐜伴敊璇殑鏃跺��
-     */
-    public void initServerCache(){
-        long currentTime = System.currentTimeMillis();
-        System.out.println("寮�濮嬪惎鍔ㄧ姸鎬佹睜鐨勭紦瀛橈紝鏃堕棿鏈夌偣闀匡紝璇疯�愬績绛夊緟");
-        statusService.selectAllStatusMap();
-        System.out.println("鐘舵�佹睜鐨勫埛鏂板畬鎴�,鑰楁椂" + (System.currentTimeMillis()-currentTime) + ",寮�濮嬪埛鏂扮敓鍛藉懆鏈�");
-        currentTime = System.currentTimeMillis();
-        lifeCycleService.selectAllLifeCycleMap();
-        System.out.println("鐢熷懡鍛ㄦ湡鍒锋柊瀹屾垚,鑰楁椂" + (System.currentTimeMillis()-currentTime) + ",寮�濮嬪埛鏂版灇涓�");
-        currentTime = System.currentTimeMillis();
-        enumService.selectAllEnumMap();
-
-        System.out.println(DataSecretEnum.NONE.getValue());
-        System.out.println("鏋氫妇鍒锋柊瀹屾垚,鑰楁椂" + (System.currentTimeMillis()-currentTime) + ",寮�濮嬪埛鏂扮増鏈鍒�");
-        currentTime = System.currentTimeMillis();
-        revisionRuleService.selectAllRevisionMap();
-        System.out.println("鐗堟湰瑙勫垯鍒锋柊瀹屾垚,鑰楁椂" + (System.currentTimeMillis()-currentTime) + ",寮�濮嬪埛鏂板睘鎬�");
-        currentTime = System.currentTimeMillis();
-        attributeService.selectAllAttributeMap();
-        System.out.println("灞炴�у埛鏂板畬鎴�,鑰楁椂" + (System.currentTimeMillis()-currentTime) + ",寮�濮嬪埛鏂颁笟鍔$被鍨�");
-        currentTime = System.currentTimeMillis();
-        btmService.selectAllBtmMap();
-        System.out.println("涓氬姟绫诲瀷鍒锋柊瀹屾垚,鑰楁椂" + (System.currentTimeMillis()-currentTime) + ",寮�濮嬪埛鏂伴摼鎺ョ被鍨�");
-        currentTime = System.currentTimeMillis();
-        linkTypeService.selectAllLinkMap();
-        System.out.println("閾炬帴绫诲瀷鍒锋柊瀹屾垚,鑰楁椂" + (System.currentTimeMillis()-currentTime) + ",寮�濮嬪埛鏂癠I涓婁笅鏂�");
-        currentTime = System.currentTimeMillis();
-        if(webProperties.isCacheUIOnInit()) {
-            uiEngineService.selectAllFormMap();
-        }
-        uiEngineService.selectAllActionMap();
-        System.out.println("UI涓婁笅鏂囧埛鏂板畬鎴�,鑰楁椂" + (System.currentTimeMillis()-currentTime) );
-        currentTime = System.currentTimeMillis();
-        functionQueryService.selectAllFunctionMap();
-        System.out.println("鑿滃崟鍒锋柊,鑰楁椂" + (System.currentTimeMillis()-currentTime) );
-    }
-}
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebLogServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebLogServiceImpl.java
index 0023c06..487f070 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebLogServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebLogServiceImpl.java
@@ -1,9 +1,9 @@
 package com.vci.web.service.impl;
 
+import com.vci.bo.VciLogObjectBO;
 import com.vci.corba.common.data.UserEntityInfo;
 import com.vci.starter.web.pagemodel.SessionInfo;
 import com.vci.starter.web.util.WebThreadLocalUtil;
-import com.vci.bo.VciLogObjectBO;
 import com.vci.web.service.WebLogServiceI;
 import com.vci.web.util.PlatformClientUtil;
 import com.vci.web.util.WebUtil;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/BusAnnotationUtil.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/BusAnnotationUtil.java
deleted file mode 100644
index f97f961..0000000
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/BusAnnotationUtil.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package com.vci.web.util;
-
-import com.vci.starter.web.exception.VciBaseException;
-import com.vci.starter.web.util.ApplicationContextProvider;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.util.CollectionUtils;
-
-import java.lang.reflect.Method;
-import java.util.Map;
-
-/**
- * 涓氬姟鐨勬敞瑙e伐鍏风被
- * @author weidy
- * @date 2022-04-12
- */
-public class BusAnnotationUtil {
-
-    /**
-     * 鏃ュ織
-     */
-    private static Logger logger = LoggerFactory.getLogger(BusAnnotationUtil.class);
-
-    /**
-     * 閫氳繃娉ㄨВ鍘昏皟鐢ㄥ搴旂殑鏂规硶
-     * @param classAnnotation 绫荤殑娉ㄨВ
-     * @param methodAnnotation 鏂规硶鐨勬敞瑙�
-     * @param args 鍙傛暟
-     */
-    public static void callForAnnotation(Class classAnnotation,Class methodAnnotation,Object ... args){
-        //鍦ㄧ櫥褰曚箣鍓嶏紝鐪嬬湅鏄惁鏈夋彃浠�
-        Map<String, Object> beanMap = ApplicationContextProvider.getApplicationContext().getBeansWithAnnotation(classAnnotation);
-        if (!CollectionUtils.isEmpty(beanMap)) {
-            beanMap.forEach((k, v) -> {
-                Method[] methods = v.getClass().getSuperclass().getDeclaredMethods();
-                if (methods != null && methods.length > 0) {
-                    for (Method method : methods) {
-                        if (method.isAnnotationPresent(methodAnnotation)) {
-                            try {
-                                method.invoke(v, args);
-                            } catch (Throwable e) {
-                                if (logger.isErrorEnabled()) {
-                                    logger.error("璋冪敤鎻掍欢鍑洪敊", e);
-                                }
-                                throw new VciBaseException("璋冪敤鎻掍欢鍑洪敊,{0},{1}", new String[]{v.getClass().getName(), method.getName()}, e);
-                            }
-                        }
-                    }
-                }
-            });
-        }
-    }
-}
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/RightControlUtil.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/RightControlUtil.java
index 154b35b..2037c31 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/RightControlUtil.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/RightControlUtil.java
@@ -1,6 +1,5 @@
 package com.vci.web.util;
-import com.vci.client.common.objects.RoleObject;
-import com.vci.common.exception.VciException;
+
 import com.vci.corba.common.PLException;
 import com.vci.corba.framework.data.FunctionInfo;
 import com.vci.corba.framework.data.RoleInfo;
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/UITools.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/UITools.java
index 80576d3..84b7a58 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/UITools.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/UITools.java
@@ -1,10 +1,9 @@
 package com.vci.web.util;
 
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import com.vci.corba.portal.data.PLPageDefination;
+import com.vci.client.common.providers.ClientServiceProvider;
+import com.vci.common.portal.constants.PLDefinationConstants;
+import com.vci.common.portal.constants.PRMConstants;
+import com.vci.corba.portal.PortalServicePrx;
 import com.vci.model.PLDefination;
 import com.vci.model.PRMDO;
 import com.vci.model.PRMItemDO;
@@ -14,10 +13,9 @@
 import org.dom4j.DocumentHelper;
 import org.dom4j.Element;
 
-import com.vci.client.common.providers.ClientServiceProvider;
-import com.vci.common.portal.constants.PLDefinationConstants;
-import com.vci.common.portal.constants.PRMConstants;
-import com.vci.corba.portal.PortalServicePrx;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
 
 
 /**
@@ -542,6 +540,12 @@
 			node = rootNode.addElement(PLDefinationConstants.QUERYTEMPLATENAME);
 			node.setText(obj.getQueryTemplateName());
 
+			node = rootNode.addElement(PLDefinationConstants.QUERYTEMPLATENAME);
+			node.setText(obj.getBsCustQueryCLsOrUrl());
+
+			node = rootNode.addElement(PLDefinationConstants.QUERYTEMPLATENAME);
+			node.setText(obj.getCsCustQueryCLsOrUrl());
+
 			node = rootNode.addElement(PLDefinationConstants.SUBUIOBJTYPE);
 			node.setText(obj.getSubUiObjType());
 
@@ -662,6 +666,12 @@
 				elementText = root.elementText(PLDefinationConstants.QUERYTEMPLATENAME);
 				obj.setQueryTemplateName(elementText == null ? "" : elementText);
 
+				elementText = root.elementText(PLDefinationConstants.BSCUSTQUERYCLSORURL);
+				obj.setBsCustQueryCLsOrUrl(elementText == null ? "" : elementText);
+
+				elementText = root.elementText(PLDefinationConstants.CSCUSTQUERYCLSORURL);
+				obj.setCsCustQueryCLsOrUrl(elementText == null ? "" : elementText);
+
 				elementText = root.elementText(PLDefinationConstants.SUBUILAYOUT);
 				obj.setSubUILayout(elementText == null ? "" : elementText);
 			}
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/resources/application-dev.yml b/Source/plt-web/plt-web-parent/plt-web/src/main/resources/application-dev.yml
index c541904..cd1ad31 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/resources/application-dev.yml
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/resources/application-dev.yml
@@ -6,7 +6,7 @@
   private-token-key: vciweb20210212
 ###tomcat鐩稿叧鐨勯厤缃�
 server:
-  port: 12005
+  port: 12000
   servlet:
     context-path: /web
   tomcat:
@@ -17,23 +17,6 @@
   level:
     com.vci: debug
   root: info
-###鏈」鐩殑閰嶇疆锛屾敞鎰弒pring瀹舵棌璇诲彇閰嶇疆鏃讹紝澶у啓瀛楁瘝闇�瑕佽浆鎹负-鐨勬柟寮忥紝鑰宖eign闇�瑕佸ぇ灏忓啓瀹屽叏鐩稿悓
-session:
-     session-info-storage-type: "database"
-     database-platform: oracle
-     clear-session-on-start: false
-     ###鏄惁寮�鍚敤鎴峰湪绾挎鏌�
-     checkSessionTimeout: false
-     ###瀹㈡埛绔垽鏂秴鏃惰疆璇㈡椂闂达紝鍗曚綅涓虹
-     sessionInterval: 10
-     ###瀹㈡埛绔渶澶у瓨鍦ㄦ椂闂达紝鍗曚綅涓哄垎閽�
-     sessionIdlTime: 30
-     ###瓒呮椂鎻愰啋鏃堕棿锛屽崟浣嶄负鍒嗛挓
-     sessionRemind: 3
-user-table-compatibility: "platform1"
-#鍙�2021鐗堟湰鐨勯儴鍒嗘帴鍙g殑褰卞搷锛屼笅闈㈢殑鍐呭闇�瑕侀厤缃紝
-vciPlatform:
-  objectServiceUrl: ""
 #缂撳瓨
 spring:
   # redis閰嶇疆
@@ -42,7 +25,7 @@
     host: localhost  # ip鍦板潃
     database: 2  # redis鏁版嵁搴�  0-15
     port: 6379  # 绔彛鍙�
-    password: foobared # 鏃犲瘑鐮佷笉濉�
+    password: 123456 # 鏃犲瘑鐮佷笉濉�
     timeout: 30000s   # 杩炴帴瓒呮椂鏃堕棿 锛堥粯璁�1澶╋級
     lettuce:
       shutdown-timeout: 100ms # 鍏抽棴瓒呮椂鏃堕棿 榛樿 100ms
@@ -70,15 +53,46 @@
   mvc:
     view:
       suffix: .html
+
+#骞冲彴鐩稿叧閰嶇疆
+plt:
+  #浜哄憳淇℃伅褰曞叆鏃�,鏄惁闇�瑕佸瘑绾у瓧娈�
+  export-secret-grade: false
+
+###涓氬姟椤圭洰鐨勯厤缃紝娉ㄦ剰spring瀹舵棌璇诲彇閰嶇疆鏃讹紝澶у啓瀛楁瘝闇�瑕佽浆鎹负-鐨勬柟寮忥紝鑰宖eign闇�瑕佸ぇ灏忓啓瀹屽叏鐩稿悓
+session:
+  session-info-storage-type: "database"
+  database-platform: oracle
+  clear-session-on-start: false
+  ###鏄惁寮�鍚敤鎴峰湪绾挎鏌�
+  checkSessionTimeout: false
+  ###瀹㈡埛绔垽鏂秴鏃惰疆璇㈡椂闂达紝鍗曚綅涓虹
+  sessionInterval: 10
+  ###瀹㈡埛绔渶澶у瓨鍦ㄦ椂闂达紝鍗曚綅涓哄垎閽�
+  sessionIdlTime: 30
+  ###瓒呮椂鎻愰啋鏃堕棿锛屽崟浣嶄负鍒嗛挓
+  sessionRemind: 3
+
 ##web閰嶇疆
 vciweb:
     debug: true
 
+#鏂囦欢棰勮閰嶇疆
 file-preview:
   enabled: true
   preview-service-url: "http://dev.yunkeruida.top:28090/vciFilePreview/ajaxPreview.html"
   preview-system-key: plt2020
 
+#feign鍦板潃
+feign:
+  #鎵弿宸ュ叿鏈嶅姟
+  scanServiceUrl: ""
+  #骞冲彴鏈嶅姟
+  pltServiceUrl: ""
+  #鏂囦欢鏈嶅姟
+  fileServiceUrl: ""
+
+#springmvc閰嶇疆
 vcispringmvc:
   enabled: true
   #涓嶆牎楠屽畨鍏ㄧ殑閾炬帴鍦板潃
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/resources/application-prod.yml b/Source/plt-web/plt-web-parent/plt-web/src/main/resources/application-prod.yml
index 6f287af..707f55d 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/resources/application-prod.yml
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/resources/application-prod.yml
@@ -9,13 +9,57 @@
   port: 12000
   servlet:
     context-path: /web
+  tomcat:
+    uri-encoding: UTF-8
 ###log4j2鐨勯厤缃紝闇�瑕佸摢涓寘涓嬬殑鏂囦欢寮�鍚煇涓瓑绾э紝灏辩洿鎺xxxx: yy杩欐牱鏂瑰紡
 logging:
   config: "classpath:log4j2-spring-prod.xml"
   level:
     com.vci: debug
   root: info
-###鏈」鐩殑閰嶇疆锛屾敞鎰弒pring瀹舵棌璇诲彇閰嶇疆鏃讹紝澶у啓瀛楁瘝闇�瑕佽浆鎹负-鐨勬柟寮忥紝鑰宖eign闇�瑕佸ぇ灏忓啓瀹屽叏鐩稿悓
+#缂撳瓨
+spring:
+  # redis閰嶇疆
+  redis:  ###### redis 閰嶇疆
+    enabled: true  #true锛屽惎鐢╮edi锛宖alse涓嶅惎鐢紝榛樿false,閰嶇疆鏂囦欢娌℃湁杩欎簺榛樿涓嶅惎鐢╮edis
+    host: localhost  # ip鍦板潃
+    database: 2  # redis鏁版嵁搴�  0-15
+    port: 6379  # 绔彛鍙�
+    password: foobared # 鏃犲瘑鐮佷笉濉�
+    timeout: 30000s   # 杩炴帴瓒呮椂鏃堕棿 锛堥粯璁�1澶╋級
+    lettuce:
+      shutdown-timeout: 100ms # 鍏抽棴瓒呮椂鏃堕棿 榛樿 100ms
+      pool: # lettuce 杩炴帴姹�
+        max-active: 8 # 杩炴帴姹犳渶澶ц繛鎺ユ暟 榛樿 8锛�-1 锛氳〃绀烘病鏈夐檺鍒讹級
+        max-wait: 60000ms # 杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂� 榛樿-1ms 锛�-1 :琛ㄧず娌℃湁闄愬埗锛� 杩欓噷璁剧疆1鍒嗛挓
+        max-idle: 8 # 鏈�澶х┖闂茶繛鎺�  榛樿 8
+        min-idle: 0 # 鏈�灏忕┖闂茶繛鎺�  榛樿 0
+  resources:
+    chain:
+      cache: false
+      strategy:
+        content:
+          enabled: true
+          paths: /**
+  cache:
+    type: ehcache
+  servlet:
+    multipart:
+      enabled: true
+      ###鍗曚釜鏂囦欢澶у皬锛�50M
+      max-file-size: 52428800
+      ###鎬讳笂浼犵殑鏂囦欢澶у皬锛�50M
+      max-request-size: 52428800
+  mvc:
+    view:
+      suffix: .html
+
+#骞冲彴鐩稿叧閰嶇疆
+plt:
+  #浜哄憳淇℃伅褰曞叆鏃�,鏄惁闇�瑕佸瘑绾у瓧娈�
+  export-secret-grade: false
+
+###涓氬姟椤圭洰鐨勯厤缃紝娉ㄦ剰spring瀹舵棌璇诲彇閰嶇疆鏃讹紝澶у啓瀛楁瘝闇�瑕佽浆鎹负-鐨勬柟寮忥紝鑰宖eign闇�瑕佸ぇ灏忓啓瀹屽叏鐩稿悓
 session:
   session-info-storage-type: "database"
   database-platform: oracle
@@ -28,44 +72,30 @@
   sessionIdlTime: 30
   ###瓒呮椂鎻愰啋鏃堕棿锛屽崟浣嶄负鍒嗛挓
   sessionRemind: 3
-###鍏煎鎬э紝蹇呴』璁剧疆涓鸿繖涓�
-user-table-compatibility: "platform1"
-#缂撳瓨閰嶇疆
-###corba鐨勯厤缃�
-jacorb:
-  client:
-    enabled: true
-    url: "corbaloc::localhost:30000/NameService"
-    instanceIdentity: "platform-sf"
-#鍙�2021鐗堟湰鐨勯儴鍒嗘帴鍙g殑褰卞搷锛屼笅闈㈢殑鍐呭闇�瑕侀厤缃紝
-vciPlatform:
-  objectServiceUrl: "2"
-#缂撳瓨
-spring:
-  # redis閰嶇疆
-  redis: ###### redis 閰嶇疆
-    enabled: false  #true锛屽惎鐢╮edi锛宖alse涓嶅惎鐢紝榛樿false,閰嶇疆鏂囦欢娌℃湁杩欎簺榛樿涓嶅惎鐢╮edis
-    host: vciserver  # ip鍦板潃
-    database: 0  # redis鏁版嵁搴�  0-15
-    port: 6379  # 绔彛鍙�
-    password: vcitest # 鏃犲瘑鐮佷笉濉�
-    timeout: 30000s   # 杩炴帴瓒呮椂鏃堕棿 锛堥粯璁�1澶╋級
-    lettuce:
-      shutdown-timeout: 100ms # 鍏抽棴瓒呮椂鏃堕棿 榛樿 100ms
-      pool: # lettuce 杩炴帴姹�
-        max-active: 8 # 杩炴帴姹犳渶澶ц繛鎺ユ暟 榛樿 8锛�-1 锛氳〃绀烘病鏈夐檺鍒讹級
-        max-wait: 60000ms # 杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂� 榛樿-1ms 锛�-1 :琛ㄧず娌℃湁闄愬埗锛� 杩欓噷璁剧疆1鍒嗛挓
-        max-idle: 8 # 鏈�澶х┖闂茶繛鎺�  榛樿 8
-        min-idle: 0 # 鏈�灏忕┖闂茶繛鎺�  榛樿 0
-  cache:
-    type: ehcache
-  config:
-    location:
-  mvc:
-    view:
-      suffix: ".html"
+
 ##web閰嶇疆
 vciweb:
   debug: true
-cors:
+
+#鏂囦欢棰勮閰嶇疆
+file-preview:
   enabled: true
+  preview-service-url: "http://dev.yunkeruida.top:28090/vciFilePreview/ajaxPreview.html"
+  preview-system-key: plt2020
+
+#feign鍦板潃
+feign:
+  #鎵弿宸ュ叿鏈嶅姟
+  scanServiceUrl: ""
+  #骞冲彴鏈嶅姟
+  pltServiceUrl: ""
+  #鏂囦欢鏈嶅姟
+  fileServiceUrl: ""
+
+#springmvc閰嶇疆
+vcispringmvc:
+  enabled: true
+  #涓嶆牎楠屽畨鍏ㄧ殑閾炬帴鍦板潃
+  un-check-urls:
+  #涓嶆洿鏂拌姹傛椂闂寸殑閾炬帴鍦板潃
+  un-storage-request-time-urls:
\ No newline at end of file
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/resources/i18n/messages.properties b/Source/plt-web/plt-web-parent/plt-web/src/main/resources/i18n/messages.properties
index 8b802df..af19989 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/resources/i18n/messages.properties
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/resources/i18n/messages.properties
@@ -86,10 +86,6 @@
 com.vci.base.lifecycle.noroute=\u751F\u547D\u5468\u671F\u6CA1\u6709\u4EFB\u4F55\u72B6\u6001
 lifeCycleTransError=\u751F\u547D\u5468\u671F\u8DC3\u8FC1\u5931\u8D25,{0}
 
-
-#####\u6D41\u7A0B\u76F8\u5173
-com.vci.web.flow.taskOidOrProcessOidNotNull=\u6D41\u7A0B\u4EFB\u52A1\u6216\u8005\u6D41\u7A0B\u6267\u884C\u5B9E\u4F8B\u4E0D\u5B58\u5728
-
 ###\u6587\u4EF6\u76F8\u5173
 fileUploadSecretError=\u6587\u4EF6\u6807\u5BC6\u8D85\u8FC7\u4E86\u7528\u6237\u7684\u5BC6\u7EA7\uFF0C\u7528\u6237\u5BC6\u7EA7{0}\uFF0C\u6587\u4EF6\u6807\u5BC6{1}
 fileUploadDataSecretError=\u6587\u4EF6\u6807\u5BC6\u8D85\u8FC7\u4E86\u6570\u636E\u7684\u5BC6\u7EA7\uFF0C\u6570\u636E\u5BC6\u7EA7{0},\u6587\u4EF6\u6807\u5BC6{1}
@@ -108,5 +104,12 @@
 cellValueCanNotNullForReg=\u5355\u5143\u683C\u7684\u5185\u5BB9\u4E0D\u7B26\u5408\u6B63\u5219\u8868\u8FBE\u5F0F\u8981\u6C42\uFF0C\u5217\u540D{0},\u884C\u6570{1}
 cellNotDateFormate=\u5355\u5143\u683C\u4E0D\u662F\u6709\u6548\u7684\u4E8B\u4EF6\u683C\u5F0F,\u5217\u540D{0},\u884C\u6570{1}
 
+###\u6D41\u7A0B\u76F8\u5173###
+com.vci.web.flow.processTemplateNotExist=\u6D41\u7A0B\u6A21\u677F[{0}]\u4E0D\u5B58\u5728\uFF0C\u8BF7\u67E5\u8BC1
+com.vci.web.flow.typeNotExist=\u6D41\u7A0B\u6A21\u677F\u5206\u7C7B[{0}]\u4E0D\u5B58\u5728\uFF0C\u8BF7\u67E5\u8BC1
+com.vci.web.flow.deployIdNotExist=\u6D41\u7A0B\u90E8\u7F72ID[{0}]\u4E0D\u5B58\u5728
+com.vci.web.flow.doTaskTypeError=\u6D41\u7A0B\u4EFB\u52A1\u7C7B\u578B[{0}]\u9519\u8BEF
+com.vci.web.flow.taskOidOrProcessOidNotNull=\u6D41\u7A0B\u4EFB\u52A1\u6216\u8005\u6D41\u7A0B\u6267\u884C\u5B9E\u4F8B\u4E0D\u5B58\u5728
+
 ###\u4E1A\u52A1####
-com.vci.web.flow.processTemplateNotExist=\u6D41\u7A0B\u6A21\u677F\u4E0D\u5B58\u5728\uFF0C\u8BF7\u67E5\u8BC1
\ No newline at end of file
+com.vci.web.loService.sortLengthError=\u6392\u5E8F\u5B57\u6BB5\u957F\u5EA6\u9519\u8BEF
\ No newline at end of file
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/resources/i18n/messages_zh_CN.properties b/Source/plt-web/plt-web-parent/plt-web/src/main/resources/i18n/messages_zh_CN.properties
index f6dc10e..89fd739 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/resources/i18n/messages_zh_CN.properties
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/resources/i18n/messages_zh_CN.properties
@@ -85,10 +85,6 @@
 com.vci.base.lifecycle.noexistlife=\u751F\u547D\u5468\u671F\u4E0D\u5B58\u5728
 com.vci.base.lifecycle.noroute=\u751F\u547D\u5468\u671F\u6CA1\u6709\u4EFB\u4F55\u72B6\u6001
 
-
-#####\u6D41\u7A0B\u76F8\u5173
-com.vci.web.flow.taskOidOrProcessOidNotNull=\u6D41\u7A0B\u4EFB\u52A1\u6216\u8005\u6D41\u7A0B\u6267\u884C\u5B9E\u4F8B\u4E0D\u5B58\u5728
-
 ###\u6587\u4EF6\u76F8\u5173
 fileUploadSecretError=\u6587\u4EF6\u6807\u5BC6\u8D85\u8FC7\u4E86\u7528\u6237\u7684\u5BC6\u7EA7\uFF0C\u7528\u6237\u5BC6\u7EA7{0}\uFF0C\u6587\u4EF6\u6807\u5BC6{1}
 fileUploadDataSecretError=\u6587\u4EF6\u6807\u5BC6\u8D85\u8FC7\u4E86\u6570\u636E\u7684\u5BC6\u7EA7\uFF0C\u6570\u636E\u5BC6\u7EA7{0},\u6587\u4EF6\u6807\u5BC6{1}
@@ -107,5 +103,12 @@
 cellValueCanNotNullForReg=\u5355\u5143\u683C\u7684\u5185\u5BB9\u4E0D\u7B26\u5408\u6B63\u5219\u8868\u8FBE\u5F0F\u8981\u6C42\uFF0C\u5217\u540D{0},\u884C\u6570{1}
 cellNotDateFormate=\u5355\u5143\u683C\u4E0D\u662F\u6709\u6548\u7684\u4E8B\u4EF6\u683C\u5F0F,\u5217\u540D{0},\u884C\u6570{1}
 
+#####\u6D41\u7A0B\u76F8\u5173####
+com.vci.web.flow.processTemplateNotExist=\u6D41\u7A0B\u6A21\u677F[{0}]\u4E0D\u5B58\u5728\uFF0C\u8BF7\u67E5\u8BC1
+com.vci.web.flow.typeNotExist=\u6D41\u7A0B\u6A21\u677F\u5206\u7C7B[{0}]\u4E0D\u5B58\u5728\uFF0C\u8BF7\u67E5\u8BC1
+com.vci.web.flow.deployIdNotExist=\u6D41\u7A0B\u90E8\u7F72ID[{0}]\u4E0D\u5B58\u5728
+com.vci.web.flow.doTaskTypeError=\u6D41\u7A0B\u4EFB\u52A1\u7C7B\u578B[{0}]\u9519\u8BEF
+com.vci.web.flow.taskOidOrProcessOidNotNull=\u6D41\u7A0B\u4EFB\u52A1\u6216\u8005\u6D41\u7A0B\u6267\u884C\u5B9E\u4F8B\u4E0D\u5B58\u5728
+
 ###\u4E1A\u52A1####
-com.vci.web.flow.processTemplateNotExist=\u6D41\u7A0B\u6A21\u677F\u4E0D\u5B58\u5728\uFF0C\u8BF7\u67E5\u8BC1
\ No newline at end of file
+com.vci.web.loService.sortLengthError=\u6392\u5E8F\u5B57\u6BB5\u957F\u5EA6\u9519\u8BEF
\ No newline at end of file
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/resources/properties/corba.properties b/Source/plt-web/plt-web-parent/plt-web/src/main/resources/properties/corba.properties
deleted file mode 100644
index d887383..0000000
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/resources/properties/corba.properties
+++ /dev/null
@@ -1,171 +0,0 @@
-锘�#conf.properties version by Eclipse
-#Sat Oct 19 14:06:56 CST 2013
-NameService=corbaloc\:\:localhost\:30000/NameService
-InstanceIdentity=platform-
-
-## 茅聹聙猫娄聛氓聤聽猫陆陆莽職聞.jar忙聣聙氓聹篓猫路炉氓戮聞(盲录職茅聙聮氓陆聮氓颅聬忙聳聡盲禄露氓陇鹿茅聡聦莽職聞.jar茂录聣茂录聦氓娄聜 D:/xx/xx/xx
-jarPath=./libs
-
-jacorb.net.socket_factory.port.min=29990
-jacorb.net.socket_factory.port.max=29999
-jacorb.net.server_socket_factory=org.jacorb.orb.factory.PortRangeServerSocketFactory
-jacorb.net.server_socket_factory.port.min=30001
-jacorb.net.server_socket_factory.port.max=30110
-jacorb.retries=0
-jacorb.connection.client.idle_timeout=5000
-jacorb.connection.client.connect_timeout=15000
-jacorb.log.default.verbosity=
-
-
-#忙聳聡盲禄露盲录聽猫戮聯氓聺聴氓陇搂氓掳聫
-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
-
-# 莽鲁禄莽禄聼氓聟鲁盲潞聨茅聟聧莽陆庐,盲驴庐忙聰鹿茅聟聧莽陆庐忙聵炉猫娄聛忙鲁篓忙聞聫盲赂颅忙聳聡氓颅聴莽卢娄莽職聞莽录聳莽聽聛盲陆驴莽聰篓utf-8
-system.about.title = 氓聟鲁盲潞聨
-# 忙聹聙盲陆鲁氓聸戮莽聣聡氓掳潞氓炉赂400*90茂录聦茅禄聵猫庐陇氓聙录盲赂潞about.png
-system.about.imageName=about.png
-# 盲潞搂氓聯聛氓聬聧莽搂掳
-system.about.softNameProduct= VCI Innovation 2017
-# 莽聣聢忙聺聝_盲赂颅忙聳聡
-system.about.softNameCopyrightC = 氓庐聫氓聧職猫驴聹猫戮戮氓聟卢氓聫赂  莽聣聢忙聺聝忙聣聙忙聹聣
-# 莽聣聢忙聺聝_猫聥卤忙聳聡
-system.about.softNameCopyrightE = Copyright(C) 2011-2017 Contributors. All rights reserved.
-# 茅隆鹿莽聸庐氓聬聧莽搂掳 
-system.about.softName = 氓聦聴盲潞卢氓庐聫氓聧職猫驴聹猫戮戮莽搂聭忙聤聙忙聹聣茅聶聬氓聟卢氓聫赂 - 莽鲁禄莽禄聼氓录聙氓聫聭氓鹿鲁氓聫掳
-# 氓鹿鲁氓聫掳莽聣聢忙聹卢 
-system.about.version = v2017.06.14
-# 氓聟卢氓聫赂莽陆聭氓聺聙 
-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=false
-# tablePanel 茅禄聵猫庐陇忙聰炉忙聦聛莽職聞pageSize氓聢聴猫隆篓
-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茂录聢UNOCIDE忙聽录氓录聫茂录聣,氓聸戮忙聽聡忙聳聡盲禄露氓庐聦忙聲麓猫路炉氓戮聞.;猫聡陋氓庐職盲鹿聣莽卤禄氓庐聦忙聲麓猫路炉氓戮聞2,忙聽聡茅垄聵2茂录聢UNOCIDE忙聽录氓录聫茂录聣,氓聸戮忙聽聡忙聳聡盲禄露氓庐聦忙聲麓猫路炉氓戮聞;
-# 莽陇潞盲戮聥茂录職plm617.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 ###########################################
-
-
-###########################################  莽录聳莽聽聛氓聤聽茅聙聼莽職聞盲赂聯莽聰篓茅聟聧莽陆庐 BEGIN ###########################################
-Code.Accelerator.Rule.Keys=name;changeorder;btmName
-Code.Accelerator.Section.Keys=id;name;btmName
-Code.Accelerator.AttrMap=id=\u540d\u79f0;name=\u63cf\u8ff0;btmName=莽卤禄氓聻聥氓聬聧莽搂掳
-###########################################  莽录聳莽聽聛氓聤聽茅聙聼莽職聞盲赂聯莽聰篓茅聟聧莽陆庐 END ###########################################
-
-
-########################################### 氓路楼盲陆聹忙碌聛&忙碌聛莽篓聥氓录聲忙聯聨莽聸赂氓聟鲁茅聟聧莽陆庐  BEGIN ###########################################
-#氓路楼盲陆聹忙碌聛忙聫聮盲禄露茂录聦氓聟鲁猫聛聰氓鹿鲁氓聫掳workitem氓炉鹿猫卤隆莽職聞忙聯聧盲陆聹
-workflow.plmworkitem = com.vci.platform.workflow.plugins.PLMWorkItem
-workflow.AssignTask = com.vci.rmip.workflow.server.event.AssignTask
-#氓路楼盲陆聹忙碌聛猫庐戮莽陆庐盲禄禄氓聤隆氓聙聶茅聙聣盲潞潞
-jbpm4.engin.checkTaskUser = com.vci.rmip.workflow.server.ExImp.ExAssginImp
-#忙颅陇莽卤禄莽聰篓盲潞聨猫搂拢忙聻聬猫搂聮猫聣虏氓聮聦茅聝篓茅聴篓盲赂聥莽職聞莽聰篓忙聢路
-workflow.userService = com.vci.rmip.workflow.server.customInterfaceImpl.WorkFlowUserParserImpl
-#氓路楼盲陆聹忙碌聛忙聫聮盲禄露茂录聦氓聟鲁猫聛聰氓鹿鲁氓聫掳workitem氓炉鹿猫卤隆莽職聞忙聯聧盲陆聹
-workflow.plmworkitem = com.vci.platform.workflow.plugins.PLMWorkItem
-#忙聵炉氓聬娄氓聟路忙聹聣workflowinstance氓炉鹿猫卤隆 Y盲禄拢猫隆篓氓颅聵氓聹篓茂录聦N盲禄拢猫隆篓盲赂聧氓颅聵氓聹篓
-workflow.plmworkflowInstance.isExist=Y
-# 忙碌聛莽篓聥忙篓隆忙聺驴盲赂颅莽職聞盲禄禄氓聤隆猫聤聜莽聜鹿忙聰炉忙聦聛猫聡陋氓庐職盲鹿聣盲赂職氓聤隆氓聤聼猫聝陆忙聦聣茅聮庐莽職聞茅聟聧莽陆庐茅聙聣茅隆鹿
-workflow.business.function.class=plm.portal.NewNewUI.buttonmng.TaskBusinessFunctionButtonDialog
-
-#忙聵炉氓聬娄忙聵戮莽陇潞氓聢聠忙聺隆氓聫聭猫碌路忙碌聛莽篓聥忙聦聣茅聮庐茂录聦true:忙聵戮莽陇潞茂录聦false:盲赂聧忙聵戮莽陇潞
-workflow.workitem.launchFlag=false
-#忙聽鹿忙聧庐盲赂聥茅聺垄莽職聞氓卤聻忙聙搂氓聙录氓聢陇忙聳颅忙聵炉氓聬娄忙聵戮莽陇潞盲驴聺氓颅聵忙碌聛莽篓聥忙篓隆忙聺驴茅聙聣忙聥漏忙隆聠茂录聦true猫隆篓莽陇潞忙聵戮莽陇潞
-workflow.workitem.saveTempFlag=false
-#氓聫聭猫碌路忙碌聛莽篓聥忙碌聛莽篓聥盲禄禄氓聤隆氓聬聧莽搂掳忙聵炉氓聬娄氓驴聟氓隆芦氓聫聤氓聭陆氓聬聧氓陇聞莽聬聠猫搂聞氓聢聶
-workflow.workitem.workflowName=true
-#氓娄聜忙聻聹盲赂聧忙聵戮莽陇潞氓聢聠忙聺隆氓聫聭猫碌路忙聴露茂录聦忙聵炉氓聬娄氓掳聠茅聙聣氓庐職忙聲掳忙聧庐盲陆聹盲赂潞盲赂聙盲赂陋忙碌聛莽篓聥猫驴聸猫隆聦氓庐隆忙聣鹿		忙颅陇茅聟聧莽陆庐盲录聵氓聟聢莽潞搂氓聹篓忙聵戮莽陇潞氓聢聠忙聺隆氓聫聭猫碌路茅聙聣忙聥漏忙隆聠氓鹿露茅聙聣盲赂颅氓聢聠忙聺隆氓聫聭猫碌路忙碌聛莽篓聥盲鹿聥氓聬聨茂录聢氓聧鲁氓娄聜忙聻聹茅聙聣忙聥漏氓聢聠忙聺隆氓聫聭猫碌路茂录聦忙颅陇茅聟聧莽陆庐盲赂聧猫碌路盲陆聹莽聰篓茂录聣
-#茂录聢true茂录職氓掳聠茅聙聣氓庐職莽職聞忙聲掳忙聧庐氓聹篓盲赂聙盲赂陋忙碌聛莽篓聥盲赂颅猫驴聸猫隆聦氓庐隆忙聣鹿茂录聦false茂录職盲赂潞忙炉聫忙聺隆忙聲掳忙聧庐氓聬炉氓聤篓盲赂聙盲赂陋氓庐隆忙聣鹿忙碌聛莽篓聥茂录聣
-workflow.workitem.launchOneWorkflowFlag=true
-#忙聵炉氓聬娄猫聝陆忙聣鹿茅聡聫忙聣搂猫隆聦氓戮聟氓聤聻盲禄禄氓聤隆茂录聦茅聙聣盲赂颅氓陇職忙聺隆茅聙職莽聰篓氓戮聟氓聤聻盲禄禄氓聤隆忙聲掳忙聧庐茂录聦氓聢陇忙聳颅猫驴聶盲潞聸忙聲掳忙聧庐氓聹篓氓聬聦盲赂聙盲禄禄氓聤隆猫聤聜莽聜鹿茂录聦氓鹿露氓卤聻盲潞聨氓聬聦盲赂聙忙碌聛莽篓聥茂录聦氓掳卤氓聫炉盲禄楼忙聣鹿茅聡聫忙聣搂猫隆聦盲赂聥氓聨禄
-workflow.workitem.batchExeworkflowFlag=true
-
-##忙聽鹿忙聧庐盲赂聥茅聺垄莽職聞氓卤聻忙聙搂氓聙录氓聢陇忙聳颅忙聵炉氓聬娄盲赂聥盲赂聙忙颅楼猫麓拢盲禄禄盲潞潞忙聽聡猫炉聠茂录聢氓聫陋氓聢陇忙聳颅忙聵炉true茂录聦盲禄禄盲陆聲氓颅聴莽卢娄忙聢聳忙虏隆忙聹聣忙颅陇茅聟聧莽陆庐茂录聦氓聧鲁忙聦聣false氓陇聞莽聬聠茂录聣 
-## 氓娄聜忙聻聹忙颅陇氓聙录盲赂潞茂录職true茂录職忙聣搂猫隆聦忙碌聛莽篓聥盲禄禄氓聤隆忙聴露茂录聦盲赂聧莽庐隆氓聫聭猫碌路忙聴露忙聵炉氓聬娄氓炉鹿忙炉聫盲赂陋猫聤聜莽聜鹿茅聝陆猫庐戮莽陆庐盲潞聠猫麓拢盲禄禄盲潞潞茂录聦氓陆聯氓聣聧忙聣搂猫隆聦莽陋聴氓聫拢氓搂聥莽禄聢茅聝陆忙聵戮莽陇潞氓聹篓茅聙聣忙聥漏盲赂聥盲赂聙猫聤聜莽聜鹿猫麓拢盲禄禄盲潞潞茂录聢盲禄聟忙聵炉猫路炉莽聰卤茅聙聣忙聥漏氓聬聦忙聞聫茂录聣
-##		氓聬娄氓聢聶茂录職false茂录職忙聣搂猫隆聦忙碌聛莽篓聥盲禄禄氓聤隆忙聴露茂录聦氓娄聜忙聻聹盲赂聥盲赂聙猫聤聜莽聜鹿莽職聞猫麓拢盲禄禄盲潞潞氓聹篓氓聫聭猫碌路忙聴露氓路虏莽禄聫忙聦聡氓庐職茂录聦氓聢聶盲赂聧忙聵戮莽陇潞盲赂聥盲赂聙猫聤聜莽聜鹿猫麓拢盲禄禄盲潞潞茂录聦氓聬娄氓聢聶忙聵戮莽陇潞盲赂聥盲赂聙忙颅楼猫麓拢盲禄禄盲潞潞茂录聦盲赂聰忙聹聣氓聤聽莽潞垄猫聣虏*忙聽聡猫炉聠茂录聦忙颅陇忙聴露盲赂潞氓驴聟茅隆禄氓隆芦氓聠聶茂录聢茅聙聣忙聥漏茂录聣
-workflow.workitem.showNextUserFlag=false
-########################################### 氓路楼盲陆聹忙碌聛&忙碌聛莽篓聥氓录聲忙聯聨莽聸赂氓聟鲁茅聟聧莽陆庐  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
-#忙聵炉氓聬娄忙炉聫忙卢隆猫庐驴茅聴庐茅聝陆氓聢路忙聳掳忙聲掳忙聧庐氓潞聯茂录聦true盲禄拢莽聽聛氓聢路忙聳掳茂录聦氓聬娄氓聢聶盲赂聧氓聢路忙聳掳
-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/Source/plt-web/plt-web-parent/plt-web/src/main/resources/properties/iceClient.properties b/Source/plt-web/plt-web-parent/plt-web/src/main/resources/properties/iceClient.properties
index c175daa..962d6f5 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/resources/properties/iceClient.properties
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/resources/properties/iceClient.properties
@@ -1 +1 @@
-Endpoints=default -h localhost -p 4601
\ No newline at end of file
+Endpoints=default -h localhost -p 4061
\ No newline at end of file
diff --git a/Source/plt-web/plt-web-parent/pom.xml b/Source/plt-web/plt-web-parent/pom.xml
index d51b5da..6f3d20b 100644
--- a/Source/plt-web/plt-web-parent/pom.xml
+++ b/Source/plt-web/plt-web-parent/pom.xml
@@ -14,6 +14,7 @@
         <module>plt-starter</module>
         <module>plt-web-base</module>
         <module>plt-web-api</module>
+        <module>plt-web-permission</module>
     </modules>
 
     <properties>
@@ -152,9 +153,19 @@
             </dependency>
             <dependency>
                 <groupId>com.vci</groupId>
+                <artifactId>plt-web-api</artifactId>
+                <version>2024.1-SNAPSHOT</version>
+            </dependency>
+            <dependency>
+                <groupId>com.vci</groupId>
                 <artifactId>plt-web-base</artifactId>
                 <version>2024.1-SNAPSHOT</version>
             </dependency>
+            <dependency>
+                <groupId>com.vci</groupId>
+                <artifactId>plt-web-permission</artifactId>
+                <version>2024.1-SNAPSHOT</version>
+            </dependency>
 
             <!--spring鐩稿叧-->
             <dependency>
diff --git a/Source/plt-web/plt-web-ui/src/components/dynamic-components/dynamic-form.vue b/Source/plt-web/plt-web-ui/src/components/dynamic-components/dynamic-form.vue
index 5926188..9e2ce4c 100644
--- a/Source/plt-web/plt-web-ui/src/components/dynamic-components/dynamic-form.vue
+++ b/Source/plt-web/plt-web-ui/src/components/dynamic-components/dynamic-form.vue
@@ -134,9 +134,12 @@
 
         for (let i in this.sourceData) {
           const item = this.sourceData[i]
-          //if (item && item.constructor === Object) continue; //鏍戣妭鐐瑰瓙闆嗘槸瀵硅薄
           if (['type', 'context', 'content', 'querytemplate', 'querytype'].includes(i)) continue;
-          sourceDataMap['sourceData["' + i + '"]'] = item
+          if (item && item.constructor === Object) {
+            sourceDataMap['sourceData["' + i + '"]'] = JSON.stringify(item)
+          }else {
+            sourceDataMap['sourceData["' + i + '"]'] = item
+          }
         }
       }
 
diff --git a/Source/plt-web/plt-web-ui/src/components/dynamic-components/dynamic-table.vue b/Source/plt-web/plt-web-ui/src/components/dynamic-components/dynamic-table.vue
index 35cbcb8..19fd485 100644
--- a/Source/plt-web/plt-web-ui/src/components/dynamic-components/dynamic-table.vue
+++ b/Source/plt-web/plt-web-ui/src/components/dynamic-components/dynamic-table.vue
@@ -319,9 +319,12 @@
 
         for (let i in this.sourceData) {
           const item = this.sourceData[i]
-          //if (item && item.constructor === Object) continue; //鏍戣妭鐐瑰瓙闆嗘槸瀵硅薄
           if (['type', 'context', 'content', 'querytemplate', 'querytype'].includes(i)) continue;
-          sourceDataMap['sourceData["' + i + '"]'] = item
+          if (item && item.constructor === Object) {
+            sourceDataMap['sourceData["' + i + '"]'] = JSON.stringify(item)
+          }else {
+            sourceDataMap['sourceData["' + i + '"]'] = item
+          }
         }
       }
 
diff --git a/Source/plt-web/plt-web-ui/src/components/dynamic-components/dynamic-tree.vue b/Source/plt-web/plt-web-ui/src/components/dynamic-components/dynamic-tree.vue
index 2eab53a..f890ffe 100644
--- a/Source/plt-web/plt-web-ui/src/components/dynamic-components/dynamic-tree.vue
+++ b/Source/plt-web/plt-web-ui/src/components/dynamic-components/dynamic-tree.vue
@@ -179,9 +179,12 @@
         }
         for (let i in this.sourceData) {
           const item = this.sourceData[i]
-          if (item && item.constructor === Object) continue;
           if (['type', 'context', 'content', 'querytemplate', 'querytype'].includes(i)) continue;
-          sourceDataMap['sourceData["' + i + '"]'] = item
+          if (item && item.constructor === Object) {
+            sourceDataMap['sourceData["' + i + '"]'] = JSON.stringify(item)
+          }else {
+            sourceDataMap['sourceData["' + i + '"]'] = item
+          }
         }
       }
 
diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/linkTypeQuery/formQueryDialog.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/linkTypeQuery/formQueryDialog.vue
index 137fb73..837849b 100644
--- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/linkTypeQuery/formQueryDialog.vue
+++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/linkTypeQuery/formQueryDialog.vue
@@ -364,23 +364,30 @@
           let list = [];
           let that = this;
           let getValue = function (queryTemplate, item) {
-            for (let key in queryTemplate.condition.cIMap) {
-              if (queryTemplate.condition.cIMap[key].leaf) {
-                item.clause += '.' + queryTemplate.condition.cIMap[key].leafInfo.clause;
-                if (queryTemplate.condition.cIMap[key].leafInfo.value.queryTemplate) {
-                  getValue(queryTemplate.condition.cIMap[key].leafInfo.value.queryTemplate, item)
-                } else {
-                  //item.ordinaryValue = queryTemplate.condition.cIMap[key].leafInfo.value.ordinaryValue;
-                  item.type = queryTemplate.condition.cIMap[key].leafInfo.type;
-                  if (['VTInteger', 'VTDouble', 'VTLong'].includes(item.type)) {
-                    item.operatorDic = that.operatorIntDic;
-                  } else if (['VTDateTime', 'VTDate', 'VTTime'].includes(item.type)) {
-                    item.operatorDic = that.operatorDateDic;
+            if(queryTemplate.id.indexOf('qt_')==0){
+              item.clause += '.' + queryTemplate.condition.cIMap['ci1'].leafInfo.clause;
+              item.ordinaryValue = queryTemplate.condition.cIMap['ci1'].leafInfo.value.ordinaryValue;
+              item.type = queryTemplate.condition.cIMap['ci1'].leafInfo.type;
+            }else {
+              item.ordinaryValue = queryTemplate.id+';'+queryTemplate.clauseList.join(',');
+              /*for (let key in queryTemplate.condition.cIMap) {
+                if (queryTemplate.condition.cIMap[key].leaf) {
+                  item.clause += '.' + queryTemplate.condition.cIMap[key].leafInfo.clause;
+                  if (queryTemplate.condition.cIMap[key].leafInfo.value.queryTemplate) {
+                    getValue(queryTemplate.condition.cIMap[key].leafInfo.value.queryTemplate, item)
                   } else {
-                    item.operatorDic = that.operatorDic;
+                    item.ordinaryValue = queryTemplate.condition.cIMap[key].leafInfo.value.ordinaryValue;
+                    item.type = queryTemplate.condition.cIMap[key].leafInfo.type;
                   }
                 }
-              }
+              }*/
+            }
+            if (['VTInteger', 'VTDouble', 'VTLong'].includes(item.type)) {
+              item.operatorDic = that.operatorIntDic;
+            } else if (['VTDateTime', 'VTDate', 'VTTime'].includes(item.type)) {
+              item.operatorDic = that.operatorDateDic;
+            } else {
+              item.operatorDic = that.operatorDic;
             }
           }
           for (let key in val.cIMap) {
@@ -394,19 +401,7 @@
                 operatorDic: []
               }
               if (this.queryCondition.cIMap[key].leafInfo.value.queryTemplate) {
-                item.ordinaryValue = this.queryCondition.cIMap[key].leafInfo.value.queryTemplate.id+';'+this.queryCondition.cIMap[key].leafInfo.value.queryTemplate.clauseList.join(',');
-                if(this.queryCondition.cIMap[key].leafInfo.value.queryTemplate.id.indexOf('qt_')==0){
                   getValue(this.queryCondition.cIMap[key].leafInfo.value.queryTemplate, item)
-                }else {
-                  item.type = this.queryCondition.cIMap[key].leafInfo.type;
-                  if (['VTInteger', 'VTDouble', 'VTLong'].includes(item.type)) {
-                    item.operatorDic = that.operatorIntDic;
-                  } else if (['VTDateTime', 'VTDate', 'VTTime'].includes(item.type)) {
-                    item.operatorDic = that.operatorDateDic;
-                  } else {
-                    item.operatorDic = that.operatorDic;
-                  }
-                }
               } else {
                 item.ordinaryValue = this.queryCondition.cIMap[key].leafInfo.value.ordinaryValue;
                 item.type = this.queryCondition.cIMap[key].leafInfo.type;

--
Gitblit v1.9.3