田源
2024-08-23 9e20b9fb77a41cb5b4a6eb6213fc51cab1f0bb91
Merge remote-tracking branch 'origin/master'
已修改37个文件
已添加84个文件
8663 ■■■■■ 文件已修改
Bin/lib/client/plt-client.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/lib/client/plt-clientbase.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/lib/common/plt-common.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/lib/common/plt-slice.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/lib/service/BOFService.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/lib/service/CacheService.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/lib/service/FrameService.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/lib/service/LogService.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/lib/service/MsgService.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/lib/service/OMDService.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/lib/service/OQService.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/lib/service/ServiceBase.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/lib/service/UIService.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/lib/service/VciServiceMain.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/lib/service/VolumeService.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/lib/service/WFPlugins.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/lib/service/WFService.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/lib/thrid/jbpm-4.3.2.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/properties/VolumnLog4j2.xml 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Bin/properties/hibernate-master.cfg.xml 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Bin/properties/hibernate-slave.cfg.xml 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Bin/properties/menuConfig.json 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/accessors-smart-1.2.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/android-json-0.0.20131108.vaadin1.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/asm-5.0.4.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/assertj-core-3.11.1.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/byte-buddy-1.9.3.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/byte-buddy-agent-1.9.3.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/commons-compress-1.18.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/commons-fileupload-1.4.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/filters-2.0.235.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/flatlaf-2.3.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/hamcrest-core-1.3.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/hamcrest-library-1.3.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/ice-3.7.10.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/icebox-3.7.10.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/jackson-databind-2.9.6.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/jgoodies-common-1.8.1.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/jgoodies-looks-2.5.3.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/jgraph-3.1.0.0.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/jgraphx-3.1.0.0.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/json-path-2.4.0.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/json-smart-2.3.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/jsonassert-1.5.0.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/junit-4.8.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/mockito-core-2.23.4.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/nativeskin-1.0.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/objenesis-2.6.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/pinyin4j-2.5.0.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/plt-clientbase-1.0.RELEASE.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/plt-common-1.0.RELEASE.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/plt-poi-2024.1-SNAPSHOT.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/plt-slice-1.0.RELEASE.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/plt-starter-2024.1-SNAPSHOT.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/plt-web-api-2024.1-SNAPSHOT.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/plt-web-base-2024.1-SNAPSHOT.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/poi-scratchpad-3.9.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/protege35-1.0.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/skinlf-6.7.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/spring-boot-configuration-processor-2.1.3.RELEASE.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/spring-boot-starter-test-2.1.3.RELEASE.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/spring-boot-test-2.1.3.RELEASE.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/spring-boot-test-autoconfigure-2.1.3.RELEASE.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/spring-test-5.1.5.RELEASE.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/swing-worker-1.1.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/swingx-1.6.1.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/swixml-2.0.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/transmittable-thread-local-2.12.6.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/uitheme-1.3.1.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/lib/xmlunit-core-2.6.2.jar 补丁 | 查看 | 原始文档 | blame | 历史
Bin/web/vci-platform-web.jar 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/bo/ItemSeniorQueryBO.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/PLActionClsDTO.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/PLActionDTO.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/PLActionQueryDTO.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/PRMDTO.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/PRMItemDTO.java 764 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/PortalVIDTO.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/model/PRMDO.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/model/PRMItemDO.java 725 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/model/PortalVIDO.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/model/SmFunctionForPlatform1.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/MenuVO.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PRMItemVO.java 767 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PRMVO.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PortalVIVO.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/VciBaseUtil.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/ISmFunctionQueryService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmHMSysModConfigServiceI.java 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmFunctionQueryServicePlatformImpl.java 58 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmHMSysModConfigServiceImpl.java 1028 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/HMSysModConfigController.java 259 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsActionController.java 160 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/SmFunctionController.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebPortalVIController.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/ItemDblEnum.java 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/ItemTypeEnum.java 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/PortalVIType.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/PortalVITypeFlag.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/ExportActionLogBean.java 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/ExportBeans.java 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/IExportLogBean.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/properties/JsonConfigReader.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsActionServiceI.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsBaseServiceI.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsBtmServiceI.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsPortalVIServiceI.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsActionServiceImpl.java 405 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsBtmServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java 627 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/PinyinCommon.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/UITools.java 707 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/api/modeling/businessType/api.js 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/api/modeling/linkType/api.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/api/queryTemplate/businessTypeQuery.js 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/api/queryTemplate/linkTypeQuery.js 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/api/queryTemplate/queryDefine.js 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/versioning/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/businessTypeQuery/index.vue 210 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/linkTypeQuery/index.vue 212 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/queryDefine/index.vue 338 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Bin/lib/client/plt-client.jar
Binary files differ
Bin/lib/client/plt-clientbase.jar
Binary files differ
Bin/lib/common/plt-common.jar
Binary files differ
Bin/lib/common/plt-slice.jar
Binary files differ
Bin/lib/service/BOFService.jar
Binary files differ
Bin/lib/service/CacheService.jar
Binary files differ
Bin/lib/service/FrameService.jar
Binary files differ
Bin/lib/service/LogService.jar
Binary files differ
Bin/lib/service/MsgService.jar
Binary files differ
Bin/lib/service/OMDService.jar
Binary files differ
Bin/lib/service/OQService.jar
Binary files differ
Bin/lib/service/ServiceBase.jar
Binary files differ
Bin/lib/service/UIService.jar
Binary files differ
Bin/lib/service/VciServiceMain.jar
Binary files differ
Bin/lib/service/VolumeService.jar
Binary files differ
Bin/lib/service/WFPlugins.jar
Binary files differ
Bin/lib/service/WFService.jar
Binary files differ
Bin/lib/thrid/jbpm-4.3.2.jar
Binary files differ
Bin/properties/VolumnLog4j2.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="[%-5p] %d{YYYY-MM-dd HH:mm:ss} [%t] %C{1}:%L - %msg%n" />
        </Console>
        <RollingFile name="RollingFile" filename="./logs/volume_log.log" filepattern="${logPath}/volume_%d{YYYYMMddHHmmss}.log">
            <PatternLayout pattern="[%-5p] %d{YYYY-MM-dd HH:mm:ss} [%t] %C{1}:%L - %msg%n" />
            <Policies>
                <SizeBasedTriggeringPolicy size="10 MB" />
            </Policies>
            <DefaultRolloverStrategy max="20" />
        </RollingFile>
    </Appenders>
    <Loggers>
        <Logger name="VolumeLog" level="DEBUG" additivity="true">
            <AppenderRef ref="RollingFile" />
        </Logger>
        <Root level="DEBUG">
            <AppenderRef ref="Console" />
        </Root>
    </Loggers>
</Configuration>
Bin/properties/hibernate-master.cfg.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="show_sql">true</property>
        <property name="dialect">org.hibernate.dialect.OracleDialect</property>
        <property name="connection.driver_class">oracle.jdbc.OracleDriver</property>
        <!--<property name="connection.url">jdbc:oracle:thin:@172.16.0.243:1521:orcl</property>
        <property name="connection.username">vcimes</property>
        <property name="connection.password">vcimes</property>-->
        <!-- <property name="connection.url">jdbc:oracle:thin:@dev.yunkeruida.top:1521:orcl</property> -->
        <property name="connection.url">jdbc:oracle:thin:@192.168.0.66:1521:orcl</property>
        <!-- <property name="connection.username">NMPM112</property> -->
        <property name="connection.username">PLT2024</property>
        <property name="connection.password">vcitest</property>
        <!--<property name="connection.username">mpm112</property>
        <property name="connection.password">vcitest</property>-->
        <!--property name="hibernate.connection.release_mode">auto</property -->
        <!-- è®¾ç½®C3P0 -->
        <property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
        <property name="hibernate.c3p0.acquireRetryAttempts">30</property>
        <property name="hibernate.c3p0.acquireIncrement">2</property>
        <property name="hibernate.c3p0.checkoutTimeout">30000</property>
        <property name="hibernate.c3p0.idleConnectionTestPeriod">120</property>
        <property name="hibernate.c3p0.maxIdleTime">180</property>
        <property name="hibernate.c3p0.initialPoolSize">3</property>
        <property name="hibernate.c3p0.maxPoolSize">100</property>
        <property name="hibernate.c3p0.minPoolSize">1</property>
        <property name="hibernate.c3p0.maxStatements">100</property>
        <property name="maxStatementsPerConnection">100</property>
        <property name="hibernate.current_session_context_class">com.vci.server.mw.SessionContext4JBPM</property>
        <property name="hibernate.connection.isolation">2</property>
        <!-- æš‚时禁用Hibernate的事件监听
        <listener type="post-insert"
            class="com.vci.base.server.persistence.history.HistoryListener" />
        <listener type="post-update"
            class="com.vci.base.server.persistence.history.HistoryListener" />
        <listener type="post-delete"
            class="com.vci.base.server.persistence.history.HistoryListener" />
             -->
    </session-factory>
</hibernate-configuration>
Bin/properties/hibernate-slave.cfg.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="show_sql">true</property>
        <property name="dialect">org.hibernate.dialect.OracleDialect</property>
        <property name="connection.driver_class">oracle.jdbc.OracleDriver</property>
        <!--<property name="connection.url">jdbc:oracle:thin:@172.16.0.243:1521:orcl</property>
        <property name="connection.username">vcimes</property>
        <property name="connection.password">vcimes</property>-->
        <property name="connection.url">jdbc:oracle:thin:@192.168.0.66:1521:orcl</property>
        <!-- <property name="connection.url">jdbc:oracle:thin:@dev.yunkeruida.top:1521:orcl</property> -->
        <!-- <property name="connection.username">NMPM112</property> -->
        <property name="connection.username">PLT2024</property>
        <property name="connection.password">vcitest</property>
        <!--<property name="connection.username">mpm112</property>
        <property name="connection.password">vcitest</property>-->
        <!--property name="hibernate.connection.release_mode">auto</property -->
        <!-- è®¾ç½®C3P0 -->
        <property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
        <property name="hibernate.c3p0.acquireRetryAttempts">30</property>
        <property name="hibernate.c3p0.acquireIncrement">2</property>
        <property name="hibernate.c3p0.checkoutTimeout">30000</property>
        <property name="hibernate.c3p0.idleConnectionTestPeriod">120</property>
        <property name="hibernate.c3p0.maxIdleTime">180</property>
        <property name="hibernate.c3p0.initialPoolSize">3</property>
        <property name="hibernate.c3p0.maxPoolSize">100</property>
        <property name="hibernate.c3p0.minPoolSize">1</property>
        <property name="hibernate.c3p0.maxStatements">100</property>
        <property name="maxStatementsPerConnection">100</property>
        <property name="hibernate.current_session_context_class">com.vci.server.mw.SessionContext4JBPM</property>
        <property name="hibernate.connection.isolation">2</property>
        <!-- æš‚时禁用Hibernate的事件监听
        <listener type="post-insert"
            class="com.vci.base.server.persistence.history.HistoryListener" />
        <listener type="post-update"
            class="com.vci.base.server.persistence.history.HistoryListener" />
        <listener type="post-delete"
            class="com.vci.base.server.persistence.history.HistoryListener" />
             -->
    </session-factory>
