lihang
2023-05-06 32af0827237f17f9219a71878314fb22cc4fca24
Merge branch 'master' of http://dev.vci-tech.com:1065/r/ubcs
已修改60个文件
已删除7个文件
已重命名8个文件
已复制1个文件
已添加19个文件
20528 ■■■■ 文件已修改
Source/UBCS-WEB/package-lock.json 15377 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/code/code.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/vue.config.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/pom.xml 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/constant/LauncherConstant.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowManagerController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops/ubcs-flow/src/test/java/com/vci/flow/test/launch/LauncherTestServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/JobAdminApplication.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops/ubcs-xxljob/src/main/java/com/vci/ubcs/job/executor/JobApplication.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/pom.xml 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeTempbuttonDTO.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeTempphaseDTO.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeButton.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClassifyProcessTemp.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClassifyTemplateAttr.java 357 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClassifyTemplateButton.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClassifyValue.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodePhaseAttr.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeTemplatePhase.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeButtonVO.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodePhaseattrVO.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeTempbuttonVO.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeTempphaseVO.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyProcessTempVO.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyTemplateButtonVO.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeTemplatePhaseVO.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/MybatisParameterUtils.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/util/BeanUtil.java 175 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/util/ClassUtil.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/util/VciBaseUtil.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/wrapper/VciQueryWrapperForDO.java 284 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/CodeApplication.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/FrameWorkLangCodeConstant.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/MdmBtmTypeConstant.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeAllCodeController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeButtonController.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyProcessTempController.java 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyTemplateButtonController.java 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodePhaseattrController.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeTempbuttonController.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeTemplatePhaseController.java 160 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeTempphaseController.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/NewAppConstantEnum.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeButtonClient.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodePhaseattrClient.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeTempbuttonClient.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeTempphaseClient.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeButtonClient.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodePhaseattrClient.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeTempbuttonClient.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeTempphaseClient.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeButtonMapper.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyProcessTempMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyTemplateAttrMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyTemplateButtonMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClstemplateMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodePhaseAttrMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodePhaseattrMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeTemplatePhaseMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CommonsMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeButtonService.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyProcessTempService.java 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyService.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyTemplateAttrService.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyValueService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClstemplateService.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodePhaseattrService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeTempbuttonService.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeTempphaseService.java 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeButtonServiceImpl.java 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyProcessTempServiceImpl.java 365 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateAttrServiceImpl.java 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyValueServiceImpl.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClstemplateServiceImpl.java 619 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeFixedValueServiceImpl.java 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodePhaseattrServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeTempbuttonServiceImpl.java 335 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeTempphaseServiceImpl.java 467 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeBasicSecWrapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeButtonWrapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodePhaseattrWrapper.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeTempbuttonWrapper.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeTempphaseWrapper.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeButtonMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeClassifyProcessTempMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeClassifyTemplateAttrMapper.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeClassifyTemplateButtonMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeClstemplateMapper.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodePhaseAttrMapper.xml 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodePhaseattrMapper.xml 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeTemplatePhaseMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CommonsMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/package-lock.json
ÎļþÌ«´ó
Source/UBCS-WEB/src/views/code/code.vue
@@ -690,7 +690,7 @@
        
      </el-dialog>
        <!-- ç¬¬äºŒå±‚对话框,属性码段,公式编辑框弹窗组件 -->
      <!-- ç¬¬äºŒå±‚对话框,属性码段,公式编辑框弹窗组件 -->
      <formula-editor ref="formulaEditor" 
        @updateFormulaContent="updateFormulaContent" 
        :thisSceneTableData="thisSceneTableData"