</hibernate-configuration>
Bin/properties/menuConfig.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,91 @@
{
  "hasChildren": true,
  "children": [
    {
      "hasChildren": true,
      "children": [],
      "id": "systemManagmentNode",
      "name": "管理功能模块",
      "parentId": "VCIBaseTreeNode",
      "code": "systemManagmentNode",
      "alias": "system",
      "meta": {
        "keepAlive": false
      },
      "sort": 2,
      "soruce": "",
      "path": "views/systemModel/mangeModel/index"
    },
    {
      "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": ""
}
Bin/web/lib/accessors-smart-1.2.jar
Binary files differ
Bin/web/lib/android-json-0.0.20131108.vaadin1.jar
Binary files differ
Bin/web/lib/asm-5.0.4.jar
Binary files differ
Bin/web/lib/assertj-core-3.11.1.jar
Binary files differ
Bin/web/lib/byte-buddy-1.9.3.jar
Binary files differ
Bin/web/lib/byte-buddy-agent-1.9.3.jar
Binary files differ
Bin/web/lib/commons-compress-1.18.jar
Binary files differ
Bin/web/lib/commons-fileupload-1.4.jar
Binary files differ
Bin/web/lib/filters-2.0.235.jar
Binary files differ
Bin/web/lib/flatlaf-2.3.jar
Binary files differ
Bin/web/lib/hamcrest-core-1.3.jar
Binary files differ
Bin/web/lib/hamcrest-library-1.3.jar
Binary files differ
Bin/web/lib/ice-3.7.10.jar
Binary files differ
Bin/web/lib/icebox-3.7.10.jar
Binary files differ
Bin/web/lib/jackson-databind-2.9.6.jar
Binary files differ
Bin/web/lib/jgoodies-common-1.8.1.jar
Binary files differ
Bin/web/lib/jgoodies-looks-2.5.3.jar
Binary files differ
Bin/web/lib/jgraph-3.1.0.0.jar
Binary files differ
Bin/web/lib/jgraphx-3.1.0.0.jar
Binary files differ
Bin/web/lib/json-path-2.4.0.jar
Binary files differ
Bin/web/lib/json-smart-2.3.jar
Binary files differ
Bin/web/lib/jsonassert-1.5.0.jar
Binary files differ
Bin/web/lib/junit-4.8.jar
Binary files differ
Bin/web/lib/mockito-core-2.23.4.jar
Binary files differ
Bin/web/lib/nativeskin-1.0.jar
Binary files differ
Bin/web/lib/objenesis-2.6.jar
Binary files differ
Bin/web/lib/pinyin4j-2.5.0.jar
Binary files differ
Bin/web/lib/plt-clientbase-1.0.RELEASE.jar
Binary files differ
Bin/web/lib/plt-common-1.0.RELEASE.jar
Binary files differ
Bin/web/lib/plt-poi-2024.1-SNAPSHOT.jar
Binary files differ
Bin/web/lib/plt-slice-1.0.RELEASE.jar
Binary files differ
Bin/web/lib/plt-starter-2024.1-SNAPSHOT.jar
Binary files differ
Bin/web/lib/plt-web-api-2024.1-SNAPSHOT.jar
Binary files differ
Bin/web/lib/plt-web-base-2024.1-SNAPSHOT.jar
Binary files differ
Bin/web/lib/poi-scratchpad-3.9.jar
Binary files differ
Bin/web/lib/protege35-1.0.jar
Binary files differ
Bin/web/lib/skinlf-6.7.jar
Binary files differ
Bin/web/lib/spring-boot-configuration-processor-2.1.3.RELEASE.jar
Binary files differ
Bin/web/lib/spring-boot-starter-test-2.1.3.RELEASE.jar
Binary files differ
Bin/web/lib/spring-boot-test-2.1.3.RELEASE.jar
Binary files differ
Bin/web/lib/spring-boot-test-autoconfigure-2.1.3.RELEASE.jar
Binary files differ
Bin/web/lib/spring-test-5.1.5.RELEASE.jar
Binary files differ
Bin/web/lib/swing-worker-1.1.jar
Binary files differ
Bin/web/lib/swingx-1.6.1.jar
Binary files differ
Bin/web/lib/swixml-2.0.jar
Binary files differ
Bin/web/lib/transmittable-thread-local-2.12.6.jar
Binary files differ
Bin/web/lib/uitheme-1.3.1.jar
Binary files differ
Bin/web/lib/xmlunit-core-2.6.2.jar
Binary files differ
Bin/web/vci-platform-web.jar
Binary files differ
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/bo/ItemSeniorQueryBO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,61 @@
package com.vci.bo;
public class ItemSeniorQueryBO implements java.io.Serializable{
    private static final long serialVersionUID = 6935763791493916908L;
    /**
     * é«˜çº§æŸ¥è¯¢åˆ—
     */
    private String itemSeniorQueryCols = "";
    /**
     * é«˜çº§æŸ¥è¯¢å„列使用次数
     */
    private String itemSeniorQueryColsCounts = "";
    /**
     *高级查询sql
     */
    private String itemQuerySql = "";
    public ItemSeniorQueryBO(String itemSeniorQueryCols, String itemSeniorQueryColsCounts, String itemQuerySql) {
        this.itemSeniorQueryCols = itemSeniorQueryCols;
        this.itemSeniorQueryColsCounts = itemSeniorQueryColsCounts;
        this.itemQuerySql = itemQuerySql;
    }
    public String getItemSeniorQueryCols() {
        return itemSeniorQueryCols;
    }
    public void setItemSeniorQueryCols(String itemSeniorQueryCols) {
        this.itemSeniorQueryCols = itemSeniorQueryCols;
    }
    public String getItemSeniorQueryColsCounts() {
        return itemSeniorQueryColsCounts;
    }
    public void setItemSeniorQueryColsCounts(String itemSeniorQueryColsCounts) {
        this.itemSeniorQueryColsCounts = itemSeniorQueryColsCounts;
    }
    public String getItemQuerySql() {
        return itemQuerySql;
    }
    public void setItemQuerySql(String itemQuerySql) {
        this.itemQuerySql = itemQuerySql;
    }
    @Override
    public String
    toString() {
        return "ItemSeniorQueryBO{" +
                "itemSeniorQueryCols='" + itemSeniorQueryCols + '\'' +
                ", itemSeniorQueryColsCounts='" + itemSeniorQueryColsCounts + '\'' +
                ", itemQuerySql='" + itemQuerySql + '\'' +
                '}';
    }
}
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/PLActionClsDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,57 @@
package com.vci.dto;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
 * Action分类传输对象
 * @author yuxc
 * @date 2024/8/16 15:50
 */
@Data
public class PLActionClsDTO implements java.io.Serializable{
    /**
     * ç¦æ­¢ä¿®æ”¹è¿™ä¸ªå€¼
     */
    private static final long serialVersionUID = 2009350578651813260L;
    /**
     *主键
     */
    public String id;
    /**
     *分类名称
     */
    public String name;
    /**
     *父主键
     */
    public String pid;
    /**
     *备注
     */
    public String description;
    /**
     *创建人
     */
    public String creator;
    /**
     *创建时间
     */
    public long createTime;
    /**
     *分类序号
     */
    public short serialno;
    /**
     * å­èŠ‚ç‚¹
     */
    public List<PLActionClsDTO> childs = new ArrayList<>();
    /**
     * å½“前分类下的所有action
     */
    public List<PLActionDTO> actionChilds = new ArrayList<>();
}
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/PLActionDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,70 @@
package com.vci.dto;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
 * Action传输对象
 * @author yuxc
 * @date 2024/8/20 16:47
 */
@Data
public class PLActionDTO implements java.io.Serializable{
    /**
     * ç¦æ­¢ä¿®æ”¹è¿™ä¸ªå€¼
     */
    private static final long serialVersionUID = 2009350578651813260L;
    /**
     * ä¸»é”®
     */
    private String plOId;
    /**
     * ç¼–号
     */
    private String plCode;
    /**
     * åç§°
     */
    private String plName;
    /**
     * B/S地址,界面类路径
     */
    private String plBSUrl;
    /**
     * c/s类路径 ç•Œé¢é“¾æŽ¥åœ°å€
     */
    private String plCSClass;
    /**
     * æè¿°
     */
    private String plDesc;
    /**
     * ç±»åž‹
     */
    private String plTypeType;
    /**
     * åˆ›å»ºæ—¶é—´
     */
    private long plCreateTime;
    /**
     * åˆ›å»ºäºº
     */
    private String plCreateUser;
    /**
     * ä¿®æ”¹æ—¶é—´
     */
    private long plModifyTime;
    /**
     * ä¿®æ”¹äºº
     */
    private String plModifyUser;
    private String plLicensOrs;
    /**
     * çˆ¶èŠ‚ç‚¹id
     */
    private String plActionCls;
}
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/PLActionQueryDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
package com.vci.dto;
import lombok.Data;
/**
 * Action查询传输对象
 * @author yuxc
 * @date 2024/8/20 14:45
 */
@Data
public class PLActionQueryDTO implements java.io.Serializable{
    /**
     * ç¦æ­¢ä¿®æ”¹è¿™ä¸ªå€¼
     */
    private static final long serialVersionUID = 2009350578651813260L;
    /**
     *编号
     */
    private String plcode;
    /**
     *名称
     */
    private String plname;
    /**
     *B/S类路径
     */
    private String plbsurl;
    /**
     *C/S类路径
     */
    private String plcsclass;
    /**
     *业务类型
     */
    private String pltypetype;
    /**
     *描述
     */
    private String pldesc;
    /**
     *分类ID
     */
    private String plactioncls;
}
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/PRMDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
package com.vci.dto;
import java.util.List;
public class PRMDTO implements   java.io.Serializable {
    private static final long serialVersionUID = -9069714336905186990L;
    /**
     * æ˜¾ç¤ºå¤šå°‘列,默认为3列
     */
    private String showCols = "3";
    /**
     * è¡¨å•名称
     */
    private String formQtName = "";
    private List<PRMItemDTO> prmItemList;
    public String getShowCols() {
        return showCols;
    }
    public void setShowCols(String showCols) {
        this.showCols = showCols;
    }
    public String getFormQtName() {
        return formQtName;
    }
    public void setFormQtName(String formQtName) {
        this.formQtName = formQtName;
    }
    public List<PRMItemDTO> getPrmItemList() {
        return prmItemList;
    }
    public void setPrmItemList(List<PRMItemDTO> prmItemList) {
        this.prmItemList = prmItemList;
    }
    @Override
    public String toString() {
        return "PRMVO{" +
                "showCols='" + showCols + '\'' +
                ", formQtName='" + formQtName + '\'' +
                ", prmItemList=" + prmItemList +
                '}';
    }
}
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/PRMItemDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,764 @@
package com.vci.dto;
import com.vci.bo.ItemSeniorQueryBO;
import com.vci.pagemodel.KeyValue;
import java.util.ArrayList;
import java.util.List;
public class PRMItemDTO implements java.io.Serializable {
    private static final long serialVersionUID = 2773419329512304674L;
    /**
     * ä½¿ç”¨å­—段
     */
    private String itemField = "";
    //list
    private String itemOR = "";
    private String itemEQ = "";
    private String itemTrim = "";
    /**
     * å¿½ç•¥
     */
    private String itemDbl = "";
    /**
     * å­—符串截取
     */
    private String itemCut = "";
    /**
     *绑定表单
     */
    private String itemInObj = "";
    /**
     * form:字段表达式  table:附加查询条件
     */
    private String itemAddFilter = "";
    /**
     *
     */
    private String itemOutType = "";
    /**
     * table æ¯é¡µå¯æ˜¾ç¤ºè¡Œæ•°
     */
    private String itemPageSize = "";
    /**
     * å›¾ç‰‡å®½é«˜ï¼š0,0
     */
    private String itemImgWH = "";
    /**
     * éœ€è¦ä½¿ç”¨çš„字段
     */
    private String itemOutFields = "";
    /**
     * å¾…选择的属性字段
     */
    private List<String[]> itemSelectoutFields=new ArrayList<>();
    /**
     * éœ€è¦ä½¿ç”¨çš„集合
     */
    private List<String> itemOutFieldList=new ArrayList<>();
    /**
     * éœ€è¦æœç´¢çš„字段
     */
    private String itemKeyFields = "";
    /**
     *待搜索字段
     */
    private List<String> itemSearchFieldList=new ArrayList<>();
    /**
     * éœ€è¦æœç´¢çš„字段
     */
    private List<String> itemKeyFieldList=new ArrayList<>();
    private String itemBat = "";
    /**
     * å®½åº¦
     */
    private String itemFieldWidth = "";
    /**
     * åˆ—显示宽段 itemOutFieldList ç›¸åŒ¹é…
     */
    private List<KeyValue> itemFieldWidthList=new ArrayList<>();
    //form
    private String itemTxf = "";
    /**
     * æ˜¾ç¤ºåç§°
     */
    private String itemName = "";
    /**
     * å±žæ€§ç±»åž‹
     *      text:单行文本框
     *         textbtn:文本按钮框:
     *         textarea:多行文本框:
     *         richtext:富文本框:
     *         number:数字输入框:
     *         password:密码框:
     *         radio:单选按钮:
     *         checkbox:多选按钮:
     *         select:下拉菜单:
     *         multiselect:多选下拉菜单:
     *         date:日期输入框:
     *         time:时间输入框:
     *         datetime:日期时间输入框:
     *         file:文件上传:
     *         multiFile:多文件上传:
     *         custom:自定义:
     *         customform:自定义表单:
     *         hidden:隐藏或普通文字:
     *         webeditor:Web编辑器:
     *         specialCharacter:特殊字符:
     */
    private String itemType = "";
    /**
     * å±žæ€§ç±»åž‹æ˜¾ç¤ºå€¼
     */
    private String itemTypeText = "";
    /**
     * é»˜è®¤å€¼
     */
    private String itemValue = "";
    /**
     *占位方式 1:显示,2:不显示
     */
    private String itemCols = "";
    /**
     *
     */
    private String itemRows = "";
    /**
     * é™„加属性(样式)
     */
    private String itemStyle = "";
    /**
     *脚本验证
     */
    private String itemScript = "";
    /**
     * æç¤ºæ–‡å­—
     */
    private String itemTips = "";
    /**
     * æžšä¸¾å€¼
     */
    private List<String> itemValueList = null;
    /**
     *一级参照
     */
    private String itemListTable = "";
    /**
     *二级参照
     */
    private String itemListTxt = "";
    /**
     *参照值
     */
    private String itemListVal = "";
    /**
     * æ˜¯å¦å¯ä»¥ç¼–辑0:编辑:1:只读
     */
    private String itemIsEditable = "";
    /**
     * åªè¯»é€‰æ‹©æ¡ä»¶
     */
    private String itemEditableProgram = "";
    /**
     *
     */
    private String itemEditCondition = "";
    /**
     * æ˜¯å¦æ˜¾ç¤ºå­—段 0;不显示,1:显示
     */
    private String itemIsHidden = "";
    /**
     * æŸ¥è¯¢æ¨¡æ¿åç§°
     */
    private String itemQtName = "";
    /**
     * æ˜¯å¦å¿…å¡« 0:否,1:是
     */
    private String itemIsRequired = "";
    /**
     *http存储开关  0:否,1:是
     */
    private String itemIsHttpSave = "";
    /**
     * å­˜å‚¨è·¯å¾„
     */
    private String itemHttpVolumnPath = "";
    /**
     * å­˜å‚¨è·¯å¾„字段
     */
    private String itemHttpPathField = "";
    /**
     * æƒé™æŽ§åˆ¶
     */
    private String itemRight = "";
    /**
     * é«˜çº§æŸ¥è¯¢åˆ—
     */
    private String itemSeniorQueryCols = "";
    /**
     * é«˜çº§æŸ¥è¯¢å„列使用次数
     */
    private String itemSeniorQueryColsCounts = "";
    /**
     *高级查询sql
     */
    private String itemQuerySql = "";
    /***
     * é«˜çº§æŸ¥è¯¢å¯¹è±¡
     */
    private  List<ItemSeniorQueryBO> itemSeniorQueryBOS=new ArrayList<>();
    /**
     * è¶…链接字段
     */
    private String itemHrefFields = "";
    /**
     * è¶…链接配置
     */
    private String itemHrefConf = "";
    /**
     * æŸ¥è¯¢å…³è”列
     */
    private String itemQueryRefFields = "";
    /***
     * è‡ªå®šä¹‰ç±»è·¯å¾„
     */
    private String itemCustomClass = "";
    /**
     * æŽ§åˆ¶æ˜¾ç¤ºåˆ—
     */
    private String itemCtrlDisplyCol = "";
    /**
     * æŽ§åˆ¶æ˜¾ç¤ºæ¡ä»¶
     */
    private String itemCtrlDisplyCondition = "";
    /**
     * æŸ¥è¯¢åŒºåŸŸæ˜¾ç¤ºæŽ§åˆ¶ true:显示,false ä¸æ˜¾ç¤º
     */
    private String itemIsNavigatorExpand = "";
    /**
     * æ˜¯å¦æ˜¾ç¤ºæ–‡ä»¶å¤¹ true:显示,false ä¸æ˜¾ç¤º
     */
    private String itemIsShowFolder = "";
    /**
     * çˆ¶æ–‡ä»¶å¤¹åç§°
     */
    private String itemParentFolderName = "";
    /**
     *   æ˜¾ç¤ºè¡¨è¾¾å¼ ${aa}-${bb}
     */
    private String itemShowExpression = "";
    /**
     * æ•°æ®ä¸ºæ—¥æœŸç±»åž‹æ—¶çš„æ ¼å¼åŒ–字符串 å¦‚ yyyy-MM-dd HH:mm:ss
     */
    private String itemDateFormat = "";
    public String getItemRight() {
        return itemRight;
    }
    public void setItemRight(String itemRight) {
        this.itemRight = itemRight;
    }
    public String getItemQuerySql() {
        return itemQuerySql;
    }
    public void setItemQuerySql(String itemQuerySql) {
        this.itemQuerySql = itemQuerySql;
    }
    public String getItemFieldWidth() {
        return itemFieldWidth;
    }
    public void setItemFieldWidth(String itemFieldWidth) {
        this.itemFieldWidth = itemFieldWidth;
    }
    public String getItemParentFolderName() {
        return itemParentFolderName;
    }
    public void setItemParentFolderName(String itemParentFolderName) {
        this.itemParentFolderName = itemParentFolderName;
    }
    public String getItemIsShowFolder() {
        return itemIsShowFolder;
    }
    public void setItemIsShowFolder(String itemIsShowFolder) {
        this.itemIsShowFolder = itemIsShowFolder;
    }
    public String getItemIsNavigatorExpand() {
        return itemIsNavigatorExpand;
    }
    public void setItemIsNavigatorExpand(String itemIsNavigatorExpand) {
        this.itemIsNavigatorExpand = itemIsNavigatorExpand;
    }
    public String getItemField() {
        return itemField;
    }
    public void setItemField(String itemField) {
        this.itemField = itemField;
    }
    public String getItemOR() {
        return itemOR;
    }
    public void setItemOR(String itemOR) {
        this.itemOR = itemOR;
    }
    public String getItemEQ() {
        return itemEQ;
    }
    public void setItemEQ(String itemEQ) {
        this.itemEQ = itemEQ;
    }
    public String getItemTrim() {
        return itemTrim;
    }
    public void setItemTrim(String itemTrim) {
        this.itemTrim = itemTrim;
    }
    public String getItemDbl() {
        return itemDbl;
    }
    public void setItemDbl(String itemDbl) {
        this.itemDbl = itemDbl;
    }
    public String getItemCut() {
        return itemCut;
    }
    public void setItemCut(String itemCut) {
        this.itemCut = itemCut;
    }
    public String getItemInObj() {
        return itemInObj;
    }
    public void setItemInObj(String itemInObj) {
        this.itemInObj = itemInObj;
    }
    public String getItemOutType() {
        return itemOutType;
    }
    public void setItemOutType(String itemOutType) {
        this.itemOutType = itemOutType;
    }
    public String getItemPageSize() {
        return itemPageSize;
    }
    public void setItemPageSize(String itemPageSize) {
        this.itemPageSize = itemPageSize;
    }
    public String getItemImgWH() {
        return itemImgWH;
    }
    public void setItemImgWH(String itemImgWH) {
        this.itemImgWH = itemImgWH;
    }
    public String getItemOutFields() {
        return itemOutFields;
    }
    public void setItemOutFields(String itemOutFields) {
        this.itemOutFields = itemOutFields;
    }
    public String getItemKeyFields() {
        return itemKeyFields;
    }
    public void setItemKeyFields(String itemKeyFields) {
        this.itemKeyFields = itemKeyFields;
    }
    public String getItemBat() {
        return itemBat;
    }
    public void setItemBat(String itemBat) {
        this.itemBat = itemBat;
    }
    public String getItemTxf() {
        return itemTxf;
    }
    public void setItemTxf(String itemTxf) {
        this.itemTxf = itemTxf;
    }
    public String getItemName() {
        return itemName;
    }
    public void setItemName(String itemName) {
        this.itemName = itemName;
    }
    public String getItemType() {
        return itemType;
    }
    public void setItemType(String itemType) {
        this.itemType = itemType;
    }
    public String getItemValue() {
        return itemValue;
    }
    public void setItemValue(String itemValue) {
        this.itemValue = itemValue;
    }
    public String getItemCols() {
        return itemCols;
    }
    public void setItemCols(String itemCols) {
        this.itemCols = itemCols;
    }
    public String getItemRows() {
        return itemRows;
    }
    public void setItemRows(String itemRows) {
        this.itemRows = itemRows;
    }
    public List<String> getItemValueList() {
        return itemValueList;
    }
    public void setItemValueList(List<String> itemValueList) {
        this.itemValueList = itemValueList;
    }
    public String getItemListTable() {
        return itemListTable;
    }
    public void setItemListTable(String itemListTable) {
        this.itemListTable = itemListTable;
    }
    public String getItemListTxt() {
        return itemListTxt;
    }
    public void setItemListTxt(String itemListTxt) {
        this.itemListTxt = itemListTxt;
    }
    public String getItemListVal() {
        return itemListVal;
    }
    public void setItemListVal(String itemListVal) {
        this.itemListVal = itemListVal;
    }
    public String getItemAddFilter() {
        return itemAddFilter;
    }
    public void setItemAddFilter(String itemAddFilter) {
        this.itemAddFilter = itemAddFilter;
    }
    public String getItemStyle() {
        return itemStyle;
    }
    public void setItemStyle(String itemStyle) {
        this.itemStyle = itemStyle;
    }
    public String getItemScript() {
        return itemScript;
    }
    public void setItemScript(String itemScript) {
        this.itemScript = itemScript;
    }
    public String getItemTips() {
        return itemTips;
    }
    public void setItemTips(String itemTips) {
        this.itemTips = itemTips;
    }
    public String getItemIsEditable() {
        return itemIsEditable;
    }
    public void setItemIsEditable(String itemIsEditable) {
        this.itemIsEditable = itemIsEditable;
    }
    public String getItemIsHidden() {
        return itemIsHidden;
    }
    public void setItemIsHidden(String itemIsHidden) {
        this.itemIsHidden = itemIsHidden;
    }
    public String getItemQtName() {
        return itemQtName;
    }
    public void setItemQtName(String itemQtName) {
        this.itemQtName = itemQtName;
    }
    public String getItemIsRequired() {
        return itemIsRequired;
    }
    public void setItemIsRequired(String itemIsRequired) {
        this.itemIsRequired = itemIsRequired;
    }
    public String getItemSeniorQueryCols() {
        return itemSeniorQueryCols;
    }
    public void setItemSeniorQueryCols(String itemSeniorQueryCols) {
        this.itemSeniorQueryCols = itemSeniorQueryCols;
    }
    public String getItemSeniorQueryColsCounts() {
        return itemSeniorQueryColsCounts;
    }
    public void setItemSeniorQueryColsCounts(String itemSeniorQueryColsCounts) {
        this.itemSeniorQueryColsCounts = itemSeniorQueryColsCounts;
    }
    public String getItemHrefFields() {
        return itemHrefFields;
    }
    public void setItemHrefFields(String itemHrefFields) {
        this.itemHrefFields = itemHrefFields;
    }
    public String getItemHrefConf() {
        return itemHrefConf;
    }
    public void setItemHrefConf(String itemHrefConf) {
        this.itemHrefConf = itemHrefConf;
    }
    public String getItemQueryRefFields() {
        return itemQueryRefFields;
    }
    public void setItemQueryRefFields(String itemQueryRefFields) {
        this.itemQueryRefFields = itemQueryRefFields;
    }
    public String getItemCustomClass() {
        return itemCustomClass;
    }
    public void setItemCustomClass(String itemCustomClass) {
        this.itemCustomClass = itemCustomClass;
    }
    public String getItemCtrlDisplyCol() {
        return itemCtrlDisplyCol;
    }
    public void setItemCtrlDisplyCol(String itemCtrlDisplyCol) {
        this.itemCtrlDisplyCol = itemCtrlDisplyCol;
    }
    public String getItemCtrlDisplyCondition() {
        return itemCtrlDisplyCondition;
    }
    public void setItemCtrlDisplyCondition(String itemCtrlDisplyCondition) {
        this.itemCtrlDisplyCondition = itemCtrlDisplyCondition;
    }
    public String getItemIsHttpSave() {
        return itemIsHttpSave;
    }
    public void setItemIsHttpSave(String itemIsHttpSave) {
        this.itemIsHttpSave = itemIsHttpSave;
    }
    public String getItemHttpVolumnPath() {
        return itemHttpVolumnPath;
    }
    public void setItemHttpVolumnPath(String itemHttpVolumnPath) {
        this.itemHttpVolumnPath = itemHttpVolumnPath;
    }
    public String getItemHttpPathField() {
        return itemHttpPathField;
    }
    public void setItemHttpPathField(String itemHttpPathField) {
        this.itemHttpPathField = itemHttpPathField;
    }
    public String getItemEditCondition() {
        return itemEditCondition;
    }
    public void setItemEditCondition(String itemEditCondition) {
        this.itemEditCondition = itemEditCondition;
    }
    public String getItemEditableProgram() {
        return itemEditableProgram;
    }
    public void setItemEditableProgram(String itemEditableProgram) {
        this.itemEditableProgram = itemEditableProgram;
    }
    public String getItemShowExpression() {
        return itemShowExpression;
    }
    public void setItemShowExpression(String itemShowExpression) {
        this.itemShowExpression = itemShowExpression;
    }
    public String getItemDateFormat() {
        return itemDateFormat;
    }
    public void setItemDateFormat(String itemDateFormat) {
        this.itemDateFormat = itemDateFormat;
    }
    public List<String> getItemOutFieldList() {
        return itemOutFieldList;
    }
    public void setItemOutFieldList(List<String> itemOutFieldList) {
        this.itemOutFieldList = itemOutFieldList;
    }
    public List<String> getItemKeyFieldList() {
        return itemKeyFieldList;
    }
    public void setItemKeyFieldList(List<String> itemKeyFieldList) {
        this.itemKeyFieldList = itemKeyFieldList;
    }
    public List<KeyValue> getItemFieldWidthList() {
        return itemFieldWidthList;
    }
    public void setItemFieldWidthList(List<KeyValue> itemFieldWidthList) {
        this.itemFieldWidthList = itemFieldWidthList;
    }
    public String getItemTypeText() {
        return itemTypeText;
    }
    public void setItemTypeText(String itemTypeText) {
        this.itemTypeText = itemTypeText;
    }
    public List<ItemSeniorQueryBO> getItemSeniorQueryBOS() {
        return itemSeniorQueryBOS;
    }
    public void setItemSeniorQueryBOS(List<ItemSeniorQueryBO> itemSeniorQueryBOS) {
        this.itemSeniorQueryBOS = itemSeniorQueryBOS;
    }
    public List<String[]> getItemSelectoutFields() {
        return itemSelectoutFields;
    }
    public void setItemSelectoutFields(List<String[]> itemSelectoutFields) {
        this.itemSelectoutFields = itemSelectoutFields;
    }
    public List<String> getItemSearchFieldList() {
        return itemSearchFieldList;
    }
    public void setItemSearchFieldList(List<String> itemSearchFieldList) {
        this.itemSearchFieldList = itemSearchFieldList;
    }
    //    /**
//     * é«˜çº§æŸ¥è¯¢åˆ—与使用次数
//     */
//    public Map<String, Integer> getColAndUseCountMap() {
//        if(this.itemSeniorQueryCols == null || this.itemSeniorQueryColsCounts == null
//                || this.itemSeniorQueryCols.equals("") || this.itemSeniorQueryColsCounts.equals("")){
//            return null;
//        }
//        Map<String, Integer> map = new LinkedHashMap<String, Integer>();
//        String[] cols = this.itemSeniorQueryCols.split(",");
//        String[] counts = this.itemSeniorQueryColsCounts.split(",");
//        for(int i = 0; i < cols.length; i++){
//            int count = Integer.valueOf(counts[i]);
//            map.put(cols[i], count);
//        }
//        return map;
//    }
//
//    /**
//     * é«˜çº§æŸ¥è¯¢è‡ªå®šä¹‰åˆ—与查询sql
//     */
//    public Map<String, String> getCustomerColAndSql() {
//        if(this.itemSeniorQueryCols == null || this.itemQuerySql == null
//                || this.itemSeniorQueryCols.equals("") || this.itemQuerySql.equals("")){
//            return null;
//        }
//        Map<String, String> map = new LinkedHashMap<String, String>();
//        String[] cols = this.itemSeniorQueryCols.split(",");
//        String[] sqls = this.itemQuerySql.split(";");
//        for(int i = 0; i < cols.length; i++){
//            String sql = sqls[i];
//            if(sql != null && !sql.equalsIgnoreCase("NULL")){
//                map.put(cols[i], sql);
//            }
//        }
//        return map;
//    }
//
//    /**
//     * è¿”回 PRMItem å¯¹è±¡æ˜¯å¦æ˜¾ç¤º
//     * @return å¯¹è±¡æ˜¯å¦æ˜¾ç¤º  (对应表单属性定义的占位方式的显示、不显示)<p>true:显示 false:不显示</p>
//     */
//    public boolean isShow(){
//        return ("1".equalsIgnoreCase(this.getItemCols().trim()));
//    }
//    /**
//     * è¿”回 PRMItem å¯¹è±¡æ˜¯å¦æ˜¯å¿…填项
//     * @return å¯¹è±¡æ˜¯å¦æ˜¯å¿…å¡«<p>true:显必填项 false:不是必填项</p>
//     */
//    public boolean isRequired(){
//        return ("1".equalsIgnoreCase(this.getItemIsRequired().trim()));
//    }
//    /**
//     * è¿”回 PRMItem å¯¹è±¡ æ˜¯å¦å¯ä»¥ç¼–辑
//     * @return å¯¹è±¡æ˜¯å¦å¯ç¼–辑 <p>true: å¯ç¼–辑(非只读) false: ä¸å¯ç¼–辑(只读)</p>
//     */
//    public boolean isEditable(){
//        return ("0".equalsIgnoreCase(this.getItemIsEditable().trim()));
//    }
//    /**
//     * è¿”回 PRMItem å¯¹è±¡ æ˜¯å¦å¯æ˜¯åªè¯»
//     * @return å¯¹è±¡æ˜¯å¦å¯ç¼–辑 <p>true: åªè¯»(不可编辑) false: éžåªè¯»(可编辑)</p>
//     */
//    public boolean isReadonly(){
//        return !(isEditable());
//    }
    @Override
    public String toString() {
        return "PRMItemDTO{" +
                "itemField='" + itemField + '\'' +
                ", itemOR='" + itemOR + '\'' +
                ", itemEQ='" + itemEQ + '\'' +
                ", itemTrim='" + itemTrim + '\'' +
                ", itemDbl='" + itemDbl + '\'' +
                ", itemCut='" + itemCut + '\'' +
                ", itemInObj='" + itemInObj + '\'' +
                ", itemAddFilter='" + itemAddFilter + '\'' +
                ", itemOutType='" + itemOutType + '\'' +
                ", itemPageSize='" + itemPageSize + '\'' +
                ", itemImgWH='" + itemImgWH + '\'' +
                ", itemOutFields='" + itemOutFields + '\'' +
                ", itemSelectoutFields=" + itemSelectoutFields +
                ", itemOutFieldList=" + itemOutFieldList +
                ", itemKeyFields='" + itemKeyFields + '\'' +
                ", itemSearchFieldList=" + itemSearchFieldList +
                ", itemKeyFieldList=" + itemKeyFieldList +
                ", itemBat='" + itemBat + '\'' +
                ", itemFieldWidth='" + itemFieldWidth + '\'' +
                ", itemFieldWidthList=" + itemFieldWidthList +
                ", itemTxf='" + itemTxf + '\'' +
                ", itemName='" + itemName + '\'' +
                ", itemType='" + itemType + '\'' +
                ", itemTypeText='" + itemTypeText + '\'' +
                ", itemValue='" + itemValue + '\'' +
                ", itemCols='" + itemCols + '\'' +
                ", itemRows='" + itemRows + '\'' +
                ", itemStyle='" + itemStyle + '\'' +
                ", itemScript='" + itemScript + '\'' +
                ", itemTips='" + itemTips + '\'' +
                ", itemValueList=" + itemValueList +
                ", itemListTable='" + itemListTable + '\'' +
                ", itemListTxt='" + itemListTxt + '\'' +
                ", itemListVal='" + itemListVal + '\'' +
                ", itemIsEditable='" + itemIsEditable + '\'' +
                ", itemEditableProgram='" + itemEditableProgram + '\'' +
                ", itemEditCondition='" + itemEditCondition + '\'' +
                ", itemIsHidden='" + itemIsHidden + '\'' +
                ", itemQtName='" + itemQtName + '\'' +
                ", itemIsRequired='" + itemIsRequired + '\'' +
                ", itemIsHttpSave='" + itemIsHttpSave + '\'' +
                ", itemHttpVolumnPath='" + itemHttpVolumnPath + '\'' +
                ", itemHttpPathField='" + itemHttpPathField + '\'' +
                ", itemRight='" + itemRight + '\'' +
                ", itemSeniorQueryCols='" + itemSeniorQueryCols + '\'' +
                ", itemSeniorQueryColsCounts='" + itemSeniorQueryColsCounts + '\'' +
                ", itemQuerySql='" + itemQuerySql + '\'' +
                ", itemSeniorQueryBOS=" + itemSeniorQueryBOS +
                ", itemHrefFields='" + itemHrefFields + '\'' +
                ", itemHrefConf='" + itemHrefConf + '\'' +
                ", itemQueryRefFields='" + itemQueryRefFields + '\'' +
                ", itemCustomClass='" + itemCustomClass + '\'' +
                ", itemCtrlDisplyCol='" + itemCtrlDisplyCol + '\'' +
                ", itemCtrlDisplyCondition='" + itemCtrlDisplyCondition + '\'' +
                ", itemIsNavigatorExpand='" + itemIsNavigatorExpand + '\'' +
                ", itemIsShowFolder='" + itemIsShowFolder + '\'' +
                ", itemParentFolderName='" + itemParentFolderName + '\'' +
                ", itemShowExpression='" + itemShowExpression + '\'' +
                ", itemDateFormat='" + itemDateFormat + '\'' +
                '}';
    }
}
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/PortalVIDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,96 @@
package com.vci.dto;
/**
 *
 * è¡¨å•显示对象
 * @author xiej
 * @date 2024/08/14 6:04 PM
 */
public class PortalVIDTO implements  java.io.Serializable{
    private static final long serialVersionUID = 3676954583670971638L;
    /**
     * ä¸»é”®
     */
    private String id;
    /**
     * 0: ä¸šåŠ¡ç±»åž‹; 1: é“¾æŽ¥ç±»åž‹. é»˜è®¤0
     */
    private short typeFlag;
    /**
     * ç±»åž‹å
     */
    private String typeName;
    /**
     * è§†å›¾å
     */
    private String viName;
    /**
     * è§†å›¾ç±»åž‹: è¾“入表单或分页列表
     */
    private short viType;
    /**
     * å®šä¹‰è¯¦æƒ…
     */
    private PRMDTO prm;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public short getTypeFlag() {
        return typeFlag;
    }
    public void setTypeFlag(short typeFlag) {
        this.typeFlag = typeFlag;
    }
    public String getTypeName() {
        return typeName;
    }
    public void setTypeName(String typeName) {
        this.typeName = typeName;
    }
    public String getViName() {
        return viName;
    }
    public void setViName(String viName) {
        this.viName = viName;
    }
    public short getViType() {
        return viType;
    }
    public void setViType(short viType) {
        this.viType = viType;
    }
    public PRMDTO getPrm() {
        return prm;
    }
    public void setPrm(PRMDTO prm) {
        this.prm = prm;
    }
    @Override
    public String toString() {
        return "PortalVIVO{" +
                "id='" + id + '\'' +
                ", typeFlag=" + typeFlag +
                ", typeName='" + typeName + '\'' +
                ", viName='" + viName + '\'' +
                ", viType=" + viType +
                ", prm=" + prm +
                '}';
    }
}
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/model/PRMDO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
package com.vci.model;
import java.util.List;
public class PRMDO implements   java.io.Serializable {
    private static final long serialVersionUID = -5898872445810489324L;
    private String showCols = "3";
    private String formQtName = "";
    private List<PRMItemDO> prmItemList;
    public String getShowCols() {
        return showCols;
    }
    public void setShowCols(String showCols) {
        this.showCols = showCols;
    }
    public String getFormQtName() {
        return formQtName;
    }
    public void setFormQtName(String formQtName) {
        this.formQtName = formQtName;
    }
    public List<PRMItemDO> getPrmItemList() {
        return prmItemList;
    }
    public void setPrmItemList(List<PRMItemDO> prmItemList) {
        this.prmItemList = prmItemList;
    }
    @Override
    public String toString() {
        return "PRMVO{" +
                "showCols='" + showCols + '\'' +
                ", formQtName='" + formQtName + '\'' +
                ", prmItemList=" + prmItemList +
                '}';
    }
}
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/model/PRMItemDO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,725 @@
package com.vci.model;
import com.vci.bo.ItemSeniorQueryBO;
import com.vci.pagemodel.KeyValue;
import java.util.ArrayList;
import java.util.List;
public class PRMItemDO implements java.io.Serializable {
    private static final long serialVersionUID = 4168551730739914307L;
    /**
     * ä½¿ç”¨å­—段
     */
    private String itemField = "";
    //list
    private String itemOR = "";
    private String itemEQ = "";
    private String itemTrim = "";
    /**
     * å¿½ç•¥
     */
    private String itemDbl = "";
    /**
     * å­—符串截取
     */
    private String itemCut = "";
    /**
     *绑定表单
     */
    private String itemInObj = "";
    /**
     * form:字段表达式  table:附加查询条件
     */
    private String itemAddFilter = "";
    /**
     *
     */
    private String itemOutType = "";
    /**
     * table æ¯é¡µå¯æ˜¾ç¤ºè¡Œæ•°
     */
    private String itemPageSize = "";
    /**
     * å›¾ç‰‡å®½é«˜ï¼š0,0
     */
    private String itemImgWH = "";
    /**
     * éœ€è¦ä½¿ç”¨çš„字段
     */
    private String itemOutFields = "";
    /**
     * éœ€è¦æœç´¢çš„字段
     */
    private String itemKeyFields = "";
    private String itemBat = "";
    /**
     * å®½åº¦
     */
    private String itemFieldWidth = "";
    //form
    private String itemTxf = "";
    /**
     * æ˜¾ç¤ºåç§°
     */
    private String itemName = "";
    /**
     * å±žæ€§ç±»åž‹
     *      text:单行文本框
     *         textbtn:文本按钮框:
     *         textarea:多行文本框:
     *         richtext:富文本框:
     *         number:数字输入框:
     *         password:密码框:
     *         radio:单选按钮:
     *         checkbox:多选按钮:
     *         select:下拉菜单:
     *         multiselect:多选下拉菜单:
     *         date:日期输入框:
     *         time:时间输入框:
     *         datetime:日期时间输入框:
     *         file:文件上传:
     *         multiFile:多文件上传:
     *         custom:自定义:
     *         customform:自定义表单:
     *         hidden:隐藏或普通文字:
     *         webeditor:Web编辑器:
     *         specialCharacter:特殊字符:
     */
    private String itemType = "";
    /**
     * å±žæ€§ç±»åž‹æ˜¾ç¤ºå€¼
     */
    private String itemTypeText = "";
    /**
     * é»˜è®¤å€¼
     */
    private String itemValue = "";
    /**
     *占位方式 1:显示,2:不显示
     */
    private String itemCols = "";
    /**
     *
     */
    private String itemRows = "";
    /**
     * é™„加属性(样式)
     */
    private String itemStyle = "";
    /**
     *脚本验证
     */
    private String itemScript = "";
    /**
     * æç¤ºæ–‡å­—
     */
    private String itemTips = "";
    /**
     * æžšä¸¾å€¼
     */
    private List<String> itemValueList = null;
    /**
     *一级参照
     */
    private String itemListTable = "";
    /**
     *二级参照
     */
    private String itemListTxt = "";
    /**
     *参照值
     */
    private String itemListVal = "";
    /**
     * æ˜¯å¦å¯ä»¥ç¼–辑0:编辑:1:只读
     */
    private String itemIsEditable = "";
    /**
     * åªè¯»é€‰æ‹©æ¡ä»¶
     */
    private String itemEditableProgram = "";
    /**
     *
     */
    private String itemEditCondition = "";
    /**
     * æ˜¯å¦æ˜¾ç¤ºå­—段 0;不显示,1:显示
     */
    private String itemIsHidden = "";
    /**
     * æŸ¥è¯¢æ¨¡æ¿åç§°
     */
    private String itemQtName = "";
    /**
     * æ˜¯å¦å¿…å¡« 0:否,1:是
     */
    private String itemIsRequired = "";
    /**
     *http存储开关  0:否,1:是
     */
    private String itemIsHttpSave = "";
    /**
     * å­˜å‚¨è·¯å¾„
     */
    private String itemHttpVolumnPath = "";
    /**
     * å­˜å‚¨è·¯å¾„字段
     */
    private String itemHttpPathField = "";
    /**
     * æƒé™æŽ§åˆ¶
     */
    private String itemRight = "";
    /**
     * é«˜çº§æŸ¥è¯¢åˆ—
     */
    private String itemSeniorQueryCols = "";
    /**
     * é«˜çº§æŸ¥è¯¢å„列使用次数
     */
    private String itemSeniorQueryColsCounts = "";
    /**
     *高级查询sql
     */
    private String itemQuerySql = "";
    /**
     * è¶…链接字段
     */
    private String itemHrefFields = "";
    /**
     * è¶…链接配置
     */
    private String itemHrefConf = "";
    /**
     * æŸ¥è¯¢å…³è”列
     */
    private String itemQueryRefFields = "";
    /***
     * è‡ªå®šä¹‰ç±»è·¯å¾„
     */
    private String itemCustomClass = "";
    /**
     * æŽ§åˆ¶æ˜¾ç¤ºåˆ—
     */
    private String itemCtrlDisplyCol = "";
    /**
     * æŽ§åˆ¶æ˜¾ç¤ºæ¡ä»¶
     */
    private String itemCtrlDisplyCondition = "";
    /**
     * æŸ¥è¯¢åŒºåŸŸæ˜¾ç¤ºæŽ§åˆ¶ true:显示,false ä¸æ˜¾ç¤º
     */
    private String itemIsNavigatorExpand = "";
    /**
     * æ˜¯å¦æ˜¾ç¤ºæ–‡ä»¶å¤¹ true:显示,false ä¸æ˜¾ç¤º
     */
    private String itemIsShowFolder = "";
    /**
     * çˆ¶æ–‡ä»¶å¤¹åç§°
     */
    private String itemParentFolderName = "";
    /**
     *   æ˜¾ç¤ºè¡¨è¾¾å¼ ${aa}-${bb}
     */
    private String itemShowExpression = "";
    /**
     * æ•°æ®ä¸ºæ—¥æœŸç±»åž‹æ—¶çš„æ ¼å¼åŒ–字符串 å¦‚ yyyy-MM-dd HH:mm:ss
     */
    private String itemDateFormat = "";
    public String getItemField() {
        return itemField;
    }
    public void setItemField(String itemField) {
        this.itemField = itemField;
    }
    public String getItemOR() {
        return itemOR;
    }
    public void setItemOR(String itemOR) {
        this.itemOR = itemOR;
    }
    public String getItemEQ() {
        return itemEQ;
    }
    public void setItemEQ(String itemEQ) {
        this.itemEQ = itemEQ;
    }
    public String getItemTrim() {
        return itemTrim;
    }
    public void setItemTrim(String itemTrim) {
        this.itemTrim = itemTrim;
    }
    public String getItemDbl() {
        return itemDbl;
    }
    public void setItemDbl(String itemDbl) {
        this.itemDbl = itemDbl;
    }
    public String getItemCut() {
        return itemCut;
    }
    public void setItemCut(String itemCut) {
        this.itemCut = itemCut;
    }
    public String getItemInObj() {
        return itemInObj;
    }
    public void setItemInObj(String itemInObj) {
        this.itemInObj = itemInObj;
    }
    public String getItemAddFilter() {
        return itemAddFilter;
    }
    public void setItemAddFilter(String itemAddFilter) {
        this.itemAddFilter = itemAddFilter;
    }
    public String getItemOutType() {
        return itemOutType;
    }
    public void setItemOutType(String itemOutType) {
        this.itemOutType = itemOutType;
    }
    public String getItemPageSize() {
        return itemPageSize;
    }
    public void setItemPageSize(String itemPageSize) {
        this.itemPageSize = itemPageSize;
    }
    public String getItemImgWH() {
        return itemImgWH;
    }
    public void setItemImgWH(String itemImgWH) {
        this.itemImgWH = itemImgWH;
    }
    public String getItemOutFields() {
        return itemOutFields;
    }
    public void setItemOutFields(String itemOutFields) {
        this.itemOutFields = itemOutFields;
    }
    public String getItemKeyFields() {
        return itemKeyFields;
    }
    public void setItemKeyFields(String itemKeyFields) {
        this.itemKeyFields = itemKeyFields;
    }
    public String getItemBat() {
        return itemBat;
    }
    public void setItemBat(String itemBat) {
        this.itemBat = itemBat;
    }
    public String getItemFieldWidth() {
        return itemFieldWidth;
    }
    public void setItemFieldWidth(String itemFieldWidth) {
        this.itemFieldWidth = itemFieldWidth;
    }
    public String getItemTxf() {
        return itemTxf;
    }
    public void setItemTxf(String itemTxf) {
        this.itemTxf = itemTxf;
    }
    public String getItemName() {
        return itemName;
    }
    public void setItemName(String itemName) {
        this.itemName = itemName;
    }
    public String getItemType() {
        return itemType;
    }
    public void setItemType(String itemType) {
        this.itemType = itemType;
    }
    public String getItemTypeText() {
        return itemTypeText;
    }
    public void setItemTypeText(String itemTypeText) {
        this.itemTypeText = itemTypeText;
    }
    public String getItemValue() {
        return itemValue;
    }
    public void setItemValue(String itemValue) {
        this.itemValue = itemValue;
    }
    public String getItemCols() {
        return itemCols;
    }
    public void setItemCols(String itemCols) {
        this.itemCols = itemCols;
    }
    public String getItemRows() {
        return itemRows;
    }
    public void setItemRows(String itemRows) {
        this.itemRows = itemRows;
    }
    public String getItemStyle() {
        return itemStyle;
    }
    public void setItemStyle(String itemStyle) {
        this.itemStyle = itemStyle;
    }
    public String getItemScript() {
        return itemScript;
    }
    public void setItemScript(String itemScript) {
        this.itemScript = itemScript;
    }
    public String getItemTips() {
        return itemTips;
    }
    public void setItemTips(String itemTips) {
        this.itemTips = itemTips;
    }
    public List<String> getItemValueList() {
        return itemValueList;
    }
    public void setItemValueList(List<String> itemValueList) {
        this.itemValueList = itemValueList;
    }
    public String getItemListTable() {
        return itemListTable;
    }
    public void setItemListTable(String itemListTable) {
        this.itemListTable = itemListTable;
    }
    public String getItemListTxt() {
        return itemListTxt;
    }
    public void setItemListTxt(String itemListTxt) {
        this.itemListTxt = itemListTxt;
    }
    public String getItemListVal() {
        return itemListVal;
    }
    public void setItemListVal(String itemListVal) {
        this.itemListVal = itemListVal;
    }
    public String getItemIsEditable() {
        return itemIsEditable;
    }
    public void setItemIsEditable(String itemIsEditable) {
        this.itemIsEditable = itemIsEditable;
    }
    public String getItemEditableProgram() {
        return itemEditableProgram;
    }
    public void setItemEditableProgram(String itemEditableProgram) {
        this.itemEditableProgram = itemEditableProgram;
    }
    public String getItemEditCondition() {
        return itemEditCondition;
    }
    public void setItemEditCondition(String itemEditCondition) {
        this.itemEditCondition = itemEditCondition;
    }
    public String getItemIsHidden() {
        return itemIsHidden;
    }
    public void setItemIsHidden(String itemIsHidden) {
        this.itemIsHidden = itemIsHidden;
    }
    public String getItemQtName() {
        return itemQtName;
    }
    public void setItemQtName(String itemQtName) {
        this.itemQtName = itemQtName;
    }
    public String getItemIsRequired() {
        return itemIsRequired;
    }
    public void setItemIsRequired(String itemIsRequired) {
        this.itemIsRequired = itemIsRequired;
    }
    public String getItemIsHttpSave() {
        return itemIsHttpSave;
    }
    public void setItemIsHttpSave(String itemIsHttpSave) {
        this.itemIsHttpSave = itemIsHttpSave;
    }
    public String getItemHttpVolumnPath() {
        return itemHttpVolumnPath;
    }
    public void setItemHttpVolumnPath(String itemHttpVolumnPath) {
        this.itemHttpVolumnPath = itemHttpVolumnPath;
    }
    public String getItemHttpPathField() {
        return itemHttpPathField;
    }
    public void setItemHttpPathField(String itemHttpPathField) {
        this.itemHttpPathField = itemHttpPathField;
    }
    public String getItemRight() {
        return itemRight;
    }
    public void setItemRight(String itemRight) {
        this.itemRight = itemRight;
    }
    public String getItemSeniorQueryCols() {
        return itemSeniorQueryCols;
    }
    public void setItemSeniorQueryCols(String itemSeniorQueryCols) {
        this.itemSeniorQueryCols = itemSeniorQueryCols;
    }
    public String getItemSeniorQueryColsCounts() {
        return itemSeniorQueryColsCounts;
    }
    public void setItemSeniorQueryColsCounts(String itemSeniorQueryColsCounts) {
        this.itemSeniorQueryColsCounts = itemSeniorQueryColsCounts;
    }
    public String getItemQuerySql() {
        return itemQuerySql;
    }
    public void setItemQuerySql(String itemQuerySql) {
        this.itemQuerySql = itemQuerySql;
    }
    public String getItemHrefFields() {
        return itemHrefFields;
    }
    public void setItemHrefFields(String itemHrefFields) {
        this.itemHrefFields = itemHrefFields;
    }
    public String getItemHrefConf() {
        return itemHrefConf;
    }
    public void setItemHrefConf(String itemHrefConf) {
        this.itemHrefConf = itemHrefConf;
    }
    public String getItemQueryRefFields() {
        return itemQueryRefFields;
    }
    public void setItemQueryRefFields(String itemQueryRefFields) {
        this.itemQueryRefFields = itemQueryRefFields;
    }
    public String getItemCustomClass() {
        return itemCustomClass;
    }
    public void setItemCustomClass(String itemCustomClass) {
        this.itemCustomClass = itemCustomClass;
    }
    public String getItemCtrlDisplyCol() {
        return itemCtrlDisplyCol;
    }
    public void setItemCtrlDisplyCol(String itemCtrlDisplyCol) {
        this.itemCtrlDisplyCol = itemCtrlDisplyCol;
    }
    public String getItemCtrlDisplyCondition() {
        return itemCtrlDisplyCondition;
    }
    public void setItemCtrlDisplyCondition(String itemCtrlDisplyCondition) {
        this.itemCtrlDisplyCondition = itemCtrlDisplyCondition;
    }
    public String getItemIsNavigatorExpand() {
        return itemIsNavigatorExpand;
    }
    public void setItemIsNavigatorExpand(String itemIsNavigatorExpand) {
        this.itemIsNavigatorExpand = itemIsNavigatorExpand;
    }
    public String getItemIsShowFolder() {
        return itemIsShowFolder;
    }
    public void setItemIsShowFolder(String itemIsShowFolder) {
        this.itemIsShowFolder = itemIsShowFolder;
    }
    public String getItemParentFolderName() {
        return itemParentFolderName;
    }
    public void setItemParentFolderName(String itemParentFolderName) {
        this.itemParentFolderName = itemParentFolderName;
    }
    public String getItemShowExpression() {
        return itemShowExpression;
    }
    public void setItemShowExpression(String itemShowExpression) {
        this.itemShowExpression = itemShowExpression;
    }
    public String getItemDateFormat() {
        return itemDateFormat;
    }
    public void setItemDateFormat(String itemDateFormat) {
        this.itemDateFormat = itemDateFormat;
    }
    @Override
    public String toString() {
        return "PRMItemDO{" +
                "itemField='" + itemField + '\'' +
                ", itemOR='" + itemOR + '\'' +
                ", itemEQ='" + itemEQ + '\'' +
                ", itemTrim='" + itemTrim + '\'' +
                ", itemDbl='" + itemDbl + '\'' +
                ", itemCut='" + itemCut + '\'' +
                ", itemInObj='" + itemInObj + '\'' +
                ", itemAddFilter='" + itemAddFilter + '\'' +
                ", itemOutType='" + itemOutType + '\'' +
                ", itemPageSize='" + itemPageSize + '\'' +
                ", itemImgWH='" + itemImgWH + '\'' +
                ", itemOutFields='" + itemOutFields + '\'' +
                ", itemKeyFields='" + itemKeyFields + '\'' +
                ", itemBat='" + itemBat + '\'' +
                ", itemFieldWidth='" + itemFieldWidth + '\'' +
                ", itemTxf='" + itemTxf + '\'' +
                ", itemName='" + itemName + '\'' +
                ", itemType='" + itemType + '\'' +
                ", itemTypeText='" + itemTypeText + '\'' +
                ", itemValue='" + itemValue + '\'' +
                ", itemCols='" + itemCols + '\'' +
                ", itemRows='" + itemRows + '\'' +
                ", itemStyle='" + itemStyle + '\'' +
                ", itemScript='" + itemScript + '\'' +
                ", itemTips='" + itemTips + '\'' +
                ", itemValueList=" + itemValueList +
                ", itemListTable='" + itemListTable + '\'' +
                ", itemListTxt='" + itemListTxt + '\'' +
                ", itemListVal='" + itemListVal + '\'' +
                ", itemIsEditable='" + itemIsEditable + '\'' +
                ", itemEditableProgram='" + itemEditableProgram + '\'' +
                ", itemEditCondition='" + itemEditCondition + '\'' +
                ", itemIsHidden='" + itemIsHidden + '\'' +
                ", itemQtName='" + itemQtName + '\'' +
                ", itemIsRequired='" + itemIsRequired + '\'' +
                ", itemIsHttpSave='" + itemIsHttpSave + '\'' +
                ", itemHttpVolumnPath='" + itemHttpVolumnPath + '\'' +
                ", itemHttpPathField='" + itemHttpPathField + '\'' +
                ", itemRight='" + itemRight + '\'' +
                ", itemSeniorQueryCols='" + itemSeniorQueryCols + '\'' +
                ", itemSeniorQueryColsCounts='" + itemSeniorQueryColsCounts + '\'' +
                ", itemQuerySql='" + itemQuerySql + '\'' +
                ", itemHrefFields='" + itemHrefFields + '\'' +
                ", itemHrefConf='" + itemHrefConf + '\'' +
                ", itemQueryRefFields='" + itemQueryRefFields + '\'' +
                ", itemCustomClass='" + itemCustomClass + '\'' +
                ", itemCtrlDisplyCol='" + itemCtrlDisplyCol + '\'' +
                ", itemCtrlDisplyCondition='" + itemCtrlDisplyCondition + '\'' +
                ", itemIsNavigatorExpand='" + itemIsNavigatorExpand + '\'' +
                ", itemIsShowFolder='" + itemIsShowFolder + '\'' +
                ", itemParentFolderName='" + itemParentFolderName + '\'' +
                ", itemShowExpression='" + itemShowExpression + '\'' +
                ", itemDateFormat='" + itemDateFormat + '\'' +
                '}';
    }
}
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/model/PortalVIDO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,101 @@
package com.vci.model;
import com.vci.starter.web.annotation.Transient;
import com.vci.starter.web.annotation.VciBtmType;
import com.vci.starter.web.constant.FrameWorkLcStatusConstant;
/**
 * çŠ¶æ€æ± 
 * @author weidy
 * @date 2022-2-15
 */
@VciBtmType(name = "status",text = "表单",tableName = "portal_vi",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
@Transient
public class PortalVIDO implements java.io.Serializable {
    private static final long serialVersionUID = -8378041621144542492L;
    /**
     * ä¸»é”®
     */
    private String id;
    /**
     * 0: ä¸šåŠ¡ç±»åž‹; 1: é“¾æŽ¥ç±»åž‹. é»˜è®¤0
     */
    private short typeFlag;
    /**
     * ç±»åž‹å
     */
    private String typeName;
    /**
     * è§†å›¾å
     */
    private String viName;
    /**
     * è§†å›¾ç±»åž‹: è¾“入表单或分页列表
     */
    private short viType;
    /**
     * å®šä¹‰è¯¦æƒ…
     */
    private String prm;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public short getTypeFlag() {
        return typeFlag;
    }
    public void setTypeFlag(short typeFlag) {
        this.typeFlag = typeFlag;
    }
    public String getTypeName() {
        return typeName;
    }
    public void setTypeName(String typeName) {
        this.typeName = typeName;
    }
    public String getViName() {
        return viName;
    }
    public void setViName(String viName) {
        this.viName = viName;
    }
    public short getViType() {
        return viType;
    }
    public void setViType(short viType) {
        this.viType = viType;
    }
    public String getPrm() {
        return prm;
    }
    public void setPrm(String prm) {
        this.prm = prm;
    }
    @Override
    public String toString() {
        return "PortalVIVO{" +
                "id='" + id + '\'' +
                ", typeFlag=" + typeFlag +
                ", typeName='" + typeName + '\'' +
                ", viName='" + viName + '\'' +
                ", viType=" + viType +
                ", prm='" + prm + '\'' +
                '}';
    }
}
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/model/SmFunctionForPlatform1.java
@@ -52,9 +52,9 @@
    private String plsuffixb;
    /**
     * åŠŸèƒ½ç¼–å·
     * åŠŸèƒ½ç¼–å· TODO:20240822确认平台已经去掉这个字段了,所以表中也删掉了该字段并将这儿注释掉了
     */
    private Integer plmoduleno;
    //private Integer plmoduleno;
    /**
     * æè¿°
@@ -152,13 +152,13 @@
        this.plsuffixb = plsuffixb == null ? null : plsuffixb.trim();
    }
    public Integer getPlmoduleno() {
    /*public Integer getPlmoduleno() {
        return plmoduleno;
    }
    public void setPlmoduleno(Integer plmoduleno) {
        this.plmoduleno = plmoduleno;
    }
    }*/
    public String getPldesc() {
        return pldesc;
@@ -234,7 +234,7 @@
                ", plsuffixc='" + plsuffixc + '\'' +
                ", plresourceb='" + plresourceb + '\'' +
                ", plsuffixb='" + plsuffixb + '\'' +
                ", plmoduleno=" + plmoduleno +
                //", plmoduleno=" + plmoduleno +
                ", pldesc='" + pldesc + '\'' +
                ", plisvalid=" + plisvalid +
                ", plimage='" + plimage + '\'' +
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/MenuVO.java
@@ -2,6 +2,7 @@
package com.vci.pagemodel;
import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
@@ -10,7 +11,7 @@
 *
 * @author Chill
 */
public class MenuVO  {
public class MenuVO implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
@@ -49,9 +50,24 @@
    private String alias;
    /**
     * è¯·æ±‚地址
     * è¯·æ±‚地址,界面路径
     */
    private String path;
    /**
     * å®¢æˆ·ç«¯åœ°å€
     */
    private String pathC;
    /**
     * resourceDotNet
     */
    private String resourceDotNet;
    /**
     * resourceDotMobile
     */
    private String resourceMobile;
    /**
     * èœå•资源
@@ -109,10 +125,68 @@
    private String modeType;
    /**
     * æ˜¯æ¨¡å—下子对象是模块还是操作:0表示无子节点,1表示是模块,2表示是操作
     */
    private Integer childType;
    /**
     * 1有效0无效:无效时,在功能权限界面不显示
     */
    private Boolean isValid;
    /**
     * å‰ç«¯æ˜¯å¦éšè—
     */
    private HashMap<String,Boolean> meta = new HashMap<>();
    public void setPathC(String pathC) {
        this.pathC = pathC;
    }
    public void setResourceDotNet(String resourceDotNet) {
        this.resourceDotNet = resourceDotNet;
    }
    public void setResourceMobile(String resourceMobile) {
        this.resourceMobile = resourceMobile;
    }
    public void setValid(Boolean valid) {
        isValid = valid;
    }
    public String getPathC() {
        return pathC;
    }
    public String getResourceDotNet() {
        return resourceDotNet;
    }
    public String getResourceMobile() {
        return resourceMobile;
    }
    public Boolean getValid() {
        return isValid;
    }
    public void setIsValid(Boolean isValid) {
        this.isValid = isValid;
    }
    public Boolean getIsValid() {
        return isValid;
    }
    public void setChildType(Integer childType) {
        this.childType = childType;
    }
    public Integer getChildType() {
        return childType;
    }
    public String getModeType() {
        return modeType;
    }
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PRMItemVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,767 @@
package com.vci.pagemodel;
import com.vci.bo.ItemSeniorQueryBO;
import java.util.ArrayList;
import java.util.List;
public class PRMItemVO implements java.io.Serializable {
    private static final long serialVersionUID = 8300550928400559987L;
    /**
     * ä½¿ç”¨å­—段
     */
    private String itemField = "";
    //list
    private String itemOR = "";
    private String itemEQ = "";
    private String itemTrim = "";
    /**
     * å¿½ç•¥
     */
    private String itemDbl = "";
    /**
     * å­—符串截取
     */
    private String itemCut = "";
    /**
     *绑定表单
     */
    private String itemInObj = "";
    /**
     * form:字段表达式  table:附加查询条件
     */
    private String itemAddFilter = "";
    /**
     *
     */
    private String itemOutType = "";
    /**
     * table æ¯é¡µå¯æ˜¾ç¤ºè¡Œæ•°
     */
    private String itemPageSize = "";
    /**
     * å›¾ç‰‡å®½é«˜ï¼š0,0
     */
    private String itemImgWH = "";
    /**
     * éœ€è¦ä½¿ç”¨çš„字段
     */
    private String itemOutFields = "";
    /**
     * å¾…选择的属性字段
     */
    private List<String> itemSelectoutFieldList=new ArrayList<>();
    /**
     * éœ€è¦ä½¿ç”¨çš„集合
     */
    private List<String> itemOutFieldList=new ArrayList<>();
    /**
     * éœ€è¦æœç´¢çš„字段
     */
    private String itemKeyFields = "";
    /**
     *待搜索字段
     */
    private List<String> itemSearchFieldList=new ArrayList<>();
    /**
     * éœ€è¦æœç´¢çš„字段
     */
    private List<String> itemKeyFieldList=new ArrayList<>();
    private String itemBat = "";
    /**
     * å®½åº¦
     */
    private String itemFieldWidth = "";
    /**
     * åˆ—显示宽段 itemOutFieldList ç›¸åŒ¹é…
     */
    private List<KeyValue> itemFieldWidthList=new ArrayList<>();
    //form
    private String itemTxf = "";
    /**
     * æ˜¾ç¤ºåç§°
     */
    private String itemName = "";
    /**
     * å±žæ€§ç±»åž‹
     *      text:单行文本框
     *         textbtn:文本按钮框:
     *         textarea:多行文本框:
     *         richtext:富文本框:
     *         number:数字输入框:
     *         password:密码框:
     *         radio:单选按钮:
     *         checkbox:多选按钮:
     *         select:下拉菜单:
     *         multiselect:多选下拉菜单:
     *         date:日期输入框:
     *         time:时间输入框:
     *         datetime:日期时间输入框:
     *         file:文件上传:
     *         multiFile:多文件上传:
     *         custom:自定义:
     *         customform:自定义表单:
     *         hidden:隐藏或普通文字:
     *         webeditor:Web编辑器:
     *         specialCharacter:特殊字符:
     */
    private String itemType = "";
    /**
     * å±žæ€§ç±»åž‹æ˜¾ç¤ºå€¼
     */
    private String itemTypeText = "";
    /**
     * é»˜è®¤å€¼
     */
    private String itemValue = "";
    /**
     *占位方式 1:显示,2:不显示
     */
    private String itemCols = "";
    /**
     *
     */
    private String itemRows = "";
    /**
     * é™„加属性(样式)
     */
    private String itemStyle = "";
    /**
     *脚本验证
     */
    private String itemScript = "";
    /**
     * æç¤ºæ–‡å­—
     */
    private String itemTips = "";
    /**
     * æžšä¸¾å€¼
     */
    private List<String> itemValueList = null;
    /**
     *一级参照
     */
    private String itemListTable = "";
    /**
     *二级参照
     */
    private String itemListTxt = "";
    /**
     *参照值
     */
    private String itemListVal = "";
    /**
     * æ˜¯å¦å¯ä»¥ç¼–辑0:编辑:1:只读
     */
    private String itemIsEditable = "";
    /**
     * åªè¯»é€‰æ‹©æ¡ä»¶
     */
    private String itemEditableProgram = "";
    /**
     *
     */
    private String itemEditCondition = "";
    /**
     * æ˜¯å¦æ˜¾ç¤ºå­—段 0;不显示,1:显示
     */
    private String itemIsHidden = "";
    /**
     * æŸ¥è¯¢æ¨¡æ¿åç§°
     */
    private String itemQtName = "";
    /**
     * æ˜¯å¦å¿…å¡« 0:否,1:是
     */
    private String itemIsRequired = "";
    /**
     *http存储开关  0:否,1:是
     */
    private String itemIsHttpSave = "";
    /**
     * å­˜å‚¨è·¯å¾„
     */
    private String itemHttpVolumnPath = "";
    /**
     * å­˜å‚¨è·¯å¾„字段
     */
    private String itemHttpPathField = "";
    /**
     * æƒé™æŽ§åˆ¶
     */
    private String itemRight = "";
    /**
     * é«˜çº§æŸ¥è¯¢åˆ—
     */
    private String itemSeniorQueryCols = "";
    /**
     * é«˜çº§æŸ¥è¯¢å„列使用次数
     */
    private String itemSeniorQueryColsCounts = "";
    /**
     *高级查询sql
     */
    private String itemQuerySql = "";
    /***
     * é«˜çº§æŸ¥è¯¢å¯¹è±¡
     */
    private  List<ItemSeniorQueryBO> itemSeniorQueryBOS=new ArrayList<>();
    /**
     * è¶…链接字段
     */
    private String itemHrefFields = "";
    /**
     * è¶…链接配置
     */
    private String itemHrefConf = "";
    /**
     * æŸ¥è¯¢å…³è”列
     */
    private String itemQueryRefFields = "";
    /***
     * è‡ªå®šä¹‰ç±»è·¯å¾„
     */
    private String itemCustomClass = "";
    /**
     * æŽ§åˆ¶æ˜¾ç¤ºåˆ—
     */
    private String itemCtrlDisplyCol = "";
    /**
     * æŽ§åˆ¶æ˜¾ç¤ºæ¡ä»¶
     */
    private String itemCtrlDisplyCondition = "";
    /**
     * æŸ¥è¯¢åŒºåŸŸæ˜¾ç¤ºæŽ§åˆ¶ true:显示,false ä¸æ˜¾ç¤º
     */
    private String itemIsNavigatorExpand = "";
    /**
     * æ˜¯å¦æ˜¾ç¤ºæ–‡ä»¶å¤¹ true:显示,false ä¸æ˜¾ç¤º
     */
    private String itemIsShowFolder = "";
    /**
     * çˆ¶æ–‡ä»¶å¤¹åç§°
     */
    private String itemParentFolderName = "";
    /**
     *   æ˜¾ç¤ºè¡¨è¾¾å¼ ${aa}-${bb}
     */
    private String itemShowExpression = "";
    /**
     * æ•°æ®ä¸ºæ—¥æœŸç±»åž‹æ—¶çš„æ ¼å¼åŒ–字符串 å¦‚ yyyy-MM-dd HH:mm:ss
     */
    private String itemDateFormat = "";
    public String getItemRight() {
        return itemRight;
    }
    public void setItemRight(String itemRight) {
        this.itemRight = itemRight;
    }
    public String getItemQuerySql() {
        return itemQuerySql;
    }
    public void setItemQuerySql(String itemQuerySql) {
        this.itemQuerySql = itemQuerySql;
    }
    public String getItemFieldWidth() {
        return itemFieldWidth;
    }
    public void setItemFieldWidth(String itemFieldWidth) {
        this.itemFieldWidth = itemFieldWidth;
    }
    public String getItemParentFolderName() {
        return itemParentFolderName;
    }
    public void setItemParentFolderName(String itemParentFolderName) {
        this.itemParentFolderName = itemParentFolderName;
    }
    public String getItemIsShowFolder() {
        return itemIsShowFolder;
    }
    public void setItemIsShowFolder(String itemIsShowFolder) {
        this.itemIsShowFolder = itemIsShowFolder;
    }
    public String getItemIsNavigatorExpand() {
        return itemIsNavigatorExpand;
    }
    public void setItemIsNavigatorExpand(String itemIsNavigatorExpand) {
        this.itemIsNavigatorExpand = itemIsNavigatorExpand;
    }
    public String getItemField() {
        return itemField;
    }
    public void setItemField(String itemField) {
        this.itemField = itemField;
    }
    public String getItemOR() {
        return itemOR;
    }
    public void setItemOR(String itemOR) {
        this.itemOR = itemOR;
    }
    public String getItemEQ() {
        return itemEQ;
    }
    public void setItemEQ(String itemEQ) {
        this.itemEQ = itemEQ;
    }
    public String getItemTrim() {
        return itemTrim;
    }
    public void setItemTrim(String itemTrim) {
        this.itemTrim = itemTrim;
    }
    public String getItemDbl() {
        return itemDbl;
    }
    public void setItemDbl(String itemDbl) {
        this.itemDbl = itemDbl;
    }
    public String getItemCut() {
        return itemCut;
    }
    public void setItemCut(String itemCut) {
        this.itemCut = itemCut;
    }
    public String getItemInObj() {
        return itemInObj;
    }
    public void setItemInObj(String itemInObj) {
        this.itemInObj = itemInObj;
    }
    public String getItemOutType() {
        return itemOutType;
    }
    public void setItemOutType(String itemOutType) {
        this.itemOutType = itemOutType;
    }
    public String getItemPageSize() {
        return itemPageSize;
    }
    public void setItemPageSize(String itemPageSize) {
        this.itemPageSize = itemPageSize;
    }
    public String getItemImgWH() {
        return itemImgWH;
    }
    public void setItemImgWH(String itemImgWH) {
        this.itemImgWH = itemImgWH;
    }
    public String getItemOutFields() {
        return itemOutFields;
    }
    public void setItemOutFields(String itemOutFields) {
        this.itemOutFields = itemOutFields;
    }
    public String getItemKeyFields() {
        return itemKeyFields;
    }
    public void setItemKeyFields(String itemKeyFields) {
        this.itemKeyFields = itemKeyFields;
    }
    public String getItemBat() {
        return itemBat;
    }
    public void setItemBat(String itemBat) {
        this.itemBat = itemBat;
    }
    public String getItemTxf() {
        return itemTxf;
    }
    public void setItemTxf(String itemTxf) {
        this.itemTxf = itemTxf;
    }
    public String getItemName() {
        return itemName;
    }
    public void setItemName(String itemName) {
        this.itemName = itemName;
    }
    public String getItemType() {
        return itemType;
    }
    public void setItemType(String itemType) {
        this.itemType = itemType;
    }
    public String getItemValue() {
        return itemValue;
    }
    public void setItemValue(String itemValue) {
        this.itemValue = itemValue;
    }
    public String getItemCols() {
        return itemCols;
    }
    public void setItemCols(String itemCols) {
        this.itemCols = itemCols;
    }
    public String getItemRows() {
        return itemRows;
    }
    public void setItemRows(String itemRows) {
        this.itemRows = itemRows;
    }
    public List<String> getItemValueList() {
        return itemValueList;
    }
    public void setItemValueList(List<String> itemValueList) {
        this.itemValueList = itemValueList;
    }
    public String getItemListTable() {
        return itemListTable;
    }
    public void setItemListTable(String itemListTable) {
        this.itemListTable = itemListTable;
    }
    public String getItemListTxt() {
        return itemListTxt;
    }
    public void setItemListTxt(String itemListTxt) {
        this.itemListTxt = itemListTxt;
    }
    public String getItemListVal() {
        return itemListVal;
    }
    public void setItemListVal(String itemListVal) {
        this.itemListVal = itemListVal;
    }
    public String getItemAddFilter() {
        return itemAddFilter;
    }
    public void setItemAddFilter(String itemAddFilter) {
        this.itemAddFilter = itemAddFilter;
    }
    public String getItemStyle() {
        return itemStyle;
    }
    public void setItemStyle(String itemStyle) {
        this.itemStyle = itemStyle;
    }
    public String getItemScript() {
        return itemScript;
    }
    public void setItemScript(String itemScript) {
        this.itemScript = itemScript;
    }
    public String getItemTips() {
        return itemTips;
    }
    public void setItemTips(String itemTips) {
        this.itemTips = itemTips;
    }
    public String getItemIsEditable() {
        return itemIsEditable;
    }
    public void setItemIsEditable(String itemIsEditable) {
        this.itemIsEditable = itemIsEditable;
    }
    public String getItemIsHidden() {
        return itemIsHidden;
    }
    public void setItemIsHidden(String itemIsHidden) {
        this.itemIsHidden = itemIsHidden;
    }
    public String getItemQtName() {
        return itemQtName;
    }
    public void setItemQtName(String itemQtName) {
        this.itemQtName = itemQtName;
    }
    public String getItemIsRequired() {
        return itemIsRequired;
    }
    public void setItemIsRequired(String itemIsRequired) {
        this.itemIsRequired = itemIsRequired;
    }
    public String getItemSeniorQueryCols() {
        return itemSeniorQueryCols;
    }
    public void setItemSeniorQueryCols(String itemSeniorQueryCols) {
        this.itemSeniorQueryCols = itemSeniorQueryCols;
    }
    public String getItemSeniorQueryColsCounts() {
        return itemSeniorQueryColsCounts;
    }
    public void setItemSeniorQueryColsCounts(String itemSeniorQueryColsCounts) {
        this.itemSeniorQueryColsCounts = itemSeniorQueryColsCounts;
    }
    public String getItemHrefFields() {
        return itemHrefFields;
    }
    public void setItemHrefFields(String itemHrefFields) {
        this.itemHrefFields = itemHrefFields;
    }
    public String getItemHrefConf() {
        return itemHrefConf;
    }
    public void setItemHrefConf(String itemHrefConf) {
        this.itemHrefConf = itemHrefConf;
    }
    public String getItemQueryRefFields() {
        return itemQueryRefFields;
    }
    public void setItemQueryRefFields(String itemQueryRefFields) {
        this.itemQueryRefFields = itemQueryRefFields;
    }
    public String getItemCustomClass() {
        return itemCustomClass;
    }
    public void setItemCustomClass(String itemCustomClass) {
        this.itemCustomClass = itemCustomClass;
    }
    public String getItemCtrlDisplyCol() {
        return itemCtrlDisplyCol;
    }
    public void setItemCtrlDisplyCol(String itemCtrlDisplyCol) {
        this.itemCtrlDisplyCol = itemCtrlDisplyCol;
    }
    public String getItemCtrlDisplyCondition() {
        return itemCtrlDisplyCondition;
    }
    public void setItemCtrlDisplyCondition(String itemCtrlDisplyCondition) {
        this.itemCtrlDisplyCondition = itemCtrlDisplyCondition;
    }
    public String getItemIsHttpSave() {
        return itemIsHttpSave;
    }
    public void setItemIsHttpSave(String itemIsHttpSave) {
        this.itemIsHttpSave = itemIsHttpSave;
    }
    public String getItemHttpVolumnPath() {
        return itemHttpVolumnPath;
    }
    public void setItemHttpVolumnPath(String itemHttpVolumnPath) {
        this.itemHttpVolumnPath = itemHttpVolumnPath;
    }
    public String getItemHttpPathField() {
        return itemHttpPathField;
    }
    public void setItemHttpPathField(String itemHttpPathField) {
        this.itemHttpPathField = itemHttpPathField;
    }
    public String getItemEditCondition() {
        return itemEditCondition;
    }
    public void setItemEditCondition(String itemEditCondition) {
        this.itemEditCondition = itemEditCondition;
    }
    public String getItemEditableProgram() {
        return itemEditableProgram;
    }
    public void setItemEditableProgram(String itemEditableProgram) {
        this.itemEditableProgram = itemEditableProgram;
    }
    public String getItemShowExpression() {
        return itemShowExpression;
    }
    public void setItemShowExpression(String itemShowExpression) {
        this.itemShowExpression = itemShowExpression;
    }
    public String getItemDateFormat() {
        return itemDateFormat;
    }
    public void setItemDateFormat(String itemDateFormat) {
        this.itemDateFormat = itemDateFormat;
    }
    public List<String> getItemOutFieldList() {
        return itemOutFieldList;
    }
    public void setItemOutFieldList(List<String> itemOutFieldList) {
        this.itemOutFieldList = itemOutFieldList;
    }
    public List<String> getItemKeyFieldList() {
        return itemKeyFieldList;
    }
    public void setItemKeyFieldList(List<String> itemKeyFieldList) {
        this.itemKeyFieldList = itemKeyFieldList;
    }
    public List<KeyValue> getItemFieldWidthList() {
        return itemFieldWidthList;
    }
    public void setItemFieldWidthList(List<KeyValue> itemFieldWidthList) {
        this.itemFieldWidthList = itemFieldWidthList;
    }
    public String getItemTypeText() {
        return itemTypeText;
    }
    public void setItemTypeText(String itemTypeText) {
        this.itemTypeText = itemTypeText;
    }
    public List<ItemSeniorQueryBO> getItemSeniorQueryBOS() {
        return itemSeniorQueryBOS;
    }
    public void setItemSeniorQueryBOS(List<ItemSeniorQueryBO> itemSeniorQueryBOS) {
        this.itemSeniorQueryBOS = itemSeniorQueryBOS;
    }
    public List<String> getItemSelectoutFieldList() {
        return itemSelectoutFieldList;
    }
    public void setItemSelectoutFieldList(List<String> itemSelectoutFieldList) {
        this.itemSelectoutFieldList = itemSelectoutFieldList;
    }
    public List<String> getItemSearchFieldList() {
        return itemSearchFieldList;
    }
    public void setItemSearchFieldList(List<String> itemSearchFieldList) {
        this.itemSearchFieldList = itemSearchFieldList;
    }
    @Override
    public String toString() {
        return "PRMItemVO{" +
                "itemField='" + itemField + '\'' +
                ", itemOR='" + itemOR + '\'' +
                ", itemEQ='" + itemEQ + '\'' +
                ", itemTrim='" + itemTrim + '\'' +
                ", itemDbl='" + itemDbl + '\'' +
                ", itemCut='" + itemCut + '\'' +
                ", itemInObj='" + itemInObj + '\'' +
                ", itemAddFilter='" + itemAddFilter + '\'' +
                ", itemOutType='" + itemOutType + '\'' +
                ", itemPageSize='" + itemPageSize + '\'' +
                ", itemImgWH='" + itemImgWH + '\'' +
                ", itemOutFields='" + itemOutFields + '\'' +
                ", itemSelectoutFieldList=" + itemSelectoutFieldList +
                ", itemOutFieldList=" + itemOutFieldList +
                ", itemKeyFields='" + itemKeyFields + '\'' +
                ", itemSearchFieldList=" + itemSearchFieldList +
                ", itemKeyFieldList=" + itemKeyFieldList +
                ", itemBat='" + itemBat + '\'' +
                ", itemFieldWidth='" + itemFieldWidth + '\'' +
                ", itemFieldWidthList=" + itemFieldWidthList +
                ", itemTxf='" + itemTxf + '\'' +
                ", itemName='" + itemName + '\'' +
                ", itemType='" + itemType + '\'' +
                ", itemTypeText='" + itemTypeText + '\'' +
                ", itemValue='" + itemValue + '\'' +
                ", itemCols='" + itemCols + '\'' +
                ", itemRows='" + itemRows + '\'' +
                ", itemStyle='" + itemStyle + '\'' +
                ", itemScript='" + itemScript + '\'' +
                ", itemTips='" + itemTips + '\'' +
                ", itemValueList=" + itemValueList +
                ", itemListTable='" + itemListTable + '\'' +
                ", itemListTxt='" + itemListTxt + '\'' +
                ", itemListVal='" + itemListVal + '\'' +
                ", itemIsEditable='" + itemIsEditable + '\'' +
                ", itemEditableProgram='" + itemEditableProgram + '\'' +
                ", itemEditCondition='" + itemEditCondition + '\'' +
                ", itemIsHidden='" + itemIsHidden + '\'' +
                ", itemQtName='" + itemQtName + '\'' +
                ", itemIsRequired='" + itemIsRequired + '\'' +
                ", itemIsHttpSave='" + itemIsHttpSave + '\'' +
                ", itemHttpVolumnPath='" + itemHttpVolumnPath + '\'' +
                ", itemHttpPathField='" + itemHttpPathField + '\'' +
                ", itemRight='" + itemRight + '\'' +
                ", itemSeniorQueryCols='" + itemSeniorQueryCols + '\'' +
                ", itemSeniorQueryColsCounts='" + itemSeniorQueryColsCounts + '\'' +
                ", itemQuerySql='" + itemQuerySql + '\'' +
                ", itemSeniorQueryBOS=" + itemSeniorQueryBOS +
                ", itemHrefFields='" + itemHrefFields + '\'' +
                ", itemHrefConf='" + itemHrefConf + '\'' +
                ", itemQueryRefFields='" + itemQueryRefFields + '\'' +
                ", itemCustomClass='" + itemCustomClass + '\'' +
                ", itemCtrlDisplyCol='" + itemCtrlDisplyCol + '\'' +
                ", itemCtrlDisplyCondition='" + itemCtrlDisplyCondition + '\'' +
                ", itemIsNavigatorExpand='" + itemIsNavigatorExpand + '\'' +
                ", itemIsShowFolder='" + itemIsShowFolder + '\'' +
                ", itemParentFolderName='" + itemParentFolderName + '\'' +
                ", itemShowExpression='" + itemShowExpression + '\'' +
                ", itemDateFormat='" + itemDateFormat + '\'' +
                '}';
    }
    //    /**
//     * é«˜çº§æŸ¥è¯¢åˆ—与使用次数
//     */
//    public Map<String, Integer> getColAndUseCountMap() {
//        if(this.itemSeniorQueryCols == null || this.itemSeniorQueryColsCounts == null
//                || this.itemSeniorQueryCols.equals("") || this.itemSeniorQueryColsCounts.equals("")){
//            return null;
//        }
//        Map<String, Integer> map = new LinkedHashMap<String, Integer>();
//        String[] cols = this.itemSeniorQueryCols.split(",");
//        String[] counts = this.itemSeniorQueryColsCounts.split(",");
//        for(int i = 0; i < cols.length; i++){
//            int count = Integer.valueOf(counts[i]);
//            map.put(cols[i], count);
//        }
//        return map;
//    }
//
//    /**
//     * é«˜çº§æŸ¥è¯¢è‡ªå®šä¹‰åˆ—与查询sql
//     */
//    public Map<String, String> getCustomerColAndSql() {
//        if(this.itemSeniorQueryCols == null || this.itemQuerySql == null
//                || this.itemSeniorQueryCols.equals("") || this.itemQuerySql.equals("")){
//            return null;
//        }
//        Map<String, String> map = new LinkedHashMap<String, String>();
//        String[] cols = this.itemSeniorQueryCols.split(",");
//        String[] sqls = this.itemQuerySql.split(";");
//        for(int i = 0; i < cols.length; i++){
//            String sql = sqls[i];
//            if(sql != null && !sql.equalsIgnoreCase("NULL")){
//                map.put(cols[i], sql);
//            }
//        }
//        return map;
//    }
//
//    /**
//     * è¿”回 PRMItem å¯¹è±¡æ˜¯å¦æ˜¾ç¤º
//     * @return å¯¹è±¡æ˜¯å¦æ˜¾ç¤º  (对应表单属性定义的占位方式的显示、不显示)<p>true:显示 false:不显示</p>
//     */
//    public boolean isShow(){
//        return ("1".equalsIgnoreCase(this.getItemCols().trim()));
//    }
//    /**
//     * è¿”回 PRMItem å¯¹è±¡æ˜¯å¦æ˜¯å¿…填项
//     * @return å¯¹è±¡æ˜¯å¦æ˜¯å¿…å¡«<p>true:显必填项 false:不是必填项</p>
//     */
//    public boolean isRequired(){
//        return ("1".equalsIgnoreCase(this.getItemIsRequired().trim()));
//    }
//    /**
//     * è¿”回 PRMItem å¯¹è±¡ æ˜¯å¦å¯ä»¥ç¼–辑
//     * @return å¯¹è±¡æ˜¯å¦å¯ç¼–辑 <p>true: å¯ç¼–辑(非只读) false: ä¸å¯ç¼–辑(只读)</p>
//     */
//    public boolean isEditable(){
//        return ("0".equalsIgnoreCase(this.getItemIsEditable().trim()));
//    }
//    /**
//     * è¿”回 PRMItem å¯¹è±¡ æ˜¯å¦å¯æ˜¯åªè¯»
//     * @return å¯¹è±¡æ˜¯å¦å¯ç¼–辑 <p>true: åªè¯»(不可编辑) false: éžåªè¯»(可编辑)</p>
//     */
//    public boolean isReadonly(){
//        return !(isEditable());
//    }
}
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PRMVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
package com.vci.pagemodel;
import java.util.List;
public class PRMVO implements   java.io.Serializable {
    private static final long serialVersionUID = -7009693016048007945L;
    private String showCols = "3";
    private String formQtName = "";
    private List<PRMItemVO> prmItemList;
    public String getShowCols() {
        return showCols;
    }
    public void setShowCols(String showCols) {
        this.showCols = showCols;
    }
    public String getFormQtName() {
        return formQtName;
    }
    public void setFormQtName(String formQtName) {
        this.formQtName = formQtName;
    }
    public List<PRMItemVO> getPrmItemList() {
        return prmItemList;
    }
    public void setPrmItemList(List<PRMItemVO> prmItemList) {
        this.prmItemList = prmItemList;
    }
    @Override
    public String toString() {
        return "PRMVO{" +
                "showCols='" + showCols + '\'' +
                ", formQtName='" + formQtName + '\'' +
                ", prmItemList=" + prmItemList +
                '}';
    }
}
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PortalVIVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,96 @@
package com.vci.pagemodel;
/**
 *
 * è¡¨å•显示对象
 * @author xiej
 * @date 2024/08/14 6:04 PM
 */
public class PortalVIVO implements  java.io.Serializable{
    private static final long serialVersionUID = 8929303078545288873L;
    /**
     * ä¸»é”®
     */
    private String id;
    /**
     * 0: ä¸šåŠ¡ç±»åž‹; 1: é“¾æŽ¥ç±»åž‹. é»˜è®¤0
     */
    private short typeFlag;
    /**
     * ç±»åž‹å
     */
    private String typeName;
    /**
     * è§†å›¾å
     */
    private String viName;
    /**
     * è§†å›¾ç±»åž‹: è¾“入表单或分页列表
     */
    private short viType;
    /**
     * å®šä¹‰è¯¦æƒ…
     */
    private PRMVO   prm;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public short getTypeFlag() {
        return typeFlag;
    }
    public void setTypeFlag(short typeFlag) {
        this.typeFlag = typeFlag;
    }
    public String getTypeName() {
        return typeName;
    }
    public void setTypeName(String typeName) {
        this.typeName = typeName;
    }
    public String getViName() {
        return viName;
    }
    public void setViName(String viName) {
        this.viName = viName;
    }
    public short getViType() {
        return viType;
    }
    public void setViType(short viType) {
        this.viType = viType;
    }
    public PRMVO getPrm() {
        return prm;
    }
    public void setPrm(PRMVO prm) {
        this.prm = prm;
    }
    @Override
    public String toString() {
        return "PortalVIVO{" +
                "id='" + id + '\'' +
                ", typeFlag=" + typeFlag +
                ", typeName='" + typeName + '\'' +
                ", viName='" + viName + '\'' +
                ", viType=" + viType +
                ", prm=" + prm +
                '}';
    }
}
Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/VciBaseUtil.java
@@ -287,6 +287,28 @@
    }
    /**
     * åŽ»é™¤æœ€å‰é¢çš„spiltFilter,去除后面的spiltFilter
     * @param s å­—符串
     * @param spiltFilter,分隔符
     * @return åŽ»é™¤æœ«å°¾é€—å·
     */
    public static String removeComma(String s,String spiltFilter){
        if(s == null || s.trim().length() == 0) {
            return s;
        }
        else{
            if(s.startsWith(spiltFilter)) {
                s = s.substring(spiltFilter.length(), s.length());
            }
            if(s.endsWith(spiltFilter)) {
                s = s.substring(0, s.length() - spiltFilter.length());
            }
            return s;
        }
    }
    /**
     * ä¸ºsql中使用in时,提供转换,注意in里的值不能超过1000
     * @param s å­—符串
     * @return è¿”回sql语句
@@ -472,6 +494,21 @@
            charMap.put(String.valueOf(c), (!charMap.containsKey(String.valueOf(c))? 1 : charMap.get(String.valueOf(c)) + 1));
        }
        return charMap.get(String.valueOf(findC));
    }
    /**
     * å¸¦é€—号的字符串转为list
     * @param s å­—符串
     * @return å­—符串列表
     */
    public static List<String> str2List(String s,String spilter){
        if (isNull(s)) {
            return null;
        } else {
            List<String> l = new ArrayList<String>();
            Collections.addAll(l,removeComma(s,spilter).split(spilter));
            return l;
        }
    }
    /**
@@ -1333,6 +1370,25 @@
        }
    }
    /**
     * æ•°ç»„转换为String
     * @param array æ•°ç»„对象
     * @param spiltFiter åˆ†éš”符
     * @return é€—号链接的字符串
     */
    public static String array2String(String[] array,String spiltFiter) {
        if(null == array || array.length == 0) {
            return "";
        } else{
            String ss = "";
            for(String s : array){
                ss += s + spiltFiter;
                //1.8可以
            }
            return removeComma(ss,spiltFiter);
        }
    }
    /**
     * æ•°ç»„转换为String
     * @param array æ•°ç»„对象
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/ISmFunctionQueryService.java
@@ -56,11 +56,12 @@
    /**
     * é€šè¿‡æ¨¡å—ID获取子级列表
     * @param parentId
     * @param modeType æ¨¡å—类型
     * @param isAll æ˜¯å¦åŒ…括无效的模块,true则包括
     * @return
     * @throws VciBaseException
     */
    List<MenuVO> getSysModelTreeMenuByPID(String parentId,boolean isAll) throws VciBaseException;
    List<MenuVO> getSysModelTreeMenuByPID(String parentId,String modeType,boolean isAll) throws VciBaseException;
    int checkChildObject(String moduleId) throws VciException;
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmHMSysModConfigServiceI.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,123 @@
package com.vci.frameworkcore.compatibility;
import com.vci.common.exception.VciException;
import com.vci.corba.common.PLException;
import com.vci.pagemodel.MenuVO;
import com.vci.starter.web.exception.VciBaseException;
import com.vci.starter.web.pagemodel.BaseResult;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
/**
 * é¦–页系统模块配置添加按钮、添加操作类型等接口服务
 * @author ludc
 * @date 2024/8/19 12:42
 */
public interface SmHMSysModConfigServiceI {
    /**
     * æ·»åŠ æ¨¡å—
     * @param menuVO
     * @return
     */
    MenuVO addModule(MenuVO menuVO) throws VciBaseException;
    /**
     * ä¿®æ”¹æ¨¡å—
     * @param menuVO
     * @return
     */
    MenuVO updateModule(MenuVO menuVO) throws VciBaseException;
    /**
     * åˆ é™¤æ¨¡å—
     * @param menuVO
     * @return
     */
    boolean delModule(MenuVO menuVO);
    /**
     * å¢žåŠ æ“ä½œç±»åž‹
     * @return
     */
    boolean addOperationType(List<MenuVO> menuVOList);
    /**
     * åˆ é™¤éžç³»ç»Ÿæ¨¡å—
     * @return
     */
    boolean delNonsysModule();
    /**
     * åˆ é™¤ä¸šåŠ¡æ¨¡å—
     * @return
     */
    boolean delBusinessModule();
    /**
     * å¯¼å‡ºç®¡ç†åŠŸèƒ½æ¨¡å—æˆ–æ“ä½œç±»åž‹ç®¡ç†æ¨¡å—sql
     * @param exportPath å¯¼å‡ºè·¯å¾„
     * @param isFunction æ˜¯å¦æ˜¯å¯¼å‡ºç®¡ç†åŠŸèƒ½æ¨¡å—sql
     * @return
     * @throws PLException
     */
    File exportFunctionSql(HttpServletResponse response,String exportPath,boolean isFunction/*是否是导出管理功能模块sql*/) throws PLException;
    /**
     * å¯¼å‡º
     * @return
     */
    String exportModule(HttpServletResponse response) throws PLException, IOException;
    /**
     * å¯¼å…¥
     * @param files
     * @return
     * @throws PLException
     */
    BaseResult importModule(LinkedList<File> files) throws PLException, IOException;
    /**
     * ç®¡ç†åŠŸèƒ½æ¨¡å—ã€ä¸šåŠ¡åŠŸèƒ½æ¨¡å—ä¸‹çš„å¶å­èŠ‚ç‚¹â€”ä¿®æ”¹æ“ä½œåˆ«åæŽ¥å£
     * @param menuVO
     * @return
     * @throws VciException
     */
    boolean updateAlias(MenuVO menuVO) throws VciException;
    //系统配置相关接口
    /**
     * æŸ¥è¯¢ç³»ç»Ÿé…ç½®åˆ†ç±»
     */
    List<Object>getSysConfTree();
    /**
     * å¢žåŠ ç³»ç»Ÿé…ç½®
     * @return
     */
    boolean addSysConf();
    /**
     * ä¿®æ”¹ç³»ç»Ÿé…ç½®
     * @return
     */
    boolean updateSysConf();
    /**
     * åˆ é™¤ç³»ç»Ÿé…ç½®
     * @return
     */
    boolean delSysConf();
    /**
     * å¯¼å‡ºç³»ç»Ÿé…ç½®
     * @param response
     * @return
     */
    String exportSysConf(HttpServletResponse response);
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmFunctionQueryServicePlatformImpl.java
@@ -2,6 +2,7 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSONReader;
import com.vci.client.ClientSession;
import com.vci.common.exception.VciException;
import com.vci.common.locale.LocaleDisplay;
@@ -176,7 +177,7 @@
    private SmFunctionVO functionForPlatform1ToFunctionVO(SmFunctionForPlatform1 functionForPlatform1){
        SmFunctionVO functionVO = new SmFunctionVO();
        functionVO.setOid(functionForPlatform1.getPloid());
        functionVO.setId(String.valueOf(functionForPlatform1.getPlmoduleno()));
        //functionVO.setId(String.valueOf(functionForPlatform1.getPlmoduleno()));
        functionVO.setName(functionForPlatform1.getPlname());
        functionVO.setLogName(functionForPlatform1.getPlaliasname());
        if(StringUtils.isNotBlank(functionForPlatform1.getPlresourceb())){
@@ -287,8 +288,10 @@
        //如果是开发或者测试用户,需哟获取系统模块配置菜单
        if(adminOrDeveloperOrRoot){
            //获取首页系统模块配置菜单
            MenuVO menuVO = JsonConfigReader.getMenuVO();
            functionVOList.add(menuVO);
            MenuVO menuVO = JsonConfigReader.getSysModuleConf().getSysModuleNode();
            if(Func.isNotEmpty(menuVO)){
                functionVOList.add(menuVO);
            }
        }
        return functionVOList.stream().sorted(Comparator.comparing(s -> s.getSort())).collect(Collectors.toList());
    }
@@ -296,27 +299,30 @@
    /**
     * é€šè¿‡æ¨¡å—ID获取子级列表
     * @param parentId
     * @param modeType æ¨¡å—类型
     * @param isAll æ˜¯å¦åŒ…括无效的模块,true则包括
     * @return
     * @throws VciBaseException
     */
    @Override
    public List<MenuVO> getSysModelTreeMenuByPID(String parentId,boolean isAll) throws VciBaseException{
    public List<MenuVO> getSysModelTreeMenuByPID(String parentId,String modeType,boolean isAll) throws VciBaseException{
        List<MenuVO> menuVOList = new ArrayList<>();
        if(Func.isBlank(parentId)){
            return menuVOList;
        }
        if(parentId.equals("mangeModel") || parentId.equals("businessModel")){
            if(parentId.equalsIgnoreCase("FunctionObject")){
        boolean isFunctionObject = Func.isNotBlank(modeType) && modeType.equalsIgnoreCase("FunctionObject");
        if(parentId.equals("systemManagmentNode") || parentId.equals("modelManagmentNode") || isFunctionObject){
            int childType = this.checkChildObject(parentId);
            if(isFunctionObject){
                try {
                    /**判断该模块下子对象是模块还是操作,0表示无子节点,1表示是模块,2表示是操作**/
                    int childType = this.checkChildObject(parentId);
                    if(childType == 2){
                        try{
                            FuncOperationInfo[] infos = platformClientUtil.getFrameworkService().getFuncOperationByModule(parentId, "", false);
                            for(int i = 0;i < infos.length ;i++){
                                FuncOperationInfo info = infos[i];
                                MenuVO menuVO = new MenuVO();
                                menuVO.setChildType(childType);
                                menuVO.setId(info.id);
                                menuVO.setCode(info.funcId);
                                menuVO.setId(info.operId);
@@ -325,7 +331,8 @@
                                menuVO.setAlias(info.operAlias);
                                menuVO.setRemark(info.operDesc);
                                menuVO.setSort((int) info.number);
                                //menuVO.setIsValid(info.isValid);
                                menuVO.setModeType("FunctionObject");
                                menuVO.setIsValid(info.isValid);
                                menuVO.setHasChildren(false);
                                menuVOList.add(menuVO);
                            }
@@ -339,6 +346,8 @@
                            for(int i = 0;i < funcInfos.length; i++){
                                FunctionInfo funcInfo = funcInfos[i];
                                MenuVO menuVO = this.functionInfoToMenuVO(funcInfo);
                                menuVO.setChildType(childType);
                                menuVO.setModeType("FunctionObject");
                                menuVOList.add(menuVO);
                            }
                        }catch (PLException e) {
@@ -352,21 +361,36 @@
                }
            }else{
                try{
                    MenuVO parentNode;
                    //将返回的节点外层套上当前父节点
                    if(parentId.equals("systemManagmentNode")){
                        parentNode = JsonConfigReader.getSysModuleConf().getSystemManagmentNode();
                    }else{
                        parentNode = JsonConfigReader.getSysModuleConf().getModelManagmentNode();
                    }
                    List<MenuVO> menuVOS = new ArrayList<>();
                    //查询的三级节点
                    FunctionInfo[] funcInfos = platformClientUtil.getFrameworkService().getModuleListByParentId(parentId, isAll);
                    for(int i = 0;i < funcInfos.length; i++){
                        FunctionInfo funcInfo = funcInfos[i];
                        MenuVO menuVO = this.functionInfoToMenuVO(funcInfo);
                        menuVO.setModeType("FunctionObject");
                        menuVOList.add(menuVO);
                        menuVO.setChildType(childType);
                        menuVOS.add(menuVO);
                    }
                    parentNode.setChildren(menuVOS);
                    menuVOList.add(parentNode);
                }catch (PLException e) {
                    e.printStackTrace();
                    throw new VciBaseException(String.valueOf(e.code),e.messages);
                }
            }
        }else if(parentId.equals("operateType")){
        }else if(parentId.equals("sysOptionNode")){
            //加载所有操作
            try{
                //将返回的节点外层套上当前父节点
                MenuVO parentNode = JsonConfigReader.getSysModuleConf().getOperateNode();
                List<MenuVO> menuVOS = new ArrayList<>();
                OperateInfo[] operateInfos = platformClientUtil.getFrameworkService().getOperateTreeList(parentId);
                for(int i = 0; i < operateInfos.length;i++ ){
                    OperateInfo operateInfo = operateInfos[i];
@@ -376,19 +400,22 @@
                    menuVO.setCode(operateInfo.identify);
                    menuVO.setAlias(operateInfo.alias);
                    menuVO.setCategory(2);
                    menuVO.setChildType(0);
                    menuVO.setRemark(operateInfo.desc);
                    menuVO.getMeta().put("keepAlive",false);
                    menuVO.setSort((int) operateInfo.seq);
                    menuVO.setModeType("operateObject");
                    menuVO.setHasChildren(false);
                    menuVOList.add(menuVO);
                    menuVOS.add(menuVO);
                }
                parentNode.setChildren(menuVOS);
                menuVOList.add(parentNode);
            }catch (PLException e) {
                e.printStackTrace();
                throw new VciBaseException(String.valueOf(e.code),new String[]{VciBaseUtil.getExceptionMessage(e)});
            }
        }
        return menuVOList;
        return menuVOList.stream().sorted(Comparator.comparing(s -> s.getSort())).collect(Collectors.toList());
    }
    /**
@@ -399,10 +426,11 @@
    private MenuVO functionInfoToMenuVO(FunctionInfo funcInfo){
        MenuVO menuVO = new MenuVO();
        menuVO.setId(funcInfo.id);
        menuVO.setValid(funcInfo.isValid);
        menuVO.setSource(funcInfo.image);
        //if(StringUtils.isBlank(menu.resourceB)){
        //    continue;
        //}
        menuVO.setPathC(funcInfo.resourceC);
        menuVO.setResourceDotNet(funcInfo.resourceDotNet);
        menuVO.setResourceMobile(funcInfo.resourceMobile);
        menuVO.setPath(funcInfo.resourceB);
        menuVO.setParentId(funcInfo.parentId);
        menuVO.setCode(funcInfo.aliasName);
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmHMSysModConfigServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,1028 @@
package com.vci.frameworkcore.compatibility.impl;
import com.vci.client.common.excel.ExcelDocumentUtils;
import com.vci.common.exception.VciException;
import com.vci.common.locale.LocaleDisplay;
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.FuncOperationInfo;
import com.vci.corba.framework.data.FunctionInfo;
import com.vci.corba.framework.data.OperateInfo;
import com.vci.frameworkcore.compatibility.SmHMSysModConfigServiceI;
import com.vci.pagemodel.MenuVO;
import com.vci.client.common.excel.SheetDataSet;
import com.vci.starter.poi.bo.WriteExcelData;
import com.vci.starter.poi.bo.WriteExcelOption;
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.SessionInfo;
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.util.Func;
import com.vci.web.util.PlatformClientUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.*;
/**
 * é¦–页系统模块配置添加按钮、添加操作类型等接口服务
 * @author ludc
 * @date 2024/8/19 12:42
 */
@Service
public class SmHMSysModConfigServiceImpl implements SmHMSysModConfigServiceI {
    @Autowired
    private PlatformClientUtil platformClientUtil;
    private List<FunctionInfo> fileFunctionDatas = new ArrayList<FunctionInfo>();
    private int count = 0;
    private static FunctionOperateDelegate foDelegate;
    {
        if(Func.isEmpty(foDelegate)){
            foDelegate = new FunctionOperateDelegate();
        }
    }
    /**
     * æ—¥å¿—
     */
    private Logger logger = LoggerFactory.getLogger(getClass());
    /**
     * æ·»åŠ æ¨¡å—
     * @param menuVO
     * @return
     */
    @Override
    public MenuVO addModule(MenuVO menuVO) throws VciBaseException {
        VciBaseUtil.alertNotNull(menuVO,"新增的模块对象");
        try {
            //往数据库里插入新建模块数据
            String puid = foDelegate.saveModule(menuVO);
            /**
             * è¿”回值:1,表示模块名称重复
             *            2,表示模块标识重复
             *         3, æ¨¡æ¿åˆ«åå­˜åœ¨é‡å¤
             */
            if(puid.equals("1")){
                throw new VciBaseException("模块名称重复,请修改!");
            }else if(puid.equals("2")){
                throw new VciBaseException("模块标识重复,请修改!");
            }else if(puid.equals("3")) {
                throw new VciBaseException("模块别名重复,请修改!");
            }
            menuVO.setId(puid);
            return menuVO;
        } catch (Exception e) {
            e.printStackTrace();
            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            throw new VciBaseException(exceptionMessage);
        }
    }
    /**
     * ä¿®æ”¹æ¨¡å—
     * @param menuVO
     * @return
     */
    @Override
    public MenuVO updateModule(MenuVO menuVO) throws VciBaseException {
        VciBaseUtil.alertNotNull(menuVO,"修改的模块对象");
        try {
            String res = "";
            //更新数据库
            res = foDelegate.updateMod(menuVO);
            /**
             * è¿”回:1表示模块名重复。
             *       2表示模块标识重复。
             *       3标示模块别名重复。
             */
            if(res.equals("1")){
                throw new VciBaseException("模块名称重复,请修改!");
            }else if(res.equals("2")){
                throw new VciBaseException("模块标识重复,请修改!");
            }else if(res.equals("3")) {
                throw new VciBaseException("模块别名重复,请修改!");
            }/* else if (res.equals("4")) {
                throw new VciBaseException("模块编号重复,请修改!");
            }*/
            return menuVO;
        } catch (VciBaseException e) {
            e.printStackTrace();
            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            throw new VciBaseException(exceptionMessage);
        }
    }
    /**
     * åˆ é™¤æ¨¡å—
     * @param menuVO
     * @return
     */
    @Override
    public boolean delModule(MenuVO menuVO) {
        VciBaseUtil.alertNotNull(menuVO,"添加操作类型的列表");
        String res = "";
        try {
            String puid = "";
            if("FunctionObject".equals(menuVO.getModeType())) {
                puid = menuVO.getId();
            }else if("modelManagmentNode".equals(menuVO.getId())) {
                puid = "modelManagmentNode";
            }else if("systemManagmentNode".equals(menuVO.getId())) {
                puid = "systemManagmentNode";
            }
            if(Func.isBlank(puid)){
                throw new VciBaseException("未找到要删除的模块!");
            }
            res = foDelegate.deleteModule(puid);
            /**
             * è¿”回值:1表示模块在权限模块已经有授权信息,无法删除
             */
            if(res.equals("1")){
               throw new VciBaseException("当前模块(或下级模块)已经存在授权信息,无法删除。");
            }
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            throw new VciBaseException(exceptionMessage);
        }
    }
    /**
     * å¢žåŠ æ“ä½œç±»åž‹
     * @return
     */
    @Override
    public boolean addOperationType(List<MenuVO> menuVOList) {
        VciBaseUtil.alertNotNull(menuVOList,"添加操作类型的列表");
        List<FuncOperationInfo> objs = new ArrayList<>();
        //将操作类型组装成需要存储的对象
        menuVOList.stream().forEach(menuVO -> {
            FuncOperationInfo info = new FuncOperationInfo();
            //info.id = menuVO.getId() == null ? "" : menuVO.getId();
            info.funcId = menuVO.getParentId() == null ? "" : menuVO.getParentId();
            info.operId = menuVO.getId() == null ? "" : menuVO.getId();
            info.operName = menuVO.getName() == null ? "" : menuVO.getName();
            //info.operIndentify = menuVO.getOperIndentify() == null ? "" : menuVO.getOperIndentify();
            info.operAlias = menuVO.getAlias() == null ? "" : menuVO.getAlias();
            info.operDesc = menuVO.getRemark() == null ? "" : menuVO.getRemark();
            info.number = -1;
            info.isValid = true;
            /*VCIBaseTreeNode node = (VCIBaseTreeNode)treePaths[i].getLastPathComponent();
            OperateObject operateObject = (OperateObject) node.getObj();
            obj.setFuncId(funcObj.getId());
            obj.setOperId(operateObject.getId());
            obj.setOperName(operateObject.getName());
            obj.setOperIndentify(operateObject.getIdentify());
            obj.setOperAlias(operateObject.getAlias());
            obj.setNumber(-1);
            obj.setIsValid(true);*/
            objs.add(info);
        });
        //执行保存
        boolean res = true;
        try {
            res = this.saveFuncOperation(objs.toArray(new FuncOperationInfo[objs.size()]));
        } catch (Exception e) {
            res = false;
            e.printStackTrace();
            String exceptionMessage = "增加操作类型失败,原因:" + VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            throw new VciBaseException(exceptionMessage);
        }
        return res;
    }
    /**
     * åˆ é™¤éžç³»ç»Ÿæ¨¡å—
     * @return
     */
    @Override
    public boolean delNonsysModule() {
        try {
            if(platformClientUtil.getFrameworkService().deleteModules("nonsys")){
                return true;
            }
        } catch (PLException e) {
            e.printStackTrace();
            String exceptionMessage = "删除非系统模块失败,原因:"+VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            throw new VciBaseException(exceptionMessage);
        }
        return false;
    }
    /**
     * åˆ é™¤ä¸šåŠ¡æ¨¡å—
     * @return
     */
    @Override
    public boolean delBusinessModule() {
        try {
            if(platformClientUtil.getFrameworkService().deleteModules("business")){
                return true;
            }
        } catch (PLException e) {
            e.printStackTrace();
            String exceptionMessage = "删除业务模块失败,原因:"+VciBaseUtil.getExceptionMessage(e);
            logger.error(exceptionMessage);
            throw new VciBaseException(exceptionMessage);
        }
        return false;
    }
    /**
     * å¯¼å‡ºsql
     * @return
     */
    @Override
    public File exportFunctionSql(HttpServletResponse response,String exportPath,boolean isFunction) throws PLException {
        String dir = Func.isBlank(exportPath) ?  LocalFileUtil.getDefaultTempFolder():exportPath;
        String[][] allDatas;
        int size;
        if(isFunction){
            size = (int)platformClientUtil.getFrameworkService().getAllModelManagementNum();
            allDatas = this.getAllDatas(size);
        }else{
            size = (int)platformClientUtil.getFrameworkService().getAllOperitionsNum();
            allDatas = this.getAllOperitions(size);
        }
        File file = expData(dir,isFunction, allDatas);
        return file;
    }
    /**
     * å¯¼å‡º
     * @return
     */
    @Override
    public String exportModule(HttpServletResponse response) throws IOException {
        String defaultTempFolder = LocalFileUtil.getDefaultTempFolder();
        //写excel
        String excelPath = defaultTempFolder + File.separator + "module.xls";
        final List<String> columns = new ArrayList<String>(Arrays.asList("PLNAME","PLRESOURCEC","PLSUFFIXC","PLRESOURCEB",
                "PLSUFFIXB","PLMODULENO","PLDESC","PLISVALID","PLIMAGE","PLMODULESEQUENCE","PLALIASNAME",
                "PLMODULENAME","PLRESOURCEDOTNET","PLRESOURCEMOBIL","级别","别名","PLNO","PLISVALID",
                "PLNAME","PLUNIQUEFLAG","PLDESC","PLALIAS","PLSEQUENCE"));// è®¾ç½®è¡¨å•列名
        //int count = transmitTreeObject.getCurrentTreeNode().getChildCount();
        new File(excelPath).createNewFile();
        //设置列
        List<WriteExcelData> excelDataList = new ArrayList<>(10000);
        //设置列头
        for (int index = 0; index < columns.size(); index++) {
            excelDataList.add(new WriteExcelData(0,index, columns.get(index)));
        }
        //查询要导出的数据
        String[][] firstLevel = new String[3000][23];
        try {
            firstLevel = this.checkLevel();
        } catch (VciBaseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        String[][] datas = new String[10000][columns.size()];
        for(int i=0;i<firstLevel.length;i++){
            datas[i] =firstLevel[i];
        }
        if(Func.isEmpty(datas)){
            excelDataList.add(new WriteExcelData(1,1, "导出的列表为空,请刷新后尝试重新导出!"));
        }else{
            for (int i = 0; i < firstLevel.length; i++) {
                int row = i + 1;
                excelDataList.add(new WriteExcelData(row,0, ""+datas[i][0]));
                excelDataList.add(new WriteExcelData(row,1, ""+datas[i][1]));
                excelDataList.add(new WriteExcelData(row,2, ""+datas[i][2]));
                excelDataList.add(new WriteExcelData(row,3, ""+datas[i][3]));
                excelDataList.add(new WriteExcelData(row,4, ""+datas[i][4]));
                excelDataList.add(new WriteExcelData(row,5, ""+datas[i][5]));
                excelDataList.add(new WriteExcelData(row,6, ""+datas[i][6]));
                excelDataList.add(new WriteExcelData(row,7, ""+datas[i][7]));
                excelDataList.add(new WriteExcelData(row,8, ""+datas[i][8]));
                excelDataList.add(new WriteExcelData(row,9, ""+datas[i][9]));
                excelDataList.add(new WriteExcelData(row,10,""+datas[i][10]));
                excelDataList.add(new WriteExcelData(row,11,""+datas[i][11]));
                excelDataList.add(new WriteExcelData(row,12,""+datas[i][12]));
                excelDataList.add(new WriteExcelData(row,13,""+datas[i][13]));
                excelDataList.add(new WriteExcelData(row,14,""+datas[i][14]));
                excelDataList.add(new WriteExcelData(row,15,""+datas[i][15]));
                excelDataList.add(new WriteExcelData(row,16,""+datas[i][16]));
                excelDataList.add(new WriteExcelData(row,17,""+datas[i][17]));
                excelDataList.add(new WriteExcelData(row,18,""+datas[i][18]));
                excelDataList.add(new WriteExcelData(row,19,""+datas[i][19]));
                excelDataList.add(new WriteExcelData(row,20,""+datas[i][20]));
                excelDataList.add(new WriteExcelData(row,21,""+datas[i][21]));
                excelDataList.add(new WriteExcelData(row,22,""+datas[i][22]));
            }
        }
        WriteExcelOption excelOption = new WriteExcelOption(excelDataList);
        ExcelUtil.writeDataToFile(excelPath, excelOption);
        return excelPath;
    }
    /**
     * å¯¼å…¥
     * @param files
     * @return
     * @throws PLException
     */
    @Override
    public BaseResult importModule(LinkedList<File> files) throws PLException, IOException {
        logger.info("正在收集表单数据......");
        boolean isSuccess = collectionDatas(files);
        logger.info("正在导入表单人员信息......");
        logger.info("count==="+count);
        boolean resBoolean = false;
        if(isSuccess == false){
            resBoolean = importExcelData(count);
        }
        return resBoolean ? BaseResult.success("导入成功!"):BaseResult.fail("导入失败!");
    }
    /**
     * ç®¡ç†åŠŸèƒ½æ¨¡å—ã€ä¸šåŠ¡åŠŸèƒ½æ¨¡å—ä¸‹çš„å¶å­èŠ‚ç‚¹â€”ä¿®æ”¹æ“ä½œåˆ«åæŽ¥å£
     * @return
     */
    @Override
    public boolean updateAlias(MenuVO menuVO) throws VciException {
        String alias = menuVO.getAlias();
        if ("".equals(alias)){
            throw new VciBaseException("请填写操作别名!");
        }
        boolean isValid = menuVO.getIsValid();
        String id = menuVO.getId();
        return foDelegate.updateFuncOperation(id , alias, isValid);
    }
    @Override
    public List<Object> getSysConfTree() {
        return null;
    }
    @Override
    public boolean addSysConf() {
        return false;
    }
    @Override
    public boolean updateSysConf() {
        return false;
    }
    @Override
    public boolean delSysConf() {
        return false;
    }
    @Override
    public String exportSysConf(HttpServletResponse response) {
        return null;
    }
    /**
     * æ”¶é›†è¡¨å•信息。
     * @param files
     * @return
     * @throws PLException
     * @throws IOException
     */
    private boolean collectionDatas(LinkedList<File> files) throws PLException, IOException{
        boolean b=false;
        for (File f : files) {
            List<SheetDataSet> sheetDataSets = this.getFileList(f);
            if (sheetDataSets != null && !sheetDataSets.isEmpty()) {
                for (SheetDataSet sheet : sheetDataSets) {
                    // sheet不能为空并且必须有出表头外的一条数据
                    if (sheet != null && sheet.getDataSet() != null && sheet.getDataSet().size() > 1) {
                        List<String[]> dataSet = sheet.getDataSet();
                        String fParentId=""; //第一级的id(第二级的parentid)
                        boolean boo=true;
                        boolean first=false;
                        String[] pd=new String[100];
                        int jibie=2;
                        for (int i = 1; i < dataSet.size(); i++) {
                            //fileDatas = new ArrayList<FunctionObject>();
                            String[] oneData = dataSet.get(i);
                            String id = ObjectUtility.getNewObjectID36();
                            FunctionInfo funObj=new FunctionInfo();
                            boolean onebl=false;
                            boolean twobl=false;
                            boolean same=false;
                            String plName=oneData[0];
                            //TODO: è¿™é‡Œç»å¯¹ä¼šå‡ºé—®é¢˜ï¼Œå¯¼å‡ºçš„第一层的级别都是0,都不会存在等于1的,所以平台这儿等于1应该是不对的
                            if(oneData[14].equals("0")) {
                                try {
                                    onebl = foDelegate.firstLevel(plName);
                                } catch (VciException e) {
                                    // TODO Auto-generated catch block
                                    e.printStackTrace();
                                }
                                //如果第一级重名
                                if(onebl == true) {//第一级重名后覆盖第一级
                                    fuzhi(funObj,oneData);
                                    try {
                                        fParentId = foDelegate.changeFirstLevel(funObj,plName);
                                        pd[2]=fParentId;
                                    } catch (VciException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                    }
                                    funObj.id = fParentId;
                                    fileFunctionDatas.add(funObj);
                                    first=true;
                                } else {
                                    funObj.id = id;
                                    funObj.parentId = "modelManagmentNode";
                                    fuzhi(funObj,oneData);
                                    fileFunctionDatas.add(funObj);
                                    first=false;
                                }
                                b=false;
                            }
                            //#########################     åˆå¹¶     #########################
                            for(jibie=2;jibie<100;jibie++){
                                if(oneData[14].equals(String.valueOf(jibie))){
                                    if(first == true && boo == true){
                                        try {
                                            if(pd[jibie]==null){
                                                pd[jibie]="";
                                            }
                                            twobl=foDelegate.secondLevel(plName,pd[jibie]);
                                        } catch (VciException e) {
                                            // TODO Auto-generated catch block
                                            e.printStackTrace();
                                        }
                                        if(twobl==true) {//重名后覆盖
                                            fuzhi(funObj,oneData);
                                            try {
                                                fParentId=foDelegate.changeSecondLevel(funObj,plName,pd[jibie]);
                                                pd[jibie+1]=fParentId;
                                            } catch (VciException e) {
                                                // TODO Auto-generated catch block
                                                e.printStackTrace();
                                            }
                                            //funObj.setId(fParentId);
                                            funObj.id = pd[jibie+1];
                                            fileFunctionDatas.add(funObj);
                                            boo = true;
                                        }
                                    } else {
                                        funObj.id = id;
                                        b = false;
                                    }
                                }
                            }
                            if(oneData[14].equals("-1")) {
                                importExcelData(count);
                                FuncOperationInfo foObj = new FuncOperationInfo();
                                int len=fileFunctionDatas.size();
                                //**************同一节点下不能有相同的操作类型********************
                                String dataOperName=oneData[18];
                                String plFuncOid=fileFunctionDatas.get(len-1).id;
                                try {
                                    same = foDelegate.selSameOper(dataOperName,plFuncOid);
                                } catch (VciBaseException e1) {
                                    // TODO Auto-generated catch block
                                    e1.printStackTrace();
                                }
                                //******************************************************
                                if(same == false) {
                                    foObj.id = id;
                                    foObj.funcId = fileFunctionDatas.get(len-1).id;
                                    try {
                                        OperateInfo operObj = foDelegate.fetchOperateTypeByName(oneData[18]);
                                        foObj.operId = operObj.id;
                                    } catch (VciException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                    }
                                    foObj.number = Integer.parseInt(oneData[16]);
                                    foObj.operAlias = oneData[15];
                                    foObj.isValid = Integer.parseInt(oneData[17]) != 0;
                                    try {
                                        foDelegate.saveFuncOperation2(foObj);
                                    } catch (VciException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                    }
                                } else {
                                    foObj.number = Integer.parseInt(oneData[16]);
                                    foObj.operAlias = oneData[15];
                                    foObj.isValid = Integer.parseInt(oneData[17]) != 0;
                                    try {
                                        foDelegate.updateOperation(foObj,dataOperName,plFuncOid);
                                    } catch (VciException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                    }
                                }
                                count=fileFunctionDatas.size();
                                b=true;
                            }
                        }
                    }
                }
            }
        }
        return b;
    }
    /**
     * å¯¼å…¥è¡¨å•数据
     * @throws VciException
     */
    private boolean importExcelData(int count) throws PLException {
        boolean b=false;
        try {
            b=    foDelegate.importModules(fileFunctionDatas.toArray(new FunctionInfo[]{}),count);
        } catch (VciBaseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return b;
    }
    /**
     * èŽ·å–è¡¨å•æ•°æ®
     * @param f
     * @return
     * @throws IOException
     * @throws PLException
     * @autor caicong
     * @data 2014-3-11
     */
    private List<SheetDataSet> getFileList(File f) throws PLException, IOException {
        // èŽ·å–æµ
        BufferedInputStream fileInputStream = new BufferedInputStream(
                new FileInputStream(f));
        String name = f.getName();
        // èŽ·å–è¡¨list
        List<SheetDataSet> sheetDataSets = ExcelDocumentUtils
                .readExcelDocument(name, fileInputStream);
        return sheetDataSets;
    }
    /**
     * æŸ¥è¯¢"功能模块管理"整个树结构并导出
     * add by caill start
     * */
    private String[][] checkLevel() throws VciBaseException{
        String[][] res = new String[3000][23];
        try{
            res = platformClientUtil.getFrameworkService().checkLevel();
        }catch (PLException e) {
            e.printStackTrace();
            throw new VciBaseException(String.valueOf(e.code), e.messages);
        }
        return res;
    }
    /**
     * å°†æŸ¥è¯¢å‡ºçš„æ•°æ®è½¬æ¢æˆsql并写入指定路径下
     * @param dir
     * @param plDatas
     * @return
     */
    private File expData(String dir,boolean isFunction/*是否是导出管理功能模块sql*/, String[][] plDatas){
        new File(dir).mkdir();
        File file = new File(dir + (isFunction ? "/plfuncoperation.sql":"/ploperation.sql"));
        try {
            FileWriter w = new FileWriter(file);
            BufferedWriter bw = new BufferedWriter(w);
            System.out.println("长度为:"+plDatas.length);
            for(int i=0;i<plDatas.length;i++){
                if(isFunction){
                    if(!plDatas[i][16].trim().equals("") && plDatas[i][16]!=null && !plDatas[i][16].equals("-1")){
                        bw.write("insert into plfunction values('"+plDatas[i][0]+"','"+plDatas[i][1]+"',"+"'"+plDatas[i][2]+"',"+"'"+plDatas[i][3]+"',"+"'"+plDatas[i][4]+"',"
                                +"'"+plDatas[i][5]+"',"+"'"+plDatas[i][6]+"',"+"'"+plDatas[i][7]+"',"+"'"+plDatas[i][8]+"',"+"'"+plDatas[i][9]+"',"+"'"+plDatas[i][10]+"',"+"'"+plDatas[i][11]+"',"
                                +"'"+plDatas[i][12]+"',"+"'"+plDatas[i][13]+"',"+"'"+plDatas[i][14]+"',"+"'"+plDatas[i][15]+"');");
                        bw.write("\r\n");
                    }
                    if(!plDatas[i][16].trim().equals("") && plDatas[i][16]!=null && plDatas[i][16].equals("-1")){
                        bw.write("insert into plfuncoperation values('"+plDatas[i][17]+"','"+plDatas[i][18]+"',"+"'"+plDatas[i][19]+"',"+"'"+plDatas[i][20]+"',"+"'"+plDatas[i][21]+"',"
                                +"'"+plDatas[i][22]+"');");
                        bw.write("\r\n");
                    }
                }else{
                    bw.write("insert into ploperation values('"+plDatas[i][0]+"','"+plDatas[i][1]+"',"+"'"+plDatas[i][2]+"',"+"'"+plDatas[i][3]+"',"+"'"+plDatas[i][4]+"',"
                            +"'"+plDatas[i][5]+"');");
                    bw.write("\r\n");
                }
            }
            bw.flush();
            bw.close();
            return file;
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }
    /**
     * ä¿å­˜æ¨¡å—下的操作
     * @param funcOperationObjs
     * @return
     * @throws VciException
     */
    public boolean saveFuncOperation(FuncOperationInfo[] funcOperationObjs) throws VciException {
        if(funcOperationObjs == null || funcOperationObjs.length < 0){
            return false;
        }
        boolean res = true;
        try{
            res = platformClientUtil.getFrameworkService().saveFuncOperation(funcOperationObjs, foDelegate.getUserEntityInfo());
        }catch (PLException e) {
            e.printStackTrace();
            throw new VciException(String.valueOf(e.code),e.messages);
        }
        return res;
    }
    /**
     * æŸ¥è¯¢"功能模块管理"整个树结构并导出sql
     * @return
     * @throws PLException
     */
    public String[][] getAllDatas(int size) throws PLException {
        String[][] res = new String[size][23];
        try{
            res = platformClientUtil.getFrameworkService().getAllDatas(size);
        }catch (PLException e) {
            e.printStackTrace();
            throw new PLException(String.valueOf(e.code), e.messages);
        }
        return res;
    }
    /**
     * èŽ·å¾—æ‰€æœ‰çš„æ“ä½œç±»åž‹å¹¶å¯¼å‡ºåˆ°.sql文件中
     * add by caill start 2015.12.11
     * */
    private String[][] getAllOperitions(int size) throws VciBaseException{
        String[][] res = new String[size][6];
        try{
            res = platformClientUtil.getFrameworkService().getAllOperitions(size);
        }catch (PLException e) {
            e.printStackTrace();
            throw new VciBaseException(String.valueOf(e.code), e.messages);
        }
        return res;
    }
    public void fuzhi(FunctionInfo functionInfo,String[] oneData){
        functionInfo.name = oneData[0];
        functionInfo.resourceC = oneData[1];
        functionInfo.suffixC = oneData[2];
        functionInfo.desc = oneData[6];
        functionInfo.resourceB = oneData[3];
        functionInfo.suffixB = oneData[4];
        functionInfo.seq = Integer.parseInt(oneData[9]);
        //funObj.setModuleNo(Integer.parseInt(oneData[5]));
        functionInfo.image = oneData[8];
        functionInfo.isValid = Integer.parseInt(oneData[7]) != 0;
        functionInfo.aliasName = oneData[10];
        functionInfo.resourceDotNet = oneData[12];
        functionInfo.resourceMobile = oneData[13];
    }
    /**
     * åŒ…含保存模块方法等操作类
     */
    private class FunctionOperateDelegate {
        /**
         * åˆ¤æ–­ç¬¬ä¸€çº§æ•°æ®æœ‰æ²¡æœ‰é‡åçš„
         * @param plName
         * @return
         * @throws VciException
         */
        public boolean firstLevel(String plName) throws VciException{
            try{
                return platformClientUtil.getFrameworkService().firstLevel(plName);
            }catch (PLException e) {
                e.printStackTrace();
                throw new VciException(String.valueOf(e.code), e.messages);
            }
        }
        /**
         * è¦†ç›–重名的第一级数据
         * add by caill
         * */
        public String changeFirstLevel(FunctionInfo functionInfo,String plName) throws VciException{
            String fParentId="";
            try {
                fParentId= platformClientUtil.getFrameworkService().changeFirstLevel(functionInfo, plName);
            } catch (PLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return fParentId;
        }
        /**
         * åˆ¤æ–­ç¬¬äºŒçº§æ•°æ®æœ‰æ²¡æœ‰é‡åçš„
         * add by caill
         * */
        public boolean secondLevel(String plName,String fParentId) throws VciException{
            try{
                return platformClientUtil.getFrameworkService().secondLevel(plName,fParentId);
            }catch (PLException e) {
                e.printStackTrace();
                throw new VciException(String.valueOf(e.code), e.messages);
            }
        }
        /**
         * è¦†ç›–重名的第二级数据
         * add by caill
         * */
        public String changeSecondLevel(FunctionInfo functionInfo,String plName,String fParentId) throws VciException{
            String sParentId="";
            try {
                sParentId= platformClientUtil.getFrameworkService().changeSecondLevel(functionInfo, plName,fParentId);
            } catch (PLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return sParentId;
        }
        /**
         * ä¿å­˜æ¨¡å—
         * @param object
         * @return
         * @throws VciException
         */
        public String saveModule(MenuVO object) throws VciBaseException {
            String res = "";
            try{
                res = platformClientUtil.getFrameworkService().saveModule(this.check(object,"add"),this.getUserEntityInfo());
            }catch (PLException e) {
                e.printStackTrace();
                throw new VciBaseException(String.valueOf(e.code), e.messages);
            }
            return res;
        }
        /**
         * ä¿®æ”¹æ¨¡å—
         * @param object
         * @return
         * @throws VciException
         */
        public String updateMod(MenuVO object) throws VciBaseException {
            String res = "";
            try{
                res = platformClientUtil.getFrameworkService().updateModule(this.check(object,"update"),this.getUserEntityInfo());
            }catch (PLException e) {
                e.printStackTrace();
                throw new VciBaseException(String.valueOf(e.code), e.messages);
            }
            return res;
        }
        /**
         * åˆ é™¤æ¨¡å—
         * @param puid
         * @return
         * @throws VciException
         */
        public String deleteModule(String puid) throws VciBaseException{
            String res = "";
            try{
                res = platformClientUtil.getFrameworkService().deleteModule(puid,this.getUserEntityInfo());
            }catch (PLException e) {
                e.printStackTrace();
                throw new VciBaseException(String.valueOf(e.code), e.messages);
            }
            return res;
        }
        /**
         * VO转DO对象
         * @return
         */
        public FunctionInfo menuVO2FunctionInfo(MenuVO object){
            FunctionInfo info = new FunctionInfo();
            info.id = object.getId() == null ? "" : object.getId();
            //info.layer = object.getLayer();
            info.name = object.getName() == null ? "" : object.getName();
            info.parentId = object.getParentId() == null ? "" : object.getParentId();
            info.resourceC = object.getPathC() == null ? "" : object.getPathC();
            //info.suffixC = object.getSuffixC() == null ? "" : object.getSuffixC();
            info.resourceB = object.getPath() == null ? "" : object.getPath();
            //info.suffixB = object.getSuffixB() == null ? "" : object.getSuffixB();
            info.desc = object.getRemark() == null ? "" : object.getRemark();
            info.seq = object.getSort();
            //info.moduleNo = object.getModuleNo();
            info.image = object.getSource() == null ? "" : object.getSource();
            info.isValid = object.getIsValid();
            info.aliasName = object.getAlias() == null ? "" : object.getAlias();
            info.resourceDotNet = object.getResourceDotNet() == null ? "" : object.getResourceDotNet();
            info.resourceMobile = object.getResourceMobile() == null ? "" : object.getResourceMobile();
            info.desc = object.getRemark();
            return info;
        }
        /**
         * <p>Description: é¡µé¢è¾“入的校验</p>
         *
         *@author xf
         *@time 2012-5-15
         *@return FunctionObject
         * @return
         */
        private FunctionInfo check(MenuVO menuVO,String type) {
            FunctionInfo obj = new FunctionInfo();
            //获取表单输入的值
            String modelName = menuVO.getName();
            String csIdentity = menuVO.getPathC();
            String bsIdentity = menuVO.getPath();
            String aliasName = menuVO.getAlias();
            String resDotNet = menuVO.getResourceDotNet();
            String resMobile = menuVO.getResourceMobile();
            //int moduleNo = transferStringToNum(moduleNoTxt.getText());
            int sequence = menuVO.getSort();
            String description = menuVO.getRemark();
            if("".equals(modelName) || "null".equals(modelName) || modelName == null) {
                throw new VciBaseException("模块名不能为空!");
            }else if(modelName.length() > 128) {
                throw new VciBaseException("模块名长度不能超过128!");
            }else if(description.length() > 255) {
                throw new VciBaseException("描述长度不能超过255!");
            }else if(csIdentity != null && !"".equals(csIdentity) && csIdentity.length() > 255) {
                throw new VciBaseException("C/S标识长度不能超过255!");
            } else if(resDotNet != null && !"".equals(resDotNet) && resDotNet.length() > 255) {
                throw new VciBaseException(".NET标识长度不能超过255!");
            }else if(resMobile != null && !"".equals(resMobile) && resMobile.length() > 255) {
                throw new VciBaseException("Mobile标识长度不能超过255!");
            } else if (sequence < 0) {
                throw new VciBaseException("序号不能小于0!");
            }
            if(type.equals("add")){
                //给object对象赋值
                String parentId = "";
                if(menuVO.getModeType().equals("FunctionObject")) {
                    parentId = menuVO.getParentId();
                }else if("modelManagmentNode".equals(menuVO.getParentId())) {
                    parentId = "modelManagmentNode";
                }else if("systemManagmentNode".equals(menuVO.getParentId())) {
                    parentId = "systemManagmentNode";
                }
                obj.parentId = parentId;
            }else{
                obj.id = menuVO.getId();
                obj.parentId = menuVO.getParentId();
            }
            obj.name = modelName;
            obj.resourceC = csIdentity;
            obj.desc = description;
            obj.resourceB = bsIdentity;
            obj.suffixC = "";
            obj.suffixB = "";
            obj.seq = sequence;
            obj.image = menuVO.getSource();
            obj.isValid = menuVO.getValid();//1有效0无效
            obj.aliasName = aliasName;
            obj.resourceDotNet = resDotNet;
            obj.resourceMobile = resMobile;
            return obj;
        }
        /**
         * èŽ·å–UserEntityInfo对象
         * @return
         */
        public UserEntityInfo getUserEntityInfo(){
            SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread();
            UserEntityInfo userEntityInfo = new UserEntityInfo(sessionInfo.getUserId(), "");
            return userEntityInfo;
        }
        /**
         * å¯¼å…¥æ¨¡å—对象
         * add by caill
         * */
        public boolean importModules(FunctionInfo[] funObject,int count) throws VciBaseException{
            boolean b=false;
            int len = funObject.length;
            List<FunctionInfo> funInfoList = new ArrayList<FunctionInfo>();
            for(int i = count ; i<len ; i++){
                if(funObject[i].parentId!=null){
                    FunctionInfo funInfo = funObject[i];
                    funInfoList.add(funInfo);
                }
            }
            FunctionInfo[] funInfos = new FunctionInfo[funInfoList.size()];
            for(int j=0;j<funInfoList.size();j++){
                funInfos[j] = funInfoList.get(j);
            }
            try {
                b = platformClientUtil.getFrameworkService().importModules(funInfos,this.getUserEntityInfo());
            } catch (PLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return b;
        }
        /**
         * æŸ¥è¯¢åŒä¸€æ¨¡å—中是否已经存在相同的操作类型
         * add by caill
         * */
        public boolean selSameOper(String dataOperName,String plFuncOid) throws VciBaseException{
            boolean same=false;
            try {
                same = platformClientUtil.getFrameworkService().selSameOper(dataOperName,plFuncOid);
            } catch (PLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return same;
        }
        public OperateInfo fetchOperateTypeByName(String name) throws VciException {
            try{
                OperateInfo info =  platformClientUtil.getFrameworkService().fetchOperateTypeByName(name);
                return info;
            }catch (PLException e) {
                e.printStackTrace();
                throw new VciBaseException(String.valueOf(e.code),e.messages);
            }
        }
        /**
         * ä¿å­˜æ“ä½œç±»åž‹
         * add by caill
         * */
        public boolean saveFuncOperation2(FuncOperationInfo funcOperationInfo) throws VciException{
            try {
                platformClientUtil.getFrameworkService().saveFuncOperation2(funcOperationInfo,this.getUserEntityInfo());
            } catch (PLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return true;
        }
        /**
         * è¦†ç›–操作类型
         * add by caill
         * */
        public String updateOperation(FuncOperationInfo funcOperationInfo,String dataOperName,String plFuncOid) throws VciException{
            try {
                platformClientUtil.getFrameworkService().updateOperation(funcOperationInfo,this.getUserEntityInfo(),dataOperName,plFuncOid);
            } catch (PLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return null;
        }
        public boolean updateFuncOperation(String id , String alias, boolean isSelected) throws VciException {
            boolean res = false;
            try{
                res = platformClientUtil.getFrameworkService().updateFuncOperation(id, alias, isSelected, this.getUserEntityInfo());
            }catch(PLException e){
                throw new VciException(String.valueOf(e.code), e.messages);
            }
            return res;
        }
    }
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/HMSysModConfigController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,259 @@
package com.vci.web.controller;
import com.vci.constant.FrameWorkLangCodeConstant;
import com.vci.frameworkcore.compatibility.ISmFunctionQueryService;
import com.vci.frameworkcore.compatibility.SmHMSysModConfigServiceI;
import com.vci.pagemodel.MenuVO;
import com.vci.starter.web.annotation.controller.VciUnCheckRight;
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.LocalFileUtil;
import com.vci.starter.web.util.VciBaseUtil;
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 org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
/**
 * é¦–页系统模块配置控制器
 * @author ludc
 * @date 2024/8/19 10:55
 */
@RestController
@RequestMapping("/hmSysModConfigController")
@VciUnCheckRight
public class HMSysModConfigController {
    /**
     * åŠŸèƒ½æŸ¥è¯¢æœåŠ¡
     */
    @Resource
    private ISmFunctionQueryService functionQueryService;
    /**
     * é¦–页系统配置服务
     */
    @Resource
    private SmHMSysModConfigServiceI hmSysModConfigService;
    /**
     * æ—¥å¿—
     */
    private Logger logger = LoggerFactory.getLogger(getClass());
    /**
     * èŽ·å–å½“å‰æ¨¡å—ä¸‹çš„å­æ¨¡å—
     * @param parentId
     * @param modeType
     * @return
     */
    @GetMapping("/getSysModelTreeMenuByPID")
    public BaseResult<List<MenuVO>> getSysModelTreeMenuByPID(String parentId, String modeType) {
        try {
            return BaseResult.dataList(functionQueryService.getSysModelTreeMenuByPID(parentId,modeType,true));
        }catch (Exception e){
            e.printStackTrace();
            String errorMsg = "查询子模块时出现错误,原因:"+ VciBaseUtil.getExceptionMessage(e);
            logger.error(errorMsg);
            throw new VciBaseException(errorMsg);
        }
    }
    /**
     * æ·»åŠ æ¨¡å—
     * @param menuVO
     * @return
     */
    @PostMapping("/addModel")
    public BaseResult addModel(@RequestBody MenuVO menuVO) {
        try {
            return BaseResult.success(hmSysModConfigService.addModule(menuVO),"模块增加成功");
        }catch (Exception e){
            e.printStackTrace();
            String errorMsg = "增加模块时出现错误,原因:"+ VciBaseUtil.getExceptionMessage(e);
            logger.error(errorMsg);
            throw new VciBaseException(errorMsg);
        }
    }
    /**
     * ä¿®æ”¹æ¨¡å—
     * @param menuVO
     * @return
     */
    @PutMapping("/updateModel")
    public BaseResult updateModel(@RequestBody MenuVO menuVO) {
        try {
            return BaseResult.success(hmSysModConfigService.updateModule(menuVO),"模块修改成功");
        }catch (Exception e){
            e.printStackTrace();
            String errorMsg = "修改模块时出现错误,原因:"+ VciBaseUtil.getExceptionMessage(e);
            logger.error(errorMsg);
            throw new VciBaseException(errorMsg);
        }
    }
    /**
     * åˆ é™¤æ¨¡å—
     * @param menuVO
     * @return
     */
    @DeleteMapping("/delModule")
    public BaseResult delModule(@RequestBody MenuVO menuVO) {
        try {
            return BaseResult.success(hmSysModConfigService.delModule(menuVO),"模块删除成功");
        }catch (Exception e){
            e.printStackTrace();
            String errorMsg = "删除模块时出现错误,原因:"+ VciBaseUtil.getExceptionMessage(e);
            logger.error(errorMsg);
            throw new VciBaseException(errorMsg);
        }
    }
    /**
     * ç®¡ç†åŠŸèƒ½æ¨¡å—ã€ä¸šåŠ¡åŠŸèƒ½æ¨¡å—ä¸‹çš„å¶å­èŠ‚ç‚¹â€”ä¿®æ”¹æ“ä½œåˆ«åæŽ¥å£
     * @param menuVO
     * @return
     */
    @PutMapping("/updateAlias")
    public BaseResult updateAlias(@RequestBody MenuVO menuVO) {
        try {
            return BaseResult.success(hmSysModConfigService.updateAlias(menuVO),"操作别名修改成功");
        }catch (Exception e){
            e.printStackTrace();
            String errorMsg = "操作别名修改时出现错误,原因:"+ VciBaseUtil.getExceptionMessage(e);
            logger.error(errorMsg);
            throw new VciBaseException(errorMsg);
        }
    }
    /**
     * æ·»åŠ æ“ä½œç±»åž‹
     * @param menuVOList
     * @return
     */
    @PostMapping("/addOperationType")
    public BaseResult addOperationType(@RequestBody List<MenuVO> menuVOList) {
        try {
            return BaseResult.success(hmSysModConfigService.addOperationType(menuVOList),"操作类型添加成功");
        }catch (Exception e){
            e.printStackTrace();
            String errorMsg = "删除模块时出现错误,原因:"+ VciBaseUtil.getExceptionMessage(e);
            logger.error(errorMsg);
            throw new VciBaseException(errorMsg);
        }
    }
    /**
     * åˆ é™¤éžç³»ç»Ÿæ¨¡å—
     * @return
     */
    @DeleteMapping("/delNonsysModule")
    public BaseResult delNonsysModule() {
        try {
            return BaseResult.success(hmSysModConfigService.delNonsysModule(),"删除非系统模块成功");
        }catch (Exception e){
            e.printStackTrace();
            String errorMsg = "删除非系统模块时出现错误,原因:"+ VciBaseUtil.getExceptionMessage(e);
            logger.error(errorMsg);
            throw new VciBaseException(errorMsg);
        }
    }
    /**
     * åˆ é™¤ä¸šåŠ¡æ¨¡å—
     * @return
     */
    @PostMapping("/delBusinessModule")
    public BaseResult delBusinessModule() {
        try {
            return BaseResult.success(hmSysModConfigService.delBusinessModule(),"删除业务模块");
        }catch (Exception e){
            e.printStackTrace();
            String errorMsg = "删除业务模块时出现错误,原因:"+ VciBaseUtil.getExceptionMessage(e);
            logger.error(errorMsg);
            throw new VciBaseException(errorMsg);
        }
    }
    /**
     * å¯¼å‡ºç®¡ç†åŠŸèƒ½æ¨¡å—æˆ–æ“ä½œç±»åž‹ç®¡ç†æ¨¡å—sql
     * @return
     */
    @GetMapping("/exportFunctionSql")
    public void exportFunctionSql(HttpServletResponse response,String exportPath,boolean isFunction) {
        try {
            File file = hmSysModConfigService.exportFunctionSql(response,exportPath,isFunction);
            ControllerUtil.writeFileToResponse(response,file,true);
        } catch (Exception e) {
            String msg = "导出sql时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            try {
                //出错时
                e.printStackTrace();
                ControllerUtil.writeDataToResponse(response,"error_" + Func.format(new Date(),"yyyy-MM-dd HHmmss.sss") + ".txt", StringUtils.isNotBlank(msg)?msg.getBytes():new byte[0],null);
            } catch (IOException ioException) {
                ioException.printStackTrace();
            }
        }
    }
    /**
     * å¯¼å‡ºæ¨¡å—
     * @return
     */
    @GetMapping("/exportModule")
    public void exportModule(HttpServletResponse response) {
        try {
            String excelPath = hmSysModConfigService.exportModule(response);
            ControllerUtil.writeFileToResponse(response,excelPath);
        } catch (Exception e) {
            String msg = "导出模块时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
            try {
                //出错时
                e.printStackTrace();
                ControllerUtil.writeDataToResponse(response,"error_" + Func.format(new Date(),"yyyy-MM-dd HHmmss.sss") + ".txt", StringUtils.isNotBlank(msg)?msg.getBytes():new byte[0],null);
            } catch (IOException ioException) {
                ioException.printStackTrace();
            }
        }
    }
    /**
     * å¯¼å…¥æ¨¡å—
     * @return
     */
    @GetMapping("/importModule")
    public BaseResult importModule(@RequestParam("files") List<MultipartFile> files) {
        LinkedList<File> fileList = new LinkedList<>();
        try {
            for (MultipartFile file : files) {
                String excelFileName = LocalFileUtil.getDefaultTempFolder() + File.separator + LocalFileUtil.getFileNameForIE(file.getOriginalFilename());
                File file1 = new File(excelFileName);
                file.transferTo(file1);
                fileList.add(file1);
            }
            if(Func.isEmpty(fileList)){
                return hmSysModConfigService.importModule(fileList);
            } else {
                return BaseResult.fail(FrameWorkLangCodeConstant.IMPORT_FAIL, new String[]{"无导入的文件"});
            }
        }catch (Throwable e) {
            throw new VciBaseException(VciBaseUtil.getExceptionMessage(e),new String[0],e);
        }finally {
            fileList.stream().forEach(file -> file.delete());
        }
    }
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsActionController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,160 @@
package com.vci.web.controller;
import com.vci.corba.common.PLException;
import com.vci.dto.PLActionClsDTO;
import com.vci.dto.PLActionDTO;
import com.vci.dto.PLActionQueryDTO;
import com.vci.starter.web.pagemodel.BaseResult;
import com.vci.web.service.OsActionServiceI;
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.List;
/**
 * Action管理的控制器
 * @author yuxc
 * @date 2024-8-16
 */
@RequestMapping("/actionController")
@RestController
public class OsActionController {
    /**
     * Action服务
     */
    @Autowired
    private OsActionServiceI osActionServiceI;
    /**
     * ä¿å­˜Action分类信息
     * @param pLActionCls Action分类信息
     * @return ä¿å­˜ç»“æžœ
     */
    @PostMapping("/saveActionCls")
    public BaseResult saveActionCls(@RequestBody PLActionClsDTO pLActionCls){
        try {
            return osActionServiceI.saveActionCls(pLActionCls);
        } catch (PLException e) {
            BaseResult objectBaseResult = new BaseResult<>();
            objectBaseResult.setCode(Integer.parseInt(e.code));
            objectBaseResult.setMsg(Arrays.toString(e.messages));
            return objectBaseResult;
        }
    }
    /**
     * ä¿®æ”¹Action分类信息
     * @param pLActionCls Action分类信息
     * @return ä¿®æ”¹ç»“æžœ
     */
    @PostMapping("/updateActionCls")
    public BaseResult updateActionCls(@RequestBody PLActionClsDTO pLActionCls){
        try {
            return osActionServiceI.updateActionCls(pLActionCls);
        } catch (PLException e) {
            BaseResult objectBaseResult = new BaseResult<>();
            objectBaseResult.setCode(Integer.parseInt(e.code));
            objectBaseResult.setMsg(Arrays.toString(e.messages));
            return objectBaseResult;
        }
    }
    /**
     * èŽ·å–Action分类树
     * isExp æ˜¯å¦ç”¨æˆ·å¯¼å‡º true是,false否
     * @return æŸ¥è¯¢ç»“æžœ
     */
    @GetMapping("/getActionTree")
    public BaseResult getActionTree(boolean isExp){
        try {
            return osActionServiceI.getActionTree(isExp);
        } catch (PLException e) {
            BaseResult objectBaseResult = new BaseResult<>();
            objectBaseResult.setCode(Integer.parseInt(e.code));
            objectBaseResult.setMsg(Arrays.toString(e.messages));
            return objectBaseResult;
        }
    }
    /**
     * èŽ·å–Action表格数据
     * dto æŸ¥è¯¢æ¡ä»¶
     * @return æŸ¥è¯¢ç»“æžœ
     */
    @PostMapping("/getActionTableData")
    public BaseResult getActionTableData(@RequestBody PLActionQueryDTO dto){
        try {
            return osActionServiceI.getActionTableData(dto);
        } catch (PLException e) {
            BaseResult objectBaseResult = new BaseResult<>();
            objectBaseResult.setCode(Integer.parseInt(e.code));
            objectBaseResult.setMsg(Arrays.toString(e.messages));
            return objectBaseResult;
        }
    }
    /**
     * ä¿å­˜Action数据
     * dto action传输对象
     * @return ä¿å­˜ç»“æžœ
     */
    @PostMapping("/saveAction")
    public BaseResult saveAction(@RequestBody PLActionDTO dto){
        try {
            return osActionServiceI.saveAction(dto);
        } catch (PLException e) {
            BaseResult objectBaseResult = new BaseResult<>();
            objectBaseResult.setCode(Integer.parseInt(e.code));
            objectBaseResult.setMsg(Arrays.toString(e.messages));
            return objectBaseResult;
        }
    }
    /**
     * ä¿®æ”¹Action数据
     * dto action传输对象
     * @return ä¿®æ”¹ç»“æžœ
     */
    @PostMapping("/updateAction")
    public BaseResult updateAction(@RequestBody PLActionDTO dto){
        try {
            return osActionServiceI.updateAction(dto);
        } catch (PLException e) {
            BaseResult objectBaseResult = new BaseResult<>();
            objectBaseResult.setCode(Integer.parseInt(e.code));
            objectBaseResult.setMsg(Arrays.toString(e.messages));
            return objectBaseResult;
        }
    }
    /**
     * åˆ é™¤Action数据
     * dto action传输对象
     * @return åˆ é™¤ç»“æžœ
     */
    @DeleteMapping("/deleteAction")
    public BaseResult deleteAction(@RequestBody PLActionDTO dto){
        try {
            return osActionServiceI.deleteAction(dto);
        } catch (PLException e) {
            BaseResult objectBaseResult = new BaseResult<>();
            objectBaseResult.setCode(Integer.parseInt(e.code));
            objectBaseResult.setMsg(Arrays.toString(e.messages));
            return objectBaseResult;
        }
    }
    /**
     * å¯¼å‡ºAction
     * @return
     */
    @PostMapping("/exportBeans")
    public void exportBeans(@RequestBody List<String> actionOid, HttpServletResponse response) throws PLException, IOException {
        osActionServiceI.exportBeans(actionOid, response);
    }
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/SmFunctionController.java
@@ -49,25 +49,6 @@
    }
    /**
     * èŽ·å–å½“å‰æ¨¡å—ä¸‹çš„å­æ¨¡å—
     * @param parentId
     * @return
     * @throws PLException
     */
    @GetMapping("/getSysModelTreeMenuByPID")
    @VciUnCheckRight
    public List<MenuVO> getSysModelTreeMenuByPID(String parentId) {
        try {
            return functionQueryService.getSysModelTreeMenuByPID(parentId,true);
        }catch (Exception e){
            e.printStackTrace();
            String errorMsg = "查询子模块时出现错误,原因:"+VciBaseUtil.getExceptionMessage(e);
            logger.error(errorMsg);
            throw new VciBaseException(errorMsg);
        }
    }
    /**
     * èŽ·å–å½“å‰ç”¨æˆ·çš„èœå•
     * @param treeQueryObject æ ‘查询对象
     * @return  æ ‘节点,出现错误会在异常处理器中统一返回Json
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebPortalVIController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,72 @@
package com.vci.web.controller;
import com.vci.dto.PortalVIDTO;
import com.vci.pagemodel.KeyValue;
import com.vci.pagemodel.PortalVIVO;
import com.vci.starter.web.annotation.log.VciBusinessLog;
import com.vci.starter.web.pagemodel.BaseQueryObject;
import com.vci.starter.web.pagemodel.BaseResult;
import com.vci.starter.web.pagemodel.DataGrid;
import com.vci.web.enumpck.ItemDblEnum;
import com.vci.web.enumpck.ItemTypeEnum;
import com.vci.web.service.OsPortalVIServiceI;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
 * å…¬å¼æŽ§åˆ¶å™¨
 * @author weidy
 * @date 2022-2-11
 */
@RestController
@RequestMapping("/portalVIController")
public class WebPortalVIController {
   private OsPortalVIServiceI portalVIServiceI;
    /**
     * è¡¨å•列表
     * viType:表单类型;Form("Form", "表单", (short)1), Table("Table", "表格", (short)0);
     * viTypeFlag:    LinkType("LinkType", "链接类型的表单", (short)1), BtmType("BtmType", "业务类型的表单", (short)0);
     * @param baseQueryObject æŸ¥è¯¢æ¡ä»¶
     * @return åˆ—表的内容
     */
    @GetMapping( "/referDataGrid")
    @VciBusinessLog(operateName = "表单/表格列表")
    public DataGrid<PortalVIVO> referDataGrid(BaseQueryObject baseQueryObject){
        return portalVIServiceI.gridPortalVIVOs(baseQueryObject);
    }
    /**
     * è¡¨å•/table保存
     * @param portalVIDTO
     * @return
     */
    @PostMapping("/savePortalVI")
    @VciBusinessLog(operateName = "添加表单/表格")
    public BaseResult savePortalVI(@RequestBody PortalVIDTO portalVIDTO){
        if(StringUtils.isNotBlank(portalVIDTO.getId())){
            return portalVIServiceI.edit(portalVIDTO);
        }else{
            return portalVIServiceI.add(portalVIDTO);
        }
    }
    /**
     * èŽ·å–å±žæ€§å­—æ®µç±»åž‹
     */
    @GetMapping("/getItemTypeList")
    @VciBusinessLog(operateName = "属性字段类型")
    public BaseResult<List<KeyValue>> getItemTypeList(){
        return  BaseResult.dataList(ItemTypeEnum.getEnumAll());
    }
    /**
     * èŽ·å–è¶…é“¾æŽ¥å¼¹å‡ºæ–¹æ³•
     */
    @GetMapping("/getItemDblList")
    @VciBusinessLog(operateName = "属性字段类型")
    public BaseResult<List<KeyValue>> getItemDblList(){
        return  BaseResult.dataList(ItemDblEnum.getEnumAll());
    }
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/ItemDblEnum.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,125 @@
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;
public enum ItemDblEnum implements BaseEnum {
    EDIT_PANEL("0","修改页面"),
    CUSTOM_PANEL("1","自定义页面"),
    DIALOG("2","弹出小窗口"),
    OVERLOOK("3", "忽略");
    /**
     * æžšä¸¾çš„值
     */
    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;
    }
    ItemDblEnum(String value, String text) {
        this.value = value;
        this.text = text;
    }
    /**
     * æ ¹æ®åç§°èŽ·å–å¯¹åº”çš„æžšä¸¾å€¼
     *
     * @param text åç§°
     * @return æžšä¸¾å€¼
     */
    public static String getValueByText(String text) {
        for (ItemDblEnum wenum : ItemDblEnum.values()) {
            if (wenum.getText().equalsIgnoreCase(text)) {
                return wenum.getValue();
            }
        }
        return "";
    }
    /**
     * æ ¹æ®æžšä¸¾å€¼èŽ·å–åç§°
     *
     * @param value æžšä¸¾å€¼
     * @return åç§°
     */
    public static String getTextByValue(String value) {
        for (ItemDblEnum wenum : ItemDblEnum.values()) {
            if (wenum.getValue().equalsIgnoreCase(value)) {
                return wenum.getText();
            }
        }
        return "";
    }
    /**
     * æ ¹æ®æžšä¸¾å€¼èŽ·å–æžšä¸¾å¯¹è±¡
     *
     * @param value æžšä¸¾å€¼
     * @return æžšä¸¾å¯¹è±¡ï¼Œä¸å­˜åœ¨æ—¶å€™è¿”回null
     */
    public static ItemDblEnum forValue(String value) {
        for (ItemDblEnum wenum : ItemDblEnum.values()) {
            if (wenum.getValue().equalsIgnoreCase(value)) {
                return wenum;
            }
        }
        return null;
    }
    /**
     * æ ¹æ®æžšä¸¾å€¼èŽ·å–åç§°
     *
     * @return åç§°
     */
    public static List<KeyValue> getEnumAll() {
        List<KeyValue> enumDataList=new ArrayList<>();
        for (ItemDblEnum wenum : ItemDblEnum.values()) {
            KeyValue enumData=new KeyValue();
            enumData.setKey(wenum.value);
            enumData.setValue(wenum.text);
            enumDataList.add(enumData);
        }
        return enumDataList;
    }
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/ItemTypeEnum.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,144 @@
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;
public enum ItemTypeEnum implements BaseEnum {
    TEXT("text","单行文本框"),
    TEXTBTN("textbtn","文本按钮框"),
    TEXTAREA("textarea","多行文本框"),
    RICHTEXT("richtext","富文本框"),
    NUMBER("number","数字输入框"),
    PASSWORD("password","密码框"),
    RADIO("radio","单选按钮"),
    CHECKBOX("checkbox","多选按钮"),
    SELECT("select","下拉菜单"),
    MULTISELECT("multiselect","多选下拉菜单"),
    DATE("date","日期输入框"),
    TIME("time","时间输入框"),
    DATETIME("datetime","日期时间输入框"),
    FILE("file","文件上传"),
    MULTIFILE("multiFile","多文件上传"),
    CUSTOM("custom","自定义"),
    CUSTOMFORM("customform","自定义表单"),
    HIDDEN("hidden","隐藏或普通文字"),
    WEBEDITOR("webeditor","Web编辑器"),
    SPECIALCHARACTER("specialCharacter","特殊字符");
    /**
     * æžšä¸¾çš„值
     */
    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;
    }
    ItemTypeEnum(String value, String text) {
        this.value = value;
        this.text = text;
    }
    /**
     * æ ¹æ®åç§°èŽ·å–å¯¹åº”çš„æžšä¸¾å€¼
     *
     * @param text åç§°
     * @return æžšä¸¾å€¼
     */
    public static String getValueByText(String text) {
        for (ItemTypeEnum wenum : ItemTypeEnum.values()) {
            if (wenum.getText().equalsIgnoreCase(text)) {
                return wenum.getValue();
            }
        }
        return "";
    }
    /**
     * æ ¹æ®æžšä¸¾å€¼èŽ·å–åç§°
     *
     * @param value æžšä¸¾å€¼
     * @return åç§°
     */
    public static String getTextByValue(String value) {
        for (ItemTypeEnum wenum : ItemTypeEnum.values()) {
            if (wenum.getValue().equalsIgnoreCase(value)) {
                return wenum.getText();
            }
        }
        return "";
    }
    /**
     * æ ¹æ®æžšä¸¾å€¼èŽ·å–æžšä¸¾å¯¹è±¡
     *
     * @param value æžšä¸¾å€¼
     * @return æžšä¸¾å¯¹è±¡ï¼Œä¸å­˜åœ¨æ—¶å€™è¿”回null
     */
    public static ItemTypeEnum forValue(String value) {
        for (ItemTypeEnum wenum : ItemTypeEnum.values()) {
            if (wenum.getValue().equalsIgnoreCase(value)) {
                return wenum;
            }
        }
        return null;
    }
    /**
     * æ ¹æ®æžšä¸¾å€¼èŽ·å–åç§°
     *
     * @return åç§°
     */
    public static List<KeyValue> getEnumAll() {
        List<KeyValue> enumDataList=new ArrayList<>();
        for (ItemTypeEnum wenum : ItemTypeEnum.values()) {
            KeyValue enumData=new KeyValue();
            enumData.setKey(wenum.value);
            enumData.setValue(wenum.text);
            enumDataList.add(enumData);
        }
        return enumDataList;
    }
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/PortalVIType.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,85 @@
package com.vci.web.enumpck;
import com.vci.common.portal.enums.GetByType;
/**
 * è¡¨å•类型
 * @author xiej
 *
 */
public enum PortalVIType {
    Form("Form", "表单", (short)1),
    Table("Table", "表格", (short)0);
    private String name = "";
    private String label = "";
    private short intVal = 1;
    private PortalVIType(String name, String label, short intVal){
        this.name = name;
        this.label = label;
        this.intVal = intVal;
    }
    public static PortalVIType getByName(String name){
        PortalVIType res = getByType(GetByType.Name, name);
        return res;
    }
    public static PortalVIType getByLabel(String label){
        PortalVIType res = getByType(GetByType.Label, label);
        return res;
    }
    public static PortalVIType getByIntVal(int intVal){
        PortalVIType res = getByType(GetByType.IntVal, String.valueOf(intVal));
        return res;
    }
    public static PortalVIType getByType(GetByType type, String val){
        PortalVIType[] alls = getAll();
        PortalVIType res = null;
        for(PortalVIType obj : alls){
            if(type == GetByType.Name && obj.getName().equalsIgnoreCase(val)){
                res = obj;
                break;
            } else if(type  == GetByType.Label && obj.getLabel().equalsIgnoreCase(val)){
                res = obj;
                break;
            } else if(type  == GetByType.IntVal && String.valueOf(obj.getIntVal()).equalsIgnoreCase(val)){
                res = obj;
                break;
            }
        }
        return res;
    }
    public static PortalVIType[] getAll(){
        return PortalVIType.values();
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getLabel() {
        return label;
    }
    public void setLabel(String label) {
        this.label = label;
    }
    public short getIntVal() {
        return intVal;
    }
    public void setIntVal(short intVal) {
        this.intVal = intVal;
    }
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/enumpck/PortalVITypeFlag.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,85 @@
package com.vci.web.enumpck;
import com.vci.common.portal.enums.GetByType;
/**
 * è¡¨å•标记类型
 * @author xiej
 *
 */
public enum PortalVITypeFlag {
    LinkType("LinkType", "链接类型的表单", (short)1),
    BtmType("BtmType", "业务类型的表单", (short)0);
    private String name = "";
    private String label = "";
    private short intVal = 1;
    private PortalVITypeFlag(String name, String label, short intVal){
        this.name = name;
        this.label = label;
        this.intVal = intVal;
    }
    public static PortalVITypeFlag getByName(String name){
        PortalVITypeFlag res = getByType(GetByType.Name, name);
        return res;
    }
    public static PortalVITypeFlag getByLabel(String label){
        PortalVITypeFlag res = getByType(GetByType.Label, label);
        return res;
    }
    public static PortalVITypeFlag getByIntVal(int intVal){
        PortalVITypeFlag res = getByType(GetByType.IntVal, String.valueOf(intVal));
        return res;
    }
    public static PortalVITypeFlag getByType(GetByType type, String val){
        PortalVITypeFlag[] alls = getAll();
        PortalVITypeFlag res = null;
        for(PortalVITypeFlag obj : alls){
            if(type == GetByType.Name && obj.getName().equalsIgnoreCase(val)){
                res = obj;
                break;
            } else if(type  == GetByType.Label && obj.getLabel().equalsIgnoreCase(val)){
                res = obj;
                break;
            } else if(type  == GetByType.IntVal && String.valueOf(obj.getIntVal()).equalsIgnoreCase(val)){
                res = obj;
                break;
            }
        }
        return res;
    }
    public static PortalVITypeFlag[] getAll(){
        return PortalVITypeFlag.values();
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getLabel() {
        return label;
    }
    public void setLabel(String label) {
        this.label = label;
    }
    public short getIntVal() {
        return intVal;
    }
    public void setIntVal(short intVal) {
        this.intVal = intVal;
    }
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/ExportActionLogBean.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,156 @@
package com.vci.web.other;
import java.text.SimpleDateFormat;
import java.util.Date;
public class ExportActionLogBean implements IExportLogBean {
    /**
     *
     */
    private static final long serialVersionUID = 10086L;
    private String no = "1";
    private static int index = 1;
    private String exportState = "正常";
    private String coding = "";
    private String name ="";
    private String CSRegister = "";
    private String BSRegister = "";
    private String type = "";
    private String description = "";
    private String category = "";
    private Date date = null;
    private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss ");
    public ExportActionLogBean() {
           this( "-1", "ExportActionLogBean å¯¹è±¡æž„建 ä½†æœªè®¾ç½®å€¼", "null",
                     "null", "null",  "null",  "null",
                     "null",  "null" );
           index = 1;
    }
    public ExportActionLogBean(String exportState, String coding,
            String name, String cSRegister, String bSRegister, String type,
            String description, String category) {
          this( ""+index++, exportState, coding,
                  name, cSRegister, bSRegister,type,
                  description,category);
    }
    public ExportActionLogBean(String no, String exportState, String coding,
            String name, String cSRegister, String bSRegister, String type,
            String description, String category) {
        super();
        this.no = no;
        if( exportState!=null || !no.equals("-1")){//默认状态为正常
            this.exportState = exportState;
        }
        this.coding = coding;
        this.name = name;
        CSRegister = cSRegister;
        BSRegister = bSRegister;
        this.type = type;
        this.description = description;
        this.category = category;
    }
    @Override
    public Object[] getLogRowObjcets() {
        Object obj []=  {no,exportState,coding,name,CSRegister,BSRegister,type,description,category};
        return obj;
    }
    public Object[] getInportLogRowObjcets() {
        Object obj []=  {no,exportState,coding,name,CSRegister,BSRegister,type,description};
        return obj;
    }
    public String getNo() {
        return no;
    }
    public String getExportState() {
        return exportState;
    }
    public String getName() {
        return name;
    }
    public String getCSRegister() {
        return CSRegister;
    }
    public String getBSRegister() {
        return BSRegister;
    }
    public String getType() {
        return type;
    }
    public String getDescription() {
        return description;
    }
    public String getCategory() {
        return category;
    }
    public void setNo(String no) {
        this.no = no;
    }
    public void setExportState(String exportState) {
        this.exportState = exportState;
    }
    public void setName(String name) {
        this.name = name;
    }
    public void setCSRegister(String cSRegister) {
        CSRegister = cSRegister;
    }
    public void setBSRegister(String bSRegister) {
        BSRegister = bSRegister;
    }
    public void setType(String type) {
        this.type = type;
    }
    public void setDescription(String description) {
        this.description = description;
    }
    public void setCategory(String category) {
        this.category = category;
    }
    @Override
    public String getLogRowContent() {
        date = new Date();
        String info =format.format(date)+"---------";
        return info+" [序号=" + no + ", å¯¼å‡ºçŠ¶æ€=" + exportState
                + ", ç¼–号=" + coding + ", åç§°=" + name + ", CS注册="
                + CSRegister + ", BS注册=" + BSRegister + ", ç±»åž‹=" + type
                + ", æè¿°=" + description + ", æ‰€å±žåˆ†ç±»=" + category
                + "]";
    }
    public String getCoding() {
        return coding;
    }
    public void setCoding(String coding) {
        this.coding = coding;
    }
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/ExportBeans.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,153 @@
package com.vci.web.other;
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{
    private static final long serialVersionUID = 10086L;
    private HashMap<String/*ActionId*/,PLAction>   PLActionBeans = new  HashMap<String,PLAction>();
    private HashMap<String/*分类名称*/,String/*id*/> PLActionClsExt = new  HashMap<String,String>();
    private HashMap<String/*id*/,PLActionCls>   PLActionClsBeans = new  HashMap<String,PLActionCls>();
    private HashMap<String/*Action编码*/, ArrayList<PLActionParam> >   PLActionParamBeans = new  HashMap<String, ArrayList<PLActionParam> >();
    private HashMap<String/*ActionCls编码*/, ArrayList<PLAction> >   PLActionListsMap = null;
    private ExportActionLogBean logBean = null;//日志文件
    public ExportBeans() {
        logBean = new ExportActionLogBean();
    }
    public HashMap<String, PLActionCls> getPLActionClsBeans() {
        return PLActionClsBeans;
    }
    public HashMap<String, PLAction> getPLActions() {
        return PLActionBeans;
    }
    public void addPLActionClsBean(PLActionCls pLActionCls){
        PLActionClsBeans.put(pLActionCls.id, pLActionCls);
        PLActionClsExt.put(pLActionCls.name,pLActionCls.id);
    }
    public PLActionCls getPLActionClsBeanById(String  id){
        return PLActionClsBeans.get(id);
    }
    public PLActionCls getPLActionClsBeanByName(String  name){
        if(PLActionClsExt.get(name) == null){
            return null;
        }
        return PLActionClsBeans.get(PLActionClsExt.get(name));
    }
    /**
     * æ·»åŠ PLActionBean并同时添加PLActionBean对应参数进行记录
     * @param pLAction
     */
//    public void addPLActionBean(PLAction pLAction){
//        this.addPLActionBean(pLAction,null);
//    }
    /**
     * æ·»åŠ PLActionBean后 logBean存入值
     *
     */
    public void setLogBean(ExportActionLogBean logBean) {
        this.logBean =  logBean;
    }
    /**
     * æ·»åŠ PLActionBean后 logBean存入值
     *
     */
    public ExportActionLogBean getLogBean() {
        return logBean;
    }
    public PLAction getPLActionById(String pLActionId){
        return PLActionBeans.get(pLActionId);
    }
    public ArrayList<PLAction> getPLActionByPlActionClsId(String plActionClsId){
        if( PLActionListsMap == null){
            PLActionListsMap = new HashMap<String/*ActionCls编码*/,ArrayList<PLAction>>();
            for (Entry<String, PLAction> PLActionEntry : PLActionBeans.entrySet()) {
                String PLActionListsMapKey = PLActionEntry.getValue().plActionCls ;
                if(PLActionListsMapKey.equals("")){
                    PLActionListsMapKey = "when key is null ,change the key to this";
                }
                ArrayList<PLAction> actionList = PLActionListsMap.get(PLActionListsMapKey);
                if( actionList == null){
                     actionList =     new ArrayList<PLAction>();
                    actionList.add(PLActionEntry.getValue());
                    PLActionListsMap.put(PLActionListsMapKey,actionList);
                }else{
                    actionList.add(PLActionEntry.getValue());
                }
            }
        };
        if(plActionClsId.equals("")){
            plActionClsId = "when key is null ,change the key to this";
        }
        return     PLActionListsMap.get(plActionClsId);
    }
    public void addPLActionParamBean(PLActionParam pLActionParam){
        if(pLActionParam.action!=null && pLActionParam.action!=""){
            if(PLActionParamBeans.get(pLActionParam.action) == null){
                ArrayList<PLActionParam> arraylist = new ArrayList<PLActionParam>();
                PLActionParamBeans.put(pLActionParam.action, arraylist);
            }
            PLActionParamBeans.get(pLActionParam.action).add(pLActionParam);
        }
    }
     public  PLActionParam[] getPLActionParamArrayByActionId(String paramString){
         ArrayList<PLActionParam> pLActionParams = PLActionParamBeans.get(paramString);
         if(pLActionParams != null && pLActionParams.size() > 0 ){
            PLActionParam[] actionParams = new PLActionParam[pLActionParams.size()];
            for (int i = 0; i < pLActionParams.size(); i++) {
                actionParams[i] = pLActionParams.get(i);
            }
             return  actionParams;
         }
        return null;
     }
//        /**
//         * æ·»åŠ PLActionBean并同时添加PLActionBean对应参数进行记录
//         * èƒ½è¿‡æ–¹ä¾¿èŽ·å¾—category时用此方法. å¯ä»¥é™ä½Žç³»ç»Ÿæ¶ˆè€—
//         * @param pLAction
//         */
//    public void addPLActionBean(PLAction plAction, String category) {
//        PLActionBeans.put(plAction.plOId, plAction);
//        PLActionCls[] plActionCls = null;
//
//        try {
//              if(category == null ){
//                  plActionCls = UITools.getService().getPLActionClsArray();
//                    for (PLActionCls plActionCls2 : plActionCls) {//获得分类名称
//                        if(plActionCls2.id.equals(plAction.plActionCls)){
//                            category = plActionCls2.name ;
//                        }
//                    }
//                }
//            PLActionParam[] params = UITools.getService().getPLActionParamArrayByActionId(plAction.plOId);
//            if(params != null && params.length > 0){//如果参数存在
//                for (PLActionParam plActionParam : params) {//添加action参数
//                    this.addPLActionParamBean(plActionParam);
//                }
//            }
//             logBean = new ExportActionLogBean(ExportActionLogBean.RIGHT_STATE,
//                        plAction.plCode,plAction.plName,plAction.plCSClass,plAction.plBSUrl,
//                        plAction.plTypeType,plAction.plDesc,category);
//
//        } catch (PLException e) {
//             logBean = new ExportActionLogBean(e.getMessage(),
//                        plAction.plCode,plAction.plName,plAction.plCSClass,plAction.plBSUrl,
//                        plAction.plTypeType,plAction.plDesc,category);            e.printStackTrace();
//        }
//    }
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/other/IExportLogBean.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package com.vci.web.other;
import java.io.Serializable;
public interface IExportLogBean extends Serializable{
    static final long serialVersionUID = 1L;
     static String RIGHT_STATE = "正常";
    /**
     * è¿”回字符串数组将内容写入到JTable文件中
     * @return
     */
    public abstract Object[] getLogRowObjcets();
    /**
     * è¿”回字符串将内容写入到log文件中
     * @return
     */
    public abstract String getLogRowContent();
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/properties/JsonConfigReader.java
@@ -17,20 +17,75 @@
    /**
     * èœå•json配置文件,如有其他需要读取的,可以仿照当前逻辑编写
     */
    private static MenuVO menuVO;
    private static sysModuleConf sysModuleConf;
    static{
        try {
            File file = ResourceUtils.getFile("classpath:menuConfig.json");
            String json = FileUtils.readFileToString(file, "UTF-8");
            menuVO = JSON.parseObject(json, MenuVO.class);
            sysModuleConf = JSON.parseObject(json, sysModuleConf.class);
        }catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static MenuVO getMenuVO() {
        return menuVO;
    public static sysModuleConf getSysModuleConf() {
        return sysModuleConf;
    }
    public static class sysModuleConf {
        /**
         * ç³»ç»Ÿæ¨¡å—配置
         */
        private MenuVO sysModuleNode;
        /**
         * ç®¡ç†åŠŸèƒ½æ¨¡å—
         */
        private MenuVO systemManagmentNode;
        /**
         * ä¸šåŠ¡åŠŸèƒ½æ¨¡å—
         */
        private MenuVO modelManagmentNode;
        /**
         * æ“ä½œç±»åž‹æ¨¡å—
         */
        private MenuVO operateNode;
        public void setSysModuleNode(MenuVO sysModuleNode) {
            this.sysModuleNode = sysModuleNode;
        }
        public void setSystemManagmentNode(MenuVO systemManagmentNode) {
            this.systemManagmentNode = systemManagmentNode;
        }
        public void setModelManagmentNode(MenuVO modelManagmentNode) {
            this.modelManagmentNode = modelManagmentNode;
        }
        public MenuVO getSysModuleNode() {
            return sysModuleNode;
        }
        public MenuVO getSystemManagmentNode() {
            return systemManagmentNode;
        }
        public MenuVO getModelManagmentNode() {
            return modelManagmentNode;
        }
        public void setOperateNode(MenuVO operateNode) {
            this.operateNode = operateNode;
        }
        public MenuVO getOperateNode() {
            return operateNode;
        }
    }
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsActionServiceI.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,68 @@
package com.vci.web.service;
import com.vci.corba.common.PLException;
import com.vci.dto.PLActionClsDTO;
import com.vci.dto.PLActionDTO;
import com.vci.dto.PLActionQueryDTO;
import com.vci.starter.web.pagemodel.BaseResult;
import org.springframework.web.bind.annotation.RequestBody;
import javax.servlet.http.HttpServletResponse;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.List;
/**
 * Action管理的服务
 * @author yuxc
 * @date 2024-8-16
 */
public interface OsActionServiceI {
    /**
     * ä¿å­˜Action分类信息
     * @param pLActionCls Action分类信息
     * @return ä¿å­˜ç»“æžœ
     */
    BaseResult saveActionCls(PLActionClsDTO pLActionCls) throws PLException;
    /**
     * ä¿®æ”¹Action分类信息
     * @param pLActionCls Action分类信息
     * @return ä¿®æ”¹ç»“æžœ
     */
    BaseResult updateActionCls(PLActionClsDTO pLActionCls) throws PLException;
    /**
     * èŽ·å–Action分类树
     * isExp æ˜¯å¦ç”¨æˆ·å¯¼å‡º true是,false否
     * @return æŸ¥è¯¢ç»“æžœ
     */
    BaseResult getActionTree(boolean isExp) throws PLException;
    /**
     * èŽ·å–Action表格数据
     * dto æŸ¥è¯¢æ¡ä»¶
     * @return æŸ¥è¯¢ç»“æžœ
     */
    BaseResult getActionTableData(PLActionQueryDTO dto) throws PLException;
    /**
     * ä¿å­˜Action数据
     * dto action传输对象
     * @return ä¿å­˜ç»“æžœ
     */
    BaseResult saveAction(PLActionDTO dto) throws PLException;
    /**
     * ä¿®æ”¹Action数据
     * dto action传输对象
     * @return ä¿®æ”¹ç»“æžœ
     */
    BaseResult updateAction(PLActionDTO dto) throws PLException;
    /**
     * åˆ é™¤Action数据
     * dto action传输对象
     * @return åˆ é™¤ç»“æžœ
     */
    BaseResult deleteAction(PLActionDTO dto) throws PLException;
    /**
     * å¯¼å‡ºAction
     * @return
     */
    void exportBeans(List<String> actionOid, HttpServletResponse response) throws PLException, IOException;
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsBaseServiceI.java
@@ -123,7 +123,9 @@
            pageHelper = new PageHelper(-1);
        }
        //有需要转换的属性
        pageHelper.addDefaultAsc("name");
        if(StringUtils.isBlank(pageHelper.getSort()) && StringUtils.isBlank(pageHelper.getOrder())) {//如果没有设置排序字段,则默认一个
            pageHelper.addDefaultAsc("name");
        }
        VciQueryWrapperForDO queryWrapperForDO = new VciQueryWrapperForDO(baseQueryObject.getConditionMap(), tClass,pageHelper);
        queryWrapperForDO.setConditionMap(queryWrapperForDO.switchConditionMap());
        queryWrapperForDO.wrapperSql();
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsBtmServiceI.java
@@ -275,7 +275,7 @@
    /**
     * å¯¼å‡ºä¸šåŠ¡ç±»åž‹
     * name ä¸šåŠ¡ç±»åž‹åç§°
     * oid ä¸šåŠ¡ç±»åž‹åç§°
     * @return åˆ›å»ºç»“æžœ
     */
    void expData(String oid, HttpServletResponse response) throws PLException, IOException;
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsPortalVIServiceI.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,79 @@
package com.vci.web.service;
import com.vci.corba.portal.data.PortalVI;
import com.vci.dto.PortalVIDTO;
import com.vci.pagemodel.PortalVIVO;
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 java.util.Collection;
import java.util.List;
import java.util.Map;
/**
 * è¡¨å•/表格服务
 * @author weidy
 * @date 2021-2-14
 */
public interface OsPortalVIServiceI extends OsBaseServiceI{
    /**
     * è¡¨å•/表格的列表
     * @param baseQueryObject æŸ¥è¯¢å¯¹è±¡
     * @return é“¾æŽ¥ç±»åž‹çš„æ˜¾ç¤ºå¯¹è±¡
     */
    DataGrid<PortalVIVO> gridPortalVIVOs(BaseQueryObject baseQueryObject);
    /***
     * æ·»åŠ è¡¨å•/表格
     * @param portalVIDTO
     * @return
     * @throws VciBaseException
     */
    BaseResult add(PortalVIDTO portalVIDTO) throws VciBaseException;
    /***
     * æ›´æ”¹è¡¨å•/表格
     * @param portalVIDTO
     * @return
     * @throws VciBaseException
     */
    BaseResult edit(PortalVIDTO portalVIDTO) throws VciBaseException;
    /**
     *查询所有表单或者表格
     * @return key æ˜¯ç”Ÿå‘½å‘¨æœŸçš„编号的英文小写
     * @throws VciBaseException æŸ¥è¯¢çš„æ—¶å€™å‡ºé”™ä¼šæŠ›å‡ºå¼‚常
     */
    Map<String, PortalVIVO> selectAllPortalVIMap() throws VciBaseException;
    /**
     * è¡¨å•的数据对象转换为显示对象
     * @param portalVIS æžšä¸¾çš„对象
     * @return æ˜¾ç¤ºå¯¹è±¡
     */
    List<PortalVIVO> portalVIDOO2VOS(Collection<PortalVI> portalVIS);
    /**
     * è¡¨å•的数据对象转换为显示对象
     * @param portalVI æ•°æ®å¯¹è±¡
     * @return æ˜¾ç¤ºå¯¹è±¡
     */
    PortalVIVO portalVIDOO2VO(PortalVI portalVI);
    /***
     * DTO转成PortalVI
     * @param portalVIDTOS
     * @return
     */
    public List<PortalVI> portalVIDTOO2VIS(Collection<PortalVIDTO> portalVIDTOS);
    /***
     * DTO转成PortalVI
     * @param portalVIDTO
     * @return
     */
    public   PortalVI portalVIDTOO2VI(PortalVIDTO portalVIDTO);
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsActionServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,405 @@
package com.vci.web.service.impl;
import cn.hutool.core.io.FileUtil;
import com.vci.corba.common.PLException;
import com.vci.corba.omd.ltm.LinkType;
import com.vci.corba.omd.qtm.QTInfo;
import com.vci.corba.portal.data.Constraint;
import com.vci.corba.portal.data.PLAction;
import com.vci.corba.portal.data.PLActionCls;
import com.vci.corba.portal.data.PLActionParam;
import com.vci.dto.PLActionClsDTO;
import com.vci.dto.PLActionDTO;
import com.vci.dto.PLActionQueryDTO;
import com.vci.starter.web.pagemodel.BaseResult;
import com.vci.starter.web.util.ControllerUtil;
import com.vci.starter.web.util.LocalFileUtil;
import com.vci.web.other.ExportActionLogBean;
import com.vci.web.other.ExportBeans;
import com.vci.web.other.LinkQTExportData;
import com.vci.web.service.*;
import com.vci.web.util.*;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestBody;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.*;
import java.util.stream.Collectors;
/**
 * Action管理的服务实现类
 * @author yuxc
 * @date 2024-8-16
 */
@Service
public class OsActionServiceImpl implements OsActionServiceI {
    @Autowired
    private PlatformClientUtil platformClientUtil;
    /**
     * ä¿å­˜Action分类信息
     * @param pLActionCls Action分类信息
     * @return ä¿å­˜ç»“æžœ
     */
    @Override
    public BaseResult saveActionCls(PLActionClsDTO pLActionCls) throws PLException {
        if (pLActionCls.getName() == null || pLActionCls.getName().trim().equals("")) {
            throw new PLException("500", new String[]{"分类名称不能为空!"});
        }
        if (pLActionCls.getName().equals("未分类")) {
            throw new PLException("500", new String[]{"未分类节点已经存在!"});
        }
        PLActionCls pac = new PLActionCls();
        pac.id = WebUtil.getSnowflakePk();
        pac.name = pLActionCls.getName();
        pac.pid = pLActionCls.getPid();
        pac.description = pLActionCls.getDescription() == null ? "" : pLActionCls.getDescription();
        pac.creator = WebUtil.getCurrentUserId();
        pac.createTime = System.currentTimeMillis();
        pac.serialno = pLActionCls.getSerialno();
        // ä¿å­˜åˆ†ç±»ä¿¡æ¯
        String message = platformClientUtil.getUIService().creaetePLActionCls(pac);
        if (message.startsWith("0")) {
            if (message.equals("01")) {
                message = "分类" + pac.name + "已经存在!";
            } else if (message.equals("02")) {
                message = "同一分类下序号不能重复!";
            } else {
                message = "保存分类时发生异常!" + message.substring(1);
            }
            throw new PLException("500", new String[]{message});
        }
        return BaseResult.success("分类创建成功!");
    }
    /**
     * ä¿®æ”¹Action分类信息
     * @param pLActionCls Action分类信息
     * @return ä¿å­˜ç»“æžœ
     */
    @Override
    public BaseResult updateActionCls(PLActionClsDTO pLActionCls) throws PLException {
        if (pLActionCls.getName() == null || pLActionCls.getName().trim().equals("")) {
            throw new PLException("500", new String[]{"分类名称不能为空!"});
        }
        if (pLActionCls.getName().equals("未分类")) {
            throw new PLException("500", new String[]{"未分类节点已经存在!"});
        }
        if (pLActionCls.getId() == null || pLActionCls.getId().trim().equals("")) {
            throw new PLException("500", new String[]{"主键不能为空!"});
        }
        PLActionCls pac = new PLActionCls();
        pac.name = pLActionCls.getName();
        pac.pid = pLActionCls.getPid();
        pac.description = pLActionCls.getDescription() == null ? "" : pLActionCls.getDescription();
        pac.creator = WebUtil.getCurrentUserId();
        pac.createTime = System.currentTimeMillis();
        pac.serialno = pLActionCls.getSerialno();
        // ä¿®æ”¹åˆ†ç±»ä¿¡æ¯
        String message = platformClientUtil.getUIService().editPLActionCls(pac);
        if (message.startsWith("0")) {
            if (message.equals("01")) {
                message = "分类" + pac.name + "已经存在!";
            } else if (message.equals("02")) {
                message = "同一分类下序号不能重复!";
            } else {
                message = "修改分类时发生异常!" + message.substring(1);
            }
            throw new PLException("500", new String[]{message});
        }
        return BaseResult.success("分类修改成功!");
    }
    /**
     * èŽ·å–Action分类树
     * isExp æ˜¯å¦ç”¨æˆ·å¯¼å‡º true是,false否
     * @return æŸ¥è¯¢ç»“æžœ
     */
    @Override
    public BaseResult getActionTree(boolean isExp) throws PLException {
        PLActionCls[] clses = platformClientUtil.getUIService().getPLActionClsArray();
        PLActionClsDTO treDto = new PLActionClsDTO();
        treDto.setName("Action分类");
        Map<String, List<PLActionCls>> allDataMap = Arrays.stream(clses).collect(Collectors.groupingBy(pl -> pl.pid));
        for (PLActionCls cls : clses) {
            if (StringUtils.isBlank(cls.pid)) {
                PLActionClsDTO parentDto = new PLActionClsDTO();
                parentDto.setId(cls.id);
                parentDto.setName(cls.name);
                parentDto.setPid(cls.pid);
                parentDto.setDescription(cls.description);
                parentDto.setCreator(cls.creator);
                parentDto.setCreateTime(cls.createTime);
                parentDto.setSerialno(cls.serialno);
                //这里处理导出树的逻辑
                if(isExp){
                    Constraint[] consArray = new Constraint[1];
                    consArray[0] =  new Constraint("plactioncls", cls.id);
                    PLAction[] plActionsByConsArray = platformClientUtil.getUIService().getPLActionsByConsArray(consArray);
                    if(parentDto.getChilds().isEmpty() && plActionsByConsArray.length == 0){
                        continue;
                    }
                    for (PLAction plAction : plActionsByConsArray) {
                        PLActionDTO plActionDTO = new PLActionDTO();
                        plActionDTO.setPlName(plAction.plCode + "/" + plAction.plName);
                        plActionDTO.setPlCode(plAction.plCode);
                        plActionDTO.setPlOId(plAction.plOId);
                        parentDto.getActionChilds().add(plActionDTO);
                    }
                }
                addClsTreeNode(parentDto, allDataMap, isExp);
                treDto.getChilds().add(parentDto);
            }
        }
        PLActionClsDTO plac = new PLActionClsDTO();
        plac.setName("未分类");
        if(isExp){
            Constraint[] consArray = new Constraint[1];
            consArray[0] =  new Constraint("plactioncls", "");
            PLAction[] plActionsByConsArray = platformClientUtil.getUIService().getPLActionsByConsArray(consArray);
            for (PLAction plAction : plActionsByConsArray) {
                PLActionDTO plActionDTO = new PLActionDTO();
                plActionDTO.setPlName(plAction.plCode + "/" + plAction.plName);
                plActionDTO.setPlCode(plAction.plCode);
                plActionDTO.setPlOId(plAction.plOId);
                plac.getActionChilds().add(plActionDTO);
            }
        }
        treDto.getChilds().add(plac);
        return BaseResult.success(treDto);
    }
    /**
     * èŽ·å–Action表格数据
     * dto æŸ¥è¯¢æ¡ä»¶
     * @return æŸ¥è¯¢ç»“æžœ
     */
    @Override
    public BaseResult getActionTableData(PLActionQueryDTO dto) throws PLException {
        Constraint[] consArray ;
        if(StringUtils.isNotBlank(dto.getPlactioncls())){
            consArray = new Constraint[7];
            consArray[6] = new Constraint("plactioncls", dto.getPlactioncls());
        }else {
            consArray = new Constraint[6];
        }
        consArray[0] = new Constraint("plcode", dto.getPlcode());
        consArray[1] = new Constraint("plname", dto.getPlname());
        consArray[2] = new Constraint("plbsurl", dto.getPlbsurl());
        consArray[3] = new Constraint("plcsclass", dto.getPlcsclass());
        consArray[4] = new Constraint("pltypetype", dto.getPltypetype());
        consArray[5] = new Constraint("pldesc", dto.getPldesc());
        PLAction[] plActionsByConsArray = platformClientUtil.getUIService().getPLActionsByConsArray(consArray);
        Arrays.sort(plActionsByConsArray, new Comparator<PLAction>() {
            @Override
            public int compare(PLAction o1, PLAction o2) {
                String py1 = PinyinCommon.getPingYin(o1.plCode);
                String py2 = PinyinCommon.getPingYin(o2.plCode);
                return py1.compareTo(py2);
            }
        });
        return BaseResult.dataList(Arrays.asList(plActionsByConsArray));
    }
    /**
     * ä¿å­˜Action数据
     * dto action传输对象
     * @return ä¿å­˜ç»“æžœ
     */
    @Override
    public BaseResult saveAction(PLActionDTO dto) throws PLException {
        if(StringUtils.isBlank(dto.getPlCode())){
            throw new PLException("500", new String[]{"请输入编号"});
        }
        PLAction[] actionsInDB= platformClientUtil.getUIService().getAllPLAction();
        for(int i =0;i<actionsInDB.length;i++){
            if (dto.getPlCode().equals(actionsInDB[i].plCode)) {
                throw new PLException("500", new String[]{"新建Action编号重复,请重新输入编号"});
            }
        }
        PLAction plAction = new PLAction();
        plAction.plOId = WebUtil.getSnowflakePk();
        plAction.plCode = StringUtils.defaultString(dto.getPlCode());
        plAction.plName = StringUtils.defaultString(dto.getPlName());
        plAction.plCSClass = StringUtils.defaultString(dto.getPlCSClass());
        plAction.plBSUrl = StringUtils.defaultString(dto.getPlBSUrl());
        plAction.plDesc = StringUtils.defaultString(dto.getPlDesc());
        plAction.plCreateUser = WebUtil.getCurrentUserId();
        plAction.plModifyUser = WebUtil.getCurrentUserId();
        plAction.plActionCls = StringUtils.defaultString(dto.getPlActionCls());
        plAction.plTypeType = StringUtils.defaultString(dto.getPlTypeType());
        boolean b = platformClientUtil.getUIService().savePLAction(plAction);
        if(!b){
            throw new PLException("500", new String[]{"保存失败!!"});
        }
        return BaseResult.success("操作成功!");
    }
    /**
     * ä¿®æ”¹Action数据
     * dto action传输对象
     * @return ä¿®æ”¹ç»“æžœ
     */
    @Override
    public BaseResult updateAction(PLActionDTO dto) throws PLException {
        if(StringUtils.isBlank(dto.getPlCode())){
            throw new PLException("500", new String[]{"编号不能为空"});
        }
        PLAction[] actionsInDB= platformClientUtil.getUIService().getAllPLAction();
        for(int i =0;i<actionsInDB.length;i++){
            if (dto.getPlCode().equals(actionsInDB[i].plCode) && !dto.getPlOId().equals(actionsInDB[i].plOId)) {
                throw new PLException("500", new String[]{"修改Action编号重复,请确认编号"});
            }
        }
        PLAction plAction = new PLAction();
        plAction.plOId = StringUtils.defaultString(dto.getPlOId());
        plAction.plCode = StringUtils.defaultString(dto.getPlCode());
        plAction.plName = StringUtils.defaultString(dto.getPlName());
        plAction.plCSClass = StringUtils.defaultString(dto.getPlCSClass());
        plAction.plBSUrl = StringUtils.defaultString(dto.getPlBSUrl());
        plAction.plDesc = StringUtils.defaultString(dto.getPlDesc());
        plAction.plCreateUser = dto.getPlCreateUser();
        plAction.plModifyUser = WebUtil.getCurrentUserId();
        plAction.plActionCls = StringUtils.defaultString(dto.getPlActionCls());
        plAction.plTypeType = StringUtils.defaultString(dto.getPlTypeType());
        boolean b = platformClientUtil.getUIService().updatePLAction(plAction);
        if(!b){
            throw new PLException("500", new String[]{"修改失败!!"});
        }
        return BaseResult.success("修改成功!");
    }
    /**
     * åˆ é™¤Action数据
     * dto action传输对象
     * @return åˆ é™¤ç»“æžœ
     */
    @Override
    public BaseResult deleteAction(PLActionDTO dto) throws PLException {
        PLAction plAction = new PLAction();
        plAction.plOId = StringUtils.defaultString(dto.getPlOId());
        plAction.plCode = StringUtils.defaultString(dto.getPlCode());
        plAction.plName = StringUtils.defaultString(dto.getPlName());
        plAction.plCSClass = StringUtils.defaultString(dto.getPlCSClass());
        plAction.plBSUrl = StringUtils.defaultString(dto.getPlBSUrl());
        plAction.plDesc = StringUtils.defaultString(dto.getPlDesc());
        plAction.plCreateUser = dto.getPlCreateUser();
        plAction.plModifyUser = WebUtil.getCurrentUserId();
        plAction.plActionCls = StringUtils.defaultString(dto.getPlActionCls());
        plAction.plTypeType = StringUtils.defaultString(dto.getPlTypeType());
        boolean b = platformClientUtil.getUIService().deletePLAction(plAction);
        if(!b){
            throw new PLException("500", new String[]{"删除失败!!"});
        }
        return BaseResult.success("删除成功!");
    }
    /**
     * å¯¼å‡ºAction
     * @return
     */
    @Override
    public void exportBeans(List<String> actionOid, HttpServletResponse response) throws PLException, IOException {
        String defaultTempFolder = LocalFileUtil.getDefaultTempFolder();
        String vciqtmfFileName = defaultTempFolder + File.separator + "actionTemplateExp" + new Date().getTime() + ".vciamf";
        HashMap exportBeans = new HashMap<String, Object>();
        getExportBeans(actionOid, exportBeans);// èŽ·å¾—å¯¼å‡ºBean同时,记录log
        ObjectOutputStream vciamfFileStream = null;
        try {
            File vciqtmfFile = new File(vciqtmfFileName);
            vciamfFileStream = new ObjectOutputStream(new FileOutputStream(vciqtmfFile));
            vciamfFileStream.writeObject(exportBeans);
        }finally {
            try {
                if (vciamfFileStream != null) {
                    vciamfFileStream.flush();
                    vciamfFileStream.close();
                }
            } catch (Exception e) {
                throw new PLException("500",new String[]{"导出流关闭异常!"});
            }
        }
        ControllerUtil.writeFileToResponse(response,vciqtmfFileName);
        FileUtil.del(defaultTempFolder + File.separator);
    }
    /**
     * å¤„理导出的对象
     * @param actionOid ç•Œé¢é€‰æ‹©çš„action列表数据
     * @param exportBeansMap å¯¼å‡ºå¯¹è±¡
     * @return
     * @throws PLException
     */
    private void getExportBeans(List<String> actionOid, HashMap exportBeansMap) throws PLException {
        PLActionCls[] plActionClsArray = platformClientUtil.getUIService().getPLActionClsArray();
        Map<String, PLActionCls> clsMap = Arrays.stream(plActionClsArray).collect(Collectors.toMap(e -> e.id, e -> e));
        ExportBeans exportBeans = new ExportBeans();
        for (String oid : actionOid) {
            PLAction plAction = platformClientUtil.getUIService().getPLActionById(oid);
            //有父节点则进行处理
            if(StringUtils.isNotBlank(plAction.plActionCls)){
                allPLActionClsParent(exportBeans, clsMap.get(plAction.plActionCls), clsMap);
            }
            exportBeans.getPLActions().put(plAction.plOId, plAction);
            PLActionParam[] params = platformClientUtil.getUIService().getPLActionParamArrayByActionId(plAction.plOId);
            if(params != null && params.length > 0){//如果参数存在
                for (PLActionParam plActionParam : params) {//添加action参数
                    exportBeans.addPLActionParamBean(plActionParam);
                }
            }
            String category = clsMap.containsKey(plAction.plActionCls) ? clsMap.get(plAction.plActionCls).name : "";
            exportBeans.setLogBean(new ExportActionLogBean(ExportActionLogBean.RIGHT_STATE,
                    plAction.plCode,plAction.plName,plAction.plCSClass,plAction.plBSUrl,
                    plAction.plTypeType,plAction.plDesc,category));
        }
        exportBeansMap.put("exportBeans", exportBeans);
    }
    //增加父类数据
    private void allPLActionClsParent(ExportBeans exportBeans, PLActionCls cls, Map<String, PLActionCls> clsMap) {
        if(cls.pid != ""){
            allPLActionClsParent(exportBeans, clsMap.get(cls.pid), clsMap);
        }
        exportBeans.addPLActionClsBean(cls);
    }
    /**
     * æ·»åŠ å­èŠ‚ç‚¹
     * @param parentDto çˆ¶èŠ‚ç‚¹å¯¹è±¡
     * @param allDataMap æ‰€æœ‰åˆ†ç»„对象
     * @param isExp true为导出功能的树,false为界面分类树
     */
    private void addClsTreeNode(PLActionClsDTO parentDto, Map<String, List<PLActionCls>> allDataMap, Boolean isExp) throws PLException {
        if(allDataMap.containsKey(parentDto.id)){
            for (PLActionCls cls : allDataMap.get(parentDto.id)) {
                PLActionClsDTO childDto = new PLActionClsDTO();
                childDto.setId(cls.id);
                childDto.setName(cls.name);
                childDto.setPid(cls.pid);
                childDto.setDescription(cls.description);
                childDto.setCreator(cls.creator);
                childDto.setCreateTime(cls.createTime);
                childDto.setSerialno(cls.serialno);
                if(isExp){
                    Constraint[] consArray = new Constraint[1];
                    consArray[0] =  new Constraint("plactioncls", cls.id);
                    PLAction[] plActionsByConsArray = platformClientUtil.getUIService().getPLActionsByConsArray(consArray);
                    if(parentDto.getChilds().isEmpty() && plActionsByConsArray.length == 0){
                        continue;
                    }
                    for (PLAction plAction : plActionsByConsArray) {
                        PLActionDTO plActionDTO = new PLActionDTO();
                        plActionDTO.setPlName(plAction.plCode + "/" + plAction.plName);
                        plActionDTO.setPlCode(plAction.plCode);
                        plActionDTO.setPlOId(plAction.plOId);
                        parentDto.getActionChilds().add(plActionDTO);
                    }
                }
                addClsTreeNode(childDto, allDataMap, isExp);
                parentDto.getChilds().add(childDto);
            }
        }
    }
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsBtmServiceImpl.java
@@ -1264,7 +1264,7 @@
    /**
     * å¯¼å‡ºä¸šåŠ¡ç±»åž‹
     * name ä¸šåŠ¡ç±»åž‹åç§°
     * oid ä¸šåŠ¡ç±»åž‹åç§°
     * @return åˆ›å»ºç»“æžœ
     */
    @Override
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,627 @@
package com.vci.web.service.impl;
import com.vci.bo.ItemSeniorQueryBO;
import com.vci.common.utility.ObjectUtility;
import com.vci.corba.common.PLException;
import com.vci.corba.portal.PortalService.GetPagePortalVIArrayByPageInfoResult;
import com.vci.corba.portal.data.PortalVI;
import com.vci.dto.PRMDTO;
import com.vci.dto.PRMItemDTO;
import com.vci.dto.PortalVIDTO;
import com.vci.model.*;
import com.vci.pagemodel.*;
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.VciBaseUtil;
import com.vci.web.enumpck.ItemTypeEnum;
import com.vci.web.enumpck.PortalVIType;
import com.vci.web.enumpck.PortalVITypeFlag;
import com.vci.web.service.OsPortalVIServiceI;
import com.vci.web.util.PlatformClientUtil;
import com.vci.web.util.UITools;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors;
/*
  * é“¾æŽ¥ç±»åž‹æœåŠ¡
 * @author xiej
 * @date 2024-08-14
*/
@Service
public class OsPortalVIServiceImpl implements OsPortalVIServiceI  {
    /**
     * åŠ è½½è‡ªèº«
     */
    @Autowired(required = false)
    @Lazy
    private OsPortalVIServiceI self;
    /**
     * å¹³å°çš„调用工具类
     */
    @Autowired
    private PlatformClientUtil platformClientUtil;
    @Override
    public void clearCache() {
    }
    /**
     * viType :Form("Form", "表单", (short)1), Table("Table", "表格", (short)0);
     * viTypeFlag:    LinkType("LinkType", "链接类型的表单", (short)1), BtmType("BtmType", "业务类型的表单", (short)0);
     * @param baseQueryObject æŸ¥è¯¢å¯¹è±¡
     * @return
     */
    @Override
    public DataGrid<PortalVIVO> gridPortalVIVOs(BaseQueryObject baseQueryObject) {
        Map<String, String> conditionMap=  baseQueryObject.getConditionMap();
        if(conditionMap==null){
            conditionMap=new HashMap<>();
        }
       String typeName=StringUtils.isBlank(conditionMap.get("typeName"))?"":conditionMap.get("typeName");
        if(StringUtils.isBlank(typeName)){
            return new DataGrid<>("没有选择业务类型");
        }
        String viName=StringUtils.isBlank(conditionMap.get("viName"))?"":conditionMap.get("viName");
        String viTypeLabel=StringUtils.isBlank(conditionMap.get("viType"))?"":conditionMap.get("viType");
        PortalVIType  portalVIType= PortalVIType.getByLabel(viTypeLabel);
        Short viType=-1;
        if(portalVIType!=null){
            viType=portalVIType.getIntVal();
        }
        String viTypeFlagLabel=StringUtils.isBlank(conditionMap.get("viTypeFlag"))?"":conditionMap.get("viTypeFlag");
        PortalVITypeFlag portalVITypeFlag= PortalVITypeFlag.getByLabel(viTypeFlagLabel);
        Short viTypeFlag=-1;
        if(portalVITypeFlag!=null){
            viTypeFlag=portalVITypeFlag.getIntVal();
        }
        long pageIndex=baseQueryObject.getPage();
        long pageSize=baseQueryObject.getLimit();
        DataGrid<PortalVIVO> dataGrid = new DataGrid<>();
        try {
            GetPagePortalVIArrayByPageInfoResult pagePortalVIArrayByPageInfoResult= platformClientUtil.getPortalService().getPagePortalVIArrayByPageInfo(typeName,viName,viType,viTypeFlag,pageIndex,pageSize);
            if(pagePortalVIArrayByPageInfoResult.total>0) {
                PortalVI[] portalVIS = pagePortalVIArrayByPageInfoResult.returnValue;
                List<PortalVIVO> portalVIVOS=  portalVIDOO2VOS(Arrays.asList(portalVIS));
                dataGrid.setData(portalVIVOS);
                dataGrid.setTotal(pagePortalVIArrayByPageInfoResult.total);
            }else{
                dataGrid = new DataGrid<>("沒有查询到数据");
            }
        } catch (PLException e) {
            e.printStackTrace();
            dataGrid = new DataGrid<>("沒有表单出现异常:"+e.getMessage());
        }
        return dataGrid;
    }
    /***
     * è¡¨å•/表格添加
     * @param portalVIDTO
     * @return
     * @throws PLException
     */
    @Override
    public BaseResult add(PortalVIDTO portalVIDTO) throws VciBaseException {
        return  savePortalVIDTO(portalVIDTO,false);
    }
    /***
     * è¡¨å•/表格更改
     * @param portalVIDTO
     * @return
     * @throws PLException
     */
    @Override
    public BaseResult edit(PortalVIDTO portalVIDTO) throws VciBaseException {
        return  savePortalVIDTO(portalVIDTO,true);
    }
    private BaseResult savePortalVIDTO(PortalVIDTO portalVIDTO,boolean isEdit)  {
        boolean _isBtm=false;
        boolean flag = false;
        String labelName=PortalVIType.Form.getName();
        try {
            VciBaseUtil.alertNotNull(portalVIDTO.getViName(),"名称不能为空!");
            if(portalVIDTO.getPrm()==null||portalVIDTO.getPrm().getPrmItemList()==null||portalVIDTO.getPrm().getPrmItemList().size()==0){
                throw  new Throwable(labelName+",未设置");
            }
            if(PortalVIType.Table.getIntVal()==portalVIDTO.getViType()){//如果是表格的的校验
                labelName=PortalVIType.Table.getName();
                PRMItemDTO prmItemDTO=  portalVIDTO.getPrm().getPrmItemList().get(0);
                //每页显示校验
                String rtnContent = isCorrectPageNums(prmItemDTO.getItemPageSize());
                if (StringUtils.isNotBlank(rtnContent)) {
                   throw new VciBaseException(rtnContent);
                }
            }else{
            }
            labelName= PortalVIType.getByIntVal(portalVIDTO.getViType()).getLabel();
            if(!_isBtm){
                PortalVI[] portalVIS=  platformClientUtil.getPortalService().getPortalVIArrayByTypeName(portalVIDTO.getTypeName());
                for (int i = 0; i < portalVIS.length; i++) {
                    PortalVI portalVI=  portalVIS[i];
                   String viName= portalVI.viName;
                   if(isEdit){//如果为修改
                       try {
                           PortalVI oldPortalVI= platformClientUtil.getPortalService().getPortalVIById(portalVIDTO.getId());
                           flag=platformClientUtil.getPortalService().judgeUpdateButton(oldPortalVI.typeFlag, oldPortalVI.viName, oldPortalVI.typeName);
                           if (flag && (StringUtils.isNotBlank(portalVIDTO.getViName()))&&(!oldPortalVI.viName.equals(portalVIDTO.getViName()))) {
                               throw  new Throwable("该"+labelName+"已经被引用,不能修改名称!");
                           }
                       } catch (PLException e) {
                           throw  new Throwable("查询");
                       }
                       if (!portalVI.id.equals(portalVIDTO.getId())) {
                           if (portalVI.viName.equals(portalVIDTO.getViName())) {
                               throw  new Throwable("名称已经存在!");
                           }
                       }
                   } else {
                       portalVIDTO.setId(ObjectUtility.getNewObjectID36());
                       if (portalVI.viName.equals(portalVIDTO.getViName())) {
                           throw  new Throwable("名称已经存在!");
                       }
                   }
                }
            }else{
                flag=platformClientUtil.getPortalService().judgeUpdateButton(portalVIDTO.getTypeFlag(), portalVIDTO.getViName(), portalVIDTO.getTypeName());
            }
            flag=  saveForm(portalVIDTO,isEdit);
            if(flag){
                return  BaseResult.success("保存"+labelName+"成功!");
            }else{
                new Throwable("保存"+labelName+"失败!");
            }
        } catch (Throwable e) {
           // throw new VciBaseException("保存表单出现异常:"+e.getMessage());
          return    BaseResult.fail("保存"+labelName+"出现异常:"+e.getMessage());
        }
        return  BaseResult.success("保存"+labelName+"成功!");
    }
    /**
     * è¡¨å•/表格
     * @param portalVIDTO
     * @param isEdit
     * @return
     */
    private boolean saveForm(PortalVIDTO portalVIDTO,boolean isEdit) {
        List<PRMItemDO> prmItemList = new ArrayList<PRMItemDO>();
        try {
            PortalVI pvi=portalVIDTOO2VI(portalVIDTO);
            boolean res=false;
            if (!isEdit) {
                res= platformClientUtil.getPortalService().savePortalVI(pvi);
            } else {
                res= platformClientUtil.getPortalService().updatePortalVI(pvi);
            }
            return res;
        } catch (Throwable e) {
             e.printStackTrace();
                return false;
        }
    }
    @Override
    public Map<String, PortalVIVO> selectAllPortalVIMap() throws VciBaseException {
        return null;
    }
    /**
     * åˆ¤æ–­æ¯é¡µè¡Œæ•°å®šä¹‰æ˜¯å¦æ­£ç¡®
     * @Title        :isCorrectPageNums
     * @Description    :
     * @param pageText
     * @return
     */
    protected String isCorrectPageNums(String pageText) {
        if (pageText == null || pageText.trim().equals("")) {
            return "";
        }
        //edit by guo当每页行数中不止一个选项时,需要填写默认的显示条数,且默认的应该存在于选项中。
        if(pageText.indexOf(",")!=-1){
            try {
                String[] pages = pageText.split(",");
                int index = pageText.indexOf("#");
                String subpageText1 = pageText.substring(0, index);
                String subpageText2 = pageText.substring(index+1);
                if(subpageText1.contains(subpageText2)){
                    for (String page : pages) {
                        //if(!page.equalsIgnoreCase("all")){
                        if(page.contains("#")){
                            index = page.indexOf("#");
                            page = page.substring(0, index);
                        }
                        Integer.parseInt(page);
                        //}
                    }
                } else {
                    return "输入页数不符合规范,请参照文本框提示再重新填写!";
                }
            }
            catch (Exception e) {
                return "输入页数不符合规范,请参照文本框提示再重新填写!";
            }
        }else {
            try {
                Integer.parseInt(pageText);
            } catch (Exception e) {
                return "输入页数不符合规范,请参照文本框提示重新填写!";
            }
        }
        return "";
    }
    /**
     * æžšä¸¾çš„æ•°æ®å¯¹è±¡è½¬æ¢ä¸ºæ˜¾ç¤ºå¯¹è±¡
     *
     * @param portalVIS æžšä¸¾çš„对象
     * @return æ˜¾ç¤ºå¯¹è±¡
     */
    @Override
    public List<PortalVIVO> portalVIDOO2VOS(Collection<PortalVI> portalVIS) {
        List<PortalVIVO> portalVIVOS = new ArrayList<>();
        Optional.ofNullable(portalVIS).orElseGet(()->new ArrayList<>()).stream().forEach(portalVI -> {
            PortalVIVO portalVIVO = portalVIDOO2VO(portalVI);
            portalVIVOS.add(portalVIVO);
        });
        return portalVIVOS;
    }
    /**
     * è¡¨å•的数据对象转换为显示对象
     * @param portalVIDTOS è¡¨å•的对象
     * @return æ˜¾ç¤ºå¯¹è±¡
     */
    @Override
    public List<PortalVI> portalVIDTOO2VIS(Collection<PortalVIDTO> portalVIDTOS) {
        List<PortalVI> portalVIS = new ArrayList<>();
        Optional.ofNullable(portalVIDTOS).orElseGet(()->new ArrayList<>()).stream().forEach(portalVIDTO -> {
            PortalVI portalVI = portalVIDTOO2VI(portalVIDTO);
            portalVIS.add(portalVI);
        });
        return portalVIS;
    }
    /**
     * è¡¨å•的数据对象转换为显示对象
     * @param portalVIDTO
     * @return
     */
    @Override
    public  PortalVI portalVIDTOO2VI(PortalVIDTO portalVIDTO) {
        PortalVI portalVI=new PortalVI();
        portalVI.id=portalVIDTO.getId();
        portalVI.typeFlag= portalVIDTO.getTypeFlag();
        portalVI.typeName=portalVIDTO.getTypeName();
        portalVI.viName=portalVIDTO.getViName();
        portalVI.viType=portalVIDTO.getViType();
        short viType =portalVIDTO.getViType();
        PRMDO prmdo = prmDOO2VIS(portalVIDTO.getPrm(),viType);
        try {
            portalVI.prm=UITools.getPRMText(prmdo);
        } catch (Throwable e) {
            e.printStackTrace();
        }
        return portalVI;
    }
    /**
     * è¡¨å•数据对象转换
     * @param prmdto
     * @param viType
     * @return
     */
    private PRMDO prmDOO2VIS(PRMDTO prmdto, short viType) {
        PRMDO prmdo=new PRMDO();
        prmdo.setShowCols(prmdto.getShowCols());
        prmdo.setFormQtName(prmdto.getFormQtName());
        prmdo.setPrmItemList(pRMItemDTOO2DOS(prmdto.getPrmItemList(),viType));
        return  prmdo;
    }
    @Override
    public  PortalVIVO portalVIDOO2VO(PortalVI portalVI) {
        PortalVIVO portalVIVO=new PortalVIVO();
        portalVIVO.setId(portalVI.id);
        portalVIVO.setTypeFlag(portalVI.typeFlag);
        portalVIVO.setTypeName(portalVI.typeName);
        portalVIVO.setViName(portalVI.viName);
        portalVIVO.setViType(portalVI.viType);
        String  prm= portalVI.prm;
        PRMDO prmdo= UITools.getPRM(prm);
        portalVIVO.setPrm(prmDOO2VOS(prmdo,portalVI.viType));
        return portalVIVO;
    }
    private PRMVO prmDOO2VOS(PRMDO prmdo,short viType){
        PRMVO prmvo=new PRMVO();
        prmvo.setFormQtName(prmdo.getFormQtName());
        prmvo.setShowCols(prmdo.getShowCols());
        List<PRMItemDO> prmItemDOS= prmdo.getPrmItemList();
        prmvo.setPrmItemList(pRMItemDOO2VOS(prmItemDOS,viType));
        return prmvo;
    }
    public List<PRMItemVO> pRMItemDOO2VOS(Collection<PRMItemDO> prmItemDOS,short viType) {
        List<PRMItemVO> portalVIVOS = new ArrayList<>();
        Optional.ofNullable(prmItemDOS).orElseGet(()->new ArrayList<>()).stream().forEach(prmItemDO -> {
            PRMItemVO prmItemVO = pRMItemDOO2VO(prmItemDO,viType);
            portalVIVOS.add(prmItemVO);
        });
        return portalVIVOS;
    }
    public List<PRMItemDO> pRMItemDTOO2DOS(Collection<PRMItemDTO> prmItemDTOS,short viType) {
        List<PRMItemDO> portalVIVOS = new ArrayList<>();
        Optional.ofNullable(prmItemDTOS).orElseGet(()->new ArrayList<>()).stream().forEach(PRMItemDTO -> {
            PRMItemDO PRMItemDO = pRMItemDTOO2DO(PRMItemDTO,viType);
            portalVIVOS.add(PRMItemDO);
        });
        return portalVIVOS;
    }
    /**
     * æ•°æ®å¯¹è±¡è½¬æ¢
     * @param prmItemDTO æ•°æ®å¯¹è±¡
     * @param viType è¡¨å•类型
     * @return
     */
    private PRMItemDO pRMItemDTOO2DO(PRMItemDTO prmItemDTO,short viType) {
        PRMItemDO prmItemDO=new PRMItemDO();
        prmItemDO.setItemBat(prmItemDTO.getItemBat());
        prmItemDO.setItemCols(prmItemDTO.getItemCols());
        prmItemDO.setItemEQ(prmItemDTO.getItemEQ());
        prmItemDO.setItemDbl(prmItemDTO.getItemDbl());
        prmItemDO.setItemCut(prmItemDTO.getItemCut());
        prmItemDO.setItemOR(prmItemDTO.getItemOR());
        prmItemDO.setItemAddFilter(prmItemDTO.getItemAddFilter());
        prmItemDO.setItemField(prmItemDTO.getItemField());
        prmItemDO.setItemImgWH(prmItemDTO.getItemImgWH());
        prmItemDO.setItemCtrlDisplyCol(prmItemDTO.getItemCtrlDisplyCol());//控制显示列
        prmItemDO.setItemDateFormat(prmItemDTO.getItemDateFormat());// æ•°æ®ä¸ºæ—¥æœŸç±»åž‹æ—¶çš„æ ¼å¼åŒ–字符串 å¦‚ yyyy-MM-dd HH:mm:ss
        prmItemDO.setItemInObj(prmItemDTO.getItemInObj());
        prmItemDO.setItemName(prmItemDTO.getItemName());
        prmItemDO.setItemCustomClass(prmItemDTO.getItemCustomClass());//自定义类路径
        prmItemDO.setItemIsHidden(prmItemDTO.getItemIsHidden());
        prmItemDO.setItemIsEditable(prmItemDTO.getItemIsEditable());
        prmItemDO.setItemIsRequired(prmItemDTO.getItemIsRequired());
        prmItemDO.setItemFieldWidth(prmItemDTO.getItemFieldWidth());
        prmItemDO.setItemTxf(prmItemDTO.getItemTxf());
        prmItemDO.setItemRows(prmItemDTO.getItemRows());
        prmItemDO.setItemHrefConf(prmItemDO.getItemHrefConf());//超链接配置
        prmItemDO.setItemTips(prmItemDTO.getItemTips());
        prmItemDO.setItemTrim(prmItemDTO.getItemTrim());
        prmItemDO.setItemDateFormat(prmItemDTO.getItemDateFormat());
        prmItemDO.setItemCtrlDisplyCondition(prmItemDTO.getItemCtrlDisplyCondition());////控制显示条件
        prmItemDO.setItemEditableProgram(prmItemDTO.getItemEditableProgram());
        prmItemDO.setItemEditCondition(prmItemDTO.getItemEditCondition());
        prmItemDO.setItemHrefFields(prmItemDTO.getItemHrefFields());//超链接字段
        prmItemDO.setItemValueList(prmItemDTO.getItemValueList());
        prmItemDO.setItemValue(prmItemDTO.getItemValue());
        prmItemDO.setItemStyle(prmItemDTO.getItemStyle());
        prmItemDO.setItemShowExpression(prmItemDTO.getItemShowExpression());// æ˜¾ç¤ºè¡¨è¾¾å¼ ${aa}-${bb}
        prmItemDO.setItemSeniorQueryColsCounts(prmItemDTO.getItemSeniorQueryColsCounts());//高级查询各列使用次数
        prmItemDO.setItemType(prmItemDTO.getItemType());
        prmItemDO.setItemScript(prmItemDTO.getItemScript());
        prmItemDO.setItemRight(prmItemDTO.getItemRight());
        prmItemDO.setItemQuerySql(prmItemDTO.getItemQuerySql());
        prmItemDO.setItemQueryRefFields(prmItemDTO.getItemQueryRefFields());//查询关联列
        prmItemDO.setItemQtName(prmItemDTO.getItemQtName());//末班名称
        prmItemDO.setItemParentFolderName(prmItemDTO.getItemParentFolderName());//父文件夹名称
        prmItemDO.setItemPageSize(prmItemDTO.getItemPageSize());
        prmItemDO.setItemOutType(prmItemDTO.getItemOutType());
        prmItemDO.setItemOutFields(prmItemDTO.getItemOutFields());
        prmItemDO.setItemListVal(prmItemDTO.getItemListVal());
        prmItemDO.setItemListTxt(prmItemDTO.getItemListTxt());
        prmItemDO.setItemListTable(prmItemDTO.getItemListTable());
        prmItemDO.setItemKeyFields(prmItemDTO.getItemKeyFields());
        prmItemDO.setItemIsShowFolder(prmItemDTO.getItemIsShowFolder());//是否显示文件夹
        prmItemDO.setItemIsNavigatorExpand(prmItemDTO.getItemIsNavigatorExpand());////查询区域显示控制
        prmItemDO.setItemIsHttpSave(prmItemDTO.getItemIsHttpSave());
        prmItemDO.setItemHttpVolumnPath(prmItemDTO.getItemHttpVolumnPath());
        prmItemDO.setItemHttpPathField(prmItemDTO.getItemHttpPathField());
        if(viType==PortalVIType.Table.getIntVal()) {//如果是表格
            initTableConfigDTOO2DOData(prmItemDO,prmItemDTO);
        }
        return prmItemDO;
    }
    /**
     * PRMItemDO è½¬ PRMItemVO
     * @param prmItemDO
     * @param viType
     * @return
     */
    private PRMItemVO pRMItemDOO2VO(PRMItemDO prmItemDO,short viType) {
        PRMItemVO prmItemVO=new PRMItemVO();
        prmItemVO.setItemBat(prmItemDO.getItemBat());
        prmItemVO.setItemCols(prmItemDO.getItemCols());
        prmItemVO.setItemEQ(prmItemDO.getItemEQ());
        prmItemVO.setItemDbl(prmItemDO.getItemDbl());
        prmItemVO.setItemCut(prmItemDO.getItemCut());
        prmItemVO.setItemOR(prmItemDO.getItemOR());
        prmItemVO.setItemAddFilter(prmItemDO.getItemAddFilter());
        prmItemVO.setItemField(prmItemDO.getItemField());
        prmItemVO.setItemImgWH(prmItemDO.getItemImgWH());
        prmItemVO.setItemCtrlDisplyCol(prmItemDO.getItemCtrlDisplyCol());//控制显示列
        prmItemVO.setItemDateFormat(prmItemDO.getItemDateFormat());// æ•°æ®ä¸ºæ—¥æœŸç±»åž‹æ—¶çš„æ ¼å¼åŒ–字符串 å¦‚ yyyy-MM-dd HH:mm:ss
        prmItemVO.setItemInObj(prmItemDO.getItemInObj());
        prmItemVO.setItemName(prmItemDO.getItemName());
        prmItemVO.setItemCustomClass(prmItemDO.getItemCustomClass());//自定义类路径
        prmItemVO.setItemIsHidden(prmItemDO.getItemIsHidden());
        prmItemVO.setItemIsEditable(prmItemDO.getItemIsEditable());
        prmItemVO.setItemIsRequired(prmItemDO.getItemIsRequired());
        prmItemVO.setItemFieldWidth(prmItemDO.getItemFieldWidth());
        prmItemVO.setItemTxf(prmItemDO.getItemTxf());
        prmItemVO.setItemRows(prmItemDO.getItemRows());
        prmItemVO.setItemHrefConf(prmItemDO.getItemHrefConf());//超链接配置
        prmItemVO.setItemTips(prmItemDO.getItemTips());
        prmItemVO.setItemTrim(prmItemDO.getItemTrim());
        prmItemVO.setItemDateFormat(prmItemDO.getItemDateFormat());
        prmItemVO.setItemCtrlDisplyCondition(prmItemDO.getItemCtrlDisplyCondition());////控制显示条件
        prmItemVO.setItemEditableProgram(prmItemDO.getItemEditableProgram());
        prmItemVO.setItemEditCondition(prmItemDO.getItemEditCondition());
        prmItemVO.setItemHrefFields(prmItemDO.getItemHrefFields());//超链接字段
        prmItemVO.setItemValueList(prmItemDO.getItemValueList());
        prmItemVO.setItemValue(prmItemDO.getItemValue());
        prmItemVO.setItemStyle(prmItemDO.getItemStyle());
        prmItemVO.setItemShowExpression(prmItemDO.getItemShowExpression());// æ˜¾ç¤ºè¡¨è¾¾å¼ ${aa}-${bb}
        prmItemVO.setItemSeniorQueryColsCounts(prmItemDO.getItemSeniorQueryColsCounts());//高级查询各列使用次数
        prmItemVO.setItemQuerySql(prmItemDO.getItemQuerySql());//高级查询sql
        prmItemVO.setItemType(prmItemDO.getItemType());//属性基本类型
        prmItemVO.setItemTypeText(ItemTypeEnum.getTextByValue(prmItemDO.getItemType()));//属性基本类型显示值
        prmItemVO.setItemScript(prmItemDO.getItemScript());
        prmItemVO.setItemRight(prmItemDO.getItemRight());
        prmItemVO.setItemQueryRefFields(prmItemDO.getItemQueryRefFields());//查询关联列
        prmItemVO.setItemQtName(prmItemDO.getItemQtName());
        prmItemVO.setItemParentFolderName(prmItemDO.getItemParentFolderName());//父文件夹名称
        prmItemVO.setItemPageSize(prmItemDO.getItemPageSize());
        prmItemVO.setItemOutType(prmItemDO.getItemOutType());
        prmItemVO.setItemOutFields(prmItemDO.getItemOutFields());
        prmItemVO.setItemListVal(prmItemDO.getItemListVal());//参照值
        prmItemVO.setItemListTxt(prmItemDO.getItemListTxt());
        prmItemVO.setItemListTable(prmItemDO.getItemListTable());
        prmItemVO.setItemKeyFields(prmItemDO.getItemKeyFields());
        prmItemVO.setItemIsShowFolder(prmItemDO.getItemIsShowFolder());//是否显示文件夹
        prmItemVO.setItemIsNavigatorExpand(prmItemDO.getItemIsNavigatorExpand());////查询区域显示控制
        prmItemVO.setItemIsHttpSave(prmItemDO.getItemIsHttpSave());
        prmItemVO.setItemHttpVolumnPath(prmItemDO.getItemHttpVolumnPath());
        prmItemVO.setItemHttpPathField(prmItemDO.getItemHttpPathField());
        if(viType==PortalVIType.Table.getIntVal()) {//如果是表格
            initTableConfigDOO2VOData(prmItemVO,prmItemDO);
        }
        return prmItemVO;
    }
    /**
     * åˆå§‹åŒ–表格所用特殊字段配置
     * @param prmItemVO
     * @param prmItemDO
     */
    private void initTableConfigDOO2VOData(PRMItemVO prmItemVO,PRMItemDO prmItemDO){
        prmItemVO.setItemFieldWidthList(initItemFieldWidthList(prmItemDO.getItemOutFields(),prmItemDO.getItemFieldWidth()));//列显示宽段 itemOutFieldList ç›¸åŒ¹é…
        prmItemVO.setItemSeniorQueryBOS(initItemSeniorQueryBOData(prmItemDO.getItemSeniorQueryCols(),prmItemDO.getItemSeniorQueryColsCounts(),prmItemDO.getItemQuerySql()));//高级查询对象
        List<String> allKeyList= getRefFormVIName(prmItemVO.getItemInObj());
        List<String> itemOutFieldList =VciBaseUtil.str2List(prmItemVO.getItemOutFields());
        List<String> itemKeyFieldList =VciBaseUtil.str2List(prmItemVO.getItemKeyFields());
        List<String> itemSelectoutFieldList= allKeyList.stream().filter(s ->!itemOutFieldList.stream().map(s1 -> s1).collect(Collectors.toList()).contains(s) ).collect(Collectors.toList());
        prmItemVO.setItemSelectoutFieldList(itemSelectoutFieldList);//待选择的属性字段
        prmItemVO.setItemOutFieldList(itemOutFieldList);//需要使用的集合
        List<String> itemSearchFieldList= itemOutFieldList.stream().filter(s ->!itemKeyFieldList.stream().map(s1 -> s1).collect(Collectors.toList()).contains(s) ).collect(Collectors.toList());
        prmItemVO.setItemSearchFieldList(itemSearchFieldList);//待搜索字段
        prmItemVO.setItemKeyFieldList(itemKeyFieldList);//搜索字段
    }
    /**
     * åˆå§‹åŒ–表格所用特殊字段配置
     * @param prmItemDTO
     * @param prmItemDO
     */
    private void initTableConfigDTOO2DOData(PRMItemDO prmItemDO,PRMItemDTO prmItemDTO){
        prmItemDO.setItemOutFields(VciBaseUtil.array2String(prmItemDTO.getItemOutFieldList().toArray(new String[]{})));//需要使用的字段
        prmItemDO.setItemKeyFields(VciBaseUtil.array2String(prmItemDTO.getItemKeyFieldList().toArray(new String[]{})));//需要搜索的字段
       List<String> newItemFieldWidthList=prmItemDTO.getItemFieldWidthList().stream().map(KeyValue::getValue).distinct().collect(Collectors.toList());
       prmItemDO.setItemFieldWidth(VciBaseUtil.array2String(newItemFieldWidthList.toArray(new String[]{}),":"));//字段宽度
       List<ItemSeniorQueryBO> itemSeniorQueryBOS=  prmItemDTO.getItemSeniorQueryBOS();
       List<String> itemSeniorQueryColsList=new ArrayList<>();
       List<String> itemSeniorQueryColsCountsList=new ArrayList<>();
       List<String> itemQuerySqlList=new ArrayList<>();
       itemSeniorQueryBOS.stream().forEach(itemSeniorQueryBO -> {
           String itemSeniorQueryCols= itemSeniorQueryBO.getItemSeniorQueryCols();
           String itemSeniorQueryColsCounts=itemSeniorQueryBO.getItemSeniorQueryColsCounts();
           String itemQuerySql=itemSeniorQueryBO.getItemQuerySql();
           if(StringUtils.isNotBlank(itemSeniorQueryCols)) {
               itemSeniorQueryColsList.add(itemSeniorQueryCols);
           }
            if(StringUtils.isNotBlank(itemSeniorQueryColsCounts)) {
                itemSeniorQueryColsCountsList.add(itemSeniorQueryColsCounts);
            }
            if(StringUtils.isNotBlank(itemQuerySql)){
                itemQuerySqlList.add(itemQuerySql);
            }
        });
        prmItemDO.setItemSeniorQueryCols(VciBaseUtil.array2String(itemSeniorQueryColsList.toArray(new String[]{})));
        prmItemDO.setItemSeniorQueryColsCounts(VciBaseUtil.array2String(itemSeniorQueryColsCountsList.toArray(new String[]{})));
        prmItemDO.setItemQuerySql(VciBaseUtil.array2String(itemQuerySqlList.toArray(new String[]{}),";"));
    }
    /**
     * åˆå§‹åŒ–表格列宽度集合
     */
    private List<KeyValue>  initItemFieldWidthList(String itemOutFields,String itemFieldWidth){
        List<KeyValue> keyValueList=new ArrayList<>();
        List<String>itemOutFieldList=   VciBaseUtil.str2List(itemOutFields);
        List<String>itemFieldWidthList=  VciBaseUtil.str2List(itemFieldWidth);
        if(itemOutFieldList.size()>0) {
            for (int i = 0; i < itemOutFieldList.size(); i++) {
                KeyValue keyValue = new KeyValue();
                String with = itemFieldWidthList.get(i);
                keyValue.setKey(itemOutFieldList.get(i));
                keyValue.setValue(StringUtils.isBlank(with) ? "250" : with);
                keyValueList.add(keyValue);
            }
        }
        return keyValueList;
    }
    /**
     * é«˜çº§æŸ¥è¯¢é…ç½®åˆå§‹åŒ–
     * @param itemSeniorQueryCols
     * @param itemSeniorQueryColsCounts
     * @param itemQuerySql
     * @return
     */
    private List<ItemSeniorQueryBO>  initItemSeniorQueryBOData(String itemSeniorQueryCols,String itemSeniorQueryColsCounts,String itemQuerySql){
        List<ItemSeniorQueryBO> itemSeniorQueryBOList=new ArrayList<>();
        List<String> itemSeniorQueryColList= VciBaseUtil.str2List(itemSeniorQueryCols);
        List<String> itemSeniorQueryColsCountList= VciBaseUtil.str2List(itemSeniorQueryColsCounts);
        List<String> itemQuerySqlList= VciBaseUtil.str2List(itemQuerySql,";");
        if (itemSeniorQueryColList!=null&&itemSeniorQueryColList.size()>0){
            for (int i=0;i<itemSeniorQueryColList.size();i++){
              String itemSeniorQueryCol=  itemSeniorQueryColList.get(i);
                String itemSeniorQueryColsCount=  itemSeniorQueryColsCountList.get(i);
                if(StringUtils.isNotBlank(itemSeniorQueryCol)){
                    String querysql = "";
                    if(itemQuerySqlList!=null){
                        querysql = itemQuerySqlList.get(i);
                    }
                    ItemSeniorQueryBO itemSeniorQueryBO=null;
                    if("null".equals(querysql) ){
                        itemSeniorQueryBO=   new ItemSeniorQueryBO(itemSeniorQueryCol,itemSeniorQueryColsCount,"");
                    }else{
                        itemSeniorQueryBO= new ItemSeniorQueryBO(itemSeniorQueryCol,itemSeniorQueryColsCount,querysql);
                    }
                    itemSeniorQueryBOList.add(itemSeniorQueryBO);
                }
            }
        }
        return itemSeniorQueryBOList;
    }
    private List<String> getRefFormVIName(String refFormOid){
        List<String> keyList=new ArrayList<>();
        try {
            PortalVI refFormVI = UITools.getService().getPortalVIById(refFormOid);
            PortalVIVO portalVIVO= portalVIDOO2VO(refFormVI);
            if(portalVIVO!=null&&portalVIVO.getPrm().getPrmItemList().size()>0){
                 portalVIVO.getPrm().getPrmItemList().stream().forEach(k->{
                     keyList.add(k.getItemField());
                 });
            }
        } catch (PLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return keyList;
        }
        return keyList;
    }
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/PinyinCommon.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,89 @@
package com.vci.web.util;
import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
/**
 *
 * @author: ligang
 * @createtime: 2012-12-26
 * @version:
 */
    public class PinyinCommon {
    /**
     * å¾—到 å…¨æ‹¼
     * @param src
     * @return
     */
    public static String getPingYin(String src){
        char[] t1 = null;
        t1=src.toCharArray();
        String[] t2 = new String[t1.length];
        HanyuPinyinOutputFormat t3 = new HanyuPinyinOutputFormat();
        t3.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        t3.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        t3.setVCharType(HanyuPinyinVCharType.WITH_V);
        String t4="";
        int t0=t1.length;
        try {
          for (int i=0;i<t0;i++) {
          //判断是否为汉字字符
             if(Character.toString(t1[i]).matches("[\\u4E00-\\u9FA5]+")) {
                  t2 = PinyinHelper.toHanyuPinyinStringArray(t1[i], t3);
                  t4+=t2[0];
             } else {
                  t4+= Character.toString(t1[i]);
             }
          }
          return t4;
        }
        catch (BadHanyuPinyinOutputFormatCombination e1) {
          e1.printStackTrace();
        }
        return t4;
    }
    /**
     * å¾—到中文首字母
     * @param str
     * @return
     */
    public static String getPinYinHeadChar(String str) {
        String convert = "";
        for (int j = 0; j < str.length(); j++) {
            char word = str.charAt(j);
            String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word);
            if (pinyinArray != null) {
                convert += pinyinArray[0].charAt(0);
            }else {
                convert += word;
            }
        }
        return convert;
    }
    /**
     * å°†å­—符串转移为ASCII码
     * @param cnStr
     * @return
     */
    public static String getCnASCII(String cnStr) {
        StringBuffer   strBuf   =   new   StringBuffer();
        byte[]   bGBK   =   cnStr.getBytes();
        for(int   i=0;i <bGBK.length;i++){
            //System.out.println(Integer.toHexString(bGBK[i]&0xff));
            strBuf.append(Integer.toHexString(bGBK[i]&0xff));
        }
        return strBuf.toString();
    }
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/UITools.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,707 @@
package com.vci.web.util;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import com.vci.model.PRMDO;
import com.vci.model.PRMItemDO;
import org.apache.commons.lang3.StringUtils;
import org.dom4j.Document;
import org.dom4j.DocumentException;
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;
/**
 * UIService æ¨¡å— Util å·¥å…·ç±»
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2017</p>
 * <p>Company: VCI</p>
 * @author xiongchao
 * @time 2017-12-21
 * @version 1.0
 */
public class UITools {
private static PortalServicePrx portalService = null;
    public static PortalServicePrx getService(){
        if(portalService != null){
            return portalService;
        }
        try {
            portalService = ClientServiceProvider.getUIService();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return portalService;
    }
    /**
     * å°†xml文本转化成PRM对象
     * @param text
     * @return
     */
    @SuppressWarnings("unchecked")
    public static PRMDO getPRM(String text){
        if (StringUtils.isEmpty(text))
            return null;
        Document document = null;
        try {
            document = DocumentHelper.parseText(text);
        } catch (DocumentException e) {
            e.printStackTrace();
        }
        if(document == null){
            return null;
        }
        PRMDO prm = new PRMDO();
        try{
            Element root = document.getRootElement();
            String showCols = root.elementText(PRMConstants.JD_SHOWCOLS);
            if(showCols == null || showCols.equals("")){
                showCols = "3";
            }
            prm.setShowCols(showCols);
            String formQtName = root.elementText(PRMConstants.JD_FORMQTNAME);
            if(formQtName == null){
                formQtName = "";
            }
            prm.setFormQtName(formQtName);
            List<Element> items = root.elements(PRMConstants.JD_ITEM);
            List<PRMItemDO> prmItemList = new ArrayList<PRMItemDO>();
            prm.setPrmItemList(prmItemList);
            for(Iterator<Element> i = items.iterator(); i.hasNext();){
                Element item = i.next();
                PRMItemDO prmItem = new PRMItemDO();
                prmItemList.add(prmItem);
                String elementText = item.elementText(PRMConstants.JD_field);
                prmItem.setItemField(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_or);
                prmItem.setItemOR(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_eq);
                prmItem.setItemEQ(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_trim);
                prmItem.setItemTrim(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_dbl);
                prmItem.setItemDbl(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_cut);
                prmItem.setItemCut(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_inObj);
                prmItem.setItemInObj(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_addFilter);
                prmItem.setItemAddFilter(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_outType);
                prmItem.setItemOutType(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_pageSize);
                prmItem.setItemPageSize(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_imgWH);
                prmItem.setItemImgWH(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_outFields);
                prmItem.setItemOutFields(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_keyFields);
                prmItem.setItemKeyFields(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_bat);
                prmItem.setItemBat(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_txf);
                prmItem.setItemTxf(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_name);
                prmItem.setItemName(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_type);
                prmItem.setItemType(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_value);
                prmItem.setItemValue(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_cols);
                prmItem.setItemCols(elementText == null ? "" : elementText);
                // add by xchao 2017.11.23 begin
                // prmItem çš„ itemIsHidden å€¼ç­‰äºŽ itemCols
                // è¯¥å€¼æŽ§åˆ¶å…ƒç´ æ˜¯å¦æ˜¾ç¤º 1:显示 0:不显示,当且仅当等于1时显示,否则按不显示
                prmItem.setItemIsHidden(elementText == null ? "" : elementText);
                // add by xchao 2017.11.23 end
                elementText = item.elementText(PRMConstants.JD_rows);
                prmItem.setItemRows(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_style);
                prmItem.setItemStyle(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_script);
                prmItem.setItemScript(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_tips);
                prmItem.setItemTips(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_valuelist);
                if(elementText == null || elementText.equals("")){
                    prmItem.setItemValueList(new ArrayList<String>());
                }else{
                    prmItem.setItemValueList(arrayToList(elementText.split(";")));
                }
                elementText = item.elementText(PRMConstants.JD_listTable);
                prmItem.setItemListTable(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_listTxt);
                prmItem.setItemListTxt(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_listVal);
                prmItem.setItemListVal(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_showExpression);
                prmItem.setItemShowExpression(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_dateFormat);
                prmItem.setItemDateFormat(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_isEditable);
                prmItem.setItemIsEditable(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_EditableProgram);
                prmItem.setItemEditableProgram(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_qtName);
                prmItem.setItemQtName(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_isRequired);
                prmItem.setItemIsRequired(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_seniorQueryCols);
                prmItem.setItemSeniorQueryCols(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_seniorQueryColsCounts);
                prmItem.setItemSeniorQueryColsCounts(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_hrefFields);
                prmItem.setItemHrefFields(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_hrefConf);
                prmItem.setItemHrefConf(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_queryRefFields);
                prmItem.setItemQueryRefFields(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_customClass);
                prmItem.setItemCustomClass(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_ctrlDisplyCol);
                prmItem.setItemCtrlDisplyCol(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_ctrlDisplyCondition);
                prmItem.setItemCtrlDisplyCondition(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_isHttpSave);
                prmItem.setItemIsHttpSave(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_httpVolumnPath);
                prmItem.setItemHttpVolumnPath(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_httpPathField);
                prmItem.setItemHttpPathField(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_editCondition);
                prmItem.setItemEditCondition(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_isNavigatorExpand);
                prmItem.setItemIsNavigatorExpand(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_isShowFolder);
                prmItem.setItemIsShowFolder(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_parentFolderName);
                prmItem.setItemParentFolderName(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_filterColWidth);
                prmItem.setItemFieldWidth(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_QuerySql);
                prmItem.setItemQuerySql(elementText == null ? "" : elementText);
                elementText = item.elementText(PRMConstants.JD_right);
                prmItem.setItemRight(elementText == null ? "" : elementText);
            }
        }catch(Exception e){
            e.printStackTrace();
        }
        return prm;
    }
    /**
     * å°†PRM对象转化成xml文本
     * @param prm
     * @return
     * @throws Throwable
     */
    public static String getPRMText(PRMDO prm) throws Throwable{
        try {
            if (prm == null) {
                return "";
            }
            Document document = DocumentHelper.createDocument();
            Element rootNode = document.addElement(PRMConstants.JD_DATASET);
            Element showColsNode = rootNode.addElement(PRMConstants.JD_SHOWCOLS);
            showColsNode.setText(prm.getShowCols());
            Element formQtNameNode = rootNode.addElement(PRMConstants.JD_FORMQTNAME);
            formQtNameNode.setText(prm.getFormQtName());
            List<PRMItemDO> prmItemList = prm.getPrmItemList();
            if (prmItemList != null && prmItemList.size() > 0) {
                for (Iterator<PRMItemDO> i = prmItemList.iterator(); i.hasNext();) {
                    Element itemNode = rootNode.addElement(PRMConstants.JD_ITEM);
                    PRMItemDO item = i.next();
                    Element itemChildNode = itemNode.addElement(PRMConstants.JD_field);
                    itemChildNode.setText(item.getItemField());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_or);
                    itemChildNode.setText(item.getItemOR());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_eq);
                    itemChildNode.setText(item.getItemEQ());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_trim);
                    itemChildNode.setText(item.getItemTrim());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_dbl);
                    itemChildNode.setText(item.getItemDbl());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_cut);
                    itemChildNode.setText(item.getItemCut());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_inObj);
                    itemChildNode.setText(item.getItemInObj());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_addFilter);
                    itemChildNode.setText(item.getItemAddFilter());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_outType);
                    itemChildNode.setText(item.getItemOutType());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_pageSize);
                    itemChildNode.setText(item.getItemPageSize());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_imgWH);
                    itemChildNode.setText(item.getItemImgWH());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_outFields);
                    itemChildNode.setText(item.getItemOutFields());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_keyFields);
                    itemChildNode.setText(item.getItemKeyFields());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_bat);
                    itemChildNode.setText(item.getItemBat());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_txf);
                    itemChildNode.setText(item.getItemTxf());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_name);
                    itemChildNode.setText(item.getItemName());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_type);
                    itemChildNode.setText(item.getItemType());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_value);
                    itemChildNode.setText(item.getItemValue());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_showExpression);
                    itemChildNode.setText(item.getItemShowExpression());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_dateFormat);
                    itemChildNode.setText(item.getItemDateFormat());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_cols);
                    itemChildNode.setText(item.getItemCols());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_rows);
                    itemChildNode.setText(item.getItemRows());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_style);
                    itemChildNode.setText(item.getItemStyle());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_script);
                    itemChildNode.setText(item.getItemScript());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_tips);
                    itemChildNode.setText(item.getItemTips());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_valuelist);
                    itemChildNode.setText(listToString(item.getItemValueList()));
                    itemChildNode = itemNode.addElement(PRMConstants.JD_listTable);
                    itemChildNode.setText(item.getItemListTable());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_listTxt);
                    itemChildNode.setText(item.getItemListTxt());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_listVal);
                    itemChildNode.setText(item.getItemListVal());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_isEditable);
                    itemChildNode.setText(item.getItemIsEditable());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_EditableProgram);
                    itemChildNode.setText(item.getItemEditableProgram());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_qtName);
                    itemChildNode.setText(item.getItemQtName());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_isRequired);
                    itemChildNode.setText(item.getItemIsRequired());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_seniorQueryCols);
                    itemChildNode.setText(item.getItemSeniorQueryCols());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_seniorQueryColsCounts);
                    itemChildNode.setText(item.getItemSeniorQueryColsCounts());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_hrefFields);
                    itemChildNode.setText(item.getItemHrefFields());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_hrefConf);
                    itemChildNode.setText(item.getItemHrefConf());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_queryRefFields);
                    itemChildNode.setText(item.getItemQueryRefFields());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_customClass);
                    itemChildNode.setText(item.getItemCustomClass());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_ctrlDisplyCol);
                    itemChildNode.setText(item.getItemCtrlDisplyCol());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_ctrlDisplyCondition);
                    itemChildNode.setText(item.getItemCtrlDisplyCondition());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_isHttpSave);
                    itemChildNode.setText(item.getItemIsHttpSave());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_httpVolumnPath);
                    itemChildNode.setText(item.getItemHttpVolumnPath());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_httpPathField);
                    itemChildNode.setText(item.getItemHttpPathField());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_editCondition);
                    itemChildNode.setText(item.getItemEditCondition());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_isNavigatorExpand);
                    itemChildNode.setText(item.getItemIsNavigatorExpand());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_isShowFolder);
                    itemChildNode.setText(item.getItemIsShowFolder());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_parentFolderName);
                    itemChildNode.setText(item.getItemParentFolderName());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_filterColWidth);
                    itemChildNode.setText(item.getItemFieldWidth());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_QuerySql);
                    itemChildNode.setText(item.getItemQuerySql());
                    itemChildNode = itemNode.addElement(PRMConstants.JD_right);
                    itemChildNode.setText(item.getItemRight());
                }
            }
            return document.asXML();
        } catch (Throwable e) {
            e.printStackTrace();
            throw e;
        }
    }
//    /**
//     * å°†ä»Žæ•°æ®åº“中读取的xml文本转化成对应的PLDefination对象
//     * @param text
//     * @return
//     * @throws Throwable
//     */
//    public static PLDefination getPLDefination(String text) throws Throwable{
//        try{
//            Document document = null;
//            document = DocumentHelper.parseText(text);
//            if(document == null){
//                return null;
//            }
//            PLDefination obj = new PLDefination();
//            Element root = document.getRootElement();
//            if(root != null){
//                String elementText = root.elementText(PLDefinationConstants.TYPE);
//                if(elementText == null || elementText.equals("")){
//                    elementText = "0";
//                }
//                obj.setType(Integer.parseInt(elementText));
//
//                elementText = root.elementText(PLDefinationConstants.SHOWABS);
//                obj.setShowAbs(elementText == null ? "" : elementText);
//
//                elementText = root.elementText(PLDefinationConstants.SEPARATOR);
//                obj.setSeparator(elementText == null ? "" : elementText);
//
//                elementText = root.elementText(PLDefinationConstants.SHOWLINKABS);
//                obj.setShowLinkAbs(elementText == null ? "" : elementText);
//
//                elementText = root.elementText(PLDefinationConstants.SEARCHTARGET);
//                obj.setSearchTarger(elementText == null ? "" : elementText);
//
//                elementText = root.elementText(PLDefinationConstants.TEMPLATETYPE);
//                obj.setTemplateType(elementText == null ? "" : elementText);
//
//                elementText = root.elementText(PLDefinationConstants.SHOWTYPE);
//                obj.setShowType(elementText == null ? "" : elementText);
//
//                elementText = root.elementText(PLDefinationConstants.TEMPLATEID);
//                obj.setTemplateId(elementText == null ? "" : elementText);
//
//                elementText = root.elementText(PLDefinationConstants.ORIENTATION);
//                obj.setOrientation(elementText == null ? "" : elementText);
//
//                elementText = root.elementText(PLDefinationConstants.VALIDITY);
//                obj.setValidity(elementText == null ? "" : elementText);
//
//                elementText = root.elementText(PLDefinationConstants.ORDERFIELD);
//                obj.setOrderField(elementText == null ? "" : elementText);
//
//                elementText = root.elementText(PLDefinationConstants.ORDERMODE);
//                obj.setOrderMode(elementText == null ? "" : elementText);
//
//                elementText = root.elementText(PLDefinationConstants.RETURNROWS);
//                obj.setReturnRows(elementText == null ? "" : elementText);
//
//                elementText = root.elementText(PLDefinationConstants.CONTROLPATH);
//                obj.setControlPath(elementText == null ? "" : elementText);
//
//                elementText = root.elementText(PLDefinationConstants.EXPANDMODE);
//                obj.setExpandMode(elementText == null ? "" : elementText);
//
//                elementText = root.elementText(PLDefinationConstants.LINKTYPE);
//                obj.setLinkType(elementText == null ? "" : elementText);
//
//
//                elementText = root.elementText(PLDefinationConstants.ISSHOWIMAGE);
//                obj.setIsShowImage(elementText == null ? "" : elementText);
//
//                elementText = root.elementText(PLDefinationConstants.EXPANDCOLS);
//                obj.setExpandCols(elementText == null ? "" : elementText);
//
//                elementText = root.elementText(PLDefinationConstants.SHOWCONTENT);
//                obj.setShowContent(elementText == null ? "" : elementText);
//
//                elementText = root.elementText(PLDefinationConstants.SHOWCONTENTTYPE);
//                obj.setShowContentType(elementText == null ? "" : elementText);
//
//                elementText = root.elementText(PLDefinationConstants.SHOWCONTENTRELATION);
//                obj.setShowContentRelation(elementText == null ? "" : elementText);
//
//                elementText = root.elementText(PLDefinationConstants.SHOWCONTENTTABLE);
//                obj.setShowContentTable(elementText == null ? "" : elementText);
//
//                elementText = root.elementText(PLDefinationConstants.NAVIGATORTYPE);
//                obj.setNavigatorType(elementText == null ? "" : elementText);
//
//                elementText = root.elementText(PLDefinationConstants.EVENTKEY);
//                obj.setEventKey(elementText == null ? "" : elementText);
//
//                elementText = root.elementText(PLDefinationConstants.EVENTVALUE);
//                obj.setEventValue(elementText == null ? "" : elementText);
//
//                elementText = root.elementText(PLDefinationConstants.ROOTCONTENT);
//                obj.setRootContent(elementText == null ? "" : elementText);
//
//                elementText = root.elementText(PLDefinationConstants.UIPARSER);
//                obj.setUiParser(elementText == null ? "" : elementText);
//
//                elementText = root.elementText(PLDefinationConstants.EXTATTR);
//                obj.setExtAttr(elementText == null ? "" : elementText);
//
//                elementText = root.elementText(PLDefinationConstants.QUERYTEMPLATENAME);
//                obj.setQueryTemplateName(elementText == null ? "" : elementText);
//
//                elementText = root.elementText(PLDefinationConstants.SUBUILAYOUT);
//                obj.setSubUILayout(elementText == null ? "" : elementText);
//            }
//            return obj;
//        }catch(Throwable e){
//            e.printStackTrace();
//            throw e;
//        }
//    }
//
//    /**
//     * å°†PLDefination对象转化成xml文本
//     * @param obj
//     * @return
//     * @throws Throwable
//     */
//    public static String getPLDefinationText(PLDefination obj) throws Throwable{
//        try{
//            if(obj == null){
//                return "";
//            }
//
//            Document doc = DocumentHelper.createDocument();
//            Element rootNode = doc.addElement(PLDefinationConstants.PLDEFINATION);
//
//            Element node = rootNode.addElement(PLDefinationConstants.TYPE);
//            node.setText(String.valueOf(obj.getType()));
//
//            node = rootNode.addElement(PLDefinationConstants.SHOWABS);
//            node.setText(obj.getShowAbs());
//
//            node = rootNode.addElement(PLDefinationConstants.SEPARATOR);
//            node.setText(obj.getSeparator());
//
//            node = rootNode.addElement(PLDefinationConstants.SHOWLINKABS);
//            node.setText(obj.getShowLinkAbs());
//
//            node = rootNode.addElement(PLDefinationConstants.SEARCHTARGET);
//            node.setText(obj.getSearchTarger());
//
//            node = rootNode.addElement(PLDefinationConstants.TEMPLATETYPE);
//            node.setText(obj.getTemplateType());
//
//            node = rootNode.addElement(PLDefinationConstants.SHOWTYPE);
//            node.setText(obj.getShowType());
//
//            node = rootNode.addElement(PLDefinationConstants.TEMPLATEID);
//            node.setText(obj.getTemplateId());
//
//            node = rootNode.addElement(PLDefinationConstants.ORIENTATION);
//            node.setText(obj.getOrientation());
//
//            node = rootNode.addElement(PLDefinationConstants.VALIDITY);
//            node.setText(obj.getValidity());
//
//            node = rootNode.addElement(PLDefinationConstants.ORDERFIELD);
//            node.setText(obj.getOrderField());
//
//            node = rootNode.addElement(PLDefinationConstants.ORDERMODE);
//            node.setText(obj.getOrderMode());
//
//            node = rootNode.addElement(PLDefinationConstants.RETURNROWS);
//            node.setText(obj.getReturnRows());
//
//            node = rootNode.addElement(PLDefinationConstants.CONTROLPATH);
//            node.setText(obj.getControlPath());
//
//            node = rootNode.addElement(PLDefinationConstants.EXPANDMODE);
//            node.setText(obj.getExpandMode());
//
//            node = rootNode.addElement(PLDefinationConstants.LINKTYPE);
//            node.setText(obj.getLinkType());
//
//            node = rootNode.addElement(PLDefinationConstants.ISSHOWIMAGE);
//            node.setText(obj.getIsShowImage());
//
//            node = rootNode.addElement(PLDefinationConstants.EXPANDCOLS);
//            node.setText(obj.getExpandCols());
//
//            node = rootNode.addElement(PLDefinationConstants.SHOWCONTENT);
//            node.setText(obj.getShowContent());
//
//            node = rootNode.addElement(PLDefinationConstants.SHOWCONTENTTYPE);
//            node.setText(obj.getShowContentType());
//
//            node = rootNode.addElement(PLDefinationConstants.SHOWCONTENTRELATION);
//            node.setText(obj.getShowContentRelation());
//
//            node = rootNode.addElement(PLDefinationConstants.SHOWCONTENTTABLE);
//            node.setText(obj.getShowContentTable());
//
//            node = rootNode.addElement(PLDefinationConstants.NAVIGATORTYPE);
//            node.setText(obj.getNavigatorType());
//
//            node = rootNode.addElement(PLDefinationConstants.EVENTKEY);
//            node.setText(obj.getEventKey());
//
//            node = rootNode.addElement(PLDefinationConstants.EVENTVALUE);
//            node.setText(obj.getEventValue());
//
//            node = rootNode.addElement(PLDefinationConstants.ROOTCONTENT);
//            node.setText(obj.getRootContent());
//
//            node = rootNode.addElement(PLDefinationConstants.UIPARSER);
//            node.setText(obj.getUiParser());
//
//            node = rootNode.addElement(PLDefinationConstants.EXTATTR);
//            node.setText(obj.getExtAttr());
//
//            node = rootNode.addElement(PLDefinationConstants.QUERYTEMPLATENAME);
//            node.setText(obj.getQueryTemplateName());
//
//            node = rootNode.addElement(PLDefinationConstants.SUBUIOBJTYPE);
//            node.setText(obj.getSubUiObjType());
//
//            node = rootNode.addElement(PLDefinationConstants.SUBUILAYOUT);
//            node.setText(obj.getSubUILayout());
//
//            return doc.asXML();
//        }catch(Throwable e){
//            throw e;
//        }
//
//    }
    /**
     * å°†ARRAY转化成LIST
     * @param array
     * @return
     */
    public static List<String> arrayToList(String[] array){
        if(array == null || array.length == 0){
            return null;
        }
        List<String> list = new ArrayList<String>();
        for(int i = 0; i < array.length; i++){
            list.add(array[i]);
        }
        return list;
    }
    /**
     * å°†LIST加上';'拼成字符串
     * @param list
     * @return
     */
    public static String listToString(List<String> list){
        StringBuilder strb = new StringBuilder();
        if(list != null && list.size() > 0){
            for(int i = 0; i < list.size(); i++){
                strb.append(list.get(i));
                if(i < list.size() - 1){
                    strb.append(";");
                }
            }
        }
        return strb.toString();
    }
}
Source/plt-web/plt-web-ui/src/api/modeling/businessType/api.js
@@ -1,6 +1,6 @@
import request from '@/router/axios';
// åˆ—表查询
// ä¸šåŠ¡ç±»åž‹æ ‘æŸ¥è¯¢
export function getBizTypes(params) {
  return request({
    url: "/api/btmTypeController/getTreeBizTypes",
@@ -8,6 +8,14 @@
    params
  });
}
// æŸ¥è¯¢æ‰€æœ‰çš„属性,参数btmId(业务类型名称)
export function getAllAttributesByBtmId(params) {
  return request({
    url: "/api/btmTypeController/getAllAttributesByBtmId",
    method: "get",
    params
  });
}
// åˆ›å»º
export function addLifeCycle(params) {
Source/plt-web/plt-web-ui/src/api/modeling/linkType/api.js
@@ -8,6 +8,14 @@
  });
}
// æŸ¥è¯¢æ‰€æœ‰çš„属性,参数name(链接类型模板名称)
export function getAllAttributeByLink(params) {
  return request({
    url: "/api/linkTypeController/getAllAttributeByLink",
    method: "get",
    params
  });
}
// é€šè¿‡å±žæ€§æ± è¿”回的 attributes èŽ·å–å®Œæ•´çš„ä¿¡æ¯
export function getByAttributeNames(params) {
  return request({
Source/plt-web/plt-web-ui/src/api/queryTemplate/businessTypeQuery.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
import request from '@/router/axios';
//业务类型查询模板
// æ¨¡æ¿åˆ—表查询
export function gridTemplate(params) {
  return request({
    url: "/api/templateController/queryTemplateList",
    method: "get",
    params:{
      ...params
    }
  });
}
Source/plt-web/plt-web-ui/src/api/queryTemplate/linkTypeQuery.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
import request from '@/router/axios';
//链接类型查询模板
// åˆ é™¤
export function deleteLinkTemplate(params) {
  return request({
    url: "/api/templateController/deleteLinkTemplate",
    method: "delete",
    data:params
  });
}
Source/plt-web/plt-web-ui/src/api/queryTemplate/queryDefine.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
import request from '@/router/axios';
//查询模板定义
// æ¨¡æ¿åˆ—表定义下拉框查询
export function gridTemplate(params) {
  return request({
    url: "/api/templateController/queryTemplateList",
    method: "get",
    params:{
      ...params
    }
  });
}
export function getObjTypeQTs(params) {
  return request({
    url: "/api/templateController/getObjTypeQTs",
    method: "get",
    params:{
      ...params
    }
  });
}
// ä¿®æ”¹
export function updateTemplate(params) {
  return request({
    url: "/api/templateController/updateTemplate",
    method: "post",
    data:params
  });
}
// åˆ›å»º
export function saveTemplate(params) {
  return request({
    url: "/api/templateController/saveTemplate",
    method: "post",
    data:params
  });
}
// åˆ é™¤
export function deleteTemplate(params) {
  return request({
    url: "/api/templateController/deleteTemplate",
    method: "delete",
    data:params
  });
}
Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/versioning/index.vue
@@ -19,7 +19,7 @@
            </el-button>
          </div>
          <!-- å·¦ä¾§æ ‘         -->
          <div style="height:  calc(100vh - 300px);">
          <div style="height:  calc(100vh - 260px);">
            <avue-tree :data="treeData" :option="treeOption" @node-click="nodeClick">
          <span slot-scope="{ node, data }" class="el-tree-node__label">
           <span style="font-size: 15px">
Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/businessTypeQuery/index.vue
@@ -3,24 +3,9 @@
    <el-aside>
      <basic-container>
        <div ref="TreeBox" style="height: calc(100vh - 144px);!important;">
          <div class="headerCon">
            <el-button icon="el-icon-plus" plain size="small" type="primary" @click="addClickHandler">创建
            </el-button>
            <el-button icon="el-icon-edit" plain size="small" type="primary" @click="editClickHandler">修改
            </el-button>
            <el-button icon="el-icon-delete" plain size="small" type="danger" @click="delClickHandler">删除
            </el-button>
            <el-button icon="el-icon-download" plain size="small" type="primary" @click="exportClickHandler">导出
            </el-button>
            <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="uploadClickHandler">导入
            </el-button>
            <el-button class="smallBtn" plain size="small" type="primary"
                       @click="checkViewClickHandler">查看使用范围
            </el-button>
          </div>
        <div ref="TreeBox" style="height: calc(100vh - 154px);!important;">
          <!-- å·¦ä¾§æ ‘         -->
          <div style="height:  calc(100vh - 280px);">
          <div style="height:  calc(100vh - 190px);">
            <avue-tree :data="treeData" :option="treeOption" @node-click="nodeClick">
          <span slot-scope="{ node, data }" class="el-tree-node__label">
           <span style="font-size: 15px">
@@ -36,6 +21,16 @@
    <el-main>
      <basic-container>
        <avue-crud  ref="crud"
                    :data="crudData" :option="crudOption" :table-loading="tableLoading" style="margin-top: 10px">
          <template slot="menuLeft" slot-scope="scope">
            <el-button icon="el-icon-plus" size="small" type="primary" @click="addHandler">创建</el-button>
            <el-button icon="el-icon-edit" plain size="small" type="primary" @click="editHandler">修改</el-button>
            <el-button icon="el-icon-delete" plain size="small" type="danger" @click="delHandler">删除</el-button>
            <el-button icon="el-icon-download" plain size="small" type="primary" @click="exportClickHandler">导出</el-button>
            <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="upLoadClickHandler">导入</el-button>
          </template>
        </avue-crud>
      </basic-container>
    </el-main>
@@ -43,8 +38,187 @@
</template>
<script>
import {getBizTypes} from "@/api/modeling/businessType/api";
import {gridTemplate,saveTemplate,updateTemplate,deleteTemplate} from "@/api/queryTemplate/queryDefine";
import basicOption from "@/util/basic-option";
import func from "@/util/func";
import {dateFormat} from "@/util/date";
export default {
  name: "index"
  name: "index",
  data() {
    return {
      treeOption: {
        height: 'auto',
        defaultExpandedKeys: ['topNode'],
        menu: false,
        addBtn: false,
        props: {
          label: 'label',
          value: 'oid',
          children: 'children'
        }
      },
      nodeRow: {},
      treeData: [  {
        label: '业务类型树',
        oid: 'topNode',
        children: []
      }],
      templateForm: '',
      templateData: [],
      form: {
        name: ''
      },
      rules: {
        name: [
          {required: true, message: '请输入查询模板名称', trigger: 'blur'}
        ]
      },
      title: '',
      visible: false,
      tableLoading: false,
      crudData: [],
      crudOption: {
        ...basicOption,
        addBtn: false,
        editBtn: false,
        delBtn: false,
        selection: true,
        menu: false,
        height: "auto",
        calcHeight: -40,
        tip: false,
        column: [{
          label: '查询模板名称',
          prop: 'name'
        }, {
          label: '创建人',
          prop: 'creator'
        }, {
          label: '创建时间',
          prop: 'createTime',
          formatter:function (row, value) {
            return dateFormat(new Date(value))
          }
        }]
      },
      selectionRow: [],
    }
  },
  created() {
    this.getTreeList();
  },
  methods: {
    //树表查询
    getTreeList() {
      const loading = this.$loading({});
      getBizTypes().then(res => {
        const data = res.data.data.map(item => {
          item.label = item.attributes.id;
          return item;
        });
        this.treeData[0].children = data;
        loading.close();
      })
    },
    // æ ‘点击
    nodeClick(row) {
      this.nodeRow = row;
      this.tableLoading = true;
      this.getTemp();
    },
    getTemp() {
      gridTemplate({btmName: this.nodeRow.label, linkFlag: false}).then(res => {
        this.crudData =  res.data.data;
        this.tableLoading = false;
      })
    },
    selectHandler(selection, row) {
    },
    changeTemp(data) {
      this.$refs.queryCrud.clearSelection();
      if (data.value != '') {
        let abNames = data.item.abNames.join(',').toLowerCase().split(',')
      }
    },
    //创建
    addHandler() {
      if (func.isEmptyObject(this.nodeRow)) {
        this.$message.error('请选择要添加的节点');
        return;
      }
      this.title = 'add';
      this.visible = true;
      this.$nextTick(() => {
      });
    },
    //修改
    editHandler() {
      if (func.isEmptyObject(this.nodeRow)) {
        this.$message.error('请至少选择一条数据');
        return;
      }
      this.form.name = this.templateForm;
      this.title = 'edit';
      this.visible = true;
      this.$nextTick(() => {
      });
    },
    // æ–°å¢žç¼–辑保存
    addDialogSavaHandler() {
      this.$refs.form.validate((valid) => {
        const saveFunction = this.title === 'add' ? saveTemplate : updateTemplate;
        if (valid) {
          saveFunction(this.form).then(res => {
            if (res.data.code === 200) {
              this.$message.success(res.data.obj);
              this.addDialogClose();
            }
          })
        } else {
          return false;
        }
      });
    },
    // æ–°å¢žç¼–辑对话框取消
    addDialogClose() {
      this.form = {
        name: ''
      };
      this.$refs.form.clearValidate();
      this.visible = false;
    },
    //删除
    delHandler() {
      if (func.isEmptyObject(this.nodeRow)) {
        this.$message.error('请选择数据');
        return;
      }
      this.$confirm('您确定要删除所选择的数据吗?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        deleteTemplate({
          name: this.templateForm,
          btmName: this.nodeRow.label,
          linkFlag: false
        }).then(res => {
          if (res.data.code === 200) {
            this.$message.success(res.data.obj);
          }
        })
      }).catch(() => {
        this.$message({
          type: 'info',
          message: '已取消删除'
        });
      });
    }
  }
}
</script>
Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/linkTypeQuery/index.vue
@@ -3,24 +3,9 @@
    <el-aside>
      <basic-container>
        <div ref="TreeBox" style="height: calc(100vh - 144px);!important;">
          <div class="headerCon">
            <el-button icon="el-icon-plus" plain size="small" type="primary" @click="addClickHandler">创建
            </el-button>
            <el-button icon="el-icon-edit" plain size="small" type="primary" @click="editClickHandler">修改
            </el-button>
            <el-button icon="el-icon-delete" plain size="small" type="danger" @click="delClickHandler">删除
            </el-button>
            <el-button icon="el-icon-download" plain size="small" type="primary" @click="exportClickHandler">导出
            </el-button>
            <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="uploadClickHandler">导入
            </el-button>
            <el-button class="smallBtn" plain size="small" type="primary"
                       @click="checkViewClickHandler">查看使用范围
            </el-button>
          </div>
        <div ref="TreeBox" style="height: calc(100vh - 154px);!important;">
          <!-- å·¦ä¾§æ ‘         -->
          <div style="height:  calc(100vh - 280px);">
          <div style="height:  calc(100vh - 190px);">
            <avue-tree :data="treeData" :option="treeOption" @node-click="nodeClick">
          <span slot-scope="{ node, data }" class="el-tree-node__label">
           <span style="font-size: 15px">