Source/UBCS-WEB/vue.config.js
@@ -26,8 +26,8 @@
    proxy: {
      '/api': {
        //本地服务接口地址
        target: 'http://localhost:37000',
        //target: 'http://dev.vci-tech.com:37000',
        //target: 'http://localhost:37000',
        target: 'http://dev.vci-tech.com:37000',
        //远程演示服务地址,可用于直接启动项目
        //target: 'https://saber.bladex.vip/api',
        ws: true,
Source/UBCS/pom.xml
@@ -87,6 +87,17 @@
        </dependency>
    </dependencies>
    <!--  jar部署到私服地址  -->
    <distributionManagement>
        <repository>
            <id>rdc-releases</id>
            <url>http://dev.yunkeruida.top:9000/repository/maven-releases/</url>
        </repository>
        <snapshotRepository>
            <id>rdc-snapshots</id>
            <url>http://dev.yunkeruida.top:9000/repository/maven-snapshots/</url>
        </snapshotRepository>
    </distributionManagement>
    <build>
        <finalName>${project.name}</finalName>
        <resources>
@@ -173,10 +184,11 @@
                    <skip>true</skip>
                </configuration>
            </plugin>
            <plugin>
            <!--springboot打包插件会去找每个模块下面的启动类,因为当前有不需要启动类的需求,所以注释掉,使用mvn的打包插件-->
            <!--<plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            </plugin>-->
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>${maven.plugin.version}</version>
Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/constant/LauncherConstant.java
@@ -40,8 +40,8 @@
    /**
     * nacos dev åœ°å€
     */
    //String NACOS_DEV_ADDR = "dev.vci-tech.com:38848";
    String NACOS_DEV_ADDR = "127.0.0.1:8848";
    String NACOS_DEV_ADDR = "dev.vci-tech.com:38848";
    //String NACOS_DEV_ADDR = "192.168.93.185:38848";
    /**
     * nacos prod åœ°å€
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowManagerController.java
@@ -63,7 +63,6 @@
        return R.data(pages);
    }
    /**
     * å˜æ›´æµç¨‹çŠ¶æ€
     *
Source/UBCS/ubcs-ops/ubcs-flow/src/test/java/com/vci/flow/test/launch/LauncherTestServiceImpl.java
@@ -16,6 +16,7 @@
 */
package com.vci.flow.test.launch;
import com.vci.ubcs.common.constant.LauncherConstant;
import org.springblade.core.auto.service.AutoService;
import org.springblade.core.launch.service.LauncherService;
import org.springblade.core.launch.utils.PropsUtil;
Source/UBCS/ubcs-ops/ubcs-xxljob-admin/src/main/java/com/vci/ubcs/xxl/job/admin/JobAdminApplication.java
@@ -1,5 +1,6 @@
package com.vci.ubcs.xxl.job.admin;
import com.vci.ubcs.common.constant.LauncherConstant;
import org.springblade.core.cloud.client.UbcsCloudApplication;
import org.springblade.core.launch.UbcsApplication;
Source/UBCS/ubcs-ops/ubcs-xxljob/src/main/java/com/vci/ubcs/job/executor/JobApplication.java
@@ -16,6 +16,7 @@
 */
package com.vci.ubcs.job.executor;
import com.vci.ubcs.common.constant.LauncherConstant;
import org.springblade.core.cloud.client.UbcsCloudApplication;
import org.springblade.core.launch.UbcsApplication;
Source/UBCS/ubcs-service-api/ubcs-code-api/pom.xml
@@ -13,16 +13,16 @@
    <version>${bladex.project.version}</version>
    <dependencies>
<!--        <dependency>-->
<!--            <groupId>com.thoughtworks.xstream</groupId>-->
<!--            <artifactId>xstream</artifactId>-->
<!--        </dependency>-->
<!--        <dependency>-->
<!--            <groupId>com.vci</groupId>-->
<!--            <artifactId>vci-starter-poi</artifactId>-->
<!--            <version>1.0-SNAPSHOT</version>-->
<!--            <scope>compile</scope>-->
<!--        </dependency>-->
        <!--<dependency>
            <groupId>com.thoughtworks.xstream</groupId>
            <artifactId>xstream</artifactId>
        </dependency>
        <dependency>
            <groupId>com.vci</groupId>
            <artifactId>vci-starter-poi</artifactId>
            <version>1.0-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>-->
        <!--<dependency>
            <groupId>com.vci</groupId>
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeTempbuttonDTO.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeTempphaseDTO.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeButton.java
ÎļþÃû´Ó Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeButtonEntity.java ÐÞ¸Ä
@@ -38,7 +38,7 @@
@TableName("PL_CODE_BUTTON")
@ApiModel(value = "codebutton对象", description = "模板扩展池")
//@EqualsAndHashCode(callSuper = false)
public class CodeButtonEntity  implements Serializable {
public class CodeButton implements Serializable {
    @JsonSerialize(
        using = ToStringSerializer.class
    )
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClassifyProcessTemp.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,71 @@
package com.vci.ubcs.code.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
import com.vci.ubcs.starter.revision.model.BaseModel;
import com.vci.ubcs.starter.web.annotation.VciUseEnum;
import com.vci.ubcs.starter.web.constant.MdmEnumIdConstant;
import io.swagger.annotations.ApiModel;
import lombok.Data;
/**
 * åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿
 * @author ludc
 * @date 2023/5/5
 */
@Data
@TableName("PL_CODE_CLSFLOWTEMP")
@ApiModel(value = "CodeTempphase对象", description = "分类使用的流程模板")
public class CodeClassifyProcessTemp extends BaseModel {
    /**
     * åºåˆ—化
     */
    private static final long serialVersionUID = 6606901931032525995L;
    /**
     * ä¸»é¢˜åº“分类主键
     */
    //@Column(nullable = false,columnDefinition = "主题库分类主键")
    //@VciUseRefer(MdmBtmTypeConstant.CODE_CLASSIFY)
    private String codeClassifyOid;
    /**
     * æ‰€å±žæ¨¡æ¿
     */
    //@Column(nullable = false,columnDefinition = "所属模板")
    //@VciUseRefer(MdmBtmTypeConstant.CODE_CLASSIFY_TEMPLATE)
    private String classifyTemplateOid;
    /**
     * æµç¨‹æ¨¡æ¿ç”¨é€”
     */
    //@Column(columnDefinition = "流程模板用途",nullable = false)
    @VciUseEnum(value = MdmEnumIdConstant.CODE_CLASSIFY_PROCESS_USE,showTextField = "codeProcessUseText")
    private String codeProcessUse;
    /**
     * æµç¨‹æ¨¡æ¿ç”¨é€”显示名称
     */
    //@Transient
    private String codeProcessUseText;
    /**
     * æµç¨‹æ¨¡æ¿çš„版本
     */
    //@Column(nullable = false)
    private String processVersion;
    /**
     * å­˜å‚¨å…³è”的模板属性编号
     */
    //@Column(columnDefinition = "显示在流程中的属性")
    private String codeTempAttrOidArr;
    /**
     * å­˜å‚¨å…³è”的模板属性名称
     */
    //@Column(columnDefinition = "显示在流程中的属性名称")
    private String codeTempAttrOidArrName;
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClassifyTemplateAttr.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,357 @@
package com.vci.ubcs.code.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.vci.ubcs.starter.revision.model.BaseModel;
import com.vci.ubcs.starter.web.annotation.VciFieldType;
import com.vci.ubcs.starter.web.enumpck.VciFieldTypeEnum;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * ä¸»é¢˜åº“分类的模板属性
 * @author ludc
 * @date 2022-1-17
 */
//@VciBtmType(name = MdmBtmTypeConstant.CODE_CLASSIFY_TEMPLATE_ATTR,text = "主题库分类的模板属性",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
@Data
@TableName("PL_CODE_CLSTEMPATTR")
@ApiModel(value = "CodeTempphase对象", description = "编码库定义-模板阶段")
@EqualsAndHashCode(callSuper = true)
public class CodeClassifyTemplateAttr extends BaseModel {
    /**
     * åºåˆ—化
     */
    private static final long serialVersionUID = -8685210169495428202L;
    /**
     * æ‰€å±žæ¨¡æ¿
     */
    //@Column(nullable = false,columnDefinition = "所属模板")
    //@VciUseRefer(MdmBtmTypeConstant.CODE_CLASSIFY_TEMPLATE)
    private String classifyTemplateOid;
    /**
     * æ‰€å±žæ¨¡æ¿åç§°
     */
    //@Transient(referColumn = "classifyTemplateOid.name")
    private String classifyTemplateOidName;
    /**
     * å±žæ€§çš„类型
     */
    //@Column(columnDefinition = "属性的类型",nullable = false)
    private String attributeDataType;
    /**
     * æ˜¯å¦å…³é”®å±žæ€§
     */
    //@Column(columnDefinition = "是否关键属性",defaultValue = "false")
    @VciFieldType(VciFieldTypeEnum.VTBoolean)
    private String keyAttrFlag;
    /**
     * æ˜¯å¦å¿«é€ŸæŸ¥è¯¢å±žæ€§
     */
    //@Column(columnDefinition = "是否快速查询属性",defaultValue = "false")
    @VciFieldType(VciFieldTypeEnum.VTBoolean)
    private String queryAttrFlag;
    /**
     * æ˜¯å¦é«˜çº§æŸ¥è¯¢å±žæ€§
     */
    //@Column(columnDefinition = "是否高级查询属性",defaultValue = "false")
    @VciFieldType(VciFieldTypeEnum.VTBoolean)
    private String seniorQueryAttrFlag;
    /**
     * ç›¸ä¼¼æŸ¥é‡å±žæ€§
     */
    //@Column(columnDefinition = "相似查重属性",defaultValue = "false")
    @VciFieldType(VciFieldTypeEnum.VTBoolean)
    private String sameRepeatAttrFlag;
    /**
     * æ˜¯å¦æŽ’序
     */
    //@Column(columnDefinition = "是否排序",defaultValue = "true")
    @VciFieldType(VciFieldTypeEnum.VTBoolean)
    private String sortAttrFlag;
    /**
     * æ˜¯å¦ç”ŸæˆäºŒç»´ç 
     */
    //@Column(columnDefinition = "是否生成二维码",defaultValue = "false")
    @VciFieldType(VciFieldTypeEnum.VTBoolean)
    private String qrcodeFlag;
    /**
     * æ˜¯å¦ç”Ÿæˆæ¡å½¢ç 
     */
    //@Column(columnDefinition = "是否生成一维码",defaultValue = "false")
    @VciFieldType(VciFieldTypeEnum.VTBoolean)
    private String barcodeFlag;
    /**
     * ç»„合规则
     */
    //@Column(columnDefinition = "组合规则",length = 4000)
    private String componentRule;
    /**
     * éªŒè¯è§„则
     */
    //@Column(columnDefinition = "验证规则",length = 4000)
    private String verifyRule;
    /**
     * åˆ†ç±»æ³¨å…¥å±‚级
     */
    //@Column(columnDefinition = "分类注入层级",defaultValue = "none")
    private String classifyInvokeLevel;
    /**
     * åˆ†ç±»æ³¨å…¥çš„属性
     */
    //@Column(columnDefinition = "分类注入的属性英文名称",length = 32)
    private String classifyInvokeAttr;
    /**
     * åˆ†ç±»æ³¨å…¥çš„属性中文名称
     */
    //@Column(columnDefinition = "分类注入的属性中文名称",length = 200)
    private String classifyInvokeAttrName;
    /**
     * åˆ†ç±»æ³¨å…¥æ˜¯å¦å¯ä»¥ç¼–辑
     */
    //@Column(columnDefinition = "分类注入是否可以编辑",defaultValue = "false")
    @VciFieldType(VciFieldTypeEnum.VTBoolean)
    private String classifyInvokeEditFlag;
    /**
     * å±žæ€§æŽ’序号
     */
    //@Column(columnDefinition = "属性排序号")
    private Integer orderNum;
    /**
     * è¡¨å•里是否显示
     */
    //@Column(columnDefinition = "表单里是否显示",defaultValue = "true")
    @VciFieldType(VciFieldTypeEnum.VTBoolean)
    private String formDisplayFlag;
    /**
     * åˆ—表里是否显示
     */
    //@Column(columnDefinition = "列表里是否显示",defaultValue = "true")
    @VciFieldType(VciFieldTypeEnum.VTBoolean)
    private String tableDisplayFlag;
    /**
     * æ‰€å±žå±žæ€§åˆ†ç»„
     */
    //@Column(columnDefinition = "所属属性分组")
    private String attributeGroup;
    /**
     * ä½¿ç”¨æžšä¸¾è‹±æ–‡ç¼–号
     */
    //@Column(columnDefinition = "使用枚举英文编号")
    private String enumId;
    /**
     * ä½¿ç”¨æžšä¸¾ä¸­æ–‡åç§°
     */
    //@Column(columnDefinition = "使用枚举中文名称")
    private String enumName;
    /**
     * æžšä¸¾æ˜¯å¦å¯ä»¥ç¼–辑
     */
    //@Column(columnDefinition = "枚举是否可以编辑")
    private String enumEditFlag;
    /**
     * å‚照业务类型
     */
    //@Column(columnDefinition = "参照的业务类型英文名称")
    private String referBtmId;
    /**
     * å‚照的业务类型中文名称
     */
    //@Column(columnDefinition = "参照的业务类型中文名称")
    private String referBtmName;
    /**
     * å‚照的窗口配置
     */
    //@Column(columnDefinition = "参照窗口配置",length = 4000)
    private String referConfig;
    /**
     * æ˜¯å¦å¿…输
     */
    //@Column(columnDefinition = "是否必输",defaultValue = "false")
    @VciFieldType(VciFieldTypeEnum.VTBoolean)
    private String requireFlag;
    /**
     * æ˜¯å¦åªè¯»
     */
    //@Column(columnDefinition = "是否只读",defaultValue = "false")
    @VciFieldType(VciFieldTypeEnum.VTBoolean)
    private String readOnlyFlag;
    /**
     * å±žæ€§æŽ§åˆ¶è¾“入的长度
     */
    //@Column(columnDefinition = "属性控制输入的长度",defaultValue = "254")
    private Integer controlLength = 254;
    /**
     * è¡¨å•上显示的样式
     */
    //@Column(length = 1000,columnDefinition = "表单里显示的样式")
    private String formDisplayStyle;
    /**
     * è¡¨æ ¼é‡Œæ˜¾ç¤ºçš„æ ·å¼
     */
    //@Column(length = 1000,columnDefinition = "表格里显示的样式")
    private String tableDisplayStyle;
    /**
     * è¡¨å•中超链接
     */
    //@Column(columnDefinition = "表单中超链接内容",length = 1000)
    private String formHref;
    /**
     * è¡¨æ ¼ä¸­è¶…链接
     */
    //@Column(columnDefinition = "表格中超链接内容",length = 1000)
    private String tableHref;
    /**
     * å°æ•°ç²¾åº¦
     */
    //@Column(columnDefinition = "小数精度")
    private Integer precisionLength;
    /**
     * å°æ•°åˆ»åº¦
     */
    //@Column(columnDefinition = "小数刻度")
    private Integer scaleLength;
    /**
     * å–值范围
     */
    //@Column(columnDefinition = "取值范围",length = 1000)
    private String valueArea;
    /**
     * æ—¶é—´æ ¼å¼
     */
    //@Column(columnDefinition = "时间格式")
    private String codeDateFormat;
    /**
     * è¡¨æ ¼ä¸­æ˜¾ç¤ºçš„js
     */
    //@Column(columnDefinition = "表格里显示调用的js",length = 254)
    private String tableDisplayJs;
    /**
     * æ˜¯å¦æ˜¾ç¤ºå¤šè¡Œæ–‡æœ¬
     */
    //@Column(columnDefinition = "是否显示多行文本",defaultValue = "false")
    @VciFieldType(VciFieldTypeEnum.VTBoolean)
    private String textAreaFlag;
    /**
     * æ˜¯å¦ä¸ºå›¾ç‰‡ç­‰å…ƒç´ 
     */
    //@Column(columnDefinition = "预览图",defaultValue = "false")
    @VciFieldType(VciFieldTypeEnum.VTBoolean)
    private String imageFlag;
    /**
     * é»˜è®¤å€¼
     */
    //@Column(columnDefinition = "默认值")
    private String defaultValue;
    /**
     * å‰ç¼€
     */
    //@Column(columnDefinition = "前缀")
    private String prefixValue;
    /**
     * åŽç¼€
     */
    //@Column(columnDefinition = "后缀")
    private String suffixValue;
    /**
     * é€‰æ‹©æ•°æ®æ—¶è¿‡æ»¤çš„属性
     */
    //@Column(columnDefinition = "选择数据时过滤的属性")
    private String filterSourceAttr;
    /**
     * é€‰æ‹©æ•°æ®æ—¶è¿‡æ»¤çš„属性名称
     */
    //@Column(columnDefinition = "选择数据时过滤的属性名称")
    private String filterSourceAttrName;
    /**
     * ä½¿ç”¨æžšä¸¾æ³¨å…¥çš„字符串格式
     */
    //@Column(length = 4000,columnDefinition = "枚举注入的内容")
    private String enumString;
    /**
     * å±žæ€§çš„宽度
     */
    //@Column(columnDefinition = "属性列表中宽度")
    private Integer attrTableWidth;
    /**
     * è¯´æ˜Ž
     */
    //@Column(columnDefinition = "说明")
    private String explain;
    /**
     * é€‰æ‹©åº“标识
     */
    //@Column(columnDefinition = "选择库标识")
    private String libraryIdentification;
    /**
     * çº§è”属性编号
     */
    //@Column(columnDefinition = "级联属性编号")
    private String parentCode;
    /**
     * çº§è”属性名称
     */
    //@Column(columnDefinition = "级联属性名称")
    private String parentName;
    /**
     * çº§è”查询属性
     */
    //Column(columnDefinition = "级联查询属性")
    private String parentQueryAttr;
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClassifyTemplateButton.java
ÎļþÃû´Ó Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeTempbuttonEntity.java ÐÞ¸Ä
@@ -33,8 +33,7 @@
@TableName("PL_CODE_TEMPBUTTON")
@ApiModel(value = "CodeTempbutton对象", description = "编码库定义-模板按钮扩展")
@EqualsAndHashCode(callSuper = true)
public class CodeTempbuttonEntity extends BaseModel {
public class CodeClassifyTemplateButton extends BaseModel {
    /**
     *
@@ -55,6 +54,6 @@
     *
     */
    @ApiModelProperty(value = "")
    private Short ordernum;
    private Integer orderNum;
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClassifyValue.java
@@ -9,8 +9,8 @@
/**
 * åˆ†ç±»ç æ®µçš„码值
 * ç›¸å½“于级联的下拉框
 * @author weidy
 * @date 2022-1-18
 * @author ludc
 * @date 2023/4/5
 */
@Data
@TableName("PL_CODE_CLASSIFYVALUE")
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodePhaseAttr.java
ÎļþÃû´Ó Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodePhaseattrEntity.java ÐÞ¸Ä
@@ -33,14 +33,14 @@
@TableName("PL_CODE_PHASEATTR")
@ApiModel(value = "CodePhaseattr对象", description = "编码库定义-模板阶段-属性")
@EqualsAndHashCode(callSuper = true)
public class CodePhaseattrEntity extends BaseModel {
public class CodePhaseAttr extends BaseModel {
    /**
     *
     */
    @ApiModelProperty(value = "")
    private String codephaseoid;
    private String codePhaseOid;
    /**
     *
     */
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeTemplatePhase.java
ÎļþÃû´Ó Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeTempphaseEntity.java ÐÞ¸Ä
@@ -33,10 +33,10 @@
@TableName("PL_CODE_TEMPPHASE")
@ApiModel(value = "CodeTempphase对象", description = "编码库定义-模板阶段")
@EqualsAndHashCode(callSuper = true)
public class CodeTempphaseEntity extends BaseModel {
public class CodeTemplatePhase extends BaseModel {
    /**
     *
     */
    @ApiModelProperty(value = "")
    private String codeclassifytemplateoid;
    private String codeClassifyTemplateOid;
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeButtonVO.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodePhaseattrVO.java
@@ -16,7 +16,7 @@
 */
package com.vci.ubcs.code.vo;
import com.vci.ubcs.code.entity.CodePhaseattrEntity;
import com.vci.ubcs.code.entity.CodePhaseAttr;
import org.springblade.core.tool.node.INode;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -29,7 +29,7 @@
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class CodePhaseattrVO extends CodePhaseattrEntity {
public class CodePhaseattrVO extends CodePhaseAttr {
    private static final long serialVersionUID = 1L;
}
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeTempbuttonVO.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeTempphaseVO.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyProcessTempVO.java
@@ -1,5 +1,6 @@
package com.vci.ubcs.code.vo.pagemodel;
import com.vci.ubcs.code.entity.CodeClassifyProcessTemp;
import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
import java.util.List;
@@ -10,7 +11,7 @@
 * @author weidy
 * @date 2022-01-24
 */
public class CodeClassifyProcessTempVO extends BaseModelVO {
public class CodeClassifyProcessTempVO extends CodeClassifyProcessTemp {
    /**
     * ç¦æ­¢ä¿®æ”¹è¿™ä¸ªå€¼
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyTemplateButtonVO.java
@@ -1,6 +1,6 @@
package com.vci.ubcs.code.vo.pagemodel;
import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
import com.vci.ubcs.code.entity.CodeClassifyTemplateButton;
/**
 * ä¸»é¢˜åº“里模板包含的按钮显示对象
@@ -8,7 +8,7 @@
 * @author weidy
 * @date 2022-01-24
 */
public class CodeClassifyTemplateButtonVO extends BaseModelVO {
public class CodeClassifyTemplateButtonVO extends CodeClassifyTemplateButton {
    /**
     * ç¦æ­¢ä¿®æ”¹è¿™ä¸ªå€¼
@@ -62,6 +62,7 @@
    /**
     * èŽ·å– æ‰€å±žæ¨¡æ¿
     */
    @Override
    public String getClassifytemplateoid (){
        return classifytemplateoid;
    }
@@ -69,6 +70,7 @@
    /**
    * è®¾ç½® æ‰€å±žæ¨¡æ¿
    */
    @Override
    public void setClassifytemplateoid (String classifytemplateoid){
        this.classifytemplateoid = classifytemplateoid;
    }
@@ -88,6 +90,7 @@
    /**
     * èŽ·å– æŒ‰é’®çš„主键
     */
    @Override
    public String getClassifybuttonoid (){
        return classifybuttonoid;
    }
@@ -95,6 +98,7 @@
    /**
    * è®¾ç½® æŒ‰é’®çš„主键
    */
    @Override
    public void setClassifybuttonoid (String classifybuttonoid){
        this.classifybuttonoid = classifybuttonoid;
    }
@@ -114,6 +118,7 @@
    /**
     * èŽ·å– æŒ‰é’®ç”¨é€”
     */
    @Override
    public String getButtonuse (){
        return buttonuse;
    }
@@ -121,6 +126,7 @@
    /**
    * è®¾ç½® æŒ‰é’®ç”¨é€”
    */
    @Override
    public void setButtonuse (String buttonuse){
        this.buttonuse = buttonuse;
    }
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeTemplatePhaseVO.java
@@ -1,5 +1,6 @@
package com.vci.ubcs.code.vo.pagemodel;
import com.vci.ubcs.code.entity.CodeTemplatePhase;
import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
/**
@@ -8,7 +9,7 @@
 * @author weidy
 * @date 2022-01-24
 */
public class CodeTemplatePhaseVO extends BaseModelVO {
public class CodeTemplatePhaseVO extends CodeTemplatePhase {
    /**
     * ç¦æ­¢ä¿®æ”¹è¿™ä¸ªå€¼
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/MybatisParameterUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,72 @@
package com.vci.ubcs.starter.util;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.vci.ubcs.starter.exception.VciBaseException;
import org.springframework.util.ObjectUtils;
import java.util.ArrayList;
import java.util.List;
/**
 * in å‚数截取,返回wrapper
 *
 * @author ludc
 * @date 2023/5/5
 */
public class MybatisParameterUtils {
    public static <T, F> LambdaQueryWrapper<T> cutInParameter(LambdaQueryWrapper<T> wrapper, SFunction<T, ?> column, List<F> coll) throws VciBaseException {
        List<List<F>> newList = splitList(coll, 900);
        if (ObjectUtils.isEmpty(newList)) {
            throw new VciBaseException("参数错误");
        } else if (newList.size() == 1) {
            wrapper.in(column, newList.get(0));
            return wrapper;
        }
        wrapper.and(i -> {
            i.in(column, newList.get(0));
            newList.remove(0);
            for (List<F> objects : newList) {
                i.or().in(column, objects);
            }
        });
        return wrapper;
    }
    public static <T, F> LambdaQueryWrapper<T> cutNotInParameter(LambdaQueryWrapper<T> wrapper, SFunction<T, ?> column, List<F> coll) throws VciBaseException {
        List<List<F>> newList = splitList(coll, 900);
        if (ObjectUtils.isEmpty(newList)) {
            throw new VciBaseException("参数错误");
        } else if (newList.size() == 1) {
            wrapper.notIn(column, newList.get(0));
            return wrapper;
        }
        wrapper.and(i -> {
            i.in(column, newList.get(0));
            newList.remove(0);
            for (List<F> objects : newList) {
                i.or().notIn(column, objects);
            }
        });
        return wrapper;
    }
    public static <F> List<List<F>> splitList(List<F> list, int groupSize) {
        int length = list.size();
        // è®¡ç®—可以分成多少组
        int num = (length + groupSize - 1) / groupSize;
        List<List<F>> newList = new ArrayList<>(num);
        for (int i = 0; i < num; i++) {
            // å¼€å§‹ä½ç½®
            int fromIndex = i * groupSize;
            // ç»“束位置
            int toIndex = Math.min((i + 1) * groupSize, length);
            newList.add(list.subList(fromIndex, toIndex));
        }
        return newList;
    }
}
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/util/BeanUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,175 @@
package com.vci.ubcs.starter.web.util;
import com.vci.ubcs.starter.web.toolmodel.DateConverter;
import org.springframework.cglib.beans.BeanCopier;
import org.springframework.cglib.core.Converter;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
public class BeanUtil {
    private static final ConcurrentMap<String, BeanCopier> beanCopierMap = new ConcurrentHashMap();
    public BeanUtil() {
    }
    public static BeanCopier getBeanCopier(Class<?> source, Class<?> target, boolean useConverter) {
        String beanCopierKey = generateBeanKey(source, target);
        if (beanCopierMap.containsKey(beanCopierKey)) {
            return (BeanCopier)beanCopierMap.get(beanCopierKey);
        } else {
            BeanCopier beanCopier = BeanCopier.create(source, target, useConverter);
            beanCopierMap.putIfAbsent(beanCopierKey, beanCopier);
            return (BeanCopier)beanCopierMap.get(beanCopierKey);
        }
    }
    public static String generateBeanKey(Class<?> source, Class<?> target) {
        return source.getName() + "@" + target.getName();
    }
    public static void convert(Object source, Object target, boolean useConvert) {
        if (source != null && target != null) {
            BeanCopier beanCopier = getBeanCopier(source.getClass(), target.getClass(), useConvert);
            beanCopier.copy(source, target, useConvert ? new DeepCopyConverter(target) : null);
        }
    }
    public static void convert(Object source, Object target) {
        convert(source, target, true);
    }
    public static class DeepCopyConverter implements Converter {
        private Object target;
        public DeepCopyConverter(Object target) {
            this.target = target;
        }
        @Override
        public Object convert(Object value, Class targetClazz, Object methodName) {
            if (value instanceof List) {
                List values = (List)value;
                List retList = new ArrayList(values.size());
                this.copyForCollection(values, retList, methodName);
                return retList;
            } else {
                if (value instanceof Set) {
                    Set values = (Set)value;
                    Set retSet = new HashSet();
                    this.copyForCollection(values, retSet, methodName);
                } else if (value instanceof Vector) {
                    Vector values = (Vector)value;
                    Vector retVector = new Vector();
                    this.copyForCollection(values, retVector, methodName);
                } else if (value instanceof Map) {
                    Map values = (Map)value;
                    Map retMap = new HashMap();
                    Iterator var6 = values.keySet().iterator();
                    while(var6.hasNext()) {
                        Object key = var6.next();
                        Object mapValue = values.get(key);
                        String tempFieldName = methodName.toString().replace("set", "");
                        String fieldName = tempFieldName.substring(0, 1).toLowerCase() + tempFieldName.substring(1);
                        Class clazz = ClassUtil.getElementType(this.target.getClass(), fieldName);
                        Object targetAttr = null;
                        try {
                            targetAttr = clazz.newInstance();
                        } catch (Throwable var15) {
                        }
                        BeanUtil.convert(mapValue, targetAttr);
                        retMap.put(key, targetAttr);
                    }
                } else if (!ClassUtil.isPrimitive(targetClazz)) {
                    Object targetAttr = null;
                    try {
                        targetAttr = targetClazz.newInstance();
                    } catch (Throwable var14) {
                    }
                    BeanUtil.convert(value, targetAttr);
                    return targetAttr;
                }
                if (value instanceof Boolean && targetClazz.equals(String.class)) {
                    return String.valueOf(value);
                } else if (!(value instanceof String) || !targetClazz.equals(Boolean.class) && !targetClazz.equals(Boolean.TYPE)) {
                    if (value instanceof Date && targetClazz.equals(String.class)) {
                        return VciDateUtil.date2Str((Date)value, "yyyy-MM-dd HH:mm:ss.SSS");
                    } else if (value instanceof String && targetClazz.equals(Date.class)) {
                        DateConverter dateConverter = new DateConverter();
                        dateConverter.setAsText((String)value);
                        return dateConverter.getValue();
                    } else {
                        return value;
                    }
                } else {
                    return "true".equalsIgnoreCase((String)value) ? true : false;
                }
            }
        }
        private void copyForCollection(Collection<?> sourceCollection, Collection targetCollection, Object methodName) {
            Iterator var4 = sourceCollection.iterator();
            while(true) {
                while(var4.hasNext()) {
                    Object source = var4.next();
                    if (source instanceof Collection) {
                        List<Object> targetValues = new ArrayList();
                        this.copyForCollection((Collection)source, targetValues, methodName);
                        targetCollection.add(targetValues);
                    } else {
                        String tempFieldName;
                        String fieldName;
                        Class clazz;
                        Object targetAttr;
                        if (!(source instanceof Map)) {
                            tempFieldName = methodName.toString().replace("set", "");
                            fieldName = tempFieldName.substring(0, 1).toLowerCase() + tempFieldName.substring(1);
                            clazz = ClassUtil.getElementType(this.target.getClass(), fieldName);
                            targetAttr = null;
                            try {
                                targetAttr = clazz.newInstance();
                            } catch (Throwable var13) {
                            }
                            BeanUtil.convert(source, targetAttr);
                            targetCollection.add(targetAttr);
                        } else {
                            tempFieldName = methodName.toString().replace("set", "");
                            fieldName = tempFieldName.substring(0, 1).toLowerCase() + tempFieldName.substring(1);
                            clazz = ClassUtil.getElementType(this.target.getClass(), fieldName);
                            targetAttr = null;
                            try {
                                targetAttr = clazz.newInstance();
                            } catch (Throwable var14) {
                            }
                            Map map = (Map)source;
                            Iterator var11 = map.keySet().iterator();
                            while(var11.hasNext()) {
                                Object key = var11.next();
                                VciBaseUtil.setValueForField(key.toString(), targetAttr, VciBaseUtil.getStringValueFromObject(map.get(key)));
                            }
                            targetCollection.add(targetAttr);
                        }
                    }
                }
                return;
            }
        }
    }
}
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/util/ClassUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
package com.vci.ubcs.starter.web.util;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class ClassUtil {
    private static final Map<Class<?>, Class<?>> primitiveMap = new HashMap(9);
    public ClassUtil() {
    }
    public static boolean isPrimitive(Class<?> clazz) {
        return primitiveMap.containsKey(clazz) ? true : clazz.isPrimitive();
    }
    public static Class<?> getElementType(Class<?> tartget, String fieldName) {
        Class<?> elementTypeClass = null;
        try {
            Type type = VciBaseUtil.getFieldForObject(fieldName, tartget).getGenericType();
            ParameterizedType t = (ParameterizedType)type;
            String classStr = t.getActualTypeArguments()[0].toString().replace("class ", "");
            if (classStr.contains("<")) {
                classStr = classStr.substring(classStr.lastIndexOf("<") + 1, classStr.indexOf(">"));
            }
            elementTypeClass = Thread.currentThread().getContextClassLoader().loadClass(classStr);
            return elementTypeClass;
        } catch (SecurityException | ClassNotFoundException var6) {
            throw new RuntimeException("get fieldName[" + fieldName + "] error", var6);
        }
    }
    static {
        primitiveMap.put(String.class, String.class);
        primitiveMap.put(Boolean.class, Boolean.TYPE);
        primitiveMap.put(Byte.class, Byte.TYPE);
        primitiveMap.put(Character.class, Character.TYPE);
        primitiveMap.put(Double.class, Double.TYPE);
        primitiveMap.put(Float.class, Float.TYPE);
        primitiveMap.put(Integer.class, Integer.TYPE);
        primitiveMap.put(Long.class, Long.TYPE);
        primitiveMap.put(Short.class, Short.TYPE);
        primitiveMap.put(Date.class, Date.class);
    }
}
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/util/VciBaseUtil.java
@@ -9,8 +9,10 @@
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.web.enumpck.BooleanEnum;
import com.vci.ubcs.starter.web.pagemodel.SessionInfo;
import com.vci.ubcs.starter.web.toolmodel.DateConverter;
import com.vci.ubcs.starter.web.wrapper.VciQueryWrapperForDO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.CollectionUtils;
@@ -135,6 +137,11 @@
                return 0.0D;
            }
        }
    }
    public static boolean getBoolean(String s) {
        return BooleanEnum.TRUE.getValue().equals(s);
    }
    public static String removeComma(String s) {
@@ -829,6 +836,10 @@
        return allField;
    }
    public static String getTableName(String btmname) {
        return (VciQueryWrapperForDO.USER_TABLE_COMPATIBILITY ? "pl_code_" : "vcibt_") + btmname.trim().toLowerCase();
    }
    public static Field getTsField(Class c) {
        List<Field> allField = getAllFieldForObj(c);
        if (allField != null && allField.size() > 0) {
@@ -1199,5 +1210,19 @@
    }
    public static void setValueForField(String fieldName, Object obj, String value) {
        try {
            Field field = getFieldForObject(fieldName, obj);
            if (field != null) {
                setValueForField(field, obj, value);
            }
        } catch (Exception var4) {
            if (log.isErrorEnabled()) {
                log.error("设置属性的值出错了错误", var4);
            }
        }
    }
}
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/wrapper/VciQueryWrapperForDO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,284 @@
package com.vci.ubcs.starter.web.wrapper;
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
//package com.vci.starter.web.wrapper;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
import com.vci.ubcs.starter.web.annotation.VciFieldType;
import com.vci.ubcs.starter.web.annotation.VciUseEnum;
import com.vci.ubcs.starter.web.enumpck.VciFieldTypeEnum;
import com.vci.ubcs.starter.web.pagemodel.PageHelper;
import com.vci.ubcs.starter.web.service.VciSecretServiceI;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import org.springframework.util.CollectionUtils;
import javax.xml.bind.annotation.XmlType;
public class VciQueryWrapperForDO implements VciSecretServiceI {
    public static boolean USER_TABLE_COMPATIBILITY = false;
    public static String DATABASE_PLATFORM;
    public static Map<String, String> USER_TABLE_COMPATIBILITY_BTM_MAP;
    public static Map<String, String> USER_TABLE_COMPATIBILITY_FIELD_MAP;
    public static final String USER_TABLE_COMPATIBILITY_FIELD_SEP = "${vcicomplibitysep}";
    private Map<String, String> conditionMap;
    private Map<String, String> customerSqlMap;
    private String oidFieldName;
    private static final String SPACE = " ";
    public static final String QUERY_FIELD_SECRET = "${vciQuerySecret}";
    public static final String QUERY_FIELD_DATARIGHT = "${vciQueryDataRight}";
    private Class<?> doClass;
    private PageHelper pageHelper;
    private Map<String, String> allFieldNameMap;
    private List<String> xmlTypeFieldList;
    private boolean distinct;
    public static final String OID_FIELD = "oid";
    public static final String ID_FIELD = "id";
    public static final String LC_STATUS_FIELD = "lcstatus";
    public static final String LC_STATUS_FIELD_TEXT = "lcStatus_text";
    private Map<String, VciFieldTypeEnum> allFieldTypeMap;
    private Map<String, String> useReferMap;
    private Map<String, String> enumFieldMap;
    private String linkTableSql;
    private String selectFieldSql;
    private String selectPrefixForPage;
    private String whereSql;
    private String orderSql;
    private String whereSubfixForPage;
    private Map<String, String> valuesMap;
    private String tableNick;
    private Map<String, String> extendFieldMap;
    private static final String DATETIME_FORMAT = "yyyy-mm-dd hh24:mi:ss";
    private static final String DATE_FORMAT = "yyyy-mm-dd";
    public void clearPage() {
        this.pageHelper = null;
        this.selectPrefixForPage = "";
        this.whereSubfixForPage = "";
    }
    public VciQueryWrapperForDO in(String key, String value) throws VciBaseException {
        this.addQueryMap(key, value, "\\IN");
        return this;
    }
    public VciQueryWrapperForDO notIn(String key, String value) throws VciBaseException {
        this.addQueryMap(key, value, "\\NOTIN");
        return this;
    }
    public VciQueryWrapperForDO eq(String key, String value) throws VciBaseException {
        this.addQueryMap(key, value);
        return this;
    }
    public VciQueryWrapperForDO neq(String key, String value) throws VciBaseException {
        this.addQueryMap(key, value, "!=");
        return this;
    }
    public VciQueryWrapperForDO less(String key, String value) throws VciBaseException {
        this.addQueryMap(key, value, "<");
        return this;
    }
    public VciQueryWrapperForDO lessThan(String key, String value) throws VciBaseException {
        this.addQueryMap(key, value, "<=");
        return this;
    }
    public VciQueryWrapperForDO more(String key, String value) throws VciBaseException {
        this.addQueryMap(key, value, ">");
        return this;
    }
    public VciQueryWrapperForDO moreThan(String key, String value) throws VciBaseException {
        this.addQueryMap(key, value, ">=");
        return this;
    }
    public VciQueryWrapperForDO isNull(String key) throws VciBaseException {
        this.addQueryMap(key, "_n", "=null");
        return this;
    }
    public VciQueryWrapperForDO isNotNull(String key) throws VciBaseException {
        this.addQueryMap(key, "_n", "!=null");
        return this;
    }
    public VciQueryWrapperForDO secret() throws VciBaseException {
        String secretSql = this.getLessThanUserSecretSql();
        this.addQueryMap("secretGrade", secretSql, "<=");
        return this;
    }
    public void addQueryMap(String key, String value) {
        this.addQueryMap(key, value, (String)null);
    }
    public void addQueryMap(String key, String value, String operation) {
        VciBaseUtil.alertNotNull(new Object[]{key, "查询条件的名称"});
        if (StringUtils.isNotBlank(value)) {
            if (this.conditionMap == null) {
                this.conditionMap = new HashMap();
            }
            if (operation == null) {
                operation = "";
            }
            this.conditionMap.put(key, operation + value);
        }
    }
    public void addCustomSql(String key, String sql) {
        VciBaseUtil.alertNotNull(new Object[]{key, "自定义SQL的KEY", sql, "自定义的SQL语句"});
        if (StringUtils.isNotBlank(sql)) {
            if (this.customerSqlMap == null) {
                this.customerSqlMap = new HashMap();
            }
            this.customerSqlMap.put(key, sql);
        }
    }
    public void addExtendField(String fieldName) {
        this.addExtendField(fieldName, fieldName);
    }
    public void addExtendField(String fieldName, String nickName) {
        this.extendFieldMap.put(fieldName, nickName);
    }
    public Map<String, String> getConditionMap() {
        return this.conditionMap;
    }
    public void setConditionMap(Map<String, String> conditionMap) {
        this.conditionMap = conditionMap;
    }
    public Map<String, String> switchConditionMap() {
        Map<String, String> queryMap = new HashMap();
        if (!CollectionUtils.isEmpty(this.conditionMap)) {
            this.conditionMap.forEach((key, value) -> {
                queryMap.put(key, value);
            });
            this.allFieldNameMap.forEach((dbField, field) -> {
                if (this.conditionMap.containsKey(field)) {
                    queryMap.put(dbField, this.conditionMap.get(field));
                }
            });
        }
        return queryMap;
    }
    public String getLinkTableSql() {
        return this.linkTableSql;
    }
    public void setLinkTableSql(String linkTableSql) {
        this.linkTableSql = linkTableSql;
    }
    public void addLinkTableSql(String linkTableSql) {
        this.linkTableSql = this.linkTableSql + " " + linkTableSql + " ";
    }
    public void setSelectFieldSql(String selectFieldSql) {
        this.selectFieldSql = selectFieldSql;
    }
    public void appendSelectField(String sql) {
        this.selectFieldSql = this.selectFieldSql + "," + sql;
    }
    public void appendSelectPagePrefix(String sql) {
        this.selectPrefixForPage = this.selectPrefixForPage + "," + sql;
    }
    public String getWhereSql() {
        if (StringUtils.isBlank(this.whereSql)) {
            this.whereSql = " 1 = 1 ";
        }
        return this.pageHelper != null && this.pageHelper.getLimit() > 0 ? this.whereSql + (this.orderSql == null ? "" : this.orderSql) + (this.whereSubfixForPage == null ? "" : this.whereSubfixForPage) : (StringUtils.isNotBlank(this.whereSql) ? this.whereSql : " 1= 1 ") + (this.orderSql == null ? "" : this.orderSql);
    }
    public void setWhereSql(String whereSql) {
        this.whereSql = whereSql;
    }
    public Map<String, String> getValuesMap() {
        return this.valuesMap;
    }
    public void setValuesMap(Map<String, String> valuesMap) {
        this.valuesMap = valuesMap;
    }
    public String getTableNick() {
        return this.tableNick;
    }
    public void setTableNick(String tableNick) {
        this.tableNick = tableNick;
    }
    public String getOrderSql() {
        return this.orderSql;
    }
    public void setOrderSql(String orderSql) {
        this.orderSql = orderSql;
    }
    public String getOidFieldName() {
        return this.oidFieldName;
    }
    public void setOidFieldName(String oidFieldName) {
        this.oidFieldName = oidFieldName;
    }
    public boolean isDistinct() {
        return this.distinct;
    }
    public void setDistinct(boolean distinct) {
        this.distinct = distinct;
    }
    public Map<String, String> getCustomerSqlMap() {
        return this.customerSqlMap;
    }
    public void setCustomerSqlMap(Map<String, String> customerSqlMap) {
        this.customerSqlMap = customerSqlMap;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/CodeApplication.java
@@ -16,7 +16,6 @@
 */
package com.vci.ubcs.code;
import com.vci.ubcs.ddl.mapper.DdlOracleMapper;
import com.vci.ubcs.starter.util.VciSpringUtil;
import org.springblade.core.cloud.client.UbcsCloudApplication;
import org.springblade.core.launch.UbcsApplication;
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/FrameWorkLangCodeConstant.java
@@ -180,6 +180,11 @@
    public static final String DATA_LINKED_NOT_DELETE = "dataLinkedNotDelete";
    /**
     * ts检验未通过
     */
    public static final String TS_NOT_PROCESS = "ts test failed";
    /**
     * æ•°æ®çš„子节点也被引用,不允许删除
     */
    public static final String DATA_CASCADE_LINKED_NOT_DELETE = "dataCascadeLinkedNotDelete";
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/MdmBtmTypeConstant.java
@@ -49,6 +49,10 @@
     * é˜¶æ®µçš„属性
     */
    public static final String CODE_PHASE_ATTR = "codephaseattr";
    /**
     * é˜¶æ®µçš„属性
     */
    public static final String CODE_PHASE_ATTR_TABLENAME = "code_phaseattr";
    /**
     * ä¸»æ•°æ®åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeAllCodeController.java
@@ -43,7 +43,7 @@
 */
@RestController
@AllArgsConstructor
@RequestMapping("blade-code/CodeAllcode")
@RequestMapping("/CodeAllcode")
@Api(value = "全部码值", tags = "全部码值接口")
public class CodeAllCodeController extends BladeController {
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeButtonController.java
@@ -19,10 +19,10 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.vci.ubcs.code.entity.CodeButtonEntity;
import com.vci.ubcs.code.entity.CodeButton;
import com.vci.ubcs.code.mapper.CodeButtonMapper;
import com.vci.ubcs.code.service.ICodeButtonService;
import com.vci.ubcs.code.vo.CodeButtonVO;
import com.vci.ubcs.code.vo.pagemodel.CodeButtonVO;
import com.vci.ubcs.code.wrapper.CodeButtonWrapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -61,8 +61,8 @@
    @GetMapping("/detail")
    @ApiOperationSupport(order = 1)
    @ApiOperation(value = "详情", notes = "传入codebutton")
    public R<CodeButtonVO> detail(CodeButtonEntity codebutton) {
        CodeButtonEntity detail = codeButtonMapper.selectOne(Condition.getQueryWrapper(codebutton));
    public R<CodeButtonVO> detail(CodeButton codebutton) {
        CodeButton detail = codeButtonMapper.selectOne(Condition.getQueryWrapper(codebutton));
        return R.data(CodeButtonWrapper.build().entityVO(detail));
    }
    /**
@@ -71,8 +71,8 @@
    @GetMapping("/list")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "分页", notes = "传入codebutton")
    public R<IPage<CodeButtonVO>> list(CodeButtonEntity codebutton, Query query) {
        IPage<CodeButtonEntity> pages = codeButtonMapper.selectPage(Condition.getPage(query), Condition.getQueryWrapper(codebutton));
    public R<IPage<CodeButtonVO>> list(CodeButton codebutton, Query query) {
        IPage<CodeButton> pages = codeButtonMapper.selectPage(Condition.getPage(query), Condition.getQueryWrapper(codebutton));
        return R.data(CodeButtonWrapper.build().pageVO(pages));
    }
@@ -93,7 +93,7 @@
    @PostMapping("/save")
    @ApiOperationSupport(order = 4)
    @ApiOperation(value = "新增", notes = "传入codebutton")
    public R save(@Valid @RequestBody CodeButtonEntity codebutton) {
    public R save(@Valid @RequestBody CodeButton codebutton) {
        return R.status(SqlHelper.retBool(codeButtonMapper.insert(codebutton)));
    }
@@ -103,7 +103,7 @@
    @PostMapping("/update")
    @ApiOperationSupport(order = 5)
    @ApiOperation(value = "修改", notes = "传入codebutton")
    public R update(@Valid @RequestBody CodeButtonEntity codebutton) {
    public R update(@Valid @RequestBody CodeButton codebutton) {
        return R.status(SqlHelper.retBool(codeButtonMapper.updateById(codebutton)));
    }
@@ -113,7 +113,7 @@
    @PostMapping("/submit")
    @ApiOperationSupport(order = 6)
    @ApiOperation(value = "新增或修改", notes = "传入codebutton")
    public R submit(@Valid @RequestBody CodeButtonEntity codebutton) {
    public R submit(@Valid @RequestBody CodeButton codebutton) {
        if(codebutton.getOid() != null){
            return R.status(SqlHelper.retBool(codeButtonMapper.updateById(codebutton)));
        }
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyProcessTempController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,167 @@
package com.vci.ubcs.code.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.vci.ubcs.code.dto.CodeClassifyProcessTempDTO;
import com.vci.ubcs.code.entity.CodeClassifyProcessTemp;
import com.vci.ubcs.code.service.ICodeClassifyProcessTempService;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyProcessTempVO;
import com.vci.ubcs.starter.web.constant.QueryOptionConstant;
import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
import com.vci.ubcs.starter.web.pagemodel.DataGrid;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import com.vci.ubcs.starter.web.wrapper.VciQueryWrapperForDO;
import io.swagger.annotations.Api;
import lombok.AllArgsConstructor;
import org.springblade.core.tool.api.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.*;
import java.util.stream.Collectors;
/**
 * åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿æŽ§åˆ¶å™¨
 *
 * @author weidy
 * @date 2022-01-24
 */
@RestController
@RequestMapping("/codeClsProcessTempController")
@AllArgsConstructor
@Api(value = "编码库定义-流程模板", tags = "编码库定义-流程模板接口")
public class CodeClassifyProcessTempController {
    /**
    * åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿ æœåŠ¡
    */
    @Autowired
    private ICodeClassifyProcessTempService codeClassifyProcessTempService;
    /**
     * åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿åˆ—表
     * @param baseQueryObject åŸºç¡€æŸ¥è¯¢å¯¹è±¡ï¼ŒåŒ…含查询条件,分页,排序等
     * @return åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿æ˜¾ç¤ºå¯¹è±¡åˆ—表
     */
    @GetMapping("/gridCodeClassifyProcessTemp")
    public DataGrid<CodeClassifyProcessTempVO> gridCodeClassifyProcessTemp(BaseQueryObject baseQueryObject){
        if(baseQueryObject == null){
            baseQueryObject = new BaseQueryObject();
        }
        return codeClassifyProcessTempService.gridCodeClassifyProcessTemp(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
    }
    /**
     * å¢žåŠ  åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿
     * @param codeClassifyProcessTempDTO åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿æ•°æ®ä¼ è¾“对象
     * @return æ‰§è¡Œç»“果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象
     */
    @PostMapping( "/addSave")
    public R<CodeClassifyProcessTempVO> addSave(@RequestBody CodeClassifyProcessTempDTO codeClassifyProcessTempDTO){
         CodeClassifyProcessTempVO codeClassifyProcessTempVO = codeClassifyProcessTempService.addSave(codeClassifyProcessTempDTO);
         return R.data(codeClassifyProcessTempVO);
    }
    /**
     * ä¿®æ”¹ åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿
     * @param codeClassifyProcessTempDTO åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿æ•°æ®ä¼ è¾“对象
     * @return æ‰§è¡Œç»“果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象
     */
    @PutMapping("/editSave")
    public R<CodeClassifyProcessTempVO> editSave(@RequestBody CodeClassifyProcessTempDTO codeClassifyProcessTempDTO){
        CodeClassifyProcessTempVO codeClassifyProcessTempVO = codeClassifyProcessTempService.editSave(codeClassifyProcessTempDTO);
        return R.data(codeClassifyProcessTempVO);
    }
    /**
     * åˆ é™¤åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿
     * @param codeClassifyProcessTempDTO åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿æ•°æ®ä¼ è¾“对象,oid和ts需要传输
     * @return åˆ é™¤ç»“果反馈::success:成功,fail:失败
     */
    @DeleteMapping( "/deleteData")
    public R delCodeClassifyProcessTemp(CodeClassifyProcessTempDTO codeClassifyProcessTempDTO) {
        return codeClassifyProcessTempService.deleteCodeClassifyProcessTemp(codeClassifyProcessTempDTO);
    }
    /**
    * ä¸»é”®èŽ·å–åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿
    * @param oid ä¸»é”®
    * @return åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿æ˜¾ç¤ºå¯¹è±¡
    */
    @GetMapping("/getObjectByOid")
    public R<CodeClassifyProcessTempVO> getObjectByOid(String oid){
        CodeClassifyProcessTempVO codeClassifyProcessTempVO = codeClassifyProcessTempService.getObjectByOid(oid);
        return R.data(codeClassifyProcessTempVO);
    }
    /**
     * ä¸»é”®æ‰¹é‡èŽ·å–åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿
     * @param oids ä¸»é”®ï¼Œå¤šä¸ªä»¥é€—号分隔,但是受性能影响,建议一次查询不超过10000个
     * @return åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿æ˜¾ç¤ºå¯¹è±¡
     */
    @GetMapping("/listDataByOids")
    public R<Collection<CodeClassifyProcessTempVO>> listCodeClassifyProcessTempByOids(String oids){
        Collection<CodeClassifyProcessTempVO> voCollection =  codeClassifyProcessTempService.listCodeClassifyProcessTempByOids(VciBaseUtil.str2List(oids));
        return R.data(voCollection);
    }
    /**
     * å‚照分类使用的流程模板列表
     * @param baseQueryObject åŸºç¡€æŸ¥è¯¢å¯¹è±¡ï¼ŒåŒ…含查询条件,分页,排序等
     * @return åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿æ˜¾ç¤ºå¯¹è±¡åˆ—表,生效的内容
     */
    @GetMapping("/refDataGrid")
    public DataGrid<CodeClassifyProcessTempVO> refDataGridCodeClassifyProcessTemp(BaseQueryObject baseQueryObject){
        if(baseQueryObject == null){
            baseQueryObject = new BaseQueryObject();
        }
        return codeClassifyProcessTempService.refDataGridCodeClassifyProcessTemp(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
    }
    /**
     * ä½¿ç”¨æ¨¡æ¿èŽ·å–ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿
     * @param codeTemplateOid æ¨¡æ¿çš„主键
     * @param processUse æµç¨‹çš„用途
     * @return æµç¨‹æ¨¡æ¿çš„信息
     */
    @GetMapping("/listProcessTemplate")
    public R<List<CodeClassifyProcessTempVO>> listProcessTemplate(String codeTemplateOid,String processUse){
        List<CodeClassifyProcessTempVO> processTempVOList = codeClassifyProcessTempService.listProcessTemplate(codeTemplateOid,processUse);
        return R.data(processTempVOList);
    }
    /**
     * ä½¿ç”¨æ¨¡æ¿èŽ·å–ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿
     * @param codeTemplateOid æ¨¡æ¿çš„主键
     * @param processUse æµç¨‹çš„用途
     * @return æµç¨‹æ¨¡æ¿çš„信息
     */
    @GetMapping("/listSameProcessTemplate")
    public R<CodeClassifyProcessTempVO> listSameProcessTemplate(String codeTemplateOid,String processUse){
        VciBaseUtil.alertNotNull(codeTemplateOid,"所选择的数据模板主键");
        /*Map<String,String> conditionMap=new HashMap<>();
        conditionMap.put("classifyTemplateOid", QueryOptionConstant.IN  + VciBaseUtil.toInSql(codeTemplateOid));
        conditionMap.put("codeprocessuse",processUse);*/
        LambdaQueryWrapper<CodeClassifyProcessTemp> LambdaQueryWrapper = Wrappers.<CodeClassifyProcessTemp>query()
            .lambda().in(CodeClassifyProcessTemp::getCodeClassifyOid, VciBaseUtil.toInSql(codeTemplateOid))
            .eq(CodeClassifyProcessTemp::getCodeProcessUse, processUse);
        List<CodeClassifyProcessTempVO> codeClassifyProcessTempVOS = codeClassifyProcessTempService.selectByWrapper(LambdaQueryWrapper);
        //根据模板将数据整合在一起,去校验
        Map<String/**模板oid**/, List<CodeClassifyProcessTempVO>/**数据对象**/>  templateProcessTempateVOMap =
            codeClassifyProcessTempVOS.stream().collect(Collectors.toMap(CodeClassifyProcessTempVO::getId, s->{
            List<CodeClassifyProcessTempVO> l=new ArrayList<>();
            l.add(s);
            return l;
        },(List<CodeClassifyProcessTempVO> s1,List<CodeClassifyProcessTempVO> s2)->{
            s1.addAll(s2);
            return s1;
        }));
        if(templateProcessTempateVOMap.size()>1){
            return R.fail("流程模板不统一,不允许发起流程");
        }else {
            return R.data(codeClassifyProcessTempVOS.get(0));
        }
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyTemplateButtonController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,137 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.code.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.vci.ubcs.code.dto.CodeClassifyTemplateButtonDTO;
import com.vci.ubcs.code.service.ICodeTempbuttonService;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateButtonVO;
import com.vci.ubcs.code.wrapper.CodeTempbuttonWrapper;
import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
import com.vci.ubcs.starter.web.pagemodel.DataGrid;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.Collection;
/**
 * ç¼–码库定义-模板按钮扩展 æŽ§åˆ¶å™¨
 *
 * @author ludc
 * @since 2023-04-20
 */
@RestController
@AllArgsConstructor
@RequestMapping("/codeClsTempButtonController")
@Api(value = "编码库定义-模板按钮扩展", tags = "编码库定义-模板按钮扩展接口")
public class CodeClassifyTemplateButtonController extends BladeController {
    /**
     * ä¸»é¢˜åº“里模板包含的按钮 æœåŠ¡
     */
    private final ICodeTempbuttonService codeClassifyTemplateButtonService;
    /**
     * ä¸»é¢˜åº“里模板包含的按钮列表
     * @param codeClassifyTemplateButtonVO åŸºç¡€æŸ¥è¯¢å¯¹è±¡ï¼ŒåŒ…含查询条件,分页,排序等
     * @param query
     * @return ä¸»é¢˜åº“里模板包含的按钮显示对象列表
     */
    @GetMapping("/gridCodeClassifyTemplateButton")
    public DataGrid<CodeClassifyTemplateButtonVO> gridCodeClassifyTemplateButton(CodeClassifyTemplateButtonVO codeClassifyTemplateButtonVO,Query query){
        return codeClassifyTemplateButtonService.gridCodeClassifyTemplateButton(codeClassifyTemplateButtonVO,query);
    }
    /**
     * å¢žåŠ  ä¸»é¢˜åº“里模板包含的按钮
     * @param codeClassifyTemplateButtonDTO ä¸»é¢˜åº“里模板包含的按钮数据传输对象
     * @return æ‰§è¡Œç»“果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象
     */
    @PostMapping( "/addSave")
    public R addSave(@RequestBody CodeClassifyTemplateButtonDTO codeClassifyTemplateButtonDTO){
        return R.status(codeClassifyTemplateButtonService.addSave(codeClassifyTemplateButtonDTO));
    }
    /**
     * ä¿®æ”¹ ä¸»é¢˜åº“里模板包含的按钮
     * @param codeClassifyTemplateButtonDTO ä¸»é¢˜åº“里模板包含的按钮数据传输对象
     * @return æ‰§è¡Œç»“果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象
     */
    @PutMapping("/editSave")
    public R editSave(@RequestBody CodeClassifyTemplateButtonDTO codeClassifyTemplateButtonDTO){
        return R.status(codeClassifyTemplateButtonService.editSave(codeClassifyTemplateButtonDTO));
    }
    /**
     * åˆ é™¤ä¸»é¢˜åº“里模板包含的按钮
     * @param codeClassifyTemplateButtonDTO ä¸»é¢˜åº“里模板包含的按钮数据传输对象,oid和ts需要传输
     * @return åˆ é™¤ç»“果反馈::success:成功,fail:失败
     */
    @DeleteMapping( "/deleteData")
    public R delCodeClassifyTemplateButton( CodeClassifyTemplateButtonDTO codeClassifyTemplateButtonDTO) {
        return codeClassifyTemplateButtonService.deleteCodeClassifyTemplateButton(codeClassifyTemplateButtonDTO);
    }
    /**
     * ä¸»é”®èŽ·å–ä¸»é¢˜åº“é‡Œæ¨¡æ¿åŒ…å«çš„æŒ‰é’®
     * @param oid ä¸»é”®
     * @return ä¸»é¢˜åº“里模板包含的按钮显示对象
     */
    @GetMapping("/getObjectByOid")
    public R<CodeClassifyTemplateButtonVO> getObjectByOid(String oid){
        CodeClassifyTemplateButtonVO codeClassifyTemplateButtonVO = codeClassifyTemplateButtonService.getObjectByOid(oid);
        return R.data(codeClassifyTemplateButtonVO);
    }
    /**
     * ä¸»é”®æ‰¹é‡èŽ·å–ä¸»é¢˜åº“é‡Œæ¨¡æ¿åŒ…å«çš„æŒ‰é’®
     * @param oids ä¸»é”®ï¼Œå¤šä¸ªä»¥é€—号分隔,但是受性能影响,建议一次查询不超过10000个
     * @return ä¸»é¢˜åº“里模板包含的按钮显示对象
     */
    @GetMapping("/listDataByOids")
    public R<Collection<CodeClassifyTemplateButtonVO>> listCodeClassifyTemplateButtonByOids(String oids){
        Collection<CodeClassifyTemplateButtonVO> voCollection =  codeClassifyTemplateButtonService.listCodeClassifyTemplateButtonByOids(VciBaseUtil.str2List(oids));
        return R.data(voCollection);
    }
    /**
     * å‚照主题库里模板包含的按钮列表
     * @param baseQueryObject åŸºç¡€æŸ¥è¯¢å¯¹è±¡ï¼ŒåŒ…含查询条件,分页,排序等
     * @return ä¸»é¢˜åº“里模板包含的按钮显示对象列表,生效的内容
     */
    @GetMapping("/refDataGrid")
    public DataGrid<CodeClassifyTemplateButtonVO> refDataGridCodeClassifyTemplateButton(BaseQueryObject baseQueryObject){
        if(baseQueryObject == null){
            baseQueryObject = new BaseQueryObject();
        }
        return codeClassifyTemplateButtonService.refDataGridCodeClassifyTemplateButton(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodePhaseattrController.java
@@ -19,8 +19,8 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.vci.ubcs.code.entity.CodePhaseattrEntity;
import com.vci.ubcs.code.mapper.CodePhaseattrMapper;
import com.vci.ubcs.code.entity.CodePhaseAttr;
import com.vci.ubcs.code.mapper.CodePhaseAttrMapper;
import com.vci.ubcs.code.service.ICodePhaseattrService;
import com.vci.ubcs.code.vo.CodePhaseattrVO;
import com.vci.ubcs.code.wrapper.CodePhaseattrWrapper;
@@ -51,7 +51,7 @@
    private final ICodePhaseattrService CodePhaseattrService;
    private CodePhaseattrMapper codePhaseattrMapper;
    private CodePhaseAttrMapper codePhaseAttrMapper;
    /**
     * ç¼–码库定义-模板阶段-属性 è¯¦æƒ…
@@ -59,8 +59,8 @@
    @GetMapping("/detail")
    @ApiOperationSupport(order = 1)
    @ApiOperation(value = "详情", notes = "传入CodePhaseattr")
    public R<CodePhaseattrVO> detail(CodePhaseattrEntity CodePhaseattr) {
        CodePhaseattrEntity detail = CodePhaseattrService.getOne(Condition.getQueryWrapper(CodePhaseattr));
    public R<CodePhaseattrVO> detail(CodePhaseAttr CodePhaseattr) {
        CodePhaseAttr detail = CodePhaseattrService.getOne(Condition.getQueryWrapper(CodePhaseattr));
        return R.data(CodePhaseattrWrapper.build().entityVO(detail));
    }
    /**
@@ -69,8 +69,8 @@
    @GetMapping("/list")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "分页", notes = "传入CodePhaseattr")
    public R<IPage<CodePhaseattrVO>> list(CodePhaseattrEntity CodePhaseattr, Query query) {
        IPage<CodePhaseattrEntity> pages = CodePhaseattrService.page(Condition.getPage(query), Condition.getQueryWrapper(CodePhaseattr));
    public R<IPage<CodePhaseattrVO>> list(CodePhaseAttr CodePhaseattr, Query query) {
        IPage<CodePhaseAttr> pages = CodePhaseattrService.page(Condition.getPage(query), Condition.getQueryWrapper(CodePhaseattr));
        return R.data(CodePhaseattrWrapper.build().pageVO(pages));
    }
@@ -91,7 +91,7 @@
    @PostMapping("/save")
    @ApiOperationSupport(order = 4)
    @ApiOperation(value = "新增", notes = "传入CodePhaseattr")
    public R save(@Valid @RequestBody CodePhaseattrEntity CodePhaseattr) {
    public R save(@Valid @RequestBody CodePhaseAttr CodePhaseattr) {
        return R.status(CodePhaseattrService.save(CodePhaseattr));
    }
@@ -101,7 +101,7 @@
    @PostMapping("/update")
    @ApiOperationSupport(order = 5)
    @ApiOperation(value = "修改", notes = "传入CodePhaseattr")
    public R update(@Valid @RequestBody CodePhaseattrEntity CodePhaseattr) {
    public R update(@Valid @RequestBody CodePhaseAttr CodePhaseattr) {
        return R.status(CodePhaseattrService.updateById(CodePhaseattr));
    }
@@ -111,7 +111,7 @@
    @PostMapping("/submit")
    @ApiOperationSupport(order = 6)
    @ApiOperation(value = "新增或修改", notes = "传入CodePhaseattr")
    public R submit(@Valid @RequestBody CodePhaseattrEntity CodePhaseattr) {
    public R submit(@Valid @RequestBody CodePhaseAttr CodePhaseattr) {
        return R.status(CodePhaseattrService.saveOrUpdate(CodePhaseattr));
    }
@@ -122,7 +122,7 @@
    @ApiOperationSupport(order = 7)
    @ApiOperation(value = "逻辑删除", notes = "传入ids")
    public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
        return R.status(SqlHelper.retBool(codePhaseattrMapper.deleteBatchIds(Func.toLongList(ids))));
        return R.status(SqlHelper.retBool(codePhaseAttrMapper.deleteBatchIds(Func.toLongList(ids))));
    }
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeTempbuttonController.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeTemplatePhaseController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,160 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.code.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.vci.ubcs.code.dto.CodeTemplatePhaseDTO;
import com.vci.ubcs.code.service.ICodeTempphaseService;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
import com.vci.ubcs.code.vo.pagemodel.CodeTemplatePhaseVO;
import com.vci.ubcs.code.wrapper.CodeTempphaseWrapper;
import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
import com.vci.ubcs.starter.web.pagemodel.DataGrid;
import com.vci.ubcs.starter.web.pagemodel.PageHelper;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.Collection;
import java.util.Map;
/**
 * ç¼–码库定义-模板阶段 æŽ§åˆ¶å™¨
 *
 * @author ludc
 * @since 2023-04-20
 */
@RestController
@AllArgsConstructor
@RequestMapping("/codeTempPhaseController")
@Api(value = "编码库定义-模板阶段", tags = "编码库定义-模板阶段接口")
public class CodeTemplatePhaseController extends BladeController {
    /**
     * æ¨¡æ¿é˜¶æ®µ æœåŠ¡
     */
    private final ICodeTempphaseService codeTemplatePhaseService;
    /**
     * æ¨¡æ¿é˜¶æ®µåˆ—表
     * @param codeTemplatePhaseVO åŸºç¡€æŸ¥è¯¢å¯¹è±¡ï¼ŒåŒ…含查询条件,分页,排序等
     * @param query
     * @return æ¨¡æ¿é˜¶æ®µæ˜¾ç¤ºå¯¹è±¡åˆ—表
     */
    @GetMapping("/gridCodeTemplatePhase")
    public DataGrid<CodeTemplatePhaseVO> gridCodeTemplatePhase(CodeTemplatePhaseVO codeTemplatePhaseVO,Query query){
        return codeTemplatePhaseService.gridCodeTemplatePhase(codeTemplatePhaseVO,query);
    }
    /**
     * å¢žåŠ  æ¨¡æ¿é˜¶æ®µ
     * @param codeTemplatePhaseDTO æ¨¡æ¿é˜¶æ®µæ•°æ®ä¼ è¾“对象
     * @return æ‰§è¡Œç»“果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象
     */
    @PostMapping( "/addSave")
    public R<CodeTemplatePhaseVO> addSave(@RequestBody CodeTemplatePhaseDTO codeTemplatePhaseDTO){
        return R.data(codeTemplatePhaseService.addSave(codeTemplatePhaseDTO));
    }
    /**
     * ä¿®æ”¹ æ¨¡æ¿é˜¶æ®µ
     * @param codeTemplatePhaseDTO æ¨¡æ¿é˜¶æ®µæ•°æ®ä¼ è¾“对象
     * @return æ‰§è¡Œç»“果,success为true表示成功,msg是失败的提示信息,obj是添加完成后的显示对象
     */
    @PutMapping("/editSave")
    public R<CodeTemplatePhaseVO> editSave(@RequestBody CodeTemplatePhaseDTO codeTemplatePhaseDTO){
        CodeTemplatePhaseVO codeTemplatePhaseVO = codeTemplatePhaseService.editSave(codeTemplatePhaseDTO);
        return R.data(codeTemplatePhaseVO);
    }
    /**
     * åˆ é™¤æ¨¡æ¿é˜¶æ®µ
     * @param codeTemplatePhaseDTO æ¨¡æ¿é˜¶æ®µæ•°æ®ä¼ è¾“对象,oid和ts需要传输
     * @return åˆ é™¤ç»“果反馈::success:成功,fail:失败
     */
    @DeleteMapping( "/deleteData")
    public R delCodeTemplatePhase( CodeTemplatePhaseDTO codeTemplatePhaseDTO) {
        return codeTemplatePhaseService.deleteCodeTemplatePhase(codeTemplatePhaseDTO);
    }
    /**
     * ä¸»é”®èŽ·å–æ¨¡æ¿é˜¶æ®µ
     * @param oid ä¸»é”®
     * @return æ¨¡æ¿é˜¶æ®µæ˜¾ç¤ºå¯¹è±¡
     */
    @GetMapping("/getObjectByOid")
    public R<CodeTemplatePhaseVO> getObjectByOid(String oid){
        CodeTemplatePhaseVO codeTemplatePhaseVO = codeTemplatePhaseService.getObjectByOid(oid);
        return R.data(codeTemplatePhaseVO);
    }
    /**
     * ä¸»é”®æ‰¹é‡èŽ·å–æ¨¡æ¿é˜¶æ®µ
     * @param oids ä¸»é”®ï¼Œå¤šä¸ªä»¥é€—号分隔,但是受性能影响,建议一次查询不超过10000个
     * @return æ¨¡æ¿é˜¶æ®µæ˜¾ç¤ºå¯¹è±¡
     */
    @GetMapping("/listDataByOids")
    public R<Collection<CodeTemplatePhaseVO>> listCodeTemplatePhaseByOids(String oids){
        Collection<CodeTemplatePhaseVO> voCollection =  codeTemplatePhaseService.listCodeTemplatePhaseByOids(VciBaseUtil.str2List(oids));
        return R.data(voCollection);
    }
    /**
     * å‚照模板阶段列表
     * @param baseQueryObject åŸºç¡€æŸ¥è¯¢å¯¹è±¡ï¼ŒåŒ…含查询条件,分页,排序等
     * @return æ¨¡æ¿é˜¶æ®µæ˜¾ç¤ºå¯¹è±¡åˆ—表,生效的内容
     */
    @GetMapping("/refDataGrid")
    public DataGrid<CodeTemplatePhaseVO> refDataGridCodeTemplatePhase(BaseQueryObject baseQueryObject){
        if(baseQueryObject == null){
            baseQueryObject = new BaseQueryObject();
        }
        return codeTemplatePhaseService.refDataGridCodeTemplatePhase(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
    }
    /**
     * èŽ·å–é˜¶æ®µä¸­æ²¡æœ‰ä½¿ç”¨çš„æ¨¡æ¿å±žæ€§
     * @param baseQueryObject æŸ¥è¯¢å¯¹è±¡ï¼Œå¿…须要有模板的主键(classifyTemplateOid),否则不能确定属性
     * @return å±žæ€§çš„信息
     */
    @GetMapping("/gridUnUsedAttribute")
    public DataGrid<CodeClassifyTemplateAttrVO> gridUnUsedAttribute(BaseQueryObject baseQueryObject){
        return codeTemplatePhaseService.gridUnUsedAttribute(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
    }
    /**
     * èŽ·å–é˜¶æ®µä¸­ä½¿ç”¨çš„æ¨¡æ¿å±žæ€§
     * @param baseQueryObject æŸ¥è¯¢å¯¹è±¡ï¼Œå¿…须要阶段的主键(codePhaseOid)
     * @return å±žæ€§çš„信息
     */
    @GetMapping("/gridUsedAttribute")
    public DataGrid<CodeClassifyTemplateAttrVO> gridUsedAttribute(BaseQueryObject baseQueryObject){
        return codeTemplatePhaseService.gridUsedAttribute(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeTempphaseController.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/NewAppConstantEnum.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
package com.vci.ubcs.code.enumpack;
import org.springblade.core.launch.constant.AppConstant;
public enum NewAppConstantEnum {
    /**
     * ç¼–码规则,服务启动名
     */
    APPLICATION_NAME_CODE(AppConstant.APPLICATION_NAME_CODE,"编码规则服务"),
    ;
    /**
     * æžšä¸¾çš„name
     */
    private String name;
    /**
     * æžšä¸¾æ˜¾ç¤ºæ–‡æœ¬
     */
    private String text;
    NewAppConstantEnum(String name, String text) {
        this.name = name;
        this.text = text;
    }
    public String getName() {
        return name;
    }
    public String getText() {
        return text;
    }
    public void setName(String name) {
        this.name = name;
    }
    public void setText(String text) {
        this.text = text;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeButtonClient.java
@@ -18,7 +18,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.vci.ubcs.code.entity.CodeButtonEntity;
import com.vci.ubcs.code.entity.CodeButton;
import com.vci.ubcs.code.entity.CodeKeyattrrepeatEntity;
import com.vci.ubcs.code.mapper.CodeButtonMapper;
import com.vci.ubcs.code.service.ICodeButtonService;
@@ -48,13 +48,13 @@
    @Override
    @GetMapping(TOP)
    public BladePage<CodeButtonEntity> top(Integer current, Integer size) {
    public BladePage<CodeButton> top(Integer current, Integer size) {
        Query query = new Query();
        query.setCurrent(current);
        query.setSize(size);
//        IPage<CodeKeyattrrepeatEntity> page = codeKeyattrrepeatMapper.selectPage(Condition.getPage(query), Wrappers.emptyWrapper());
        IPage<CodeButtonEntity> page = codeButtonMapper.selectPage(Condition.getPage(query), Wrappers.emptyWrapper());
        IPage<CodeButton> page = codeButtonMapper.selectPage(Condition.getPage(query), Wrappers.emptyWrapper());
//        IPage<CodeKeyattrrepeatEntity> page = codebuttonService.page(Condition.getPage(query));
//        return null;
        return BladePage.of(page);
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodePhaseattrClient.java
@@ -18,12 +18,12 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.vci.ubcs.code.mapper.CodePhaseattrMapper;
import com.vci.ubcs.code.entity.CodePhaseAttr;
import com.vci.ubcs.code.mapper.CodePhaseAttrMapper;
import lombok.AllArgsConstructor;
import org.springblade.core.mp.support.BladePage;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import com.vci.ubcs.code.entity.CodePhaseattrEntity;
import com.vci.ubcs.code.service.ICodePhaseattrService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -40,15 +40,15 @@
@AllArgsConstructor
public class CodePhaseattrClient implements ICodePhaseattrClient {
    private final CodePhaseattrMapper codePhaseattrMapper;
    private final CodePhaseAttrMapper codePhaseAttrMapper;
    @Override
    @GetMapping(TOP)
    public BladePage<CodePhaseattrEntity> top(Integer current, Integer size) {
    public BladePage<CodePhaseAttr> top(Integer current, Integer size) {
        Query query = new Query();
        query.setCurrent(current);
        query.setSize(size);
        IPage<CodePhaseattrEntity> page = codePhaseattrMapper.selectPage(Condition.getPage(query), Wrappers.emptyWrapper());
        IPage<CodePhaseAttr> page = codePhaseAttrMapper.selectPage(Condition.getPage(query), Wrappers.emptyWrapper());
        return BladePage.of(page);
    }
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeTempbuttonClient.java
@@ -18,12 +18,12 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.vci.ubcs.code.mapper.CodeTempbuttonMapper;
import com.vci.ubcs.code.entity.CodeClassifyTemplateButton;
import com.vci.ubcs.code.mapper.CodeClassifyTemplateButtonMapper;
import lombok.AllArgsConstructor;
import org.springblade.core.mp.support.BladePage;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import com.vci.ubcs.code.entity.CodeTempbuttonEntity;
import com.vci.ubcs.code.service.ICodeTempbuttonService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -41,15 +41,15 @@
public class CodeTempbuttonClient implements ICodeTempbuttonClient {
    private final CodeTempbuttonMapper codeTempbuttonMapper;
    private final CodeClassifyTemplateButtonMapper codeTempbuttonMapper;
    @Override
    @GetMapping(TOP)
    public BladePage<CodeTempbuttonEntity> top(Integer current, Integer size) {
    public BladePage<CodeClassifyTemplateButton> top(Integer current, Integer size) {
        Query query = new Query();
        query.setCurrent(current);
        query.setSize(size);
        IPage<CodeTempbuttonEntity> page = codeTempbuttonMapper.selectPage(Condition.getPage(query), Wrappers.emptyWrapper());
        IPage<CodeClassifyTemplateButton> page = codeTempbuttonMapper.selectPage(Condition.getPage(query), Wrappers.emptyWrapper());
        return BladePage.of(page);
    }
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeTempphaseClient.java
@@ -18,13 +18,12 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.vci.ubcs.code.mapper.CodeTempphaseMapper;
import com.vci.ubcs.code.entity.CodeTemplatePhase;
import com.vci.ubcs.code.mapper.CodeTemplatePhaseMapper;
import lombok.AllArgsConstructor;
import org.springblade.core.mp.support.BladePage;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import com.vci.ubcs.code.entity.CodeTempphaseEntity;
import com.vci.ubcs.code.service.ICodeTempphaseService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
@@ -40,15 +39,15 @@
@AllArgsConstructor
public class CodeTempphaseClient implements ICodeTempphaseClient {
    private final CodeTempphaseMapper codeTempphaseMapper;
    private final CodeTemplatePhaseMapper codeTempphaseMapper;
    @Override
    @GetMapping(TOP)
    public BladePage<CodeTempphaseEntity> top(Integer current, Integer size) {
    public BladePage<CodeTemplatePhase> top(Integer current, Integer size) {
        Query query = new Query();
        query.setCurrent(current);
        query.setSize(size);
        IPage<CodeTempphaseEntity> page = codeTempphaseMapper.selectPage(Condition.getPage(query), Wrappers.emptyWrapper());
        IPage<CodeTemplatePhase> page = codeTempphaseMapper.selectPage(Condition.getPage(query), Wrappers.emptyWrapper());
        return BladePage.of(page);
    }
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeButtonClient.java
@@ -16,7 +16,7 @@
 */
package com.vci.ubcs.code.feign;
import com.vci.ubcs.code.entity.CodeButtonEntity;
import com.vci.ubcs.code.entity.CodeButton;
import org.springblade.core.mp.support.BladePage;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
@@ -44,6 +44,6 @@
     * @return BladePage
     */
    @GetMapping(TOP)
    BladePage<CodeButtonEntity> top(@RequestParam("current") Integer current, @RequestParam("size") Integer size);
    BladePage<CodeButton> top(@RequestParam("current") Integer current, @RequestParam("size") Integer size);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodePhaseattrClient.java
@@ -16,8 +16,9 @@
 */
package com.vci.ubcs.code.feign;
import com.vci.ubcs.code.entity.CodePhaseAttr;
import com.vci.ubcs.code.entity.CodeTemplatePhase;
import org.springblade.core.mp.support.BladePage;
import com.vci.ubcs.code.entity.CodePhaseattrEntity;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@@ -44,6 +45,6 @@
     * @return BladePage
     */
    @GetMapping(TOP)
    BladePage<CodePhaseattrEntity> top(@RequestParam("current") Integer current, @RequestParam("size") Integer size);
    BladePage<CodePhaseAttr> top(@RequestParam("current") Integer current, @RequestParam("size") Integer size);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeTempbuttonClient.java
@@ -16,8 +16,8 @@
 */
package com.vci.ubcs.code.feign;
import com.vci.ubcs.code.entity.CodeClassifyTemplateButton;
import org.springblade.core.mp.support.BladePage;
import com.vci.ubcs.code.entity.CodeTempbuttonEntity;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@@ -44,6 +44,6 @@
     * @return BladePage
     */
    @GetMapping(TOP)
    BladePage<CodeTempbuttonEntity> top(@RequestParam("current") Integer current, @RequestParam("size") Integer size);
    BladePage<CodeClassifyTemplateButton> top(@RequestParam("current") Integer current, @RequestParam("size") Integer size);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeTempphaseClient.java
@@ -16,8 +16,8 @@
 */
package com.vci.ubcs.code.feign;
import com.vci.ubcs.code.entity.CodeTemplatePhase;
import org.springblade.core.mp.support.BladePage;
import com.vci.ubcs.code.entity.CodeTempphaseEntity;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@@ -44,6 +44,6 @@
     * @return BladePage
     */
    @GetMapping(TOP)
    BladePage<CodeTempphaseEntity> top(@RequestParam("current") Integer current, @RequestParam("size") Integer size);
    BladePage<CodeTemplatePhase> top(@RequestParam("current") Integer current, @RequestParam("size") Integer size);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeButtonMapper.java
@@ -18,8 +18,8 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.vci.ubcs.code.entity.CodeButtonEntity;
import com.vci.ubcs.code.vo.CodeButtonVO;
import com.vci.ubcs.code.entity.CodeButton;
import com.vci.ubcs.code.vo.pagemodel.CodeButtonVO;
import java.util.List;
@@ -29,7 +29,7 @@
 * @author yuxc
 * @since 2023-03-29
 */
public interface CodeButtonMapper extends BaseMapper<CodeButtonEntity> {
public interface CodeButtonMapper extends BaseMapper<CodeButton> {
    /**
     * è‡ªå®šä¹‰åˆ†é¡µ
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyMapper.java
@@ -81,6 +81,9 @@
    @MapKey("oid")
    List<Map<String,Object>> selectAllLevelParentByOid(@Param("oid") String oid);
    @MapKey("oid")
    List<Map<String,Object>> selectAllLevelParents(@Param("oid") String oid);
    @MapKey("oid")
    List<Map<String,Object>> selectByFieldPath(@Param("fieldPath") String fieldPath);
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyProcessTempMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
package com.vci.ubcs.code.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.vci.ubcs.code.entity.CodeClassifyProcessTemp;
/**
 * åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿æ•°æ®æ“ä½œå±‚
 *
 * @author ludc
 * @since 2023-05-05
 */
public interface CodeClassifyProcessTempMapper extends BaseMapper<CodeClassifyProcessTemp> {
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyTemplateAttrMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.vci.ubcs.code.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.vci.ubcs.code.entity.CodeClassify;
import com.vci.ubcs.code.entity.CodeClassifyTemplateAttr;
public interface CodeClassifyTemplateAttrMapper extends BaseMapper<CodeClassifyTemplateAttr> {
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyTemplateButtonMapper.java
ÎļþÃû´Ó Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeTempbuttonMapper.java ÐÞ¸Ä
@@ -16,10 +16,11 @@
 */
package com.vci.ubcs.code.mapper;
import com.vci.ubcs.code.entity.CodeTempbuttonEntity;
import com.vci.ubcs.code.vo.CodeTempbuttonVO;
import com.vci.ubcs.code.entity.CodeClassifyTemplateButton;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateButtonVO;
import java.util.List;
/**
@@ -28,7 +29,7 @@
 * @author yuxc
 * @since 2023-04-20
 */
public interface CodeTempbuttonMapper extends BaseMapper<CodeTempbuttonEntity> {
public interface CodeClassifyTemplateButtonMapper extends BaseMapper<CodeClassifyTemplateButton> {
    /**
     * è‡ªå®šä¹‰åˆ†é¡µ
@@ -37,7 +38,7 @@
     * @param CodeTempbutton
     * @return
     */
    List<CodeTempbuttonVO> selectCodeTempbuttonPage(IPage page, CodeTempbuttonVO CodeTempbutton);
    List<CodeClassifyTemplateButtonVO> selectCodeTempbuttonPage(IPage page, CodeClassifyTemplateButtonVO CodeTempbutton);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClstemplateMapper.java
@@ -20,9 +20,11 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.vci.ubcs.code.entity.CodeClstemplateEntity;
import com.vci.ubcs.code.vo.CodeClstemplateVO;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
 * ç¼–码库定义-模板管理 Mapper æŽ¥å£
@@ -57,5 +59,17 @@
     */
    int countAllLevelChildOid(@Param("oid") String oid);
    /**
     * æ ¡éªŒæ˜¯å¦æœ‰ä¸‹çº§èŠ‚ç‚¹ï¼Œä¸æ ¡éªŒæ˜¯å¦å…³è”äº†æ•°æ®
     *
     * @param nameoid
     * @return
     */
    @MapKey("REVISIONSEQ")
    Map<String,Object> getNextRevision(@Param("nameoid") String nameoid);
    List<CodeClstemplateEntity> selectCodeClassifyTemplateDOByTree(@Param("codeclassifyoid") String codeclassifyoid,
                                                                   @Param("lcstatus") String lcstatus);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodePhaseAttrMapper.java
copy from Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeTempbuttonMapper.java copy to Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodePhaseAttrMapper.java
Îļþ´Ó Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeTempbuttonMapper.java ¸´ÖÆ
@@ -16,28 +16,32 @@
 */
package com.vci.ubcs.code.mapper;
import com.vci.ubcs.code.entity.CodeTempbuttonEntity;
import com.vci.ubcs.code.vo.CodeTempbuttonVO;
import com.vci.ubcs.code.entity.CodePhaseAttr;
import com.vci.ubcs.code.vo.CodePhaseattrVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import java.util.List;
/**
 * ç¼–码库定义-模板按钮扩展 Mapper æŽ¥å£
 * ç¼–码库定义-模板阶段-属性 Mapper æŽ¥å£
 *
 * @author yuxc
 * @since 2023-04-20
 */
public interface CodeTempbuttonMapper extends BaseMapper<CodeTempbuttonEntity> {
public interface CodePhaseAttrMapper extends BaseMapper<CodePhaseAttr> {
    /**
     * è‡ªå®šä¹‰åˆ†é¡µ
     *
     * @param page
     * @param CodeTempbutton
     * @param CodePhaseattr
     * @return
     */
    List<CodeTempbuttonVO> selectCodeTempbuttonPage(IPage page, CodeTempbuttonVO CodeTempbutton);
    List<CodePhaseattrVO> selectCodePhaseattrPage(IPage page, CodePhaseattrVO CodePhaseattr);
    List<CodePhaseAttr> selectByPhasea(String oid);
    List<CodePhaseAttr> selectByPhaseaIds(String oids);
    List<CodePhaseAttr> listLinkAttrDOByTemplateAttrDOS(String id,String codeClassifyTemplateOid);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodePhaseattrMapper.java
@@ -16,7 +16,7 @@
 */
package com.vci.ubcs.code.mapper;
import com.vci.ubcs.code.entity.CodePhaseattrEntity;
import com.vci.ubcs.code.entity.CodePhaseAttr;
import com.vci.ubcs.code.vo.CodePhaseattrVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -28,7 +28,7 @@
 * @author yuxc
 * @since 2023-04-20
 */
public interface CodePhaseattrMapper extends BaseMapper<CodePhaseattrEntity> {
public interface CodePhaseAttrMapper extends BaseMapper<CodePhaseAttr> {
    /**
     * è‡ªå®šä¹‰åˆ†é¡µ
@@ -39,6 +39,9 @@
     */
    List<CodePhaseattrVO> selectCodePhaseattrPage(IPage page, CodePhaseattrVO CodePhaseattr);
    List<CodePhaseAttr> selectByPhasea(String oid);
    List<CodePhaseattrEntity> selectByPhasea(String oid);
    List<CodePhaseAttr> selectByPhaseaIds(String oids);
    List<CodePhaseAttr> listLinkAttrDOByTemplateAttrDOS(String id,String codeClassifyTemplateOid);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeTemplatePhaseMapper.java
ÎļþÃû´Ó Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeTempphaseMapper.java ÐÞ¸Ä
@@ -16,10 +16,11 @@
 */
package com.vci.ubcs.code.mapper;
import com.vci.ubcs.code.entity.CodeTempphaseEntity;
import com.vci.ubcs.code.vo.CodeTempphaseVO;
import com.vci.ubcs.code.entity.CodeTemplatePhase;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.vci.ubcs.code.vo.pagemodel.CodeTemplatePhaseVO;
import java.util.List;
/**
@@ -28,7 +29,7 @@
 * @author yuxc
 * @since 2023-04-20
 */
public interface CodeTempphaseMapper extends BaseMapper<CodeTempphaseEntity> {
public interface CodeTemplatePhaseMapper extends BaseMapper<CodeTemplatePhase> {
    /**
     * è‡ªå®šä¹‰åˆ†é¡µ
@@ -37,7 +38,7 @@
     * @param CodeTempphase
     * @return
     */
    List<CodeTempphaseVO> selectCodeTempphasePage(IPage page, CodeTempphaseVO CodeTempphase);
    List<CodeTemplatePhaseVO> selectCodeTempphasePage(IPage page, CodeTemplatePhaseVO CodeTempphase);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CommonsMapper.java
@@ -3,6 +3,7 @@
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
@@ -16,6 +17,6 @@
    @MapKey("count")
    Map<String,String> selectByCount(@Param("tableName") String tableName,@Param("oid") String oid,@Param("btm") String btm);
    List<String> selectById(@Param("inSql") String inSql);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeButtonService.java
@@ -17,8 +17,13 @@
package com.vci.ubcs.code.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.vci.ubcs.code.vo.CodeButtonVO;
import com.vci.ubcs.code.entity.CodeButton;
import com.vci.ubcs.code.vo.pagemodel.CodeButtonVO;
import com.vci.ubcs.starter.exception.VciBaseException;
import org.springblade.core.tool.api.R;
import java.util.Collection;
import java.util.List;
/**
 * æ¨¡æ¿æ‰©å±•æ±  æœåŠ¡ç±»
@@ -38,6 +43,37 @@
    IPage<CodeButtonVO> selectcodebuttonPage(IPage<CodeButtonVO> page, CodeButtonVO codebutton);
    /**
     * ä¸»é”®æ‰¹é‡èŽ·å–ä¸»æ•°æ®ä¸­çš„æŒ‰é’®æ‰©å±•
     * @param oidCollections ä¸»é”®é›†åˆï¼Œä½†æ˜¯å—性能影响,建议一次查询不超过10000个
     * @return ä¸»æ•°æ®ä¸­çš„æŒ‰é’®æ‰©å±•显示对象
     * @throws VciBaseException æŸ¥è¯¢å‡ºçŽ°å¼‚å¸¸æ—¶ä¼šæŠ›å‡º
     */
    Collection<CodeButtonVO> listCodeButtonByOids(Collection<String> oidCollections) throws VciBaseException;
    /**
     * æ‰¹é‡æ•°æ®å¯¹è±¡è½¬æ¢ä¸ºæ˜¾ç¤ºå¯¹è±¡
     * @param codeButtonDOs æ•°æ®å¯¹è±¡åˆ—表
     * @return æ˜¾ç¤ºå¯¹è±¡
     * @throws VciBaseException å‚数为空或者不存在的时候会抛出异常
     */
    List<CodeButtonVO> codeButtonDO2VOs(Collection<CodeButton>  codeButtonDOs) throws VciBaseException;
    /**
     * æ•°æ®å¯¹è±¡è½¬æ¢ä¸ºæ˜¾ç¤ºå¯¹è±¡
     * @param  codeButtonDO æ•°æ®å¯¹è±¡
     * @return æ˜¾ç¤ºå¯¹è±¡
     * @throws VciBaseException æ‹·è´å±žæ€§å‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    CodeButtonVO codeButtonDO2VO(CodeButton codeButtonDO) throws VciBaseException;
    /**
     * æ ¹æ®ä¸»é”®æ‰¹é‡æŸ¥è¯¢å¯¹è±¡
     * @param oids å¯¹è±¡ä¸»é”®,使用逗号分隔,但是不能超过1000
     * @return ä¸šåŠ¡å¯¹è±¡
     */
    List<CodeButton> selectByPrimaryKeyCollection(Collection<String> oids);
    /**
     * å¯ç”¨
     * @param oid æ•°æ®ä¼ è¾“
     * @return æ‰§è¡Œç»“æžœ
@@ -55,5 +91,6 @@
     * @param ids ä¸»æ•°æ®ä¸­çš„æŒ‰é’®æ‰©å±•数据传输
     * @return åˆ é™¤ç»“果反馈::success:成功,fail:失败
     */
//    R deleteCodeButton(String ids);
    //    R deleteCodeButton(String ids);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyProcessTempService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,118 @@
package com.vci.ubcs.code.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.code.dto.CodeClassifyProcessTempDTO;
import com.vci.ubcs.code.entity.CodeClassifyProcessTemp;
import com.vci.ubcs.code.entity.CodeClassifyTemplateAttr;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyProcessTempVO;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.web.pagemodel.DataGrid;
import com.vci.ubcs.starter.web.pagemodel.PageHelper;
import com.vci.ubcs.starter.web.wrapper.VciQueryWrapperForDO;
import org.springblade.core.tool.api.R;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
 * åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿æœåŠ¡æŽ¥å£
 *
 * @author ludc
 * @date 2023/5/5
 */
public interface ICodeClassifyProcessTempService extends IService<CodeClassifyProcessTemp> {
    /**
     * æŸ¥è¯¢æ‰€æœ‰çš„分类使用的流程模板
     * @param conditionMap æŸ¥è¯¢æ¡ä»¶
     * @param pageHelper åˆ†é¡µå’ŒæŽ’序
     * @return æ‰§è¡Œç»“æžœ
     * @throws VciBaseException æŸ¥è¯¢æ¡ä»¶å’Œåˆ†é¡µå‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    DataGrid<CodeClassifyProcessTempVO> gridCodeClassifyProcessTemp(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
    /**
     * æ‰¹é‡æ•°æ®å¯¹è±¡è½¬æ¢ä¸ºæ˜¾ç¤ºå¯¹è±¡
     * @param codeClassifyProcessTempDOs æ•°æ®å¯¹è±¡åˆ—表
     * @return æ˜¾ç¤ºå¯¹è±¡
     * @throws VciBaseException å‚数为空或者不存在的时候会抛出异常
     */
    List<CodeClassifyProcessTempVO> codeClassifyProcessTempDO2VOs(Collection<CodeClassifyProcessTemp> codeClassifyProcessTempDOs) throws VciBaseException;
    /**
     * æ•°æ®å¯¹è±¡è½¬æ¢ä¸ºæ˜¾ç¤ºå¯¹è±¡
     * @param  codeClassifyProcessTempDO æ•°æ®å¯¹è±¡
     * @return æ˜¾ç¤ºå¯¹è±¡
     * @throws VciBaseException æ‹·è´å±žæ€§å‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    CodeClassifyProcessTempVO codeClassifyProcessTempDO2VO(CodeClassifyProcessTemp codeClassifyProcessTempDO) throws VciBaseException;
    /**
     * å¢žåŠ åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿
     * @param codeClassifyProcessTempDTO åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿æ•°æ®ä¼ è¾“对象
     * @return æ‰§è¡Œç»“æžœ
     * @throws VciBaseException å‚数为空,唯一项,必输项不通过时会抛出异常
     */
    CodeClassifyProcessTempVO addSave(CodeClassifyProcessTempDTO codeClassifyProcessTempDTO) throws VciBaseException;
    /**
     * ä¿®æ”¹åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿
     * @param codeClassifyProcessTempDTO åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿æ•°æ®ä¼ è¾“对象
     * @return æ‰§è¡Œç»“æžœ
     * @throws VciBaseException å‚数为空,唯一项,必输项不通过时会抛出异常
     */
    CodeClassifyProcessTempVO editSave(CodeClassifyProcessTempDTO codeClassifyProcessTempDTO) throws VciBaseException;
    /**
     * åˆ é™¤åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿
     * @param codeClassifyProcessTempDTO åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿æ•°æ®ä¼ è¾“对象,oid和ts需要传输
     * @return åˆ é™¤ç»“果反馈::success:成功,fail:失败
     * @throws VciBaseException å‚数为空,被引用时抛出异常
     */
    R deleteCodeClassifyProcessTemp(CodeClassifyProcessTempDTO codeClassifyProcessTempDTO) throws VciBaseException;
    /**
     * ä¸»é”®èŽ·å–åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿
     * @param oid ä¸»é”®
     * @return åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿æ˜¾ç¤ºå¯¹è±¡
     * @throws VciBaseException å‚数为空,数据不存在时会抛出异常
     */
    CodeClassifyProcessTempVO getObjectByOid(String oid) throws VciBaseException;
    /**
     * ä¸»é”®æ‰¹é‡èŽ·å–åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿
     * @param oidCollections ä¸»é”®é›†åˆï¼Œä½†æ˜¯å—性能影响,建议一次查询不超过10000个
     * @return åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿æ˜¾ç¤ºå¯¹è±¡
     * @throws VciBaseException æŸ¥è¯¢å‡ºçŽ°å¼‚å¸¸æ—¶ä¼šæŠ›å‡º
     */
    Collection<CodeClassifyProcessTempVO> listCodeClassifyProcessTempByOids(Collection<String> oidCollections) throws VciBaseException;
    /**
     * å‚照分类使用的流程模板列表
     * @param conditionMap æŸ¥è¯¢æ¡ä»¶
     * @param pageHelper åˆ†é¡µå’ŒæŽ’序
     * @return åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿æ˜¾ç¤ºå¯¹è±¡åˆ—表,生效的内容
     * @throws VciBaseException æŸ¥è¯¢æ¡ä»¶å’Œåˆ†é¡µå‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    DataGrid<CodeClassifyProcessTempVO> refDataGridCodeClassifyProcessTemp(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
    /**
     * èŽ·å–æµç¨‹çš„æ¨¡æ¿çš„ä¿¡æ¯
     * @param codeTemplateOid æ¨¡æ¿çš„主键
     * @param processUse ç”¨é€”
     * @return æ¨¡æ¿çš„信息
     */
    List<CodeClassifyProcessTempVO> listProcessTemplate(String codeTemplateOid, String processUse);
    /**
     * ä½¿ç”¨æŸ¥è¯¢å°è£…器来查询
     * @param queryWrapper æŸ¥è¯¢å°è£…器
     * @return æ•°æ®å¯¹è±¡
     */
    List<CodeClassifyProcessTempVO> selectByWrapper(LambdaQueryWrapper<CodeClassifyProcessTemp> queryWrapper);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyService.java
@@ -89,9 +89,9 @@
     * @param lcStatus çŠ¶æ€
     * @return æ‰§è¡Œç»“æžœ
     */
    R updateLcStatus(String oid, String lcStatus);
    R updateLcStatus(String oid, String lcStatus);
    /**
    /**
     * æ ¹æ®ä¸»é”®æ‰¹é‡æŸ¥è¯¢å¯¹è±¡
     * @param oids å¯¹è±¡ä¸»é”®,使用逗号分隔,但是不能超过1000
     * @return ä¸šåŠ¡å¯¹è±¡
@@ -198,4 +198,18 @@
     * @return ä¸»é¢˜åº“显示树
     */
    List<Tree> treeTopCodeClassify(TreeQueryObject treeQueryObject);
    /**
     * èŽ·å–è¿™ä¸ªåˆ†ç±»ä¸‹çš„ä¸šåŠ¡ç±»åž‹ï¼Œå½“å‰æ²¡æœ‰å°±èŽ·å–ä¸Šçº§çš„ç¬¬ä¸€ä¸ªä¸šåŠ¡ç±»åž‹
     * @param oid å½“前分类的oid
     * @return oid,id,name,btmtypeid,btmtypename
     */
    CodeClassify selectBtmOrParentBtm(String oid);
    /**
     * èŽ·å–æ‰€æœ‰ä¸‹çº§æ•°æ®
     * @param oid æ•°æ®ä¸»é”®
     * @return æŸ¥è¯¢ç»“æžœ
     */
    List<CodeClassify> selectAllLevelParents(String oid);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyTemplateAttrService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
package com.vci.ubcs.code.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.code.entity.CodeClassifyTemplateAttr;
import com.vci.ubcs.code.entity.CodeTemplatePhase;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.web.pagemodel.DataGrid;
import com.vci.ubcs.starter.web.pagemodel.PageHelper;
import java.sql.Wrapper;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
 * ä¸»é¢˜åº“分类的模板属性服务接口
 *
 * @author ludc
 * @date 2023/5/5
 */
public interface ICodeClassifyTemplateAttrService extends IService<CodeClassifyTemplateAttr> {
    /**
     * æŸ¥è¯¢æ‰€æœ‰çš„主题库分类的模板属性
     * @param lambdaQueryWrapper æŸ¥è¯¢æ¡ä»¶
     * @param pageHelper åˆ†é¡µå’ŒæŽ’序
     * @return æ‰§è¡Œç»“æžœ
     * @throws VciBaseException æŸ¥è¯¢æ¡ä»¶å’Œåˆ†é¡µå‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    DataGrid<CodeClassifyTemplateAttrVO> gridCodeClassifyTemplateAttr(LambdaQueryWrapper<CodeClassifyTemplateAttr> lambdaQueryWrapper , PageHelper pageHelper) throws VciBaseException;
    /**
     * æ‰¹é‡æ•°æ®å¯¹è±¡è½¬æ¢ä¸ºæ˜¾ç¤ºå¯¹è±¡
     * @param codeClassifyTemplateAttrDOs æ•°æ®å¯¹è±¡åˆ—表
     * @return æ˜¾ç¤ºå¯¹è±¡
     * @throws VciBaseException å‚数为空或者不存在的时候会抛出异常
     */
    List<CodeClassifyTemplateAttrVO> codeClassifyTemplateAttrDO2VOs(Collection<CodeClassifyTemplateAttr> codeClassifyTemplateAttrDOs) throws VciBaseException;
    /**
     * æ•°æ®å¯¹è±¡è½¬æ¢ä¸ºæ˜¾ç¤ºå¯¹è±¡
     * @param  codeClassifyTemplateAttrDO æ•°æ®å¯¹è±¡
     * @return æ˜¾ç¤ºå¯¹è±¡
     * @throws VciBaseException æ‹·è´å±žæ€§å‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    CodeClassifyTemplateAttrVO codeClassifyTemplateAttrDO2VO(CodeClassifyTemplateAttr codeClassifyTemplateAttrDO) throws VciBaseException;
    /**
     * å‚照主题库分类的模板属性列表
     * @param conditionMap æŸ¥è¯¢æ¡ä»¶
     * @param pageHelper åˆ†é¡µå’ŒæŽ’序
     * @return ä¸»é¢˜åº“分类的模板属性显示对象列表,生效的内容
     * @throws VciBaseException æŸ¥è¯¢æ¡ä»¶å’Œåˆ†é¡µå‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    DataGrid<CodeClassifyTemplateAttrVO> refDataGridCodeClassifyTemplateAttr(Map<String, Object> conditionMap, PageHelper pageHelper) throws VciBaseException;
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyValueService.java
@@ -5,16 +5,20 @@
import com.vci.ubcs.code.dto.CodeClassifyValueDTO;
import com.vci.ubcs.code.entity.CodeClassifyValue;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyValueVO;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
import com.vci.ubcs.starter.web.pagemodel.DataGrid;
import com.vci.ubcs.starter.web.pagemodel.PageHelper;
import com.vci.ubcs.starter.web.pagemodel.Tree;
import org.springblade.core.tool.api.R;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
 * åˆ†ç±»ç æ®µçš„码值服务接口
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClstemplateService.java
@@ -22,11 +22,14 @@
import com.vci.ubcs.code.entity.CodeClstemplateEntity;
import com.vci.ubcs.code.vo.CodeClstemplateVO;
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
import com.vci.ubcs.starter.web.pagemodel.DataGrid;
import com.vci.ubcs.starter.web.pagemodel.Tree;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
 * ç¼–码库定义-模板管理 æœåŠ¡ç±»
@@ -50,7 +53,7 @@
     * @param treeQueryObject æ ‘查询对象
     * @return åˆ†ç±»æ¨¡æ¿å¯¹è±¡ æ˜¾ç¤ºæ ‘
     */
    List<Tree> treeCodeClassifyTemplate(TreeQueryObject treeQueryObject);
    List<Tree> treeCodeClassifyTemplate(TreeQueryObject treeQueryObject);
    /**
     * æ ¹æ®æ ‘形查询对象来查询数据对象
@@ -154,4 +157,30 @@
     * å‡ç‰ˆ
     */
    R Upgrade(CodeClstemplateDTO codeClassifyDTO);
    /**
     * æ¨¡æ¿å…‹éš†
     */
    R copyTemplate(CodeClstemplateDTO codeClassifyDTO);
    /**
     * åˆ†ç±»æ¨¡æ¿åˆ—表
     * @param plCodeClstemplate æŸ¥è¯¢æ¡ä»¶
     * @param query åˆ†é¡µå¯¹è±¡
     * @return æ˜¾ç¤ºå¯¹è±¡
     */
    DataGrid<CodeClstemplateVO> gridCodeClassifyTemplate(CodeClstemplateVO plCodeClstemplate, Query query);
    /**
     * å¢žåŠ åˆ†ç±»æ¨¡æ¿å¯¹è±¡
     * @param codeClassifyTemplateDTO åˆ†ç±»æ¨¡æ¿å¯¹è±¡æ•°æ®ä¼ è¾“对象
     * @return æ‰§è¡Œç»“æžœ
     */
    R<CodeClstemplateVO> addSave(CodeClstemplateDTO codeClassifyTemplateDTO);
    /**
     * ä¿®æ”¹åˆ†ç±»æ¨¡æ¿å¯¹è±¡
     * @param codeClassifyTemplateDTO åˆ†ç±»æ¨¡æ¿å¯¹è±¡æ•°æ®ä¼ è¾“对象
     * @return æ‰§è¡Œç»“æžœ
     */
    R<CodeClstemplateVO> editSave(CodeClstemplateDTO codeClassifyTemplateDTO);
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodePhaseattrService.java
@@ -18,7 +18,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.code.entity.CodePhaseattrEntity;
import com.vci.ubcs.code.entity.CodePhaseAttr;
import com.vci.ubcs.code.vo.CodePhaseattrVO;
/**
@@ -27,7 +27,7 @@
 * @author yuxc
 * @since 2023-04-20
 */
public interface ICodePhaseattrService extends IService<CodePhaseattrEntity> {
public interface ICodePhaseattrService extends IService<CodePhaseAttr> {
    /**
     * è‡ªå®šä¹‰åˆ†é¡µ
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeTempbuttonService.java
@@ -18,8 +18,18 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.code.entity.CodeTempbuttonEntity;
import com.vci.ubcs.code.vo.CodeTempbuttonVO;
import com.vci.ubcs.code.dto.CodeClassifyTemplateButtonDTO;
import com.vci.ubcs.code.entity.CodeClassifyTemplateButton;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateButtonVO;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.web.pagemodel.DataGrid;
import com.vci.ubcs.starter.web.pagemodel.PageHelper;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
 * ç¼–码库定义-模板按钮扩展 æœåŠ¡ç±»
@@ -27,7 +37,90 @@
 * @author yuxc
 * @since 2023-04-20
 */
public interface ICodeTempbuttonService extends IService<CodeTempbuttonEntity> {
public interface ICodeTempbuttonService extends IService<CodeClassifyTemplateButton> {
    /**
     * æŸ¥è¯¢æ‰€æœ‰çš„主题库里模板包含的按钮
     * @param codeClassifyTemplateButtonVO æŸ¥è¯¢æ¡ä»¶
     * @param query åˆ†é¡µå’ŒæŽ’序
     * @return æ‰§è¡Œç»“æžœ
     * @throws VciBaseException æŸ¥è¯¢æ¡ä»¶å’Œåˆ†é¡µå‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    DataGrid<CodeClassifyTemplateButtonVO> gridCodeClassifyTemplateButton(CodeClassifyTemplateButtonVO codeClassifyTemplateButtonVO, Query query) throws VciBaseException;
    /**
     * æ‰¹é‡æ•°æ®å¯¹è±¡è½¬æ¢ä¸ºæ˜¾ç¤ºå¯¹è±¡
     * @param codeClassifyTemplateButtonDOs æ•°æ®å¯¹è±¡åˆ—表
     * @return æ˜¾ç¤ºå¯¹è±¡
     * @throws VciBaseException å‚数为空或者不存在的时候会抛出异常
     */
    List<CodeClassifyTemplateButtonVO> codeClassifyTemplateButtonDO2VOs(Collection<CodeClassifyTemplateButton> codeClassifyTemplateButtonDOs) throws VciBaseException;
    /**
     * æ‰¹é‡æ•°æ®å¯¹è±¡è½¬æ¢ä¸ºæ˜¾ç¤ºå¯¹è±¡
     * @param codeClassifyTemplateButtonDOs æ•°æ®å¯¹è±¡åˆ—表
     * @param hasButtonVO æ˜¯å¦åŒ…含按钮的信息
     * @return æ˜¾ç¤ºå¯¹è±¡
     * @throws VciBaseException å‚数为空或者不存在的时候会抛出异常
     */
    List<CodeClassifyTemplateButtonVO> codeClassifyTemplateButtonDO2VOs(Collection<CodeClassifyTemplateButton> codeClassifyTemplateButtonDOs, boolean hasButtonVO) throws VciBaseException;
    /**
     * æ•°æ®å¯¹è±¡è½¬æ¢ä¸ºæ˜¾ç¤ºå¯¹è±¡
     * @param  codeClassifyTemplateButtonDO æ•°æ®å¯¹è±¡
     * @return æ˜¾ç¤ºå¯¹è±¡
     * @throws VciBaseException æ‹·è´å±žæ€§å‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    CodeClassifyTemplateButtonVO codeClassifyTemplateButtonDO2VO(CodeClassifyTemplateButton codeClassifyTemplateButtonDO) throws VciBaseException;
    /**
     * å¢žåŠ ä¸»é¢˜åº“é‡Œæ¨¡æ¿åŒ…å«çš„æŒ‰é’®
     * @param codeClassifyTemplateButtonDTO ä¸»é¢˜åº“里模板包含的按钮数据传输对象
     * @return æ‰§è¡Œç»“æžœ
     * @throws VciBaseException å‚数为空,唯一项,必输项不通过时会抛出异常
     */
    boolean addSave(CodeClassifyTemplateButtonDTO codeClassifyTemplateButtonDTO) throws VciBaseException;
    /**
     * ä¿®æ”¹ä¸»é¢˜åº“里模板包含的按钮
     * @param codeClassifyTemplateButtonDTO ä¸»é¢˜åº“里模板包含的按钮数据传输对象
     * @return æ‰§è¡Œç»“æžœ
     * @throws VciBaseException å‚数为空,唯一项,必输项不通过时会抛出异常
     */
    boolean editSave(CodeClassifyTemplateButtonDTO codeClassifyTemplateButtonDTO) throws VciBaseException;
    /**
     * åˆ é™¤ä¸»é¢˜åº“里模板包含的按钮
     * @param codeClassifyTemplateButtonDTO ä¸»é¢˜åº“里模板包含的按钮数据传输对象,oid和ts需要传输
     * @return åˆ é™¤ç»“果反馈::success:成功,fail:失败
     * @throws VciBaseException å‚数为空,被引用时抛出异常
     */
    R deleteCodeClassifyTemplateButton(CodeClassifyTemplateButtonDTO codeClassifyTemplateButtonDTO) throws VciBaseException;
    /**
     * ä¸»é”®èŽ·å–ä¸»é¢˜åº“é‡Œæ¨¡æ¿åŒ…å«çš„æŒ‰é’®
     * @param oid ä¸»é”®
     * @return ä¸»é¢˜åº“里模板包含的按钮显示对象
     * @throws VciBaseException å‚数为空,数据不存在时会抛出异常
     */
    CodeClassifyTemplateButtonVO getObjectByOid(String oid) throws VciBaseException;
    /**
     * ä¸»é”®æ‰¹é‡èŽ·å–ä¸»é¢˜åº“é‡Œæ¨¡æ¿åŒ…å«çš„æŒ‰é’®
     * @param oidCollections ä¸»é”®é›†åˆï¼Œä½†æ˜¯å—性能影响,建议一次查询不超过10000个
     * @return ä¸»é¢˜åº“里模板包含的按钮显示对象
     * @throws VciBaseException æŸ¥è¯¢å‡ºçŽ°å¼‚å¸¸æ—¶ä¼šæŠ›å‡º
     */
    Collection<CodeClassifyTemplateButtonVO> listCodeClassifyTemplateButtonByOids(Collection<String> oidCollections) throws VciBaseException;
    /**
     * å‚照主题库里模板包含的按钮列表
     * @param conditionMap æŸ¥è¯¢æ¡ä»¶
     * @param pageHelper åˆ†é¡µå’ŒæŽ’序
     * @return ä¸»é¢˜åº“里模板包含的按钮显示对象列表,生效的内容
     * @throws VciBaseException æŸ¥è¯¢æ¡ä»¶å’Œåˆ†é¡µå‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    DataGrid<CodeClassifyTemplateButtonVO> refDataGridCodeClassifyTemplateButton(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
    /**
     * è‡ªå®šä¹‰åˆ†é¡µ
@@ -36,8 +129,7 @@
     * @param CodeTempbutton
     * @return
     */
    IPage<CodeTempbuttonVO> selectCodeTempbuttonPage(IPage<CodeTempbuttonVO> page, CodeTempbuttonVO CodeTempbutton);
    IPage<CodeClassifyTemplateButtonVO> selectCodeTempbuttonPage(IPage<CodeClassifyTemplateButtonVO> page, CodeClassifyTemplateButtonVO CodeTempbutton);
    /**
     * æ¨¡æ¿åˆ é™¤çš„æ—¶å€™è§¦å‘
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeTempphaseService.java
@@ -16,10 +16,21 @@
 */
package com.vci.ubcs.code.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.code.entity.CodeTempphaseEntity;
import com.vci.ubcs.code.vo.CodeTempphaseVO;
import com.vci.ubcs.code.dto.CodeTemplatePhaseDTO;
import com.vci.ubcs.code.entity.CodeClstempattrEntity;
import com.vci.ubcs.code.entity.CodeTemplatePhase;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
import com.vci.ubcs.code.vo.pagemodel.CodeTemplatePhaseVO;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.web.pagemodel.DataGrid;
import com.vci.ubcs.starter.web.pagemodel.PageHelper;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
 * ç¼–码库定义-模板阶段 æœåŠ¡ç±»
@@ -27,17 +38,16 @@
 * @author yuxc
 * @since 2023-04-20
 */
public interface ICodeTempphaseService extends IService<CodeTempphaseEntity> {
public interface ICodeTempphaseService extends IService<CodeTemplatePhase> {
    /**
     * è‡ªå®šä¹‰åˆ†é¡µ
     *
     * @param page
     * @param CodeTempphase
     * @return
     * æŸ¥è¯¢æ‰€æœ‰çš„æ¨¡æ¿é˜¶æ®µ
     * @param codeTemplatePhaseVO æŸ¥è¯¢æ¡ä»¶
     * @param query åˆ†é¡µå’ŒæŽ’序
     * @return æ‰§è¡Œç»“æžœ
     * @throws VciBaseException æŸ¥è¯¢æ¡ä»¶å’Œåˆ†é¡µå‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    IPage<CodeTempphaseVO> selectCodeTempphasePage(IPage<CodeTempphaseVO> page, CodeTempphaseVO CodeTempphase);
    DataGrid<CodeTemplatePhaseVO> gridCodeTemplatePhase(CodeTemplatePhaseVO codeTemplatePhaseVO, Query query) throws VciBaseException;
    /**
     * æ¨¡æ¿åˆ é™¤çš„æ—¶å€™è§¦å‘
@@ -45,4 +55,93 @@
     * @return å—影响的数据
     */
    int codeTemplateDeleteTrigger(String classifyTemplateOid);
    /**
     * æ¨¡æ¿ä¿®æ”¹è§¦å‘功能
     * @param codeClassifyTemplateAttrDOInsert å±žæ€§çš„æ•°æ®å¯¹è±¡
     * @return å—影响的数据
     */
    List<CodeClstempattrEntity> codeTemplateAttrModifyTrigger(List<CodeClstempattrEntity> codeClassifyTemplateAttrDOInsert);
    /**
     * æ‰¹é‡æ•°æ®å¯¹è±¡è½¬æ¢ä¸ºæ˜¾ç¤ºå¯¹è±¡
     * @param codeTemplatePhaseDOs æ•°æ®å¯¹è±¡åˆ—表
     * @return æ˜¾ç¤ºå¯¹è±¡
     * @throws VciBaseException å‚数为空或者不存在的时候会抛出异常
     */
    List<CodeTemplatePhaseVO> codeTemplatePhaseDO2VOs(Collection<CodeTemplatePhase> codeTemplatePhaseDOs) throws VciBaseException;
    /**
     * æ•°æ®å¯¹è±¡è½¬æ¢ä¸ºæ˜¾ç¤ºå¯¹è±¡
     * @param  codeTemplatePhaseDO æ•°æ®å¯¹è±¡
     * @return æ˜¾ç¤ºå¯¹è±¡
     * @throws VciBaseException æ‹·è´å±žæ€§å‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    CodeTemplatePhaseVO codeTemplatePhaseDO2VO(CodeTemplatePhase codeTemplatePhaseDO) throws VciBaseException;
    /**
     * å¢žåŠ æ¨¡æ¿é˜¶æ®µ
     * @param codeTemplatePhaseDTO æ¨¡æ¿é˜¶æ®µæ•°æ®ä¼ è¾“对象
     * @return æ‰§è¡Œç»“æžœ
     * @throws VciBaseException å‚数为空,唯一项,必输项不通过时会抛出异常
     */
    CodeTemplatePhaseVO addSave(CodeTemplatePhaseDTO codeTemplatePhaseDTO) throws VciBaseException;
    /**
     * ä¿®æ”¹æ¨¡æ¿é˜¶æ®µ
     * @param codeTemplatePhaseDTO æ¨¡æ¿é˜¶æ®µæ•°æ®ä¼ è¾“对象
     * @return æ‰§è¡Œç»“æžœ
     * @throws VciBaseException å‚数为空,唯一项,必输项不通过时会抛出异常
     */
    CodeTemplatePhaseVO editSave(CodeTemplatePhaseDTO codeTemplatePhaseDTO) throws VciBaseException;
    /**
     * åˆ é™¤æ¨¡æ¿é˜¶æ®µ
     * @param codeTemplatePhaseDTO æ¨¡æ¿é˜¶æ®µæ•°æ®ä¼ è¾“对象,oid和ts需要传输
     * @return åˆ é™¤ç»“果反馈::success:成功,fail:失败
     * @throws VciBaseException å‚数为空,被引用时抛出异常
     */
    R deleteCodeTemplatePhase(CodeTemplatePhaseDTO codeTemplatePhaseDTO) throws VciBaseException;
    /**
     * ä¸»é”®èŽ·å–æ¨¡æ¿é˜¶æ®µ
     * @param oid ä¸»é”®
     * @return æ¨¡æ¿é˜¶æ®µæ˜¾ç¤ºå¯¹è±¡
     * @throws VciBaseException å‚数为空,数据不存在时会抛出异常
     */
    CodeTemplatePhaseVO getObjectByOid(String oid) throws VciBaseException;
    /**
     * ä¸»é”®æ‰¹é‡èŽ·å–æ¨¡æ¿é˜¶æ®µ
     * @param oidCollections ä¸»é”®é›†åˆï¼Œä½†æ˜¯å—性能影响,建议一次查询不超过10000个
     * @return æ¨¡æ¿é˜¶æ®µæ˜¾ç¤ºå¯¹è±¡
     * @throws VciBaseException æŸ¥è¯¢å‡ºçŽ°å¼‚å¸¸æ—¶ä¼šæŠ›å‡º
     */
    Collection<CodeTemplatePhaseVO> listCodeTemplatePhaseByOids(Collection<String> oidCollections) throws VciBaseException;
    /**
     * å‚照模板阶段列表
     * @param conditionMap æŸ¥è¯¢æ¡ä»¶
     * @param pageHelper åˆ†é¡µå’ŒæŽ’序
     * @return æ¨¡æ¿é˜¶æ®µæ˜¾ç¤ºå¯¹è±¡åˆ—表,生效的内容
     * @throws VciBaseException æŸ¥è¯¢æ¡ä»¶å’Œåˆ†é¡µå‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    DataGrid<CodeTemplatePhaseVO> refDataGridCodeTemplatePhase(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
    /**
     * é˜¶æ®µä¸åŒ…含的属性
     * @param conditionMap æŸ¥è¯¢å¯¹è±¡ï¼Œå¿…须要有模板的主键(classifyTemplateOid),否则不能确定属性
     * @param pageHelper åˆ†é¡µå¯¹è±¡
     * @return å±žæ€§çš„信息
     */
    DataGrid<CodeClassifyTemplateAttrVO> gridUnUsedAttribute(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
    /**
     * é˜¶æ®µåŒ…含的属性
     * @param conditionMap æŸ¥è¯¢å¯¹è±¡ï¼Œå¿…须要阶段的主键(codePhaseOid)
     * @param pageHelper åˆ†é¡µå¯¹è±¡
     * @return å±žæ€§çš„信息
     */
    DataGrid<CodeClassifyTemplateAttrVO> gridUsedAttribute(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException;
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java
@@ -8,7 +8,6 @@
import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
import com.vci.ubcs.code.dto.CodeBasicSecDTO;
import com.vci.ubcs.code.entity.CodeBasicSec;
import com.vci.ubcs.code.entity.CodeClassify;
import com.vci.ubcs.code.entity.CodeClassifyValue;
import com.vci.ubcs.code.entity.CodeFixedValue;
import com.vci.ubcs.code.enumpack.*;
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeButtonServiceImpl.java
@@ -18,14 +18,23 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
import com.vci.ubcs.code.entity.CodeButtonEntity;
import com.vci.ubcs.code.entity.CodeButton;
import com.vci.ubcs.code.enumpack.FrameworkDataLCStatus;
import com.vci.ubcs.code.mapper.CodeButtonMapper;
import com.vci.ubcs.code.service.ICodeButtonService;
import com.vci.ubcs.code.vo.CodeButtonVO;
import com.vci.ubcs.code.vo.pagemodel.CodeButtonVO;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import org.springblade.core.tool.api.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
/**
 * æ¨¡æ¿æ‰©å±•æ±  æœåŠ¡å®žçŽ°ç±»
@@ -36,7 +45,7 @@
@Service
public class CodeButtonServiceImpl implements ICodeButtonService {
    @Autowired
    @Resource
    CodeButtonMapper codeButtonMapper;
    @Override
@@ -44,11 +53,89 @@
        return page.setRecords(codeButtonMapper.selectcodebuttonPage(page, codebutton));
    }
    /**
     * ä¸»é”®æ‰¹é‡èŽ·å–ä¸»æ•°æ®ä¸­çš„æŒ‰é’®æ‰©å±•
     * @param oidCollections ä¸»é”®é›†åˆï¼Œä½†æ˜¯å—性能影响,建议一次查询不超过10000个
     * @return ä¸»æ•°æ®ä¸­çš„æŒ‰é’®æ‰©å±•显示对象
     * @throws VciBaseException æŸ¥è¯¢å‡ºçŽ°å¼‚å¸¸æ—¶ä¼šæŠ›å‡º
     */
    @Override
    public Collection<CodeButtonVO> listCodeButtonByOids(Collection<String> oidCollections) throws VciBaseException {
        VciBaseUtil.alertNotNull(oidCollections,"数据对象主键集合");
        List<CodeButton> codeButtonDOList = listCodeButtonDOByOidCollections(oidCollections);
        return codeButtonDO2VOs(codeButtonDOList);
    }
    /**
     * æ‰¹é‡æ•°æ®å¯¹è±¡è½¬æ¢ä¸ºæ˜¾ç¤ºå¯¹è±¡
     * @param codeButtonDOs æ•°æ®å¯¹è±¡åˆ—表
     * @return æ˜¾ç¤ºå¯¹è±¡
     * @throws VciBaseException å‚数为空或者不存在的时候会抛出异常
     */
    @Override
    public List<CodeButtonVO> codeButtonDO2VOs(Collection<CodeButton>  codeButtonDOs) throws VciBaseException{
        List<CodeButtonVO> voList = new ArrayList<CodeButtonVO>();
        if(!CollectionUtils.isEmpty(codeButtonDOs)){
            for(CodeButton s: codeButtonDOs){
                CodeButtonVO vo =  codeButtonDO2VO(s);
                if(vo != null){
                    voList.add(vo);
                }
            }
        }
        return voList;
    }
    /**
     * æ•°æ®å¯¹è±¡è½¬æ¢ä¸ºæ˜¾ç¤ºå¯¹è±¡
     * @param  codeButtonDO æ•°æ®å¯¹è±¡
     * @return æ˜¾ç¤ºå¯¹è±¡
     * @throws VciBaseException æ‹·è´å±žæ€§å‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    @Override
    public  CodeButtonVO codeButtonDO2VO(CodeButton codeButtonDO) throws VciBaseException{
        CodeButtonVO vo = new CodeButtonVO();
        if(codeButtonDO != null){
            BeanUtilForVCI.copyPropertiesIgnoreCase(codeButtonDO,vo);
            //如果有lcstatus的类的话
            vo.setLcStatusText(FrameworkDataLCStatus.getTextByValue(vo.getLcStatus()));
        }
        return vo;
    }
    @Override
    public List<CodeButton> selectByPrimaryKeyCollection(Collection<String> oids) {
        VciBaseUtil.alertNotNull(oids,"主键集合");
        return codeButtonMapper.selectBatchIds(oids);
    }
    /**
     * ä½¿ç”¨ä¸»é”®é›†åˆæŸ¥è¯¢æ•°æ®å¯¹è±¡
     * @param oidCollections ä¸»é”®çš„集合
     * @return æ•°æ®å¯¹è±¡åˆ—表
     */
    private List<CodeButton> listCodeButtonDOByOidCollections(Collection<String> oidCollections){
        List<CodeButton> codeButtonDOList = new ArrayList<CodeButton>();
        if(!CollectionUtils.isEmpty(oidCollections)){
            Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
            for(Collection<String> oids: oidCollectionsList){
                List<CodeButton> tempDOList =  codeButtonMapper.selectBatchIds(oids);
                if(!CollectionUtils.isEmpty(tempDOList)){
                    codeButtonDOList.addAll(tempDOList);
                }
            }
        }
        return  codeButtonDOList;
    }
    @Override
    public R enableCodeButton(String id) {
        CodeButtonEntity codebutton = codeButtonMapper.selectById(id);
        CodeButton codebutton = codeButtonMapper.selectById(id);
        return changeLcStatus(codebutton,true);
    }
    /**
     * åœç”¨
     *
@@ -57,11 +144,11 @@
     */
    @Override
    public R disableOrgDuty(String oid) {
        CodeButtonEntity codebutton = codeButtonMapper.selectById(oid);
        CodeButton codebutton = codeButtonMapper.selectById(oid);
        return changeLcStatus(codebutton,false);
    }
//    @Override
    //    @Override
//    public R deleteCodeButton(String ids) {
////        VciBaseUtil.alertNotNull(codeButtonDTO,"主数据中的按钮扩展数据对象",codeButtonDTO.getOid(),"主数据中的按钮扩展的主键");
//        if(StringUtils.isEmpty(ids)){
@@ -86,7 +173,7 @@
     * @param disable æ˜¯å¦ä¸ºåœç”¨
     * @return æ‰§è¡Œçš„结果
     */
    private R changeLcStatus(CodeButtonEntity buttonDTO, boolean disable){
    private R changeLcStatus(CodeButton buttonDTO, boolean disable){
//        VciBaseUtil.alertNotNull(buttonDTO,"数据对象",buttonDTO.getOid(),"主键");
        if(disable){
            buttonDTO.setLcstatus(FrameworkDataLCStatus.ENABLED.getValue());
@@ -97,7 +184,7 @@
            R.success(FrameworkDataLCStatus.ENABLED.getValue()):R.fail(FrameworkDataLCStatus.DISABLED.getValue());
    }
//    /**
    //    /**
//     * æ ¡éªŒæ˜¯å¦å¯ä»¥åˆ é™¤ï¼Œå¦‚果存在下级,并且下级有数据引用则不能删除
//     * @param codeButtonDTO æ•°æ®ä¼ è¾“对象
//     * @param codeButtonDO æ•°æ®åº“中的数据对象
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyProcessTempServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,365 @@
package com.vci.ubcs.code.service.impl;
import com.alibaba.cloud.commons.lang.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.code.dto.CodeClassifyProcessTempDTO;
import com.vci.ubcs.code.entity.CodeClassify;
import com.vci.ubcs.code.entity.CodeClassifyProcessTemp;
import com.vci.ubcs.code.mapper.CodeClassifyMapper;
import com.vci.ubcs.code.mapper.CodeClassifyProcessTempMapper;
import com.vci.ubcs.code.mapper.CodeClassifyTemplateAttrMapper;
import com.vci.ubcs.code.service.ICodeClassifyProcessTempService;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyProcessTempVO;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
import com.vci.ubcs.starter.web.pagemodel.DataGrid;
import com.vci.ubcs.starter.web.pagemodel.PageHelper;
import com.vci.ubcs.starter.web.util.BeanUtil;
import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import com.vci.ubcs.starter.web.wrapper.VciQueryWrapperForDO;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cglib.beans.BeanMap;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.sql.Wrapper;
import java.util.*;
import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.*;
/**
 * åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿æœåŠ¡æŽ¥å£
 *
 * @author ludc
 * @date 2023/5/5
 */
@Service
public class CodeClassifyProcessTempServiceImpl extends ServiceImpl<CodeClassifyProcessTempMapper, CodeClassifyProcessTemp> implements ICodeClassifyProcessTempService {
    /**
     * æ•°æ®æ“ä½œå±‚
     */
    @Resource
    private CodeClassifyProcessTempMapper codeClassifyProcessTempMapper;
    /**
     * å¯¹è±¡çš„æ“ä½œ
     */
    @Autowired
    private RevisionModelUtil revisionModelUtil;
    /**
     * æŸ¥è¯¢æ‰€æœ‰çš„分类使用的流程模板
     * @param conditionMap æŸ¥è¯¢æ¡ä»¶
     * @param pageHelper åˆ†é¡µå’ŒæŽ’序
     * @return æ‰§è¡Œç»“æžœ
     * @throws VciBaseException æŸ¥è¯¢æ¡ä»¶å’Œåˆ†é¡µå‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    @Override
    public DataGrid<CodeClassifyProcessTempVO> gridCodeClassifyProcessTemp(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException {
        Query query = new Query();
        if (pageHelper == null) {
            pageHelper = new PageHelper(-1);
            query.setSize(-1);
        }else {
            query.setSize(pageHelper.getLimit());
            query.setCurrent(pageHelper.getPage());
        }
        query.setDescs("createTime");
        CodeClassifyProcessTemp codeClassifyProcessTemp = new CodeClassifyProcessTemp();
        BeanMap beanMap = BeanMap.create(codeClassifyProcessTemp);
        beanMap.putAll(conditionMap);
        IPage<CodeClassifyProcessTemp> doList = codeClassifyProcessTempMapper.selectPage(Condition.getPage(query), Condition.getQueryWrapper(codeClassifyProcessTemp));
        DataGrid<CodeClassifyProcessTempVO> dataGrid=new DataGrid<>();
        if (!CollectionUtils.isEmpty(doList.getRecords())) {
            dataGrid.setData(codeClassifyProcessTempDO2VOs(doList.getRecords()));
            dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(codeClassifyProcessTempMapper.selectCount(Condition.getQueryWrapper(codeClassifyProcessTemp)))));
        }
        return dataGrid;
    }
    /**
     * æ‰¹é‡æ•°æ®å¯¹è±¡è½¬æ¢ä¸ºæ˜¾ç¤ºå¯¹è±¡
     * @param codeClassifyProcessTempDOs æ•°æ®å¯¹è±¡åˆ—表
     * @return æ˜¾ç¤ºå¯¹è±¡
     * @throws VciBaseException å‚数为空或者不存在的时候会抛出异常
     */
    @Override
    public List<CodeClassifyProcessTempVO> codeClassifyProcessTempDO2VOs(Collection<CodeClassifyProcessTemp> codeClassifyProcessTempDOs) throws VciBaseException{
        List<CodeClassifyProcessTempVO> voList = new ArrayList<CodeClassifyProcessTempVO>();
        if(!CollectionUtils.isEmpty(codeClassifyProcessTempDOs)){
            codeClassifyProcessTempDOs.forEach(temp -> {
                CodeClassifyProcessTempVO tempVO = codeClassifyProcessTempDO2VO(temp);
                BeanUtilForVCI.copyPropertiesIgnoreCase(temp,tempVO);
                voList.add(tempVO);
            });
        }
        return voList;
    }
    /**
     * æ•°æ®å¯¹è±¡è½¬æ¢ä¸ºæ˜¾ç¤ºå¯¹è±¡
     * @param  codeClassifyProcessTempDO æ•°æ®å¯¹è±¡
     * @return æ˜¾ç¤ºå¯¹è±¡
     * @throws VciBaseException æ‹·è´å±žæ€§å‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    @Override
    public CodeClassifyProcessTempVO codeClassifyProcessTempDO2VO(CodeClassifyProcessTemp codeClassifyProcessTempDO) throws VciBaseException{
        CodeClassifyProcessTempVO vo = new CodeClassifyProcessTempVO();
        if(codeClassifyProcessTempDO != null){
            BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyProcessTempDO,vo);
            //如果有lcstatus的类的话
            //处理关联的模板属性
        }
        return vo;
    }
    /**
     * å¢žåŠ åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿
     * @param codeClassifyProcessTempDTO åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿æ•°æ®ä¼ è¾“对象
     * @return æ‰§è¡Œç»“æžœ
     * @throws VciBaseException å‚数为空,唯一项,必输项不通过时会抛出异常
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public CodeClassifyProcessTempVO addSave(CodeClassifyProcessTempDTO codeClassifyProcessTempDTO) throws VciBaseException{
        VciBaseUtil.alertNotNull(codeClassifyProcessTempDTO,"需要添加的数据对象",codeClassifyProcessTempDTO.getProcessVersion(),"流程模板的版本号",codeClassifyProcessTempDTO.getCodeprocessuse(),"模板流程的用途");
        if (StringUtils.isBlank(codeClassifyProcessTempDTO.getCodeprocessuse())){
            throw new VciBaseException("模板流程用途不能为空");
        }
        Long count = countProcessTemplate(codeClassifyProcessTempDTO);
        if(count > 0){
            throw new VciBaseException("已存在相同的流程模板");
        }
        //将DTO转换为DO
        CodeClassifyProcessTemp codeClassifyProcessTempDO = new CodeClassifyProcessTemp();
        BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyProcessTempDTO,codeClassifyProcessTempDO);
        codeClassifyProcessTempMapper.insert(codeClassifyProcessTempDO);
        //因为业务类型本身没有控制版本,所有强制给版本revisionValue设置值,平台也会变成空。。。。
        //版本号不能使用默认的属性
        return codeClassifyProcessTempDO2VO(codeClassifyProcessTempDO);
    }
    /**
     * ä¿®æ”¹åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿
     * @param codeClassifyProcessTempDTO åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿æ•°æ®ä¼ è¾“对象
     * @return æ‰§è¡Œç»“æžœ
     * @throws VciBaseException å‚数为空,唯一项,必输项不通过时会抛出异常
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public CodeClassifyProcessTempVO editSave(CodeClassifyProcessTempDTO codeClassifyProcessTempDTO) throws VciBaseException{
        VciBaseUtil.alertNotNull(codeClassifyProcessTempDTO,"数据对象",codeClassifyProcessTempDTO.getOid(),"分类使用的流程模板主键",codeClassifyProcessTempDTO.getProcessVersion(),"流程模板的版本号",codeClassifyProcessTempDTO.getName(),"流程模板的名称");
        //将DTO转换为DO
        CodeClassifyProcessTemp codeClassifyProcessTempDO = selectByOid(codeClassifyProcessTempDTO.getOid());
        revisionModelUtil.copyFromDTOIgnore(codeClassifyProcessTempDTO,codeClassifyProcessTempDO);
        codeClassifyProcessTempMapper.updateById(codeClassifyProcessTempDO);
        return codeClassifyProcessTempDO2VO(codeClassifyProcessTempDO);
    }
    /**
     * åˆ é™¤åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿
     * @param codeClassifyProcessTempDTO åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿æ•°æ®ä¼ è¾“对象,oid和ts需要传输
     * @return åˆ é™¤ç»“果反馈::success:成功,fail:失败
     * @throws VciBaseException å‚数为空,被引用时抛出异常
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R deleteCodeClassifyProcessTemp(CodeClassifyProcessTempDTO codeClassifyProcessTempDTO) throws VciBaseException{
        VciBaseUtil.alertNotNull(codeClassifyProcessTempDTO,"分类使用的流程模板数据对象",codeClassifyProcessTempDTO.getOid(),"分类使用的流程模板的主键");
        CodeClassifyProcessTemp codeClassifyProcessTempDO = selectByOid(codeClassifyProcessTempDTO.getOid());
        R baseResult = checkIsCanDeleteForDO(codeClassifyProcessTempDTO,codeClassifyProcessTempDO);
        if(!baseResult.isSuccess()) {
        }else{
            return baseResult;
        }
        //执行删除操作
        boolean batchCBO = codeClassifyProcessTempMapper.deleteById(codeClassifyProcessTempDO.getOid()) > 0;
        return batchCBO?R.success(DELETE_SUCCESS):R.fail(DELETE_FAIL);
    }
    /**
     * ä¸»é”®èŽ·å–åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿
     * @param oid ä¸»é”®
     * @return åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿æ˜¾ç¤ºå¯¹è±¡
     * @throws VciBaseException å‚数为空,数据不存在时会抛出异常
     */
    @Override
    public  CodeClassifyProcessTempVO getObjectByOid(String oid) throws VciBaseException{
        return codeClassifyProcessTempDO2VO(selectByOid(oid));
    }
    /**
     * ä¸»é”®æ‰¹é‡èŽ·å–åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿
     * @param oidCollections ä¸»é”®é›†åˆï¼Œä½†æ˜¯å—性能影响,建议一次查询不超过10000个
     * @return åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿æ˜¾ç¤ºå¯¹è±¡
     * @throws VciBaseException æŸ¥è¯¢å‡ºçŽ°å¼‚å¸¸æ—¶ä¼šæŠ›å‡º
     */
    @Override
    public Collection<CodeClassifyProcessTempVO> listCodeClassifyProcessTempByOids(Collection<String> oidCollections) throws VciBaseException{
        VciBaseUtil.alertNotNull(oidCollections,"数据对象主键集合");
        List<CodeClassifyProcessTemp> codeClassifyProcessTempDOList = listCodeClassifyProcessTempDOByOidCollections(oidCollections);
        return codeClassifyProcessTempDO2VOs(codeClassifyProcessTempDOList);
    }
    /**
     * å‚照分类使用的流程模板列表
     * @param conditionMap æŸ¥è¯¢æ¡ä»¶
     * @param pageHelper åˆ†é¡µå’ŒæŽ’序
     * @return åˆ†ç±»ä½¿ç”¨çš„æµç¨‹æ¨¡æ¿æ˜¾ç¤ºå¯¹è±¡åˆ—表,生效的内容
     * @throws VciBaseException æŸ¥è¯¢æ¡ä»¶å’Œåˆ†é¡µå‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    @Override
    public DataGrid<CodeClassifyProcessTempVO> refDataGridCodeClassifyProcessTemp(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
        if(conditionMap == null){
            conditionMap = new HashMap<String, String>();
        }
        return gridCodeClassifyProcessTemp(conditionMap,pageHelper);
    }
    /**
     * èŽ·å–æµç¨‹çš„æ¨¡æ¿çš„ä¿¡æ¯
     *
     * @param codeTemplateOid æ¨¡æ¿çš„主键
     * @param processUse      ç”¨é€”
     * @return æ¨¡æ¿çš„信息
     */
    @Override
    public List<CodeClassifyProcessTempVO> listProcessTemplate(String codeTemplateOid, String processUse) {
        if(StringUtils.isBlank(codeTemplateOid) || StringUtils.isBlank(processUse)){
            return new ArrayList<>();
        }
        Map<String,String> conditionMap =new HashMap<>();
        conditionMap.put("classifyTemplateOid",codeTemplateOid);
        conditionMap.put("codeprocessuse",processUse);
        LambdaQueryWrapper<CodeClassifyProcessTemp> wrapper = Wrappers.<CodeClassifyProcessTemp>query()
            .lambda().eq(CodeClassifyProcessTemp::getClassifyTemplateOid, codeTemplateOid)
            .eq(CodeClassifyProcessTemp::getCodeProcessUse, processUse);
        return codeClassifyProcessTempDO2VOs(codeClassifyProcessTempMapper.selectList(wrapper));
    }
    /**
     * ä½¿ç”¨æŸ¥è¯¢å°è£…器来查询
     * @param queryWrapper æŸ¥è¯¢å°è£…器
     * @return æ•°æ®å¯¹è±¡
     */
    @Override
    public List<CodeClassifyProcessTempVO> selectByWrapper(LambdaQueryWrapper<CodeClassifyProcessTemp> queryWrapper) {
        List<CodeClassifyProcessTemp> codeClassifyProcessTempDOList= codeClassifyProcessTempMapper.selectList(queryWrapper);
        return codeClassifyProcessTempDO2VOs(codeClassifyProcessTempDOList);
    }
    /**
     * ä½¿ç”¨ä¸»é”®é›†åˆæŸ¥è¯¢æ•°æ®å¯¹è±¡
     * @param oidCollections ä¸»é”®çš„集合
     * @return æ•°æ®å¯¹è±¡åˆ—表
     */
    private List<CodeClassifyProcessTemp> listCodeClassifyProcessTempDOByOidCollections(Collection<String> oidCollections){
        List<CodeClassifyProcessTemp> codeClassifyProcessTempDOList = new ArrayList<CodeClassifyProcessTemp>();
        if(!CollectionUtils.isEmpty(oidCollections)){
            Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
            for(Collection<String> oids: oidCollectionsList){
                //List<CodeClassifyProcessTemp> tempDOList =  codeClassifyProcessTempMapper.selectByPrimaryKeyCollection(oids);
                List<CodeClassifyProcessTemp> tempDOList =  codeClassifyProcessTempMapper.selectBatchIds(oids);
                if(!CollectionUtils.isEmpty(tempDOList)){
                    codeClassifyProcessTempDOList.addAll(tempDOList);
                }
            }
        }
        return  codeClassifyProcessTempDOList;
    }
    /**
     * æ ¡éªŒæ˜¯å¦å¯ä»¥åˆ é™¤ï¼Œå¦‚果存在下级,并且下级有数据引用则不能删除
     * @param codeClassifyProcessTempDTO æ•°æ®ä¼ è¾“对象
     * @param codeClassifyProcessTempDO æ•°æ®åº“中的数据对象
     * @return success为true为可以删除,false表示有数据引用,obj为true表示有下级
     */
    private R checkIsCanDeleteForDO(CodeClassifyProcessTempDTO codeClassifyProcessTempDTO, CodeClassifyProcessTemp codeClassifyProcessTempDO) {
        CodeClassifyProcessTemp tempDO = new CodeClassifyProcessTemp();
        BeanUtil.convert(codeClassifyProcessTempDTO,tempDO);
        if (!checkTs(tempDO)) {
            return R.fail(TS_NOT_PROCESS);
        }
        if(!checkIsLinked(codeClassifyProcessTempDO.getOid())) {
            return R.success("success");
        }else{
            return R.fail(DATA_LINKED_NOT_DELETE);
        }
    }
    /**
     * æ£€æŸ¥ts
     * @param tempDO
     * @return
     */
    private boolean checkTs(CodeClassifyProcessTemp tempDO){
        LambdaQueryWrapper<CodeClassifyProcessTemp> wrapper = Wrappers.<CodeClassifyProcessTemp>query()
            .lambda().eq(CodeClassifyProcessTemp::getOid,tempDO.getOid()).select(CodeClassifyProcessTemp::getTs);
        long dbTs = codeClassifyProcessTempMapper.selectById(wrapper).getTs().getTime();
        long currentTs = tempDO.getTs().getTime();
        if(dbTs == currentTs){
            return true;
        }
        return false;
    }
    /**
     * æ ¡éªŒæ˜¯å¦è¢«å¼•用
     * @param oid ä¸»é”®
     * @throws VciBaseException è¢«å¼•用的时候会抛出异常
     */
    private boolean checkIsLinked(String oid) throws VciBaseException{
        //TODO æ·»åŠ éœ€è¦æ ¡éªŒå¼•ç”¨çš„åœ°æ–¹
        return false;
    }
    /**
     * ä¸»é”®æŸ¥è¯¢æ•°æ®å¯¹è±¡
     * @param oid ä¸»é”®
     * @return  æ•°æ®å¯¹è±¡
     * @throws VciBaseException å‚数为空,并且数据不存在的时候会抛出异常
     */
    private CodeClassifyProcessTemp selectByOid(String oid) throws VciBaseException{
        VciBaseUtil.alertNotNull(oid,"主键");
        CodeClassifyProcessTemp codeClassifyProcessTempDO = codeClassifyProcessTempMapper.selectById(oid.trim());
        if(codeClassifyProcessTempDO == null || StringUtils.isBlank(codeClassifyProcessTempDO.getOid())){
            throw new VciBaseException(DATA_OID_NOT_EXIST);
        }
        return codeClassifyProcessTempDO;
    }
    /**
     * èŽ·å–æµç¨‹æ¨¡æ¿æ˜¯å¦å·²ç»å­˜åœ¨äº†
     * @param codeClassifyProcessTempDTO æ•°æ®ä¼ è¾“对象
     * @return ä¸ªæ•°
     */
    private Long countProcessTemplate(CodeClassifyProcessTempDTO codeClassifyProcessTempDTO) {
        String templateName = codeClassifyProcessTempDTO.getName();
        if (StringUtils.isBlank(templateName)){
            throw new VciBaseException("模板流程名称不能为空");
        }
        LambdaQueryWrapper<CodeClassifyProcessTemp> wrapper = Wrappers.<CodeClassifyProcessTemp>query()
            .lambda().eq(CodeClassifyProcessTemp::getCodeProcessUse, codeClassifyProcessTempDTO.getCodeprocessuse())
            .eq(CodeClassifyProcessTemp::getClassifyTemplateOid, codeClassifyProcessTempDTO.getClassifyTemplateOid())
            .eq(CodeClassifyProcessTemp::getId, codeClassifyProcessTempDTO.getId());
        Long count = codeClassifyProcessTempMapper.selectCount(wrapper);
        return count;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
@@ -5,8 +5,6 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
import com.vci.ubcs.starter.revision.model.TreeWrapperOptions;
import com.vci.ubcs.code.entity.CodeClassify;
import com.vci.ubcs.code.entity.CodeClstemplateEntity;
import com.vci.ubcs.code.entity.CodeOsbtmtypeEntity;
@@ -25,13 +23,14 @@
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
import com.vci.ubcs.code.vo.pagemodel.CodeKeyAttrRepeatRuleVO;
import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
import com.vci.ubcs.starter.bo.WriteExcelData;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.poi.bo.ReadExcelOption;
import com.vci.ubcs.starter.poi.bo.WriteExcelOption;
import com.vci.ubcs.starter.poi.constant.ExcelLangCodeConstant;
import com.vci.ubcs.starter.poi.util.ExcelUtil;
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
import com.vci.ubcs.starter.revision.model.TreeWrapperOptions;
import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
import com.vci.ubcs.starter.util.LocalFileUtil;
import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
@@ -40,11 +39,11 @@
import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.starter.web.util.LangBaseUtil;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import org.springblade.core.log.exception.ServiceException;
import org.apache.poi.hssf.util.HSSFColor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springblade.core.cache.utils.CacheUtil;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
@@ -985,4 +984,41 @@
        return treeCodeClassify(treeQueryObject);
    }
    /**
     * èŽ·å–è¿™ä¸ªåˆ†ç±»ä¸‹çš„ä¸šåŠ¡ç±»åž‹ï¼Œå½“å‰æ²¡æœ‰å°±èŽ·å–ä¸Šçº§çš„ç¬¬ä¸€ä¸ªä¸šåŠ¡ç±»åž‹
     * @param oid å½“前分类的oid
     * @return oid,id,name,btmtypeid,btmtypename,没有就返回null
     */
    @Override
    public CodeClassify selectBtmOrParentBtm(String oid){
        List<CodeClassify> oidList = selectAllLevelParents(oid);
        return oidList.size()==0?null:oidList.get(0);
    }
    /**
     * èŽ·å–æ‰€æœ‰å±‚çº§ä¸Šçº§å…³è”ä¸šåŠ¡ç±»åž‹æ•°æ®
     * @param oid å½“前分类的oid
     * @return oid,id,name,btmtypeid,btmtypename
     */
    @Override
    public List<CodeClassify> selectAllLevelParents(String oid){
//        String sql = "select oid,id,name,btmtypeid,btmtypename from " + VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_CLASSIFY) + " where btmtypeid is not null start with oid= :oid connect by prior PARENTCODECLASSIFYOID=oid ";
//        Map< String,String> conditionMap = new HashMap< String,String>();
//        conditionMap.put("oid",oid);
//        List<Map> dataList = boService.queryBySqlForMap(sql,conditionMap);
        List<Map<String, Object>> dataList = codeClassifyMapper.selectAllLevelParents(oid);
        List<CodeClassify> oidList = new ArrayList<CodeClassify>();
        if(!CollectionUtils.isEmpty(dataList)){
            for(Map data:dataList){
                CodeClassify codeClassifyDO = new CodeClassify();
                codeClassifyDO.setOid(VciBaseUtil.getStringValueFromObject(data.get("OID")));
                codeClassifyDO.setId(VciBaseUtil.getStringValueFromObject(data.get("ID")));
                codeClassifyDO.setName(VciBaseUtil.getStringValueFromObject(data.get("NAME")));
                codeClassifyDO.setBtmTypeId(VciBaseUtil.getStringValueFromObject(data.get("BTMTYPEID")));
                codeClassifyDO.setBtmTypeName(VciBaseUtil.getStringValueFromObject(data.get("BTMTYPENAME")));
                oidList.add(codeClassifyDO);
            }
        }
        return oidList;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateAttrServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,133 @@
package com.vci.ubcs.code.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.code.entity.CodeClassifyTemplateAttr;
import com.vci.ubcs.code.entity.CodeTemplatePhase;
import com.vci.ubcs.code.mapper.CodeClassifyTemplateAttrMapper;
import com.vci.ubcs.code.mapper.CodeClassifyTemplateButtonMapper;
import com.vci.ubcs.code.mapper.CodeTemplatePhaseMapper;
import com.vci.ubcs.code.service.ICodeClassifyTemplateAttrService;
import com.vci.ubcs.code.service.ICodeTempphaseService;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.web.enumpck.VciFieldTypeEnum;
import com.vci.ubcs.starter.web.pagemodel.DataGrid;
import com.vci.ubcs.starter.web.pagemodel.PageHelper;
import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springframework.cglib.beans.BeanMap;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.sql.Wrapper;
import java.util.*;
/**
 * ä¸»é¢˜åº“分类的模板属性服务
 * @author ludc
 * @date 2023/5/5
 */
@Service
public class CodeClassifyTemplateAttrServiceImpl extends ServiceImpl<CodeClassifyTemplateAttrMapper, CodeClassifyTemplateAttr> implements ICodeClassifyTemplateAttrService {
    /**
     * æ•°æ®æ“ä½œå±‚
     */
    @Resource
    private CodeClassifyTemplateAttrMapper codeClassifyTemplateAttrMapper;
    /**
     * æŸ¥è¯¢æ‰€æœ‰çš„主题库分类的模板属性
     * @param lambdaQueryWrapper æŸ¥è¯¢æ¡ä»¶
     * @param pageHelper åˆ†é¡µå’ŒæŽ’序
     * @return æ‰§è¡Œç»“æžœ
     * @throws VciBaseException æŸ¥è¯¢æ¡ä»¶å’Œåˆ†é¡µå‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    @Override
    public DataGrid<CodeClassifyTemplateAttrVO> gridCodeClassifyTemplateAttr(LambdaQueryWrapper<CodeClassifyTemplateAttr> lambdaQueryWrapper , PageHelper pageHelper) throws VciBaseException {
        DataGrid<CodeClassifyTemplateAttrVO> dataGrid=new DataGrid<>();
        //没有传递参数,就不执行查询逻辑
        if(lambdaQueryWrapper == null){
            dataGrid.setData(new ArrayList<>());
            dataGrid.setTotal(0);
            return dataGrid;
        }
        Query query = new Query();
        if (pageHelper == null) {
            pageHelper = new PageHelper(-1);
            query.setSize(-1);
        }else {
            query.setCurrent(pageHelper.getPage());
            query.setSize(pageHelper.getLimit());
        }
        //pageHelper.addDefaultAsc("ordernum");
        query.setAscs("ordernum");
        IPage<CodeClassifyTemplateAttr> doList = codeClassifyTemplateAttrMapper.selectPage(Condition.getPage(query), lambdaQueryWrapper);
        if (!CollectionUtils.isEmpty(doList.getRecords())) {
            dataGrid.setData(codeClassifyTemplateAttrDO2VOs(doList.getRecords()));
            dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(codeClassifyTemplateAttrMapper.selectCount(lambdaQueryWrapper))));
        }
        return dataGrid;
    }
    /**
     * å‚照主题库分类的模板属性列表
     * @param conditionMap æŸ¥è¯¢æ¡ä»¶
     * @param pageHelper åˆ†é¡µå’ŒæŽ’序
     * @return ä¸»é¢˜åº“分类的模板属性显示对象列表,生效的内容
     * @throws VciBaseException æŸ¥è¯¢æ¡ä»¶å’Œåˆ†é¡µå‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    @Override
    public DataGrid<CodeClassifyTemplateAttrVO> refDataGridCodeClassifyTemplateAttr(Map<String, Object> conditionMap, PageHelper pageHelper) throws VciBaseException{
        if(conditionMap == null){
            conditionMap = new HashMap<String, Object>();
        }
        return gridCodeClassifyTemplateAttr(Condition.getQueryWrapper(conditionMap,CodeClassifyTemplateAttr.class).lambda(),pageHelper);
    }
    /**
     * æ‰¹é‡æ•°æ®å¯¹è±¡è½¬æ¢ä¸ºæ˜¾ç¤ºå¯¹è±¡
     * @param codeClassifyTemplateAttrDOs æ•°æ®å¯¹è±¡åˆ—表
     * @return æ˜¾ç¤ºå¯¹è±¡
     * @throws VciBaseException å‚数为空或者不存在的时候会抛出异常
     */
    @Override
    public List<CodeClassifyTemplateAttrVO> codeClassifyTemplateAttrDO2VOs(Collection<CodeClassifyTemplateAttr> codeClassifyTemplateAttrDOs) throws VciBaseException{
        List<CodeClassifyTemplateAttrVO> voList = new ArrayList<CodeClassifyTemplateAttrVO>();
        if(!CollectionUtils.isEmpty(codeClassifyTemplateAttrDOs)){
            for(CodeClassifyTemplateAttr s: codeClassifyTemplateAttrDOs){
                CodeClassifyTemplateAttrVO vo =  codeClassifyTemplateAttrDO2VO(s);
                if(vo != null){
                    voList.add(vo);
                }
            }
        }
        return voList;
    }
    /**
     * æ•°æ®å¯¹è±¡è½¬æ¢ä¸ºæ˜¾ç¤ºå¯¹è±¡
     * @param  codeClassifyTemplateAttrDO æ•°æ®å¯¹è±¡
     * @return æ˜¾ç¤ºå¯¹è±¡
     * @throws VciBaseException æ‹·è´å±žæ€§å‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    @Override
    public  CodeClassifyTemplateAttrVO codeClassifyTemplateAttrDO2VO(CodeClassifyTemplateAttr codeClassifyTemplateAttrDO) throws VciBaseException{
        CodeClassifyTemplateAttrVO vo = new CodeClassifyTemplateAttrVO();
        if(codeClassifyTemplateAttrDO != null){
            BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyTemplateAttrDO,vo);
            //如果有lcstatus的类的话
            vo.setAttributeDataTypeText(VciFieldTypeEnum.getTextByValue(vo.getAttributedatatype()));
        }
        return vo;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyValueServiceImpl.java
@@ -30,8 +30,7 @@
import java.util.stream.Collectors;
import static com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant.LC_STATUS;
import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.DATA_CASCADE_LINKED_NOT_DELETE;
import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.DATA_OID_NOT_EXIST;
import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.*;
@Service
public class CodeClassifyValueServiceImpl  extends ServiceImpl<CodeClassifyValueMapper, CodeClassifyValue> implements ICodeClassifyValueService {
@@ -138,7 +137,9 @@
     * @return success为true为可以删除,false表示有数据引用,obj为true表示有下级
     */
    private R checkIsCanDeleteForDO(CodeClassifyValueDTO codeClassifyValueDTO, CodeClassifyValue codeClassifyValueDO) {
        //boService.checkTs(codeClassifyValueDTO);
        if (!checkTs(codeClassifyValueDTO)) {
            return R.fail(TS_NOT_PROCESS);
        }
        //校验下级是否有引用
        if(checkChildIsLinked(codeClassifyValueDO.getOid())){
            return R.fail(DATA_CASCADE_LINKED_NOT_DELETE);
@@ -339,5 +340,20 @@
        return codeClassifyValueMapper.selectList(wrapper);
    }
    /**
     * æ£€æŸ¥ts
     * @param tempDO
     * @return
     */
    private boolean checkTs(CodeClassifyValueDTO tempDO){
        LambdaQueryWrapper<CodeClassifyValue> wrapper = Wrappers.<CodeClassifyValue>query()
            .lambda().eq(CodeClassifyValue::getOid,tempDO.getOid()).select(CodeClassifyValue::getTs);
        long dbTs = codeClassifyValueMapper.selectById(wrapper).getTs().getTime();
        long currentTs = tempDO.getTs().getTime();
        if(dbTs == currentTs){
            return true;
        }
        return false;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClstemplateServiceImpl.java
@@ -20,36 +20,37 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.code.dto.CodeClstemplateDTO;
import com.vci.ubcs.code.entity.CodeClstempattrEntity;
import com.vci.ubcs.code.entity.CodeClstemplateEntity;
import com.vci.ubcs.code.entity.*;
import com.vci.ubcs.code.enumpack.CodeClassifyTemplateLC;
import com.vci.ubcs.code.enumpack.FrameworkDataLCStatus;
import com.vci.ubcs.code.mapper.CodeClstempattrMapper;
import com.vci.ubcs.code.mapper.CodeClstemplateMapper;
import com.vci.ubcs.code.mapper.*;
import com.vci.ubcs.code.service.ICodeClassifyService;
import com.vci.ubcs.code.service.ICodeClstemplateService;
import com.vci.ubcs.code.vo.CodeClstempattrVO;
import com.vci.ubcs.code.vo.CodeClstemplateVO;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
import com.vci.ubcs.starter.revision.model.TreeWrapperOptions;
import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
import com.vci.ubcs.starter.web.pagemodel.DataGrid;
import com.vci.ubcs.starter.web.pagemodel.Tree;
import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.*;
import java.util.stream.Collectors;
import static com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_RELEASED;
import static com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant.LC_STATUS;
import static com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant.*;
import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.*;
import static com.vci.ubcs.code.service.impl.CodeClassifyServiceImpl.PARENT_FIELD_NAME;
@@ -83,6 +84,23 @@
    private CodeTempbuttonServiceImpl codeTempbuttonServiceImpl;
    @Autowired(required = false)
    private CodeClsflowtempServiceImpl codeClsflowtempServiceImpl;
    @Autowired(required = false)
    private CodeClsflowtempMapper codeClsflowtempMapper;
    @Autowired(required = false)
    private CodeTemplatePhaseMapper codeTempphaseMapper;
    @Autowired(required = false)
    private CodeClassifyTemplateButtonMapper codeTempbuttonMapper;
    @Autowired(required = false)
    private CodePhaseAttrMapper codePhaseattrMapper;
    @Autowired(required = false)
    private ICodeClassifyService codeClassifyService;
    @Autowired(required = false)
    private CodeClstemplateMapper codeClstemplateMapper;
    @Autowired(required = false)
    private CodePhaseattrServiceImpl codePhaseattrServiceImpl;
    @Override
    public IPage<CodeClstemplateVO> selectPlCodeClstemplatePage(IPage<CodeClstemplateVO> page, CodeClstemplateVO plCodeClstemplate) {
        return page.setRecords(baseMapper.selectPlCodeClstemplatePage(page, plCodeClstemplate));
@@ -119,8 +137,12 @@
//        VciParentQueryOption parentQueryOption = new VciParentQueryOption();
//        parentQueryOption.setParentFieldName(PARENT_FIELD_NAME);
//        queryWrapperForDO.parentQueryChild(treeQueryObject,parentQueryOption);
        CodeClstemplateEntity codeClstemplateEntity = new CodeClstemplateEntity();
        return baseMapper.selectList(Condition.getQueryWrapper(codeClstemplateEntity));
//        CodeClstemplateEntity codeClstemplateEntity = new CodeClstemplateEntity();
//        codeClstemplateEntity.set
        return baseMapper.selectCodeClassifyTemplateDOByTree(
            treeQueryObject.getConditionMap().get("codeclassifyoid"),
            treeQueryObject.getConditionMap().get("lcStatus"));
//        return baseMapper.selectList(Condition.getQueryWrapper(codeClstemplateEntity));
//        return codeClassifyTemplateMapper.selectByWrapper(queryWrapperForDO);
    }
@@ -210,19 +232,20 @@
        BeanUtilForVCI.copyPropertiesIgnoreCase(codeClstemplateDTO,codeClassifyTemplateDOCopyFromDTO);
        //检查ts
        Map<String,Object> condition = new HashMap<>(2);
        condition.put("oid",codeClstemplateDTO.getOid());
        condition.put("ts",codeClstemplateDTO.getTs());
//        Map<String,Object> condition = new HashMap<>(2);
//        condition.put("oid",codeClstemplateDTO.getOid());
//        condition.put("ts",codeClstemplateDTO.getTs());
        CodeClstemplateEntity detail = baseMapper
            .selectOne(Condition.getQueryWrapper(condition,CodeClstemplateEntity.class));
        if(detail == null){//不是最新的不让改
            .selectById(codeClstemplateDTO.getOid());
        if(!detail.getTs().toString().equals(codeClstemplateDTO.getTs().toString())){//不是最新的不让改
            return R.fail("当前数据不是最新,请刷新后再修改!");
        }
        //校验下级是否有引用
        if(checkChildIsLinked(codeClstemplateEntity.getOid())){
            return R.fail(DATA_CASCADE_LINKED_NOT_DELETE);
        }
        return R.status(checkHasChild(codeClstemplateEntity.getOid()));
        return R.success(String.valueOf(checkHasChild(codeClstemplateEntity.getOid())));
    }
    /**
@@ -273,6 +296,7 @@
     * @param codeClstemplateDTO åˆ†ç±»æ¨¡æ¿å¯¹è±¡æ•°æ®ä¼ è¾“对象,oid和ts需要传输
     * @return åˆ é™¤ç»“果反馈::success:成功,fail:失败
     */
    @Transactional
    @Override
    public R deleteCodeClassifyTemplate(CodeClstemplateDTO codeClstemplateDTO) {
        checkIsCanDelete(codeClstemplateDTO);
@@ -362,8 +386,8 @@
     * å‚ç…§æ ‘ åˆ†ç±»æ¨¡æ¿å¯¹è±¡
     * @param treeQueryObject æ ‘形查询对象
     * @return åˆ†ç±»æ¨¡æ¿å¯¹è±¡æ˜¾ç¤ºæ ‘
     * @throws VciBaseException æŸ¥è¯¢æ¡ä»¶å’Œåˆ†é¡µå‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    @Transactional
    @Override
    public List<Tree> referTree(TreeQueryObject treeQueryObject) {
        if(treeQueryObject == null){
@@ -418,6 +442,7 @@
     * @param lcStatus
     * @return
     */
    @Transactional
    @Override
    public R updateLcStatus( String oid, String lcStatus){
        CodeClstemplateEntity codeClassifyTemplateDO = baseMapper.selectById(oid);
@@ -440,6 +465,7 @@
     * å‡ç‰ˆ
     * @param codeClassifyDTO
     */
    @Transactional
    @Override
    public R Upgrade(CodeClstemplateDTO codeClassifyDTO) {
@@ -454,93 +480,95 @@
        //需要新增的升级模板
//        ClientBusinessObject clientBusinessObject_template = boService.selectCBOByOid(codeClassifyDTO.getOid(), "codeclstemplate");
        CodeClstemplateEntity codeCls_template = baseMapper.selectById(templateOldOid);
        CodeClstemplateEntity codeCls_template_insert = null;
        CodeClstemplateEntity codeCls_template_insert = new CodeClstemplateEntity();
//            ClientBusinessObject clientBusinessObject_template_insert = null;
//        try {
////            clientBusinessObject_template_insert = clientBusinessObjectOperation.reviseBusinessObject(clientBusinessObject_template, "");
////            codeCls_template_insert.setOid((new ObjectUtility()).getNewObjectID36());
////            toBo.setRevisionid((new ObjectUtility()).getNewObjectID36());
//            codeCls_template_insert.setNameOid(codeCls_template.getNameOid());
//            codeCls_template_insert.setBtmname(codeCls_template.getBtmname());
////            codeCls_template_insert.setIsLast(1);
////            codeCls_template_insert.setIsFirstr(0);
////            codeCls_template_insert.setIsFirstv(1);
////            codeCls_template_insert.setIsLastV(1);
//            codeCls_template_insert.setCreator(AuthUtil.getUser().getUserName());
//            codeCls_template_insert.setCreateTime(new Date());
//            codeCls_template_insert.setLastModifier(AuthUtil.getUser().getUserName());
//            codeCls_template_insert.setLastModifyTime(new Date());
//            codeCls_template_insert.setRevisionRule(codeCls_template.getRevisionRule());
//            codeCls_template_insert.setVersionRule(codeCls_template.getVersionRule());
//            RevisionValueObject rvObj = this.getNextRevision(fromBo.getBtmName(), fromBo.getNameoid(), item.revRuleName, item.revInput, revisionVal);
//            codeCls_template_insert.setRevisionSeq(rvObj.getRevisionSeq());
//            codeCls_template_insert.setRevisionValue(rvObj.getRevisionVal());
//            clientBusinessObject_template_insert = clientBusinessObjectOperation.reviseBusinessObject(clientBusinessObject_template, "");
        codeCls_template_insert.setOid(VciBaseUtil.getPk());
        codeCls_template_insert.setRevisionOid(VciBaseUtil.getPk());
        codeCls_template_insert.setNameOid(codeCls_template.getNameOid());
        codeCls_template_insert.setBtmname(codeCls_template.getBtmname());
        codeCls_template_insert.setLastR(String.valueOf(1));
        codeCls_template_insert.setFirstR(String.valueOf(0));
        codeCls_template_insert.setFirstV(String.valueOf(1));
        codeCls_template_insert.setLastV(String.valueOf(1));
        codeCls_template_insert.setCreator(AuthUtil.getUser().getUserName());
        codeCls_template_insert.setCreateTime(new Date());
        codeCls_template_insert.setLastModifier(AuthUtil.getUser().getUserName());
        codeCls_template_insert.setLastModifyTime(new Date());
        codeCls_template_insert.setRevisionRule(codeCls_template.getRevisionRule());
        codeCls_template_insert.setVersionRule(codeCls_template.getVersionRule());
        Map rvObj = baseMapper.getNextRevision(codeCls_template.getNameOid());
        codeCls_template_insert.setRevisionSeq(Integer.parseInt(rvObj.get("REVISIONSEQ").toString()));
        codeCls_template_insert.setRevisionValue(rvObj.get("REVISIONVAL").toString());
//            VersionValueObject versionObj = this.getVersionValue(item.verRuleName);
//            codeCls_template_insert.setVersionSeq(versionObj.getVersionSeq());
//            codeCls_template_insert.setVersionValue(versionObj.getVersionVal());
//            codeCls_template_insert.setLctId(codeCls_template.getLctId());
//            codeCls_template_insert.setLcStatus(this.getLcFirstStatus(item.lifeCycle));
//            codeCls_template_insert.setId(codeCls_template.getId());
//            codeCls_template_insert.setName(codeCls_template.getName());
//            codeCls_template_insert.setDescription(codeCls_template.getDescription());
//            codeCls_template_insert.setOwner(AuthUtil.getUser().getUserName());
////            codeCls_template_insert.setCheckinBy(userName);
//            codeCls_template_insert.setCopyFromVersion(codeCls_template.getOid());
        codeCls_template_insert.setVersionSeq(Integer.parseInt(rvObj.get("VERSIONSEQ").toString()));
        codeCls_template_insert.setVersionValue(rvObj.get("VERSIONVAL").toString());
        codeCls_template_insert.setLctid(codeCls_template.getLctid());
        codeCls_template_insert.setLcStatus("Editing");
        codeCls_template_insert.setId(codeCls_template.getId());
        codeCls_template_insert.setName(codeCls_template.getName());
        codeCls_template_insert.setDescription(codeCls_template.getDescription());
        codeCls_template_insert.setOwner(AuthUtil.getUser().getUserName());
//            codeCls_template_insert.setCheckinBy(userName);
        codeCls_template_insert.setCopyFromVersion(codeCls_template.getOid());
//        }catch (VCIError e){
//            e.printStackTrace();
//            logger.error("===============>分类模板-升版复制出错oid: "+templateOldOid+",mes"+e.error_message);
//            return BaseResult.error("升版出错");
//        }
//
//
//        CodeClassifyTemplateDO codeClassifyTemplateDO = new CodeClassifyTemplateDO();
        int insertCount = baseMapper.insert(codeCls_template_insert);
//        CodeClstemplateEntity codeClassifyTemplateDO = new CodeClstemplateEntity();
//        BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyDTO,codeClassifyTemplateDO);
//        WebUtil.copyValueToObjectFromCbos(clientBusinessObject_template_insert,codeClassifyTemplateDO);
//        //modify by weidy@2022-2-27
//        //升版后不能使用insert方法,因为那个永远是新增一条数据,
//        //上方先从dto转给do,然后把升版的初始化的属性拷贝给do,最后再从do拷贝到cbo上
        //modify by weidy@2022-2-27
        //升版后不能使用insert方法,因为那个永远是新增一条数据,
        //上方先从dto转给do,然后把升版的初始化的属性拷贝给do,最后再从do拷贝到cbo上
//        WebUtil.copyValueToCboFromObj(clientBusinessObject_template_insert,codeClassifyTemplateDO);
//        //升版过后的模板oid
//        String templateNewOid = codeClassifyTemplateDO.getOid();
//
//        //需要复制的模板属性
//        //查询老模板下边的所有属性,赋值新模板oid
        //升版过后的模板oid
        String templateNewOid = codeCls_template_insert.getOid();
        //需要复制的模板属性
        //查询老模板下边的所有属性,赋值新模板oid
//        VciQueryWrapperForDO codeClassifyTemplateAttrQuery = new VciQueryWrapperForDO(CodeClassifyTemplateAttrDO.class);
//        codeClassifyTemplateAttrQuery.addQueryMap("classifyTemplateOid",templateOldOid);
        Map<String,Object> condition = new HashMap<>(1);
        condition.put("classifyTemplateOid",templateOldOid);
        List<CodeClstempattrEntity> codeClstempattrEntities = codeClstempattrMapper.selectByMap(condition);
//        List<CodeClassifyTemplateAttrDO> codeClassifyTemplateAttrDOList = codeClassifyTemplateAttrDaoI.selectByWrapper(codeClassifyTemplateAttrQuery);
//        for (CodeClassifyTemplateAttrDO codeClassifyTemplateAttrDO :codeClassifyTemplateAttrDOList){
        for (CodeClstempattrEntity codeClassifyTemplateAttrDO :codeClstempattrEntities){
//            String attrOid = VciBaseUtil.getPk();
//            codeClassifyTemplateAttrDO.setOid(attrOid);
//            codeClassifyTemplateAttrDO.setClassifyTemplateOid(templateNewOid);
//        }
//
//        //复制模板流程
//        List<CodeClassifyProcessTempDO>  codeClassifyProcessTempDOList = copyTemplateProcess(templateOldOid,templateNewOid);
//
//        //复制模板阶段,阶段属性
//        Map phase_attrMap = copyTemplatePhase_attr(templateOldOid,templateNewOid);
//
//        List<CodeTemplatePhaseDO> codeClassifyPhaseDOList = (ArrayList<CodeTemplatePhaseDO>)phase_attrMap.get("phase");//模板阶段
//        List<CodePhaseAttrDO> codePhaseAttrDOList = (ArrayList<CodePhaseAttrDO>)phase_attrMap.get("phaseAttr");//阶段属性
//
//        //复制模板按钮
//        List<CodeClassifyTemplateButtonDO> codeClassifyTemplateButtonDOList = copyTemplateButton(templateOldOid,templateNewOid);
//
//        //一起保存数据
            codeClassifyTemplateAttrDO.setOid(null);
            codeClassifyTemplateAttrDO.setClassifytemplateoid(templateNewOid);
            codeClstempattrMapper.insert(codeClassifyTemplateAttrDO);
        }
        //复制模板流程
        List<CodeClsflowtempEntity>  codeClassifyProcessTempDOList = copyTemplateProcess(templateOldOid,templateNewOid);
        //复制模板阶段,阶段属性
        Map phase_attrMap = copyTemplatePhase_attr(templateOldOid,templateNewOid);
        List<CodeTemplatePhase> codeClassifyPhaseDOList = (ArrayList<CodeTemplatePhase>)phase_attrMap.get("phase");//模板阶段
        List<CodePhaseAttr> codePhaseAttrDOList = (ArrayList<CodePhaseAttr>)phase_attrMap.get("phaseAttr");//阶段属性
        //复制模板按钮
        List<CodeClassifyTemplateButton> codeClassifyTemplateButtonDOList = copyTemplateButton(templateOldOid,templateNewOid);
        //一起保存数据
//        WebUtil.setPersistence(false);//不执行保存
//        //保存模板
        //保存模板
//        BatchCBO batchCBOTemplate = new BatchCBO();
//        //batchCBO保存的时候没有能够自动update源数据的isLastR
//        //batchCBOTemplate.getCreateCbos().add(clientBusinessObject_template_insert);
//        //使用saveRevisionBuisnessObject可以解决这个问题,这里先暂时执行两次保存
        //batchCBO保存的时候没有能够自动update源数据的isLastR
        //batchCBOTemplate.getCreateCbos().add(clientBusinessObject_template_insert);
        //使用saveRevisionBuisnessObject可以解决这个问题,这里先暂时执行两次保存
//        try {
//            clientBusinessObjectOperation.saveRevisionBuinessObject(clientBusinessObject_template_insert);
//        } catch (VCIError vciError) {
//            throw new VciBaseException("升版保存出错了",new String[0],vciError);
//        }
//        // end --modify by lihang @20220408
//        //codeClassifyTemplateMapper.insert(codeClassifyTemplateDO);
//        //保存模板属性
        // end --modify by lihang @20220408
        //codeClassifyTemplateMapper.insert(codeClassifyTemplateDO);
        //保存模板属性
//        if(!CollectionUtils.isEmpty(codeClassifyTemplateAttrDOList)){
//            BatchCBO batchCBOTemplateAttr = codeClassifyTemplateAttrDaoI.batchInsert(codeClassifyTemplateAttrDOList);
//            batchCBOTemplate.copyFromOther(batchCBOTemplateAttr);
@@ -572,8 +600,433 @@
//        WebUtil.setPersistence(true);//执行保存
//
//        boService.persistenceBatch(batchCBOTemplate);//一起执行保存
//
//        return BaseResult.success("升版成功!");
        return R.success("升版成功!");
    }
    @Override
    @Transactional
    public R copyTemplate(CodeClstemplateDTO codeClassifyDTO) {
        //旧的模板oid
        String oldOid = codeClassifyDTO.getOid();
        //新的模板oid
        String newOid = VciBaseUtil.getPk();
        //分类oid,复制过来的新的分类oid
        String codeClassifyOid = codeClassifyDTO.getCodeClassifyOid();
        //复制模板
        CodeClstemplateEntity codeClassifyTemplateDO_old = baseMapper.selectById(oldOid);//旧模板
        //验证,业务类型是不是一致
        CodeClassify codeClassifyDO_old = codeClassifyService.selectBtmOrParentBtm(codeClassifyTemplateDO_old.getCodeClassifyOid());
        if(codeClassifyDO_old==null){
            return R.fail("复制的模板所属分类以及上级没有业务类型,请重新选择!");
        }
        //找当前分类下的业务类型
        CodeClassify codeClassifyDO_new = codeClassifyService.selectBtmOrParentBtm(codeClassifyOid);
        if(codeClassifyDO_new==null){
            return R.fail("当前分类没有业务类型,请重新选择!");
        }
        if(!codeClassifyDO_old.getBtmTypeId().equals(codeClassifyDO_new.getBtmTypeId())){
            return R.fail("选择的分类和当前分类业务类型不一致,请重新选择!");
        }
        codeClassifyTemplateDO_old.setId(codeClassifyDTO.getId());//英文名称
        codeClassifyTemplateDO_old.setName(codeClassifyDTO.getName());//中文名称
        codeClassifyTemplateDO_old.setDescription(codeClassifyDTO.getDescription());//描述
        codeClassifyTemplateDO_old.setCodeClassifyOid(codeClassifyOid);//分类oid
        codeClassifyTemplateDO_old.setOid(newOid);
        List<CodeClstemplateEntity> codeClassifyTemplateDOList = new ArrayList<CodeClstemplateEntity>();
        codeClassifyTemplateDOList.add(codeClassifyTemplateDO_old);
        //复制模板属性
        List<CodeClstempattrEntity> codeClassifyTemplateAttrDOList = copyTemplateAttr(oldOid,newOid);
        //复制模板流程
        List<CodeClsflowtempEntity> codeClassifyProcessTempDOList = copyTemplateProcess(oldOid,newOid);
        //复制模板阶段,阶段属性
        Map  phase_attrMap = copyTemplatePhase_attr(oldOid,newOid);
        List<CodeTemplatePhase> codeClassifyPhaseDOList = (ArrayList<CodeTemplatePhase>)phase_attrMap.get("phase");//模板阶段
        List<CodePhaseAttr> codePhaseAttrDOList = (ArrayList<CodePhaseAttr>)phase_attrMap.get("phaseAttr");//阶段属性
        //复制模板按钮
        List<CodeClassifyTemplateButton> codeClassifyTemplateButtonDOList = copyTemplateButton(oldOid,newOid);
//        baseMapper.insert(codeClassifyTemplateDOList);
        this.saveBatch(codeClassifyTemplateDOList);
        codeTempbuttonServiceImpl.saveBatch(codeClassifyTemplateButtonDOList);
        codeClsflowtempServiceImpl.saveBatch(codeClassifyProcessTempDOList);
        codeClstempattrService.saveBatch(codeClassifyTemplateAttrDOList);
        codeTempphaseServiceImpl.saveBatch(codeClassifyPhaseDOList);
        codePhaseattrServiceImpl.saveBatch(codePhaseAttrDOList);
        //一起保存数据
//        WebUtil.setPersistence(false);//不执行保存
//        //保存模板
//        BatchCBO batchCBOTemplate = codeClassifyTemplateMapper.batchInsert(codeClassifyTemplateDOList);
//        //保存模板属性
//        if(!CollectionUtils.isEmpty(codeClassifyTemplateAttrDOList)) {
//            BatchCBO batchCBOTemplateAttr = codeClassifyTemplateAttrDaoI.batchInsert(codeClassifyTemplateAttrDOList);
//            batchCBOTemplate.copyFromOther(batchCBOTemplateAttr);
//        }
//
//        //保存模板流程
//        if(!CollectionUtils.isEmpty(codeClassifyProcessTempDOList)) {
//            BatchCBO batchCBOTemplateProcessAttr = codeClassifyProcessTempDaoI.batchInsert(codeClassifyProcessTempDOList);
//            batchCBOTemplate.copyFromOther(batchCBOTemplateProcessAttr);
//        }
//
//        //模板阶段
//        if(!CollectionUtils.isEmpty(codeClassifyPhaseDOList)) {
//            BatchCBO batchCBOTemplatePhaseAttr = codeTemplatePhaseDaoI.batchInsert(codeClassifyPhaseDOList);
//            batchCBOTemplate.copyFromOther(batchCBOTemplatePhaseAttr);
//        }
//
//        //模板阶段属性
//        if(!CollectionUtils.isEmpty(codePhaseAttrDOList)) {
//            BatchCBO batchCBOTemplatePhaseAttrAttr = codePhaseAttrDaoI.batchInsert(codePhaseAttrDOList);
//            batchCBOTemplate.copyFromOther(batchCBOTemplatePhaseAttrAttr);
//        }
//
//        //模板按钮
//        if(!CollectionUtils.isEmpty(codeClassifyTemplateButtonDOList)) {
//            BatchCBO batchCBOTemplateButtonAttr = codeClassifyTemplateButtonDaoI.batchInsert(codeClassifyTemplateButtonDOList);
//            batchCBOTemplate.copyFromOther(batchCBOTemplateButtonAttr);
//        }
//
//
//        WebUtil.setPersistence(true);//执行保存
//
//        boService.persistenceBatch(batchCBOTemplate);//一起执行保存
        return R.success("复制成功!");
    }
    private HashMap<String,Object> getVersionValue(int verRuleName) {
        HashMap<String,Object> obj = new HashMap<>(2);
        obj.put("VersionSeq",1);
        if (verRuleName == 0) {
            obj.put("VersionVal","1");
        } else if (verRuleName == 1) {
            obj.put("VersionVal","a");
        } else if (verRuleName == 2) {
            obj.put("VersionVal","0");
        }
        return obj;
    }
    /**
     * å¤åˆ¶æ¨¡æ¿æµç¨‹
     */
    public List<CodeClsflowtempEntity> copyTemplateProcess(String templateOldOid,String templateNewOid){
//        VciQueryWrapperForDO processWrapper = new VciQueryWrapperForDO(CodeClassifyProcessTempDO.class);
//        processWrapper.addQueryMap("classifyTemplateOid",templateOldOid);
        Map<String,Object> condition = new HashMap<>(1);
        condition.put("classifyTemplateOid",templateOldOid);
        List<CodeClsflowtempEntity> codeClsflowtempEntities = codeClsflowtempMapper.selectByMap(condition);
//        List<CodeClassifyProcessTempDO>  codeClassifyProcessTempDOList = codeClassifyProcessTempDaoI.selectByWrapper(processWrapper);//要保存的新的模板流程
        for (CodeClsflowtempEntity codeClassifyProcessTempDO:codeClsflowtempEntities){
//            String newOid = VciBaseUtil.getPk();
            codeClassifyProcessTempDO.setOid(null);
            //codeClassifyProcessTempDO.setCodeClassifyOid(templateNewOid);
            codeClassifyProcessTempDO.setClassifytemplateoid(templateNewOid);
//            codeClsflowtempMapper.insert(codeClassifyProcessTempDO);
            //modify by lihang - @20220406 è®¾ç½®æ¨¡æ¿ä¸»é”®ä½ç½®å‡ºé”™ï¼Œå¯¼è‡´å‡ç‰ˆçš„æ¨¡æ¿ä¸­çš„æµç¨‹æ˜¯ç©ºçš„。
        }
        return codeClsflowtempEntities;
    }
    /**
     * å¤åˆ¶æ¨¡æ¿é˜¶æ®µï¼Œæ¨¡æ¿å±žæ€§
     * @param templateOldOid
     * @param templateNewOid
     * @return map phase:(List<CodeTemplatePhaseDO>) phaseAttr:(List<CodePhaseAttrDO>)
     */
    public Map copyTemplatePhase_attr(String templateOldOid,String templateNewOid){
        //模板阶段
//        VciQueryWrapperForDO phaseWrapper = new VciQueryWrapperForDO(CodeTemplatePhaseDO.class);
//        phaseWrapper.addQueryMap("codeClassifyTemplateOid",templateOldOid);
        Map<String,Object> condition = new HashMap<>(1);
        condition.put("codeclassifyTemplateOid",templateOldOid);
        List<CodeTemplatePhase> codeTempphaseEntities = codeTempphaseMapper.selectByMap(condition);
//        List<CodeTemplatePhaseDO>  codeClassifyPhaseDOList = codeTemplatePhaseDaoI.selectByWrapper(phaseWrapper);//要保存的新的模板流程
        Map<String,String> phaseKeyMap = new HashMap<String,String>();//需要复制的模板阶段属性,key:value,模板阶段老oid:模板属性新oid
        List<String> phaseOidList = new ArrayList<String>();
        for (CodeTemplatePhase codeTemplatePhaseDO:codeTempphaseEntities){
            String oldoid = codeTemplatePhaseDO.getOid();
            String newOid = VciBaseUtil.getPk();
            codeTemplatePhaseDO.setOid(newOid);
            codeTemplatePhaseDO.setCodeClassifyTemplateOid(templateNewOid);
            phaseKeyMap.put(oldoid,newOid);
            phaseOidList.add(oldoid);
        }
        //模板阶段的属性
        List<CodePhaseAttr> codePhaseAttrDOList = new ArrayList<CodePhaseAttr>();
        if(!CollectionUtils.isEmpty(phaseOidList)){//size()==0下边方法会报错
//            Map<String,String> conditionMap =  new HashMap<>();
//            conditionMap.put("codephaseoid", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(phaseOidList.toArray(new String[0])) + ")");
//            codePhaseAttrDOList = codePhaseAttrDaoI.selectByCondition(conditionMap,new PageHelper(-1));
            codePhaseAttrDOList = codePhaseattrMapper.selectByPhaseaIds(VciBaseUtil.toInSql(phaseOidList.toArray(new String[0])));
        }
        for (CodePhaseAttr codePhaseAttrDO:codePhaseAttrDOList){
            String oldPhaseoid = codePhaseAttrDO.getCodePhaseOid();
//            String newOid = VciBaseUtil.getPk();
            codePhaseAttrDO.setOid(null);
            codePhaseAttrDO.setCodePhaseOid(phaseKeyMap.get(oldPhaseoid));
//            codePhaseattrMapper.insert(codePhaseAttrDO);
        }
        Map phaseMap = new HashMap();
        phaseMap.put("phase",codeTempphaseEntities);
        phaseMap.put("phaseAttr",codePhaseAttrDOList);
        return phaseMap;
    }
    /**
     * å¤åˆ¶æ¨¡æ¿æŒ‰é’®
     */
    public List<CodeClassifyTemplateButton> copyTemplateButton(String templateOldOid,String templateNewOid){
        Map<String,Object> condition = new HashMap<>(1);
        condition.put("classifyTemplateOid",templateOldOid);
//        VciQueryWrapperForDO buttonWrapper = new VciQueryWrapperForDO(CodeClassifyTemplateButtonDO.class);
//        buttonWrapper.addQueryMap("classifyTemplateOid",templateOldOid);
        List<CodeClassifyTemplateButton> codeTempbuttonEntities = codeTempbuttonMapper.selectByMap(condition);
//        List<CodeClassifyTemplateButtonDO> codeClassifyTemplateButtonDOList = codeClassifyTemplateButtonDaoI.selectByWrapper(buttonWrapper);
        for (CodeClassifyTemplateButton codeClassifyTemplateButtonDO:codeTempbuttonEntities){
//            String newOid = VciBaseUtil.getPk();
            codeClassifyTemplateButtonDO.setOid(null);
            codeClassifyTemplateButtonDO.setClassifytemplateoid(templateNewOid);
        }
        return codeTempbuttonEntities;
    }
    /**
     * å¤åˆ¶æ¨¡æ¿å±žæ€§
     */
    public List<CodeClstempattrEntity> copyTemplateAttr(String templateOldOid,String templateNewOid){
//        VciQueryWrapperForDO codeClassifyTemplateAttrQuery = new VciQueryWrapperForDO(CodeClassifyTemplateAttrDO.class);
//        codeClassifyTemplateAttrQuery.addQueryMap("classifyTemplateOid",templateOldOid);
        Map<String,Object> condition = new HashMap<>(1);
        condition.put("classifyTemplateOid",templateOldOid);
//        List<CodeClstempattrEntity> codeClassifyTemplateAttrDOList = codeClassifyTemplateAttrDaoI.selectByWrapper(codeClassifyTemplateAttrQuery);
        List<CodeClstempattrEntity> codeClstempattrEntities = codeClstempattrMapper.selectByMap(condition);
        for (CodeClstempattrEntity codeClassifyTemplateAttrDO :codeClstempattrEntities){
//            String attrOid = VciBaseUtil.getPk();
            codeClassifyTemplateAttrDO.setOid(null);
            codeClassifyTemplateAttrDO.setClassifytemplateoid(templateNewOid);
//            codeClstempattrMapper.insert(codeClassifyTemplateAttrDO);
        }
        return codeClstempattrEntities;
    }
    /**
     * åˆ†ç±»æ¨¡æ¿åˆ—表
     *
     * @param plCodeClstemplate æŸ¥è¯¢æ¡ä»¶
     * @param query   åˆ†é¡µå¯¹è±¡
     * @return æ˜¾ç¤ºå¯¹è±¡
     * @throws VciBaseException æŸ¥è¯¢å‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    @Override
    public DataGrid<CodeClstemplateVO> gridCodeClassifyTemplate(CodeClstemplateVO plCodeClstemplate, Query query) throws VciBaseException {
        DataGrid<CodeClstemplateVO> dataGrid=new DataGrid<CodeClstemplateVO>();
        //没有传分类id,不执行查询逻辑,直接返回
//        if(conditionMap.size()==0){
//            dataGrid.setData(new ArrayList<>());
//            dataGrid.setTotal(0);
//            return dataGrid;
//        }
//        if (pageHelper == null) {
//            pageHelper = new PageHelper(-1);
//        }
//        pageHelper.addDefaultDesc("revisionSeq");
        List<CodeClstemplateVO> doList = codeClstemplateMapper.selectPlCodeClstemplatePage(Condition.getPage(query), plCodeClstemplate);
        if (!CollectionUtils.isEmpty(doList)) {
//            QueryWrapper<CodeClstemplateVO> codeClstemplateVOQueryWrapper = new QueryWrapper<>();
//            codeClstemplateVOQueryWrapper.allEq(plCodeClstemplate);
            List<CodeClstemplateEntity> codeClstemplateEntity = new ArrayList<>();
            BeanUtils.copyProperties(doList,codeClstemplateEntity);
            dataGrid.setData(codeClassifyTemplateDO2VOs(codeClstemplateEntity));
            dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(codeClstemplateMapper.selectCount(Condition.getQueryWrapper(plCodeClstemplate)))));
        }
        return dataGrid;
    }
    /**
     * å¢žåŠ åˆ†ç±»æ¨¡æ¿å¯¹è±¡
     * @param codeClassifyTemplateDTO åˆ†ç±»æ¨¡æ¿å¯¹è±¡æ•°æ®ä¼ è¾“对象
     * @return æ‰§è¡Œç»“æžœ
     * @throws VciBaseException å‚数为空,唯一项,必输项不通过时会抛出异常
     */
    @Override
    public R<CodeClstemplateVO> addSave(CodeClstemplateDTO codeClassifyTemplateDTO) throws VciBaseException{
        VciBaseUtil.alertNotNull(codeClassifyTemplateDTO,"需要添加的数据对象");
        //将DTO转换为DO
        CodeClstemplateEntity codeClassifyTemplateDO = new CodeClstemplateEntity();
        BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyTemplateDTO,codeClassifyTemplateDO);
        //查询分类以及上级分类的业务类型btmtypeid、btmtypename
        List<CodeClassify> codeClassifyDOList = codeClassifyService.selectAllLevelParents(codeClassifyTemplateDTO.getCodeClassifyOid());
        //所有分类都没有业务类型,返回提示
        if(codeClassifyDOList.size()==0){
            return R.fail("添加模板添加失败,分类和上级分类都没有关联业务类型!");
        }
        //设置btmtypeid和name
        CodeClassify codeClassifyDO = codeClassifyDOList.get(0);
        codeClassifyTemplateDO.setBtmTypeId(codeClassifyDO.getBtmTypeId());
        codeClassifyTemplateDO.setBtmTypeName(codeClassifyDO.getBtmTypeName());
        codeClassifyTemplateDO.setLcStatus(FRAMEWORK_RELEASE_EDITING);
        codeClassifyTemplateDO.setTs(new Date());
        codeClassifyTemplateDO.setOwner(AuthUtil.getUser().getUserName());
        codeClassifyTemplateDO.setLctid("codeClsTempLc");
        codeClassifyTemplateDO.setVersionValue("1");
        codeClassifyTemplateDO.setVersionSeq(1);
        codeClassifyTemplateDO.setRevisionValue("1");
        codeClassifyTemplateDO.setRevisionSeq(1);
        codeClassifyTemplateDO.setVersionRule("0");
        codeClassifyTemplateDO.setRevisionRule("numberversionrule");
        codeClassifyTemplateDO.setLastModifyTime(new Date());
        codeClassifyTemplateDO.setLastModifier(AuthUtil.getUser().getUserName());
        codeClassifyTemplateDO.setCreator(AuthUtil.getUser().getUserName());
        codeClassifyTemplateDO.setCreateTime(new Date());
        codeClassifyTemplateDO.setLastV("1");
        codeClassifyTemplateDO.setLastR("1");
        codeClassifyTemplateDO.setFirstV("1");
        codeClassifyTemplateDO.setFirstR("1");
        codeClassifyTemplateDO.setBtmname("codeclstemplate");
        baseMapper.insert(codeClassifyTemplateDO);
        //默认添加模板属性
//        List<CodeClassifyTemplateAttrDO> attrDOList = new ArrayList<>();
//        CodeClassifyTemplateAttrDO codeAttr = new CodeClassifyTemplateAttrDO();
//        codeAttr.setId("id");
//        codeAttr.setName("企业编码");
//        codeAttr.setAttributeDataType("VTString");
//        codeAttr.setAttrTableWidth(150);
//        codeAttr.setOrderNum(1);
//        codeAttr.setFormDisplayFlag(BooleanEnum.TRUE.getValue());
//        codeAttr.setTableDisplayFlag(BooleanEnum.TRUE.getValue());
//        codeAttr.setClassifyTemplateOid(codeClassifyTemplateDO.getOid());
//        attrDOList.add(codeAttr);
//
//
//        CodeClassifyTemplateAttrDO groupAttr = new CodeClassifyTemplateAttrDO();
//        groupAttr.setId("name");
//        groupAttr.setName("集团码");
//        groupAttr.setAttributeDataType("VTString");
//        groupAttr.setAttrTableWidth(150);
//        groupAttr.setOrderNum(2);
//        groupAttr.setFormDisplayFlag(BooleanEnum.TRUE.getValue());
//        groupAttr.setTableDisplayFlag(BooleanEnum.TRUE.getValue());
//        groupAttr.setClassifyTemplateOid(codeClassifyTemplateDO.getOid());
//        attrDOList.add(groupAttr);
//
//        CodeClassifyTemplateAttrDO descAttr = new CodeClassifyTemplateAttrDO();
//        descAttr.setId("description");
//        descAttr.setName("描述");
//        descAttr.setAttrTableWidth(150);
//        descAttr.setAttributeDataType("VTString");
//        descAttr.setOrderNum(3);
//        descAttr.setFormDisplayFlag(BooleanEnum.TRUE.getValue());
//        descAttr.setTableDisplayFlag(BooleanEnum.TRUE.getValue());
//        descAttr.setClassifyTemplateOid(codeClassifyTemplateDO.getOid());
//        attrDOList.add(descAttr);
//
//        CodeClassifyTemplateAttrDO statusAttr = new CodeClassifyTemplateAttrDO();
//        statusAttr.setId("lcstatus");
//        statusAttr.setName("状态");
//        statusAttr.setAttrTableWidth(70);
//        statusAttr.setOrderNum(4);
//        statusAttr.setFormDisplayFlag(BooleanEnum.TRUE.getValue());
//        statusAttr.setTableDisplayFlag(BooleanEnum.TRUE.getValue());
//        statusAttr.setAttributeDataType("VTString");
//        statusAttr.setClassifyTemplateOid(codeClassifyTemplateDO.getOid());
//        attrDOList.add(statusAttr);
//
//
//        CodeClassifyTemplateAttrDO secAttr = new CodeClassifyTemplateAttrDO();
//        secAttr.setId("secretgrade");
//        secAttr.setName("密级");
//        secAttr.setAttrTableWidth(70);
//        secAttr.setAttributeDataType(VciFieldTypeEnum.VTInteger.name());
//        secAttr.setEnumId("Enumsecretgrade");
//        secAttr.setEnumName("密级");
//        secAttr.setOrderNum(4);
//        secAttr.setFormDisplayFlag(BooleanEnum.TRUE.getValue());
//        secAttr.setTableDisplayFlag(BooleanEnum.TRUE.getValue());
//        secAttr.setClassifyTemplateOid(codeClassifyTemplateDO.getOid());
//        attrDOList.add(secAttr);
        return R.data(codeClassifyTemplateDO2VO(codeClassifyTemplateDO));
    }
    /**
     * ä¿®æ”¹åˆ†ç±»æ¨¡æ¿å¯¹è±¡
     * @param codeClassifyTemplateDTO åˆ†ç±»æ¨¡æ¿å¯¹è±¡æ•°æ®ä¼ è¾“对象
     * @return æ‰§è¡Œç»“æžœ
     * @throws VciBaseException å‚数为空,唯一项,必输项不通过时会抛出异常
     */
    @Override
    public R editSave(CodeClstemplateDTO codeClassifyTemplateDTO) throws VciBaseException{
        VciBaseUtil.alertNotNull(codeClassifyTemplateDTO,"数据对象",codeClassifyTemplateDTO.getOid(),"分类模板对象主键");
        //检查ts
        CodeClstemplateEntity codeClassifyTemplateDOCopyFromDTO = new CodeClstemplateEntity();
        BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyTemplateDTO,codeClassifyTemplateDOCopyFromDTO);
        CodeClstemplateEntity codeClassifyTemplateDO = null;
        if(codeClassifyTemplateDOCopyFromDTO.getOid() == null){
            baseMapper.insert(codeClassifyTemplateDOCopyFromDTO);
            return R.data(codeClassifyTemplateDOCopyFromDTO);
        }else{
//            Map<String,Object> condition = new HashMap<>(2);
//            condition.put("oid",codeClassifyTemplateDOCopyFromDTO.getOid());
//            condition.put("ts",codeClassifyTemplateDOCopyFromDTO.getTs());
            CodeClstemplateEntity detail = baseMapper
                .selectById(codeClassifyTemplateDOCopyFromDTO.getOid());
            //        boolean tsBoolean = boService.checkTs(codeClassifyTemplateAttrDOListemplateDOCopyFromDTO);
            if(detail.getTs().compareTo(codeClassifyTemplateDOCopyFromDTO.getTs()) != 0){//不是最新的不让改
                return R.fail("当前数据不是最新,请刷新后再修改!");
            }
            //将DTO转换为DO
            codeClassifyTemplateDO = selectByOid(codeClassifyTemplateDTO.getOid());
            String lcstatus = codeClassifyTemplateDO.getLcStatus();
            String versionvalue = codeClassifyTemplateDO.getVersionValue();
            //只有编辑中才能修改
            if(!CodeClassifyTemplateLC.EDITING.getValue().equals(codeClassifyTemplateDO.getLcStatus())){
                return R.fail("只有编辑中的,模板才能修改!");
            }
            revisionModelUtil.copyFromDTOIgnore(codeClassifyTemplateDTO,codeClassifyTemplateDO);
            //不修改版本号和状态
            codeClassifyTemplateDO.setLcStatus(lcstatus);
            codeClassifyTemplateDO.setVersionValue(versionvalue);
            codeClassifyTemplateDO.setTs(new Date());
            codeClassifyTemplateDO.setLastModifier(AuthUtil.getUser().getUserName());
            codeClassifyTemplateDO.setLastModifyTime(new Date());
            baseMapper.updateById(codeClassifyTemplateDO);
        }
        return R.data(codeClassifyTemplateDO2VO(codeClassifyTemplateDO));
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeFixedValueServiceImpl.java
@@ -1,11 +1,13 @@
package com.vci.ubcs.code.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
import com.vci.ubcs.code.dto.CodeFixedValueDTO;
import com.vci.ubcs.code.entity.CodeClassifyProcessTemp;
import com.vci.ubcs.code.entity.CodeFixedValue;
import com.vci.ubcs.code.mapper.CodeFixedValueMapper;
import com.vci.ubcs.code.service.ICodeFixedValueService;
@@ -31,8 +33,7 @@
import java.util.*;
import java.util.stream.Collectors;
import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.DATA_LINKED_NOT_DELETE;
import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.DATA_OID_NOT_EXIST;
import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.*;
/**
 * å›ºå®šç æ®µçš„码值服务
@@ -129,7 +130,9 @@
     * @return success为true为可以删除,false表示有数据引用,obj为true表示有下级
     */
    private R checkIsCanDeleteForDO(CodeFixedValueDTO codeFixedValueDTO, CodeFixedValue codeFixedValueDO) {
        //boService.checkTs(codeFixedValueDTO);
        if (checkTs(codeFixedValueDTO)) {
            return R.fail(TS_NOT_PROCESS);
        }
        if(!checkIsLinked(codeFixedValueDO.getOid())) {
            return R.status(true);
        }else{
@@ -138,6 +141,22 @@
    }
    /**
     * æ£€æŸ¥ts
     * @param tempDO
     * @return
     */
    private boolean checkTs(CodeFixedValueDTO tempDO){
        LambdaQueryWrapper<CodeFixedValue> wrapper = Wrappers.<CodeFixedValue>query()
            .lambda().eq(CodeFixedValue::getOid,tempDO.getOid()).select(CodeFixedValue::getTs);
        long dbTs = codeFixedValueMapper.selectById(wrapper).getTs().getTime();
        long currentTs = tempDO.getTs().getTime();
        if(dbTs == currentTs){
            return true;
        }
        return false;
    }
    /**
     * æ ¡éªŒæ˜¯å¦è¢«å¼•用
     * @param oid ä¸»é”®
     * @throws VciBaseException è¢«å¼•用的时候会抛出异常
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodePhaseattrServiceImpl.java
@@ -18,8 +18,8 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.code.entity.CodePhaseattrEntity;
import com.vci.ubcs.code.mapper.CodePhaseattrMapper;
import com.vci.ubcs.code.entity.CodePhaseAttr;
import com.vci.ubcs.code.mapper.CodePhaseAttrMapper;
import com.vci.ubcs.code.service.ICodePhaseattrService;
import com.vci.ubcs.code.vo.CodePhaseattrVO;
import org.springframework.stereotype.Service;
@@ -31,7 +31,7 @@
 * @since 2023-04-20
 */
@Service
public class CodePhaseattrServiceImpl extends ServiceImpl<CodePhaseattrMapper, CodePhaseattrEntity> implements ICodePhaseattrService {
public class CodePhaseattrServiceImpl extends ServiceImpl<CodePhaseAttrMapper, CodePhaseAttr> implements ICodePhaseattrService {
    @Override
    public IPage<CodePhaseattrVO> selectCodePhaseattrPage(IPage<CodePhaseattrVO> page, CodePhaseattrVO CodePhaseattr) {
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeTempbuttonServiceImpl.java
@@ -17,19 +17,44 @@
package com.vci.ubcs.code.service.impl;
import com.alibaba.nacos.common.utils.StringUtils;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.code.entity.CodeTempbuttonEntity;
import com.vci.ubcs.code.mapper.CodeTempbuttonMapper;
import com.vci.ubcs.code.dto.CodeClassifyTemplateButtonDTO;
import com.vci.ubcs.code.dto.CodeClassifyValueDTO;
import com.vci.ubcs.code.entity.CodeClassifyTemplateButton;
import com.vci.ubcs.code.entity.CodeClassifyValue;
import com.vci.ubcs.code.mapper.CodeClassifyTemplateButtonMapper;
import com.vci.ubcs.code.service.ICodeButtonService;
import com.vci.ubcs.code.service.ICodeTempbuttonService;
import com.vci.ubcs.code.vo.CodeTempbuttonVO;
import com.vci.ubcs.code.vo.pagemodel.CodeButtonVO;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateButtonVO;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
import com.vci.ubcs.starter.web.pagemodel.DataGrid;
import com.vci.ubcs.starter.web.pagemodel.PageHelper;
import com.vci.ubcs.starter.web.util.BeanUtil;
import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import com.vci.ubcs.starter.web.util.WebUtil;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cglib.beans.BeanMap;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import java.lang.reflect.Field;
import java.util.*;
import java.util.stream.Collectors;
import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.*;
/**
 * ç¼–码库定义-模板按钮扩展 æœåŠ¡å®žçŽ°ç±»
@@ -38,11 +63,301 @@
 * @since 2023-04-20
 */
@Service
public class CodeTempbuttonServiceImpl extends ServiceImpl<CodeTempbuttonMapper, CodeTempbuttonEntity> implements ICodeTempbuttonService {
public class CodeTempbuttonServiceImpl extends ServiceImpl<CodeClassifyTemplateButtonMapper, CodeClassifyTemplateButton> implements ICodeTempbuttonService {
    /**
     * æ•°æ®æ“ä½œå±‚
     */
    @Autowired
    private CodeClassifyTemplateButtonMapper codeClassifyTemplateButtonMapper;
    /**
     * æŒ‰é’®çš„æœåŠ¡
     */
    @Autowired
    private ICodeButtonService buttonService;
    /**
     * å¯¹è±¡çš„æ“ä½œ
     */
    @Autowired
    private RevisionModelUtil revisionModelUtil;
    /**
     * æŸ¥è¯¢æ‰€æœ‰çš„主题库里模板包含的按钮
     * @param codeClassifyTemplateButtonVO æŸ¥è¯¢æ¡ä»¶
     * @param query åˆ†é¡µå’ŒæŽ’序
     * @return æ‰§è¡Œç»“æžœ
     * @throws VciBaseException æŸ¥è¯¢æ¡ä»¶å’Œåˆ†é¡µå‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    @Override
    public DataGrid<CodeClassifyTemplateButtonVO> gridCodeClassifyTemplateButton(CodeClassifyTemplateButtonVO codeClassifyTemplateButtonVO, Query query) throws VciBaseException {
        query.setDescs("createTime");
        if(StringUtils.isBlank(codeClassifyTemplateButtonVO.getClassifytemplateoid())){
            return null;
        }
        IPage<CodeClassifyTemplateButton> doList = codeClassifyTemplateButtonMapper.selectPage(Condition.getPage(query),Condition.getQueryWrapper(codeClassifyTemplateButtonVO));
        DataGrid<CodeClassifyTemplateButtonVO> dataGrid=new DataGrid<CodeClassifyTemplateButtonVO>();
        if (!CollectionUtils.isEmpty(doList.getRecords())) {
            dataGrid.setData(codeClassifyTemplateButtonDO2VOs(doList.getRecords()));
            dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(codeClassifyTemplateButtonMapper.selectCount(Condition.getQueryWrapper(codeClassifyTemplateButtonVO)))));
        }
        return dataGrid;
    }
    /**
     * æ‰¹é‡æ•°æ®å¯¹è±¡è½¬æ¢ä¸ºæ˜¾ç¤ºå¯¹è±¡
     * @param codeClassifyTemplateButtonDOs æ•°æ®å¯¹è±¡åˆ—表
     * @return æ˜¾ç¤ºå¯¹è±¡
     * @throws VciBaseException å‚数为空或者不存在的时候会抛出异常
     */
    @Override
    public List<CodeClassifyTemplateButtonVO> codeClassifyTemplateButtonDO2VOs(Collection<CodeClassifyTemplateButton> codeClassifyTemplateButtonDOs) throws VciBaseException{
        return codeClassifyTemplateButtonDO2VOs(codeClassifyTemplateButtonDOs,false);
    }
    /**
     * æ‰¹é‡æ•°æ®å¯¹è±¡è½¬æ¢ä¸ºæ˜¾ç¤ºå¯¹è±¡
     * @param codeClassifyTemplateButtonDOs æ•°æ®å¯¹è±¡åˆ—表
     * @param hasButtonVO æ˜¯å¦åŒ…含按钮的信息
     * @return æ˜¾ç¤ºå¯¹è±¡
     * @throws VciBaseException å‚数为空或者不存在的时候会抛出异常
     */
    @Override
    public List<CodeClassifyTemplateButtonVO> codeClassifyTemplateButtonDO2VOs(Collection<CodeClassifyTemplateButton> codeClassifyTemplateButtonDOs, boolean hasButtonVO) throws VciBaseException{
        List<CodeClassifyTemplateButtonVO> voList = new ArrayList<CodeClassifyTemplateButtonVO>();
        if(!CollectionUtils.isEmpty(codeClassifyTemplateButtonDOs)){
            for(CodeClassifyTemplateButton s: codeClassifyTemplateButtonDOs){
                CodeClassifyTemplateButtonVO vo =  codeClassifyTemplateButtonDO2VO(s);
                if(vo != null){
                    voList.add(vo);
                }
            }
        }
        if(hasButtonVO && !CollectionUtils.isEmpty(voList)){
            //获取按钮的显示对象
            List<CodeButtonVO> buttonVOList = new ArrayList<>();
            VciBaseUtil.switchCollectionForOracleIn(voList.stream().map(CodeClassifyTemplateButtonVO::getClassifybuttonoid).collect(Collectors.toList())).stream().forEach(buttonOids->{
                buttonVOList.addAll(buttonService.listCodeButtonByOids(buttonOids));
            });
            Map<String, CodeButtonVO> buttonVOMap = Optional.ofNullable(buttonVOList).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
            voList.stream().forEach(vo->{
                vo.setButtonVO(buttonVOMap.getOrDefault(vo.getClassifybuttonoid(),null));
            });
        }
        return voList;
    }
    /**
     * æ•°æ®å¯¹è±¡è½¬æ¢ä¸ºæ˜¾ç¤ºå¯¹è±¡
     * @param  codeClassifyTemplateButtonDO æ•°æ®å¯¹è±¡
     * @return æ˜¾ç¤ºå¯¹è±¡
     * @throws VciBaseException æ‹·è´å±žæ€§å‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    @Override
    public  CodeClassifyTemplateButtonVO codeClassifyTemplateButtonDO2VO(CodeClassifyTemplateButton codeClassifyTemplateButtonDO) throws VciBaseException{
        CodeClassifyTemplateButtonVO vo = new CodeClassifyTemplateButtonVO();
        if(codeClassifyTemplateButtonDO != null){
            BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyTemplateButtonDO,vo);
            //如果有lcstatus的类的话
        }
        return vo;
    }
    @Override
    public IPage<CodeTempbuttonVO> selectCodeTempbuttonPage(IPage<CodeTempbuttonVO> page, CodeTempbuttonVO CodeTempbutton) {
    public IPage<CodeClassifyTemplateButtonVO> selectCodeTempbuttonPage(IPage<CodeClassifyTemplateButtonVO> page, CodeClassifyTemplateButtonVO CodeTempbutton) {
        return page.setRecords(baseMapper.selectCodeTempbuttonPage(page, CodeTempbutton));
    }
    /**
     * å¢žåŠ ä¸»é¢˜åº“é‡Œæ¨¡æ¿åŒ…å«çš„æŒ‰é’®
     * @param codeClassifyTemplateButtonDTO ä¸»é¢˜åº“里模板包含的按钮数据传输对象
     * @return æ‰§è¡Œç»“æžœ
     * @throws VciBaseException å‚数为空,唯一项,必输项不通过时会抛出异常
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean addSave(CodeClassifyTemplateButtonDTO codeClassifyTemplateButtonDTO) throws VciBaseException{
        VciBaseUtil.alertNotNull(codeClassifyTemplateButtonDTO,"需要添加的数据对象",codeClassifyTemplateButtonDTO.getClassifytemplateoid(),"模板的主键");
        //将DTO转换为DO
        CodeClassifyTemplateButton codeClassifyTemplateButtonDO = new CodeClassifyTemplateButton();
        BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyTemplateButtonDTO,codeClassifyTemplateButtonDO);
        if(codeClassifyTemplateButtonDO.getOrderNum()== null){
            //查询全部
            Long count = codeClassifyTemplateButtonMapper.selectCount(Wrappers.<CodeClassifyTemplateButton>query()
                .lambda().eq(CodeClassifyTemplateButton::getClassifytemplateoid,codeClassifyTemplateButtonDTO.getClassifytemplateoid())
            );
            if(count == null){
                count = 0L;
            }
            codeClassifyTemplateButtonDO.setOrderNum(Long.valueOf(count + 1L).intValue());
        }
        return codeClassifyTemplateButtonMapper.insert(codeClassifyTemplateButtonDO)>0;
    }
    /**
     * ä¿®æ”¹ä¸»é¢˜åº“里模板包含的按钮
     * @param codeClassifyTemplateButtonDTO ä¸»é¢˜åº“里模板包含的按钮数据传输对象
     * @return æ‰§è¡Œç»“æžœ
     * @throws VciBaseException å‚数为空,唯一项,必输项不通过时会抛出异常
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean editSave(CodeClassifyTemplateButtonDTO codeClassifyTemplateButtonDTO) throws VciBaseException{
        VciBaseUtil.alertNotNull(codeClassifyTemplateButtonDTO,"数据对象",codeClassifyTemplateButtonDTO.getOid(),"主题库里模板包含的按钮主键");
        //将DTO转换为DO
        CodeClassifyTemplateButton codeClassifyTemplateButtonDO = selectByOid(codeClassifyTemplateButtonDTO.getOid());
        revisionModelUtil.copyFromDTOIgnore(codeClassifyTemplateButtonDTO,codeClassifyTemplateButtonDO);
        return codeClassifyTemplateButtonMapper.updateById(codeClassifyTemplateButtonDO)>0;
    }
    /**
     * åˆ é™¤ä¸»é¢˜åº“里模板包含的按钮
     * @param codeClassifyTemplateButtonDTO ä¸»é¢˜åº“里模板包含的按钮数据传输对象,oid和ts需要传输
     * @return åˆ é™¤ç»“果反馈::success:成功,fail:失败
     * @throws VciBaseException å‚数为空,被引用时抛出异常
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R deleteCodeClassifyTemplateButton(CodeClassifyTemplateButtonDTO codeClassifyTemplateButtonDTO) throws VciBaseException{
        VciBaseUtil.alertNotNull(codeClassifyTemplateButtonDTO,"主题库里模板包含的按钮数据对象",codeClassifyTemplateButtonDTO.getOid(),"主题库里模板包含的按钮的主键");
        CodeClassifyTemplateButton codeClassifyTemplateButtonDO = selectByOid(codeClassifyTemplateButtonDTO.getOid());
        R baseResult = checkIsCanDeleteForDO(codeClassifyTemplateButtonDTO,codeClassifyTemplateButtonDO);
        if(!baseResult.isSuccess()) {
        }else{
            return baseResult;
        }
        //执行删除操作
        boolean b = codeClassifyTemplateButtonMapper.deleteById(codeClassifyTemplateButtonDO.getOid()) > 0;
        return R.status(b);
    }
    /**
     * æ ¡éªŒæ˜¯å¦å¯ä»¥åˆ é™¤ï¼Œå¦‚果存在下级,并且下级有数据引用则不能删除
     * @param codeClassifyTemplateButtonDTO æ•°æ®ä¼ è¾“对象
     * @param codeClassifyTemplateButtonDO æ•°æ®åº“中的数据对象
     * @return success为true为可以删除,false表示有数据引用,obj为true表示有下级
     */
    private R checkIsCanDeleteForDO(CodeClassifyTemplateButtonDTO codeClassifyTemplateButtonDTO, CodeClassifyTemplateButton codeClassifyTemplateButtonDO) {
        CodeClassifyTemplateButton tsDO = new CodeClassifyTemplateButton();
        BeanUtil.convert(codeClassifyTemplateButtonDTO,tsDO);
        if (checkTs(tsDO)) {
            return R.fail(TS_NOT_PROCESS);
        }
        if(!checkIsLinked(codeClassifyTemplateButtonDO.getOid())) {
            return R.success("success");
        }else{
            return R.fail(DATA_LINKED_NOT_DELETE);
        }
    }
    /**
     * æ£€æŸ¥ts
     * @param tempDO
     * @return
     */
    private boolean checkTs(CodeClassifyTemplateButton tempDO){
        LambdaQueryWrapper<CodeClassifyTemplateButton> wrapper = Wrappers.<CodeClassifyTemplateButton>query()
            .lambda().eq(CodeClassifyTemplateButton::getOid,tempDO.getOid()).select(CodeClassifyTemplateButton::getTs);
        long dbTs = codeClassifyTemplateButtonMapper.selectById(wrapper).getTs().getTime();
        long currentTs = tempDO.getTs().getTime();
        if(dbTs == currentTs){
            return true;
        }
        return false;
    }
    /**
     * ä¸»é”®èŽ·å–ä¸»é¢˜åº“é‡Œæ¨¡æ¿åŒ…å«çš„æŒ‰é’®
     * @param oid ä¸»é”®
     * @return ä¸»é¢˜åº“里模板包含的按钮显示对象
     * @throws VciBaseException å‚数为空,数据不存在时会抛出异常
     */
    @Override
    public  CodeClassifyTemplateButtonVO getObjectByOid(String oid) throws VciBaseException{
        return codeClassifyTemplateButtonDO2VO(selectByOid(oid));
    }
    /**
     * ä¸»é”®æ‰¹é‡èŽ·å–ä¸»é¢˜åº“é‡Œæ¨¡æ¿åŒ…å«çš„æŒ‰é’®
     * @param oidCollections ä¸»é”®é›†åˆï¼Œä½†æ˜¯å—性能影响,建议一次查询不超过10000个
     * @return ä¸»é¢˜åº“里模板包含的按钮显示对象
     * @throws VciBaseException æŸ¥è¯¢å‡ºçŽ°å¼‚å¸¸æ—¶ä¼šæŠ›å‡º
     */
    @Override
    public Collection<CodeClassifyTemplateButtonVO> listCodeClassifyTemplateButtonByOids(Collection<String> oidCollections) throws VciBaseException{
        VciBaseUtil.alertNotNull(oidCollections,"数据对象主键集合");
        List<CodeClassifyTemplateButton> codeClassifyTemplateButtonDOList = listCodeClassifyTemplateButtonDOByOidCollections(oidCollections);
        return codeClassifyTemplateButtonDO2VOs(codeClassifyTemplateButtonDOList);
    }
    /**
     * å‚照主题库里模板包含的按钮列表
     * @param conditionMap æŸ¥è¯¢æ¡ä»¶
     * @param pageHelper åˆ†é¡µå’ŒæŽ’序
     * @return ä¸»é¢˜åº“里模板包含的按钮显示对象列表,生效的内容
     * @throws VciBaseException æŸ¥è¯¢æ¡ä»¶å’Œåˆ†é¡µå‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    @Override
    public DataGrid<CodeClassifyTemplateButtonVO> refDataGridCodeClassifyTemplateButton(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
        if(conditionMap == null){
            conditionMap = new HashMap<String, String>();
        }
        CodeClassifyTemplateButtonVO codeClassifyTemplateButtonVO = new CodeClassifyTemplateButtonVO();
        BeanMap beanMap = BeanMap.create(codeClassifyTemplateButtonVO);
        beanMap.putAll(conditionMap);
        Query query = new Query();
        query.setSize(pageHelper.getLimit());
        query.setCurrent(pageHelper.getPage());
        return gridCodeClassifyTemplateButton(codeClassifyTemplateButtonVO,query);
    }
    /**
     * ä½¿ç”¨ä¸»é”®é›†åˆæŸ¥è¯¢æ•°æ®å¯¹è±¡
     * @param oidCollections ä¸»é”®çš„集合
     * @return æ•°æ®å¯¹è±¡åˆ—表
     */
    private List<CodeClassifyTemplateButton> listCodeClassifyTemplateButtonDOByOidCollections(Collection<String> oidCollections){
        List<CodeClassifyTemplateButton> codeClassifyTemplateButtonDOList = new ArrayList<CodeClassifyTemplateButton>();
        if(!CollectionUtils.isEmpty(oidCollections)){
            Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
            for(Collection<String> oids: oidCollectionsList){
                List<CodeClassifyTemplateButton> tempDOList =  codeClassifyTemplateButtonMapper.selectBatchIds(oids);
                if(!CollectionUtils.isEmpty(tempDOList)){
                    codeClassifyTemplateButtonDOList.addAll(tempDOList);
                }
            }
        }
        return  codeClassifyTemplateButtonDOList;
    }
    /**
     * æ ¡éªŒæ˜¯å¦è¢«å¼•用
     * @param oid ä¸»é”®
     * @throws VciBaseException è¢«å¼•用的时候会抛出异常
     */
    private boolean checkIsLinked(String oid) throws VciBaseException{
        //TODO æ·»åŠ éœ€è¦æ ¡éªŒå¼•ç”¨çš„åœ°æ–¹
        return false;
    }
    /**
     * ä¸»é”®æŸ¥è¯¢æ•°æ®å¯¹è±¡
     * @param oid ä¸»é”®
     * @return  æ•°æ®å¯¹è±¡
     * @throws VciBaseException å‚数为空,并且数据不存在的时候会抛出异常
     */
    private CodeClassifyTemplateButton selectByOid(String oid) throws VciBaseException{
        VciBaseUtil.alertNotNull(oid,"主键");
        CodeClassifyTemplateButton codeClassifyTemplateButtonDO = codeClassifyTemplateButtonMapper.selectById(oid.trim());
        if(codeClassifyTemplateButtonDO == null || StringUtils.isBlank(codeClassifyTemplateButtonDO.getOid())){
            throw new VciBaseException(DATA_OID_NOT_EXIST);
        }
        return codeClassifyTemplateButtonDO;
    }
    /**
@@ -57,10 +372,10 @@
        if(StringUtils.isNotBlank(classifyTemplateOid)){
            Map<String,Object> conditionMap = new HashMap<>();
            conditionMap.put("classifyTemplateOid",classifyTemplateOid);
            List<CodeTempbuttonEntity> codeTempbuttonEntities = baseMapper.selectByMap(conditionMap);
            List<CodeClassifyTemplateButton> codeTempbuttonEntities = baseMapper.selectByMap(conditionMap);
            if(!CollectionUtils.isEmpty(codeTempbuttonEntities)){
                updateCount += baseMapper.deleteBatchIds(codeTempbuttonEntities.stream()
                    .map(CodeTempbuttonEntity::getOid).collect(Collectors.toList()));
                    .map(CodeClassifyTemplateButton::getOid).collect(Collectors.toList()));
            }
        }
        return updateCount;
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeTempphaseServiceImpl.java
@@ -16,22 +16,48 @@
 */
package com.vci.ubcs.code.service.impl;
import com.alibaba.cloud.commons.lang.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.code.entity.CodePhaseattrEntity;
import com.vci.ubcs.code.entity.CodeTempphaseEntity;
import com.vci.ubcs.code.mapper.CodePhaseattrMapper;
import com.vci.ubcs.code.mapper.CodeTempphaseMapper;
import com.vci.ubcs.code.service.ICodeTempphaseService;
import com.vci.ubcs.code.vo.CodeTempphaseVO;
import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
import com.vci.ubcs.code.dto.CodeTemplatePhaseDTO;
import com.vci.ubcs.code.entity.*;
import com.vci.ubcs.code.mapper.CodePhaseAttrMapper;
import com.vci.ubcs.code.mapper.CodeTemplatePhaseMapper;
import com.vci.ubcs.code.mapper.CommonsMapper;
import com.vci.ubcs.code.service.ICodeClassifyTemplateAttrService;
import com.vci.ubcs.code.service.ICodePhaseattrService;
import com.vci.ubcs.code.service.ICodeTempphaseService;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
import com.vci.ubcs.code.vo.pagemodel.CodeTemplatePhaseVO;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
import com.vci.ubcs.starter.util.MybatisParameterUtils;
import com.vci.ubcs.starter.web.constant.QueryOptionConstant;
import com.vci.ubcs.starter.web.pagemodel.DataGrid;
import com.vci.ubcs.starter.web.pagemodel.PageHelper;
import com.vci.ubcs.starter.web.util.BeanUtil;
import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import com.vci.ubcs.starter.web.util.WebUtil;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cglib.beans.BeanMap;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.*;
/**
 * ç¼–码库定义-模板阶段 æœåŠ¡å®žçŽ°ç±»
@@ -40,15 +66,88 @@
 * @since 2023-04-20
 */
@Service
public class CodeTempphaseServiceImpl extends ServiceImpl<CodeTempphaseMapper, CodeTempphaseEntity> implements ICodeTempphaseService {
public class CodeTempphaseServiceImpl extends ServiceImpl<CodeTemplatePhaseMapper, CodeTemplatePhase> implements ICodeTempphaseService {
    @Autowired(required = false)
    private CodePhaseattrMapper codePhaseattrMapper;
    private CodePhaseAttrMapper codePhaseAttrMapper;
    @Autowired(required = false)
    private CodeTemplatePhaseMapper codeTemplatePhaseMapper;
    @Autowired(required = false)
    private CommonsMapper commonsMapper;
    @Autowired(required = false)
    private ICodePhaseattrService codePhaseattrService;
    /**
     * å¯¹è±¡çš„æ“ä½œ
     */
    @Autowired(required = false)
    private RevisionModelUtil revisionModelUtil;
    /**
     * æ¨¡æ¿å±žæ€§çš„æœåŠ¡
     */
    @Autowired
    private ICodeClassifyTemplateAttrService tempAttrService;
    /**
     * æŸ¥è¯¢æ‰€æœ‰çš„æ¨¡æ¿é˜¶æ®µ
     * @param codeTemplatePhaseVO æŸ¥è¯¢æ¡ä»¶
     * @param query åˆ†é¡µå’ŒæŽ’序
     * @return æ‰§è¡Œç»“æžœ
     * @throws VciBaseException æŸ¥è¯¢æ¡ä»¶å’Œåˆ†é¡µå‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    @Override
    public IPage<CodeTempphaseVO> selectCodeTempphasePage(IPage<CodeTempphaseVO> page, CodeTempphaseVO CodeTempphase) {
        return page.setRecords(baseMapper.selectCodeTempphasePage(page, CodeTempphase));
    public DataGrid<CodeTemplatePhaseVO> gridCodeTemplatePhase(CodeTemplatePhaseVO codeTemplatePhaseVO, Query query) throws VciBaseException {
        query.setDescs("createTime");
        query.setSize(-1);
        IPage<CodeTemplatePhase> doList = codeTemplatePhaseMapper.selectPage(Condition.getPage(query), Condition.getQueryWrapper(codeTemplatePhaseVO));
        DataGrid<CodeTemplatePhaseVO> dataGrid=new DataGrid<CodeTemplatePhaseVO>();
        if (!CollectionUtils.isEmpty(doList.getRecords())) {
            dataGrid.setData(codeTemplatePhaseDO2VOs(doList.getRecords()));
            dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(codeTemplatePhaseMapper.selectCount(Condition.getQueryWrapper(codeTemplatePhaseVO)))));
        }
        return dataGrid;
    }
    /**
     * æ‰¹é‡æ•°æ®å¯¹è±¡è½¬æ¢ä¸ºæ˜¾ç¤ºå¯¹è±¡
     * @param codeTemplatePhaseDOs æ•°æ®å¯¹è±¡åˆ—表
     * @return æ˜¾ç¤ºå¯¹è±¡
     * @throws VciBaseException å‚数为空或者不存在的时候会抛出异常
     */
    @Override
    public List<CodeTemplatePhaseVO> codeTemplatePhaseDO2VOs(Collection<CodeTemplatePhase> codeTemplatePhaseDOs) throws VciBaseException{
        List<CodeTemplatePhaseVO> voList = new ArrayList<CodeTemplatePhaseVO>();
        if(!CollectionUtils.isEmpty(codeTemplatePhaseDOs)){
            for(CodeTemplatePhase s: codeTemplatePhaseDOs){
                CodeTemplatePhaseVO vo =  codeTemplatePhaseDO2VO(s);
                if(vo != null){
                    voList.add(vo);
                }
            }
        }
        return voList;
    }
    /**
     * æ•°æ®å¯¹è±¡è½¬æ¢ä¸ºæ˜¾ç¤ºå¯¹è±¡
     * @param  codeTemplatePhaseDO æ•°æ®å¯¹è±¡
     * @return æ˜¾ç¤ºå¯¹è±¡
     * @throws VciBaseException æ‹·è´å±žæ€§å‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    @Override
    public  CodeTemplatePhaseVO codeTemplatePhaseDO2VO(CodeTemplatePhase codeTemplatePhaseDO) throws VciBaseException{
        CodeTemplatePhaseVO vo = new CodeTemplatePhaseVO();
        if(codeTemplatePhaseDO != null){
            BeanUtilForVCI.copyPropertiesIgnoreCase(codeTemplatePhaseDO,vo);
            //如果有lcstatus的类的话
        }
        return vo;
    }
    /**
@@ -61,18 +160,350 @@
    public int codeTemplateDeleteTrigger(String templateOid) {
        int updateCount = 0;
        Map<String,Object> condition = new HashMap<>(1);
        condition.put("classifyTemplateOid",templateOid);
        List<CodeTempphaseEntity> codeTempphaseEntities = baseMapper.selectByMap(condition);
        condition.put("codeclassifytemplateoid",templateOid);
        List<CodeTemplatePhase> codeTempphaseEntities = baseMapper.selectByMap(condition);
        if(!CollectionUtils.isEmpty(codeTempphaseEntities)) {
            updateCount += baseMapper.deleteBatchIds(codeTempphaseEntities.stream().map(CodeTempphaseEntity::getOid).collect(Collectors.toList()));
            updateCount += baseMapper.deleteBatchIds(codeTempphaseEntities.stream().map(CodeTemplatePhase::getOid).collect(Collectors.toList()));
//            batchCBO.copyFromOther(codeTemplatePhaseMapper.batchDeleteByOids(templatePhaseDOS.stream().map(CodeTemplatePhaseDO::getOid).collect(Collectors.toList())));
//            conditionMap.put("codePhaseOid", QueryOptionConstant.IN + "(select oid from " + getPhaseTable() + " where codeClassifyTemplateOid='" + classifyTemplateOid + "')");
            List<CodePhaseattrEntity> phaseAttrDOS = codePhaseattrMapper.selectByPhasea(templateOid);
            List<CodePhaseAttr> phaseAttrDOS = codePhaseAttrMapper.selectByPhasea(templateOid);
            if(!CollectionUtils.isEmpty(phaseAttrDOS)){
                updateCount += codePhaseattrMapper.deleteBatchIds(phaseAttrDOS.stream().map(CodePhaseattrEntity::getOid).collect(Collectors.toList()));
                updateCount += codePhaseAttrMapper.deleteBatchIds(phaseAttrDOS.stream().map(CodePhaseAttr::getOid).collect(Collectors.toList()));
            }
        }
        return updateCount;
    }
    /**
     * æ¨¡æ¿ä¿®æ”¹è§¦å‘功能
     * @param attrDOList å±žæ€§çš„æ•°æ®å¯¹è±¡
     * @return å—影响的数据
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public List<CodeClstempattrEntity> codeTemplateAttrModifyTrigger(List<CodeClstempattrEntity> attrDOList){
        //属性修改的时候,需要同步修改对应属性的名称
//        BatchCBO batchCBO = new BatchCBO();
        List<CodePhaseAttr> phaseAttrDOS =codePhaseAttrMapper.listLinkAttrDOByTemplateAttrDOS(VciBaseUtil.toInSql(attrDOList.stream()
            .map(CodeClstempattrEntity::getId).collect(Collectors.toList()).toArray(new String[0])),attrDOList.get(0).getClassifytemplateoid());
        if(!CollectionUtils.isEmpty(phaseAttrDOS)){
            //说明有属性,我们去替换一下
            Map<String, CodeClstempattrEntity> attrDOMap = attrDOList.stream().collect(Collectors.toMap(s -> s.getId(), t -> t));
            phaseAttrDOS.stream().forEach(phaseAttrDO->{
                if(attrDOMap.containsKey(phaseAttrDO.getId())){
                    CodeClstempattrEntity attrDO = attrDOMap.get(phaseAttrDO.getId());
                    phaseAttrDO.setId(attrDO.getId());
                    phaseAttrDO.setName(attrDO.getName());
                    phaseAttrDO.setAttributegroup(attrDO.getAttributegroup());
                }
            });
//            codePhaseattrMapper.
            codePhaseattrService.saveBatch(phaseAttrDOS);
//            BatchCBO updateCBO =
//            codePhaseAttrMapper.batchUpdate(phaseAttrDOS);
//            batchCBO.copyFromOther(updateCBO);
        }
        return attrDOList;
    }
    /**
     * å¢žåŠ æ¨¡æ¿é˜¶æ®µ
     * @param codeTemplatePhaseDTO æ¨¡æ¿é˜¶æ®µæ•°æ®ä¼ è¾“对象
     * @return æ‰§è¡Œç»“æžœ
     * @throws VciBaseException å‚数为空,唯一项,必输项不通过时会抛出异常
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public CodeTemplatePhaseVO addSave(CodeTemplatePhaseDTO codeTemplatePhaseDTO) throws VciBaseException{
        VciBaseUtil.alertNotNull(codeTemplatePhaseDTO,"需要添加的数据对象",codeTemplatePhaseDTO.getAttributes(),"包含的属性");
        //将DTO转换为DO
        CodeTemplatePhase codeTemplatePhaseDO = new CodeTemplatePhase();
        codeTemplatePhaseDO.setOid(VciBaseUtil.getPk());
        BeanUtilForVCI.copyPropertiesIgnoreCase(codeTemplatePhaseDTO,codeTemplatePhaseDO);
        //WebUtil.setPersistence(false);
        boolean resBoolean = codeTemplatePhaseMapper.insert(codeTemplatePhaseDO) > 0;
        List<CodePhaseAttr> attrDOList = new ArrayList<>();
        codeTemplatePhaseDTO.getAttributes().stream().forEach(attrDTO->{
            CodePhaseAttr attrDO = new CodePhaseAttr();
            BeanUtilForVCI.copyPropertiesIgnoreCase(attrDTO,attrDO);
            attrDO.setOid(VciBaseUtil.getPk());
            attrDO.setCodePhaseOid(codeTemplatePhaseDO.getOid());
            attrDOList.add(attrDO);
        });
        codePhaseattrService.saveBatch(attrDOList);
        //WebUtil.setPersistence(true);
        return codeTemplatePhaseDO2VO(codeTemplatePhaseDO);
    }
    /**
     * ä¿®æ”¹æ¨¡æ¿é˜¶æ®µ
     * @param codeTemplatePhaseDTO æ¨¡æ¿é˜¶æ®µæ•°æ®ä¼ è¾“对象
     * @return æ‰§è¡Œç»“æžœ
     * @throws VciBaseException å‚数为空,唯一项,必输项不通过时会抛出异常
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public CodeTemplatePhaseVO editSave(CodeTemplatePhaseDTO codeTemplatePhaseDTO) throws VciBaseException{
        VciBaseUtil.alertNotNull(codeTemplatePhaseDTO,"数据对象",codeTemplatePhaseDTO.getOid(),"模板阶段主键",codeTemplatePhaseDTO.getAttributes(),"包含的属性");
        //将DTO转换为DO
        CodeTemplatePhase codeTemplatePhaseDO = selectByOid(codeTemplatePhaseDTO.getOid());
        revisionModelUtil.copyFromDTOIgnore(codeTemplatePhaseDTO,codeTemplatePhaseDO);
        //WebUtil.setPersistence(false);
        codeTemplatePhaseMapper.updateById(codeTemplatePhaseDO);
        //把以前的删除
        List<CodePhaseAttr> phaseAttrDOS = listPhaseAttrDOByPhaseOid(codeTemplatePhaseDO.getOid());
        if(!CollectionUtils.isEmpty(phaseAttrDOS)){
            codePhaseAttrMapper.deleteBatchIds(phaseAttrDOS.stream().map(CodePhaseAttr::getOid).collect(Collectors.toList()));
        }
        List<CodePhaseAttr> attrDOList = new ArrayList<>();
        codeTemplatePhaseDTO.getAttributes().stream().forEach(attrDTO->{
            CodePhaseAttr attrDO = new CodePhaseAttr();
            BeanUtilForVCI.copyPropertiesIgnoreCase(attrDTO,attrDO);
            attrDO.setOid(VciBaseUtil.getPk());
            attrDO.setCodePhaseOid(codeTemplatePhaseDO.getOid());
            attrDOList.add(attrDO);
        });
        codePhaseattrService.saveBatch(attrDOList);
        //WebUtil.setPersistence(true);
        return codeTemplatePhaseDO2VO(codeTemplatePhaseDO);
    }
    /**
     * åˆ é™¤æ¨¡æ¿é˜¶æ®µ
     * @param codeTemplatePhaseDTO æ¨¡æ¿é˜¶æ®µæ•°æ®ä¼ è¾“对象,oid和ts需要传输
     * @return åˆ é™¤ç»“果反馈::success:成功,fail:失败
     * @throws VciBaseException å‚数为空,被引用时抛出异常
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R deleteCodeTemplatePhase(CodeTemplatePhaseDTO codeTemplatePhaseDTO) throws VciBaseException{
        VciBaseUtil.alertNotNull(codeTemplatePhaseDTO,"模板阶段数据对象",codeTemplatePhaseDTO.getOid(),"模板阶段的主键");
        CodeTemplatePhase codeTemplatePhaseDO = selectByOid(codeTemplatePhaseDTO.getOid());
        R baseResult = checkIsCanDeleteForDO(codeTemplatePhaseDTO,codeTemplatePhaseDO);
        if(!baseResult.isSuccess()) {
        }else{
            return baseResult;
        }
        //执行删除操作
        //WebUtil.setPersistence(false);
        boolean batchCBO = codeTemplatePhaseMapper.deleteById(codeTemplatePhaseDO.getOid())>0;
        //需要删除属性
        List<CodePhaseAttr> phaseAttrDOS = listPhaseAttrDOByPhaseOid(codeTemplatePhaseDO.getOid());
        boolean deleteCBO = false;
        if(!CollectionUtils.isEmpty(phaseAttrDOS)) {
            deleteCBO = codePhaseAttrMapper.deleteBatchIds(phaseAttrDOS.stream().map(CodePhaseAttr::getOid).collect(Collectors.toList()))>0;
        }
        //WebUtil.setPersistence(true);
        return (batchCBO || deleteCBO)?R.success(DELETE_SUCCESS):R.fail(DELETE_FAIL);
    }
    /**
     * ä¸»é”®èŽ·å–æ¨¡æ¿é˜¶æ®µ
     * @param oid ä¸»é”®
     * @return æ¨¡æ¿é˜¶æ®µæ˜¾ç¤ºå¯¹è±¡
     * @throws VciBaseException å‚数为空,数据不存在时会抛出异常
     */
    @Override
    public  CodeTemplatePhaseVO getObjectByOid(String oid) throws VciBaseException{
        return codeTemplatePhaseDO2VO(selectByOid(oid));
    }
    /**
     * ä¸»é”®æ‰¹é‡èŽ·å–æ¨¡æ¿é˜¶æ®µ
     * @param oidCollections ä¸»é”®é›†åˆï¼Œä½†æ˜¯å—性能影响,建议一次查询不超过10000个
     * @return æ¨¡æ¿é˜¶æ®µæ˜¾ç¤ºå¯¹è±¡
     * @throws VciBaseException æŸ¥è¯¢å‡ºçŽ°å¼‚å¸¸æ—¶ä¼šæŠ›å‡º
     */
    @Override
    public Collection<CodeTemplatePhaseVO> listCodeTemplatePhaseByOids(Collection<String> oidCollections) throws VciBaseException{
        VciBaseUtil.alertNotNull(oidCollections,"数据对象主键集合");
        List<CodeTemplatePhase> codeTemplatePhaseDOList = listCodeTemplatePhaseDOByOidCollections(oidCollections);
        return codeTemplatePhaseDO2VOs(codeTemplatePhaseDOList);
    }
    /**
     * å‚照模板阶段列表
     * @param conditionMap æŸ¥è¯¢æ¡ä»¶
     * @param pageHelper åˆ†é¡µå’ŒæŽ’序
     * @return æ¨¡æ¿é˜¶æ®µæ˜¾ç¤ºå¯¹è±¡åˆ—表,生效的内容
     * @throws VciBaseException æŸ¥è¯¢æ¡ä»¶å’Œåˆ†é¡µå‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
     */
    @Override
    public DataGrid<CodeTemplatePhaseVO> refDataGridCodeTemplatePhase(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
        if(conditionMap == null){
            conditionMap = new HashMap<String, String>();
        }
        CodeTemplatePhaseVO codeTemplatePhaseVO = new CodeTemplatePhaseVO();
        BeanMap beanMap = BeanMap.create(codeTemplatePhaseVO);
        beanMap.putAll(conditionMap);
        Query query = new Query();
        query.setSize(pageHelper.getLimit());
        query.setCurrent(pageHelper.getPage());
        return gridCodeTemplatePhase(codeTemplatePhaseVO,query);
    }
    /**
     * é˜¶æ®µä¸åŒ…含的属性
     *
     * @param conditionMap æŸ¥è¯¢å¯¹è±¡ï¼Œå¿…须要有模板的主键(classifyTemplateOid),否则不能确定属性
     * @param pageHelper   åˆ†é¡µå¯¹è±¡
     * @return å±žæ€§çš„信息
     */
    @Override
    public DataGrid<CodeClassifyTemplateAttrVO> gridUnUsedAttribute(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException {
        if(conditionMap == null){
            conditionMap = new HashMap<String, String>();
        }
        if(!conditionMap.containsKey("classifyTemplateOid")){
            return new DataGrid<>("没有模板的主键");
        }
        //需要判断阶段的主键是否存在
        String codePhaseOid = conditionMap.getOrDefault("codePhaseOid", null);
        LambdaQueryWrapper<CodeClassifyTemplateAttr> queryWrapper = null;
        if(StringUtils.isNotBlank(codePhaseOid)){
            //排除阶段上使用的
            conditionMap.remove("codePhaseOid");
            List<String> ids = commonsMapper.selectById("(select id from " + getPhaseAttrTable() + " where codePhaseOid ='" + codePhaseOid + "')");
            if(ids.size()<=1000){
                queryWrapper = Wrappers.<CodeClassifyTemplateAttr>query().lambda().notIn(CodeClassifyTemplateAttr::getId, ids);
            }else {
                queryWrapper = MybatisParameterUtils.cutNotInParameter(queryWrapper,CodeClassifyTemplateAttr::getId,ids);
            }
            //conditionMap.put("id", QueryOptionConstant.NOTIN + ids);
        }
        return tempAttrService.gridCodeClassifyTemplateAttr(queryWrapper,pageHelper);
    }
    /**
     * é˜¶æ®µåŒ…含的属性
     *
     * @param conditionMap æŸ¥è¯¢å¯¹è±¡ï¼Œå¿…须要阶段的主键(codePhaseOid)
     * @param pageHelper   åˆ†é¡µå¯¹è±¡
     * @return å±žæ€§çš„信息
     */
    @Override
    public DataGrid<CodeClassifyTemplateAttrVO> gridUsedAttribute(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException {
        if(conditionMap == null){
            conditionMap = new HashMap<String, String>();
        }
        String codePhaseOid = conditionMap.getOrDefault("codePhaseOid", null);
        if(StringUtils.isBlank(codePhaseOid)){
            return new DataGrid<>();
        }
        conditionMap.remove("codePhaseOid");
        CodeTemplatePhase phaseDO = selectByOid(codePhaseOid);
        List<String> ids = commonsMapper.selectById("(select id from " + getPhaseAttrTable() + " where codePhaseOid ='" +codePhaseOid + "')");
        LambdaQueryWrapper<CodeClassifyTemplateAttr> queryWrapper = null;
        //            Wrappers.<CodeClassifyTemplateAttrVO>query()
        //            .in("id", ids)
        if(ids.size()<=1000){
            queryWrapper = Wrappers.<CodeClassifyTemplateAttr>query().lambda().in(CodeClassifyTemplateAttr::getId, ids);
        }else {
            queryWrapper = MybatisParameterUtils.cutInParameter(queryWrapper,CodeClassifyTemplateAttr::getId,ids);
        }
        queryWrapper.eq(CodeClassifyTemplateAttr::getClassifyTemplateOid,phaseDO.getCodeClassifyTemplateOid());
        return tempAttrService.gridCodeClassifyTemplateAttr(queryWrapper,pageHelper);
    }
    /**
     * é˜¶æ®µå±žæ€§çš„表名
     * @return è¡¨å
     */
    private String getPhaseAttrTable(){
        return VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_PHASE_ATTR_TABLENAME);
    }
    /**
     * ä½¿ç”¨ä¸»é”®é›†åˆæŸ¥è¯¢æ•°æ®å¯¹è±¡
     * @param oidCollections ä¸»é”®çš„集合
     * @return æ•°æ®å¯¹è±¡åˆ—表
     */
    private List<CodeTemplatePhase> listCodeTemplatePhaseDOByOidCollections(Collection<String> oidCollections){
        List<CodeTemplatePhase> codeTemplatePhaseDOList = new ArrayList<CodeTemplatePhase>();
        if(!CollectionUtils.isEmpty(oidCollections)){
            Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
            for(Collection<String> oids: oidCollectionsList){
                List<CodeTemplatePhase> tempDOList =  codeTemplatePhaseMapper.selectBatchIds(oids);
                if(!CollectionUtils.isEmpty(tempDOList)){
                    codeTemplatePhaseDOList.addAll(tempDOList);
                }
            }
        }
        return  codeTemplatePhaseDOList;
    }
    /**
     * æ ¡éªŒæ˜¯å¦å¯ä»¥åˆ é™¤ï¼Œå¦‚果存在下级,并且下级有数据引用则不能删除
     * @param codeTemplatePhaseDTO æ•°æ®ä¼ è¾“对象
     * @param codeTemplatePhaseDO æ•°æ®åº“中的数据对象
     * @return success为true为可以删除,false表示有数据引用,obj为true表示有下级
     */
    private R checkIsCanDeleteForDO(CodeTemplatePhaseDTO codeTemplatePhaseDTO, CodeTemplatePhase codeTemplatePhaseDO) {
        CodeTemplatePhase tsDO = new CodeTemplatePhase();
        BeanUtil.convert(codeTemplatePhaseDTO,tsDO);
        if (checkTs(tsDO)) {
            return R.fail(TS_NOT_PROCESS);
        }
        if(!checkIsLinked(codeTemplatePhaseDO.getOid())) {
            return R.success("succcess");
        }else{
            return R.fail(DATA_LINKED_NOT_DELETE);
        }
    }
    /**
     * æ£€æŸ¥ts
     * @param tempDO
     * @return
     */
    private boolean checkTs(CodeTemplatePhase tempDO){
        LambdaQueryWrapper<CodeTemplatePhase> wrapper = Wrappers.<CodeTemplatePhase>query()
            .lambda().eq(CodeTemplatePhase::getOid,tempDO.getOid()).select(CodeTemplatePhase::getTs);
        long dbTs = codePhaseAttrMapper.selectById(wrapper).getTs().getTime();
        long currentTs = tempDO.getTs().getTime();
        if(dbTs == currentTs){
            return true;
        }
        return false;
    }
    /**
     * æ ¡éªŒæ˜¯å¦è¢«å¼•用
     * @param oid ä¸»é”®
     * @throws VciBaseException è¢«å¼•用的时候会抛出异常
     */
    private boolean checkIsLinked(String oid) throws VciBaseException{
        //TODO æ·»åŠ éœ€è¦æ ¡éªŒå¼•ç”¨çš„åœ°æ–¹
        return false;
    }
    /**
     * ä½¿ç”¨é˜¶æ®µä¸»é”®èŽ·å–åŒ…å«çš„å±žæ€§
     * @param codePhaseOid é˜¶æ®µçš„主键
     * @return åŒ…含属性的数据对象
     */
    private List<CodePhaseAttr> listPhaseAttrDOByPhaseOid(String codePhaseOid){
        if(StringUtils.isBlank(codePhaseOid)||StringUtils.isEmpty(codePhaseOid)){
            return null;
        }
        List<CodePhaseAttr> phaseAttrDOS = codePhaseAttrMapper.selectByPhasea(codePhaseOid);
        return phaseAttrDOS;
    }
    /**
     * ä¸»é”®æŸ¥è¯¢æ•°æ®å¯¹è±¡
     * @param oid ä¸»é”®
     * @return  æ•°æ®å¯¹è±¡
     * @throws VciBaseException å‚数为空,并且数据不存在的时候会抛出异常
     */
    private CodeTemplatePhase selectByOid(String oid) throws VciBaseException{
        VciBaseUtil.alertNotNull(oid,"主键");
        CodeTemplatePhase codeTemplatePhaseDO = codeTemplatePhaseMapper.selectById(oid.trim());
        if(codeTemplatePhaseDO == null || StringUtils.isBlank(codeTemplatePhaseDO.getOid())){
            throw new VciBaseException(DATA_OID_NOT_EXIST);
        }
        return codeTemplatePhaseDO;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeBasicSecWrapper.java
@@ -19,7 +19,6 @@
import com.vci.ubcs.code.entity.CodeBasicSec;
import com.vci.ubcs.code.enumpack.*;
import com.vci.ubcs.code.lifecycle.CodeRuleLC;
import com.vci.ubcs.code.vo.pagemodel.CodeBasicSecVO;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeButtonWrapper.java
@@ -16,11 +16,9 @@
 */
package com.vci.ubcs.code.wrapper;
import com.vci.ubcs.code.entity.CodeButtonEntity;
import com.vci.ubcs.code.vo.CodeButtonVO;
import com.vci.ubcs.system.cache.DictBizCache;
import com.vci.ubcs.system.cache.DictCache;
import com.vci.ubcs.system.enums.DictEnum;
import com.vci.ubcs.code.entity.CodeButton;
import com.vci.ubcs.code.vo.pagemodel.CodeButtonVO;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.redis.cache.BladeRedis;
import org.springblade.core.tool.utils.BeanUtil;
@@ -36,17 +34,17 @@
 * @author yuxc
 * @since 2023-03-29
 */
public class CodeButtonWrapper extends BaseEntityWrapper<CodeButtonEntity, CodeButtonVO> {
public class CodeButtonWrapper extends BaseEntityWrapper<CodeButton, CodeButtonVO> {
    public static CodeButtonWrapper build() {
        return new CodeButtonWrapper();
     }
    @Override
    public CodeButtonVO entityVO(CodeButtonEntity codebutton) {
    public CodeButtonVO entityVO(CodeButton codebutton) {
        CodeButtonVO codebuttonVO = Objects.requireNonNull(BeanUtil.copy(codebutton, CodeButtonVO.class));
        codebuttonVO.setUsedpositiontypeName(DictBizCache.getValue("codeButtonPosition", codebutton.getUsedpositiontype()));
        codebuttonVO.setLcstatusName(DictBizCache.getValue("codeLcstatus", codebutton.getLcstatus()));
        codebuttonVO.setUsedpositiontypeText(DictCache.getValue("codeButtonPosition", codebutton.getUsedpositiontype()));
        codebuttonVO.setLcStatusText(DictCache.getValue("codeLcstatus", codebutton.getLcstatus()));
        return codebuttonVO;
    }
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodePhaseattrWrapper.java
@@ -16,9 +16,9 @@
 */
package com.vci.ubcs.code.wrapper;
import com.vci.ubcs.code.entity.CodePhaseAttr;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import com.vci.ubcs.code.entity.CodePhaseattrEntity;
import com.vci.ubcs.code.vo.CodePhaseattrVO;
import java.util.Objects;
@@ -28,14 +28,14 @@
 * @author yuxc
 * @since 2023-04-20
 */
public class CodePhaseattrWrapper extends BaseEntityWrapper<CodePhaseattrEntity, CodePhaseattrVO>  {
public class CodePhaseattrWrapper extends BaseEntityWrapper<CodePhaseAttr, CodePhaseattrVO>  {
    public static CodePhaseattrWrapper build() {
        return new CodePhaseattrWrapper();
     }
    @Override
    public CodePhaseattrVO entityVO(CodePhaseattrEntity CodePhaseattr) {
    public CodePhaseattrVO entityVO(CodePhaseAttr CodePhaseattr) {
        CodePhaseattrVO CodePhaseattrVO = Objects.requireNonNull(BeanUtil.copy(CodePhaseattr, CodePhaseattrVO.class));
        //User createUser = UserCache.getUser(CodePhaseattr.getCreateUser());
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeTempbuttonWrapper.java
@@ -16,10 +16,10 @@
 */
package com.vci.ubcs.code.wrapper;
import com.vci.ubcs.code.entity.CodeClassifyTemplateButton;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateButtonVO;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import com.vci.ubcs.code.entity.CodeTempbuttonEntity;
import com.vci.ubcs.code.vo.CodeTempbuttonVO;
import java.util.Objects;
/**
@@ -28,22 +28,22 @@
 * @author yuxc
 * @since 2023-04-20
 */
public class CodeTempbuttonWrapper extends BaseEntityWrapper<CodeTempbuttonEntity, CodeTempbuttonVO>  {
public class CodeTempbuttonWrapper extends BaseEntityWrapper<CodeClassifyTemplateButton, CodeClassifyTemplateButtonVO>  {
    public static CodeTempbuttonWrapper build() {
        return new CodeTempbuttonWrapper();
     }
    @Override
    public CodeTempbuttonVO entityVO(CodeTempbuttonEntity CodeTempbutton) {
        CodeTempbuttonVO CodeTempbuttonVO = Objects.requireNonNull(BeanUtil.copy(CodeTempbutton, CodeTempbuttonVO.class));
    public CodeClassifyTemplateButtonVO entityVO(CodeClassifyTemplateButton CodeTempbutton) {
        CodeClassifyTemplateButtonVO codeClassifyTemplateButtonVO = Objects.requireNonNull(BeanUtil.copy(CodeTempbutton, CodeClassifyTemplateButtonVO.class));
        //User createUser = UserCache.getUser(CodeTempbutton.getCreateUser());
        //User updateUser = UserCache.getUser(CodeTempbutton.getUpdateUser());
        //CodeTempbuttonVO.setCreateUserName(createUser.getName());
        //CodeTempbuttonVO.setUpdateUserName(updateUser.getName());
        return CodeTempbuttonVO;
        return codeClassifyTemplateButtonVO;
    }
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeTempphaseWrapper.java
@@ -16,10 +16,11 @@
 */
package com.vci.ubcs.code.wrapper;
import com.vci.ubcs.code.entity.CodeTemplatePhase;
import com.vci.ubcs.code.vo.pagemodel.CodeTemplatePhaseVO;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import com.vci.ubcs.code.entity.CodeTempphaseEntity;
import com.vci.ubcs.code.vo.CodeTempphaseVO;
import java.util.Objects;
/**
@@ -28,22 +29,22 @@
 * @author yuxc
 * @since 2023-04-20
 */
public class CodeTempphaseWrapper extends BaseEntityWrapper<CodeTempphaseEntity, CodeTempphaseVO>  {
public class CodeTempphaseWrapper extends BaseEntityWrapper<CodeTemplatePhase, CodeTemplatePhaseVO>  {
    public static CodeTempphaseWrapper build() {
        return new CodeTempphaseWrapper();
     }
    @Override
    public CodeTempphaseVO entityVO(CodeTempphaseEntity CodeTempphase) {
        CodeTempphaseVO CodeTempphaseVO = Objects.requireNonNull(BeanUtil.copy(CodeTempphase, CodeTempphaseVO.class));
    public CodeTemplatePhaseVO entityVO(CodeTemplatePhase CodeTempphase) {
        CodeTemplatePhaseVO CodeTemplatePhaseVO = Objects.requireNonNull(BeanUtil.copy(CodeTempphase, CodeTemplatePhaseVO.class));
        //User createUser = UserCache.getUser(CodeTempphase.getCreateUser());
        //User updateUser = UserCache.getUser(CodeTempphase.getUpdateUser());
        //CodeTempphaseVO.setCreateUserName(createUser.getName());
        //CodeTempphaseVO.setUpdateUserName(updateUser.getName());
        //CodeTemplatePhaseVO.setCreateUserName(createUser.getName());
        //CodeTemplatePhaseVO.setUpdateUserName(updateUser.getName());
        return CodeTempphaseVO;
        return CodeTemplatePhaseVO;
    }
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeButtonMapper.xml
@@ -3,7 +3,7 @@
<mapper namespace="com.vci.ubcs.code.mapper.CodeButtonMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="codebuttonResultMap" type="com.vci.ubcs.code.entity.CodeButtonEntity">
    <resultMap id="codebuttonResultMap" type="com.vci.ubcs.code.entity.CodeButton">
        <result column="OID" property="oid"/>
        <result column="REVISIONOID" property="revisionoid"/>
        <result column="NAMEOID" property="nameoid"/>
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeClassifyProcessTempMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.vci.ubcs.code.mapper.CodeClassifyProcessTempMapper">
</mapper>
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeClassifyTemplateAttrMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.vci.ubcs.code.mapper.CodeClassifyTemplateAttrMapper">
</mapper>
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeClassifyTemplateButtonMapper.xml
ÎļþÃû´Ó Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeTempbuttonMapper.xml ÐÞ¸Ä
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.vci.ubcs.code.mapper.CodeTempbuttonMapper">
<mapper namespace="com.vci.ubcs.code.mapper.CodeClassifyTemplateButtonMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="CodeTempbuttonResultMap" type="com.vci.ubcs.code.entity.CodeTempbuttonEntity">
    <resultMap id="CodeTempbuttonResultMap" type="com.vci.ubcs.code.entity.CodeClassifyTemplateButton">
        <result column="OID" property="oid"/>
        <result column="REVISIONOID" property="revisionOid"/>
        <result column="NAMEOID" property="nameOid"/>
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeClstemplateMapper.xml
@@ -98,4 +98,6 @@
          AND (codeclstemplate0.lastr = '1' AND codeclstemplate0.lastv = '1')
    </select>
</mapper>
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodePhaseAttrMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,156 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.vci.ubcs.code.mapper.CodePhaseAttrMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="CodePhaseattrResultMap" type="com.vci.ubcs.code.entity.CodePhaseAttr">
        <result column="OID" property="oid"/>
        <result column="REVISIONOID" property="revisionOid"/>
        <result column="NAMEOID" property="nameOid"/>
        <result column="BTMNAME" property="btmname"/>
        <result column="LASTR" property="lastR"/>
        <result column="FIRSTR" property="firstR"/>
        <result column="LASTV" property="lastV"/>
        <result column="FIRSTV" property="firstV"/>
        <result column="CREATOR" property="creator"/>
        <result column="CREATETIME" property="createTime"/>
        <result column="LASTMODIFIER" property="lastModifier"/>
        <result column="LASTMODIFYTIME" property="lastModifyTime"/>
        <result column="REVISIONRULE" property="revisionRule"/>
        <result column="VERSIONRULE" property="versionRule"/>
        <result column="REVISIONSEQ" property="revisionSeq"/>
        <result column="REVISIONVALUE" property="revisionValue"/>
        <result column="VERSIONSEQ" property="versionSeq"/>
        <result column="VERSIONVALUE" property="versionValue"/>
        <result column="LCTID" property="lctid"/>
        <result column="LCSTATUS" property="lcStatus"/>
        <result column="TS" property="ts"/>
        <result column="ID" property="id"/>
        <result column="NAME" property="name"/>
        <result column="DESCRIPTION" property="description"/>
        <result column="OWNER" property="owner"/>
        <result column="COPYFROMVERSION" property="copyFromVersion"/>
        <result column="CODEPHASEOID" property="codePhaseOid"/>
        <result column="ATTRIBUTEGROUP" property="attributegroup"/>
    </resultMap>
    <select id="selectCodePhaseattrPage" resultMap="CodePhaseattrResultMap">
        select * from PL_CODE_PHASEATTR where is_deleted = 0
    </select>
    <select id="selectByPhasea" resultMap="CodePhaseattrResultMap">
        select lastmodifier,
               revisionseq,
               versionvalue,
               description,
               oid,
               versionseq,
               checkinby,
               revisionrule,
               lctid,
               id,
               owner,
               checkoutby,
               creator,
               createtime,
               isfirstv,
               attributegroup,
               revisionoid,
               btmname,
               checkouttime,
               revisionvalue,
               versionrule,
               name,
               islastr,
               lastmodifytime,
               copyfromversion,
               nameoid,
               lcstatus,
               islastv,
               checkintime,
               codephaseoid,
               isfirstr
        from PL_CODE_PHASEATTR
        where codephaseoid in
              (select oid
               from PL_CODE_TEMPPHASE
               where codeClassifyTemplateOid = #{oid})
    </select>
    <select id="selectByPhaseaIds" resultMap="CodePhaseattrResultMap">
        select lastmodifier,
               revisionseq,
               versionvalue,
               description,
               oid,
               versionseq,
               checkinby,
               revisionrule,
               lctid,
               id,
               owner,
               checkoutby,
               creator,
               createtime,
               isfirstv,
               attributegroup,
               revisionoid,
               btmname,
               checkouttime,
               revisionvalue,
               versionrule,
               name,
               islastr,
               lastmodifytime,
               copyfromversion,
               nameoid,
               lcstatus,
               islastv,
               checkintime,
               codephaseoid,
               isfirstr
        from PL_CODE_PHASEATTR
        where codephaseoid in
              (#{oids})
    </select>
    <select id="listLinkAttrDOByTemplateAttrDOS" resultMap="CodePhaseattrResultMap">
        SELECT lastmodifier,
               revisionseq,
               versionvalue,
               description,
               oid,
               versionseq, /*checkinby,*/
               revisionrule,
               lctid,
               id,
               owner, /*checkoutby, */
               creator,
               createtime, /*is*/
               firstv,
               attributegroup,
               revisionoid,
               btmname, /*checkouttime,*/
               revisionvalue,
               versionrule,
               name, /*is*/
               lastr,
               lastmodifytime,
               copyfromversion,
               nameoid,
               lcstatus, /*is*/
               lastv, /*checkintime,*/
               codephaseoid,
            /*is*/
               firstr,
               ts
        FROM PL_CODE_PHASEATTR
            where ID IN (#{id})
          AND codephaseoid in
              (select oid
               from PL_CODE_TEMPPHASE
               where codeClassifyTemplateOid =#{codeClassifyTemplateOid})
    </select>
</mapper>
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodePhaseattrMapper.xml
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.vci.ubcs.code.mapper.CodePhaseattrMapper">
<mapper namespace="com.vci.ubcs.code.mapper.CodePhaseAttrMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="CodePhaseattrResultMap" type="com.vci.ubcs.code.entity.CodePhaseattrEntity">
    <resultMap id="CodePhaseattrResultMap" type="com.vci.ubcs.code.entity.CodePhaseAttr">
        <result column="OID" property="oid"/>
        <result column="REVISIONOID" property="revisionOid"/>
        <result column="NAMEOID" property="nameOid"/>
@@ -30,15 +30,15 @@
        <result column="DESCRIPTION" property="description"/>
        <result column="OWNER" property="owner"/>
        <result column="COPYFROMVERSION" property="copyFromVersion"/>
        <result column="CODEPHASEOID" property="codephaseoid"/>
        <result column="CODEPHASEOID" property="codePhaseOid"/>
        <result column="ATTRIBUTEGROUP" property="attributegroup"/>
    </resultMap>
    <select id="selectCodePhaseattrPage" resultMap="CodePhaseattrResultMap">
        select * from PL_CODE_PHASEATTR where is_deleted = 0
    </select>
    <select id="selectByPhasea" resultType="com.vci.ubcs.code.entity.CodePhaseattrEntity">
    <select id="selectByPhasea" resultMap="CodePhaseattrResultMap">
        select lastmodifier,
               revisionseq,
               versionvalue,
@@ -77,7 +77,7 @@
               where codeClassifyTemplateOid = #{oid})
    </select>
    <select id="selectByPhaseaIds" resultType="com.vci.ubcs.code.entity.CodePhaseattrEntity">
    <select id="selectByPhaseaIds" resultMap="CodePhaseattrResultMap">
        select lastmodifier,
               revisionseq,
               versionvalue,
@@ -114,7 +114,7 @@
              (#{oids})
    </select>
    <select id="listLinkAttrDOByTemplateAttrDOS" resultType="com.vci.ubcs.code.entity.CodePhaseattrEntity">
    <select id="listLinkAttrDOByTemplateAttrDOS" resultMap="CodePhaseattrResultMap">
        SELECT lastmodifier,
               revisionseq,
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeTemplatePhaseMapper.xml
ÎļþÃû´Ó Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeTempphaseMapper.xml ÐÞ¸Ä
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.vci.ubcs.code.mapper.CodeTempphaseMapper">
<mapper namespace="com.vci.ubcs.code.mapper.CodeTemplatePhaseMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="CodeTempphaseResultMap" type="com.vci.ubcs.code.entity.CodeTempphaseEntity">
    <resultMap id="CodeTempphaseResultMap" type="com.vci.ubcs.code.entity.CodeTemplatePhase">
        <result column="CREATETIME" property="createTime"/>
        <result column="LASTMODIFIER" property="lastModifier"/>
        <result column="LASTMODIFYTIME" property="lastModifyTime"/>
Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CommonsMapper.xml
@@ -14,4 +14,9 @@
    </select>
    <select id="selectById" resultType="java.lang.String">
        ${inSql}
    </select>
</mapper>