@@ -36,6 +21,16 @@
    <el-main>
      <basic-container>
        <avue-crud  ref="crud"
                    :data="crudData" :option="crudOption" :table-loading="tableLoading" style="margin-top: 10px">
          <template slot="menuLeft" slot-scope="scope">
            <el-button icon="el-icon-plus" size="small" type="primary" @click="addHandler">创建</el-button>
            <el-button icon="el-icon-edit" plain size="small" type="primary" @click="editHandler">修改</el-button>
            <el-button icon="el-icon-delete" plain size="small" type="danger" @click="delHandler">删除</el-button>
            <el-button icon="el-icon-download" plain size="small" type="primary" @click="exportClickHandler">导出</el-button>
            <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="upLoadClickHandler">导入</el-button>
          </template>
        </avue-crud>
      </basic-container>
    </el-main>
@@ -43,8 +38,189 @@
</template>
<script>
import {gridLink} from "@/api/modeling/linkType/api";
import { gridTemplate, saveTemplate, updateTemplate} from "@/api/queryTemplate/queryDefine";
import {deleteLinkTemplate} from "@/api/queryTemplate/linkTypeQuery";
import func from "@/util/func";
import {dateFormat} from "@/util/date";
import basicOption from "@/util/basic-option";
export default {
  name: "index"
  name: "index",
  data() {
    return {
      treeOption: {
        height: 'auto',
        defaultExpandedKeys: ['topNode'],
        menu: false,
        addBtn: false,
        props: {
          label: 'label',
          value: 'oid',
          children: 'children'
        }
      },
      nodeRow: {},
      treeData: [{
        label: '链接类型',
        oid: 'topNode',
        children: []
      }],
      templateForm: '',
      templateData: [],
      form: {
        name: ''
      },
      rules: {
        name: [
          {required: true, message: '请输入查询模板名称', trigger: 'blur'}
        ]
      },
      title: '',
      visible: false,
      tableLoading: false,
      crudData: [],
      crudOption: {
        ...basicOption,
        addBtn: false,
        editBtn: false,
        delBtn: false,
        selection: true,
        menu: false,
        height: "auto",
        calcHeight: -40,
        tip: false,
        column: [{
          label: '查询模板名称',
          prop: 'name'
        }, {
          label: '创建人',
          prop: 'creator'
        }, {
          label: '创建时间',
          prop: 'createTime',
          formatter:function (row, value) {
            return dateFormat(new Date(value))
          }
        }]
      },
      selectionRow: [],
    }
  },
  created() {
    this.getTreeList();
  },
  methods: {
    //树表查询
    getTreeList() {
      const loading = this.$loading({});
      gridLink().then(res => {
        const data = res.data.data.map(item => {
          item.label=item.name;
          return item;
        });
        this.treeData[0].children = data;
        loading.close();
      })
    },
    // æ ‘点击
    nodeClick(row) {
      this.nodeRow = row;
      this.tableLoading = true;
      this.getTemp();
    },
    getTemp() {
      gridTemplate({btmName: this.nodeRow.label, linkFlag: true}).then(res => {
        this.crudData = res.data.data;
        this.tableLoading = false;
      })
    },
    selectHandler(selection, row) {
    },
    changeTemp(data) {
      this.$refs.queryCrud.clearSelection();
      if (data.value != '') {
        let abNames = data.item.abNames.join(',').toLowerCase().split(',')
      }
    },
    //创建
    addHandler() {
      if (func.isEmptyObject(this.nodeRow)) {
        this.$message.error('请选择要添加的节点');
        return;
      }
      this.title = 'add';
      this.visible = true;
      this.$nextTick(() => {
      });
    },
    //修改
    editHandler() {
      if (func.isEmptyObject(this.nodeRow)) {
        this.$message.error('请至少选择一条数据');
        return;
      }
      this.form.name = this.templateForm;
      this.title = 'edit';
      this.visible = true;
      this.$nextTick(() => {
      });
    },
    // æ–°å¢žç¼–辑保存
    addDialogSavaHandler() {
      this.$refs.form.validate((valid) => {
        const saveFunction = this.title === 'add' ? saveTemplate : updateTemplate;
        if (valid) {
          saveFunction(this.form).then(res => {
            if (res.data.code === 200) {
              this.$message.success(res.data.obj);
              this.addDialogClose();
            }
          })
        } else {
          return false;
        }
      });
    },
    // æ–°å¢žç¼–辑对话框取消
    addDialogClose() {
      this.form = {
        name: ''
      };
      this.$refs.form.clearValidate();
      this.visible = false;
    },
    //删除
    delHandler() {
      if (func.isEmptyObject(this.nodeRow)) {
        this.$message.error('请选择数据');
        return;
      }
      this.$confirm('您确定要删除所选择的数据吗?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        deleteLinkTemplate({
          name: this.templateForm,
          btmName: this.nodeRow.label,
          linkFlag: false
        }).then(res => {
          if (res.data.code === 200) {
            this.$message.success(res.data.obj);
          }
        })
      }).catch(() => {
        this.$message({
          type: 'info',
          message: '已取消删除'
        });
      });
    }
  }
}
</script>
Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/queryDefine/index.vue
@@ -1,26 +1,13 @@
<template>
  <el-container>
    <el-aside>
      <basic-container>
        <div ref="TreeBox" style="height: calc(100vh - 144px);!important;">
        <div ref="TreeBox" style="height: calc(100vh - 154px);!important;">
          <div class="headerCon">
            <el-button icon="el-icon-plus" plain size="small" type="primary" @click="addClickHandler">创建
            </el-button>
            <el-button icon="el-icon-edit" plain size="small" type="primary" @click="editClickHandler">修改
            </el-button>
            <el-button icon="el-icon-delete" plain size="small" type="danger" @click="delClickHandler">删除
            </el-button>
            <el-button icon="el-icon-download" plain size="small" type="primary" @click="exportClickHandler">导出
            </el-button>
            <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="uploadClickHandler">导入
            </el-button>
            <el-button class="smallBtn" plain size="small" type="primary"
                       @click="checkViewClickHandler">查看使用范围
            </el-button>
            <avue-radio v-model="radioForm"  :dic="radioDic" style="margin: 10px 0 5px"></avue-radio>
          </div>
          <!-- å·¦ä¾§æ ‘         -->
          <div style="height:  calc(100vh - 280px);">
          <div style="height:  calc(100vh - 230px);">
            <avue-tree :data="treeData" :option="treeOption" @node-click="nodeClick">
          <span slot-scope="{ node, data }" class="el-tree-node__label">
           <span style="font-size: 15px">
@@ -36,15 +23,332 @@
    <el-main>
      <basic-container>
        æ¨¡æ¿åˆ—表:<avue-select v-model="templateForm" placeholder="请选择模板" type="tree" :dic="templateData" @change="changeTemp"></avue-select>
        <h3>查询属性</h3>
        <avue-crud  ref="queryCrud"
          :data="attrData" :option="attrOption" :table-loading="tableLoading" style="margin-top: 10px">
          <template slot="menuLeft" slot-scope="scope">
            <el-button icon="el-icon-plus" size="small" type="primary" @click="addHandler">创建</el-button>
            <el-button icon="el-icon-edit" plain size="small" type="primary" @click="editHandler">修改</el-button>
            <el-button icon="el-icon-delete" plain size="small" type="danger" @click="delHandler">删除</el-button>
          </template>
        </avue-crud>
      </basic-container>
    </el-main>
    <!-- æ–°å¢ž && ç¼–辑 -->
    <el-dialog
      v-dialogDrag
      :title="title === 'add' ? '创建' : '修改'"
      :visible.sync="visible"
      append-to-body="true"
      class="avue-dialog"
      width="75%"
      @close="addDialogClose">
      <el-form ref="form" :model="form" :rules="rules" label-width="95px">
        <el-form-item label="模板名称:" prop="name">
          <el-input v-model="form.name"></el-input>
        </el-form-item>
      </el-form>
      <avue-crud
        ref="dialogCrud"
        :data="attrData"
        :option="dialogAttrOption"
        @select="selectHandler">
      </avue-crud>
      <span slot="footer" class="dialog-footer">
         <el-button @click="addDialogClose">取 æ¶ˆ</el-button>
         <el-button type="primary" @click="addDialogSavaHandler">ç¡® å®š</el-button>
        </span>
    </el-dialog>
  </el-container>
</template>
<script>
import {getBizTypes, getAllAttributesByBtmId} from "@/api/modeling/businessType/api";
import {gridLink,getAllAttributeByLink} from "@/api/modeling/linkType/api";
import {gridTemplate,saveTemplate,updateTemplate,deleteTemplate} from "@/api/queryTemplate/queryDefine";
import basicOption from "@/util/basic-option";
import func from "@/util/func";
export default {
  name: "index"
  name: "index",
  data() {
    return{
      treeOption: {
        height: 'auto',
        defaultExpandAll: false,
        menu: false,
        addBtn: false,
        props: {
          label: 'label',
          value: 'oid',
          children: 'children'
        }
      },
      nodeRow:{},
      treeData: [],
      radioForm:0,
      radioDic:[{
        label:'业务类型',
        value:0
      },{
        label:'链接类型',
        value:1
      }],
      templateForm:'',
      templateData:[],
      form :{
        abNames:[],
        linkTypeName: "",//左侧选的链接类型名称
        btmName:'',//左侧选择的业务类型名称
        name:''
      },
      rules: {
        name: [
          {required: true, message: '请输入模板名称', trigger: 'blur'}
        ]
      },
      attrData: [],
      title: '',
      visible: false,
      tableLoading: false,
      attrOption: {
        ...basicOption,
        addBtn: false,
        editBtn: false,
        delBtn: false,
        selection: true,
        selectable:function (){
          return false;
        },
        menu:false,
        height: "auto",
        calcHeight: -40,
        tip:false,
        column: [{
            label: '字段编码',
            prop: 'id'
          },
          {
            label: '字段名称',
            prop: 'name'
          }]
      },
      selectionRow:[],
      dialogAttrOption: {
        ...basicOption,
        addBtn: false,
        editBtn: false,
        delBtn: false,
        selection: true,
        menu:false,
        height: "auto",
        calcHeight: 140,
        title:'查询属性',
        tip:false,
        header:false,
        column: [{
          label: '字段编码',
          prop: 'id'
        },
          {
            label: '字段名称',
            prop: 'name'
          }]
      },
      dialogSelectionRow:[]
    }
  },
  created() {
    this.getTreeList();
  },
  watch: {
    radioForm: {
      handler(newval) {
        const loading = this.$loading({});
        if (newval ==0) {
          getBizTypes().then(res => {
            const data = res.data.data.map(item => {
              item.label=item.attributes.id;
              return item;
            });
            this.treeData = data;
            loading.close();
          })
        }else {
          gridLink().then(res => {
            const data = res.data.data.map(item => {
              item.label=item.name;
              return item;
            });
            this.treeData =  data;
            loading.close();
          })
        }
      }
    },
  },
  methods: {
    //树表查询
    getTreeList() {
      const loading = this.$loading({});
      getBizTypes().then(res => {
        const data = res.data.data.map(item => {
          item.label=item.attributes.id;
          return item;
        });
        this.treeData = data;
        loading.close();
      })
    },
    // æ ‘点击
    nodeClick(row) {
      this.nodeRow = row;
      this.tableLoading = true;
      if(this.radioForm==1){
        //链接类型
        getAllAttributeByLink({name:row.label,linkFlag:true}).then(res => {
          this.attrData = res.data.data;
          this.getTemp();
        })
      }else {
        //业务类型
        getAllAttributesByBtmId({btmId:row.label,linkFlag:false}).then(res => {
          this.attrData = res.data.data;
          this.getTemp();
        })
      }
    },
    getTemp() {
      gridTemplate({btmName: this.nodeRow.label, linkFlag: this.radioForm == 1}).then(res => {
        const data = res.data.data.map(item => {
          item.label = item.name;
          item.value = item.name;
          return item;
        });
        this.templateData = data;
        if (res.data.data.length > 0) {
          this.templateForm = this.templateData[0].value;
        } else {
          this.templateForm = '';
          this.$refs.queryCrud.clearSelection();
        }
        this.tableLoading = false;
      })
    },
    selectHandler(selection, row){debugger;
      this.dialogSelectionRow=selection
    },
    changeTemp(data) {
      this.$refs.queryCrud.clearSelection();
      if (data.value != '') {
        let abNames = data.item.abNames.join(',').toLowerCase().split(',')
        this.selectionRow = this.attrData.filter(item => {
          return abNames.includes(item.id.toLowerCase())
        })
        this.$refs.queryCrud.toggleSelection(this.selectionRow);
      }
    },
    //创建
    addHandler(){
      if (func.isEmptyObject(this.nodeRow)) {
        this.$message.error('请选择要添加的节点');
        return;
      }
      this.title = 'add';
      this.visible = true;
      this.$nextTick(()=>{
        this.$refs.dialogCrud.clearSelection();
      });
    },
    //修改
    editHandler(){
      if (func.isEmptyObject(this.nodeRow)) {
        this.$message.error('请至少选择一条数据');
        return;
      }
      this.form.name = this.templateForm;
      this.title = 'edit';
      this.visible = true;
      this.$nextTick(()=>{
        this.dialogSelectionRow=this.selectionRow;
        this.$refs.dialogCrud.clearSelection();
        this.$refs.dialogCrud.toggleSelection(this.dialogSelectionRow );
      });
    },
    // æ–°å¢žç¼–辑保存
    addDialogSavaHandler() {
      this.$refs.form.validate((valid) => {
        const saveFunction = this.title === 'add' ? saveTemplate : updateTemplate;
        if (valid) {
          if(this.radioForm == 0){
            this.form.btmName=this.nodeRow.label;
            delete this.form.linkTypeName
          }else {
            this.form.linkTypeName=this.nodeRow.label;
            delete this.form.btmName
          }
          let abNames=this.dialogSelectionRow.map(item => {
            return item.id
          })
          if(abNames.length==0){
            this.$message.error('请选择查询属性');
            return false;
          }
          this.form.abNames=abNames;
          saveFunction(this.form).then(res => {
            if (res.data.code === 200) {
              this.$message.success(res.data.obj);
              if(this.title === 'edit'){
                this.templateForm='';
              }
              this.getTemp();
              this.addDialogClose();
            }
          })
        } else {
          return false;
        }
      });
    },
    // æ–°å¢žç¼–辑对话框取消
    addDialogClose() {
      this.form = {
        abNames:[],
        linkTypeName: "",//左侧选的链接类型名称
        btmName:'',//左侧选择的业务类型名称
        name:''
      };
      this.$refs.form.clearValidate();
      this.visible = false;
    },
    //删除
    delHandler(){
      if (func.isEmptyObject(this.nodeRow)) {
        this.$message.error('请选择数据');
        return;
      }
      this.$confirm('您确定要删除所选择的数据吗?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        deleteTemplate({name:this.templateForm,btmName: this.nodeRow.label, linkFlag: this.radioForm == 1}).then(res => {
          if (res.data.code === 200) {
            this.$message.success(res.data.obj);
            this.getTemp();
          }
        })
      }).catch(() => {
        this.$message({
          type: 'info',
          message: '已取消删除'
        });
      });
    }
  }
}
</script>