lihang
2023-06-02 59d3dce7cf32975e59935920968b2266af3c60a6
链接类型接口修正、页面修改。业务类型Feign接口修改。
已修改16个文件
已重命名1个文件
已添加3个文件
937 ■■■■■ 文件已修改
Source/UBCS-WEB/src/api/omd/linkType.js 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/modeling/Business.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/modeling/LinkType.vue 263 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/dto/LinkTypeDTO.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LinkType.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IBtmTypeClient.java 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IBtmTypeFallback.java 51 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/BtmTreeVO.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LinkTypeVO.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/BtmTypeController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/LinkTypeController.java 169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/BtmTypeClient.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/LinkTypeMapper.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IBtmTypeAttributeService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IBtmTypeService.java 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/ILinkTypeService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmAttributeServiceImpl.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/LinkTypeServiceImpl.java 42 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/LinkTypeMapper.xml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/omd/linkType.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,71 @@
import request from '@/router/axios';
export const initTree = () => {
    return request({
        url: '/api/ubcs-omd/link-type/tree-domain',
        method: 'get',
    })
}
export const refOnLoad = (domain) => {
    return request({
        url: '/api/ubcs-omd/link-type/get-from-table',
        method: 'get',
        params: {
            domain: domain
        }
    })
}
export const getDomain = () => {
    return request({
        url: '/api/ubcs-omd/link-type/domain',
        method: 'get'
    })
}
export const saveFromTable = (list,domain) => {
    return request({
        url: '/api/ubcs-omd/link-type/save-from-table/' + domain,
        method: 'post',
        data: list
    })
}
export const getDetail = (oid) => {
    return request({
        url: '/api/ubcs-omd/link-type/detail',
        method: 'get',
        params: {
            oid: oid
        }
    })
}
export const add = (linkType,auto) => {
    return request({
        url: '/api/ubcs-omd/link-type/submit/' + auto,
        method: 'post',
        data: linkType
    })
}
export const update = (linkType) => {
    return request({
        url: '/api/ubcs-omd/link-type/submit/' + auto,
        method: 'post',
        data: linkType
    })
}
export const btmPage = (current,size,params) => {
    return request ({
        url: '/api/ubcs-omd/link-type/page',
        method: 'get',
        params: {
            current,
            size,
            ...params
        }
    })
}
Source/UBCS-WEB/src/views/modeling/Business.vue
@@ -1,13 +1,16 @@
<template>
  <el-container>
    <el-header class="businessHeader" style="height: 40px;">
      <el-button type="primary" @click="businessAdd" size="small">新增</el-button>
      <el-button type="primary" @click="businessEdit" size="small">修改</el-button>
      <el-button type="primary" @click="selectFromTable" size="small">从已有中获取</el-button>
      <el-button-group>
        <el-button type="primary" @click="businessAdd" size="small"> <i class="el-icon-plus"></i>&nbsp; æ–°å¢ž</el-button>
        <el-button type="primary" @click="businessEdit" size="small"><i class="el-icon-edit"></i>&nbsp; ä¿®æ”¹</el-button>
        <el-button type="primary" @click="selectFromTable" size="small"><i class="el-icon-thumb"></i>&nbsp; ä»Žå·²æœ‰ä¸­èŽ·å–</el-button>
      </el-button-group>
    </el-header>
    <el-container>
      <el-aside width="240px">
        <basic-container class="businessTreeContainer">
          <p style="margin-top: 10px;font-weight: 570;font-size: 19px">{{ treeOption.title }}</p>
          <avue-tree id="basic" :data="treeData" :option="treeOption" @node-click="nodeClick" class="businessTree">
            <span class="el-tree-node__label" slot-scope="{ node, data }">
              <span>
@@ -161,6 +164,7 @@
      treeOption: {
        defaultExpandAll: true,
        title: '业务类型树',
        addBtn: false,
        props: {
          labelText: '',
          label: 'name',
Source/UBCS-WEB/src/views/modeling/LinkType.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,263 @@
<template>
    <el-container>
        <!-- é¡¶ç«¯æŒ‰é’® -->
        <el-header class="businessHeader" style="height: 40px;">
            <el-button-group>
                <el-button type="primary" @click="linkTypeAdd" size="small">
                    <i class="el-icon-plus"></i>&nbsp;
                    æ–°å¢ž
                </el-button>
                <el-button type="primary" @click="linkTypeEdit" size="small">
                    <i class="el-icon-edit"></i>&nbsp;
                    ä¿®æ”¹
                </el-button>
                <el-button type="primary" @click="selectFromTable" size="small">
                    <i class="el-icon-thumb"></i>&nbsp;
                    ä»Žå·²æœ‰ä¸­èŽ·å–
                </el-button>
            </el-button-group>
        </el-header>
        <!-- ä¾§è¾¹æ æ ‘ -->
        <el-container>
            <el-aside width="240px">
                <basic-container class="businessTreeContainer">
                    <p style="margin-top: 10px;font-weight: 570;font-size: 19px">{{ treeOption.title }}</p>
                    <avue-tree id="basic" :data="treeData" :option="treeOption" @node-click="nodeClick"
                        class="businessTree">
                        <span class="el-tree-node__label" slot-scope="{ node, data }">
                            <span>
                                <i class="el-icon-star-on"></i>
                                {{ (node || {}).label }}
                            </span>
                        </span>
                    </avue-tree>
                </basic-container>
            </el-aside>
            <el-container>
                <el-main>
                    <basic-container>
                        <p style="margin-top: 10px;font-weight: 570;font-size: 19px">基本信息</p>
                        <el-descriptions class="margin-top" :column="2" size="medium" border>
                            <el-descriptions-item labelStyle="text-align:center;width:120px"
                                contentStyle="width:240px;text-align:center;word-break;break-all;">
                                <template slot="label">
                                    <i class="el-icon-finished"></i>
                                    è‹±æ–‡åç§°
                                </template>
                                {{ obj.id }}
                            </el-descriptions-item>
                            <el-descriptions-item labelStyle="text-align:center;width:120px"
                                contentStyle="width:240px;text-align:center;word-break;break-all;">
                                <template slot="label">
                                    <i class="el-icon-info"></i>
                                    ä¸­æ–‡åç§°
                                </template>
                                {{ obj.name }}
                            </el-descriptions-item>
                            <el-descriptions-item labelStyle="text-align:center;width:120px"
                                contentStyle="width:240px;text-align:center;word-break;break-all;">
                                <template slot="label">
                                    <i class="el-icon-date"></i>
                                    æ•°æ®åº“表名
                                </template>
                                {{ obj.tableName }}
                            </el-descriptions-item>
                            <el-descriptions-item labelStyle="text-align:center;width:120px"
                                contentStyle="width:240px;text-align:center;word-break;break-all;">
                                <template slot="label">
                                    <i class="el-icon-folder-opened"></i>
                                    æ‰€å±žé¢†åŸŸ
                                </template>
                                <el-tag size="small">
                                    {{ obj.domainText }}
                                </el-tag>
                            </el-descriptions-item>
                        </el-descriptions>
                        <el-descriptions class="margin-top" direction="vertical" :column="2" border>
                            <el-descriptions-item labelStyle="text-align:center;width:120px"
                                contentStyle="width:240px;text-align:center;word-break;break-all;">
                                <template slot="label">
                                    <i class="el-icon-sort-down"></i>
                                    From端类型
                                </template>
                                <span v-for="item in obj.fromBtmTypes" style="margin-left:2px;">
                                    <el-tag size="small" effect="plain" style="width:130px;margin-top: 2px;">
                                        {{ item.id + '(' + item.name + ')' }}
                                    </el-tag>
                                </span>
                            </el-descriptions-item>
                            <el-descriptions-item labelStyle="text-align:center;width:120px"
                                contentStyle="width:240px;text-align:center;word-break;break-all;">
                                <template slot="label">
                                    <i class="el-icon-sort-up"></i>
                                    To段类型
                                </template>
                                <span v-for="item in obj.toBtmTypes" style="height:26px;width:140px;margin-left:2px">
                                    <el-tag size="small" effect="plain" style="width:130px;margin-top: 2px;">
                                        {{ item.id + '(' + item.name + ')' }}
                                    </el-tag>
                                </span>
                            </el-descriptions-item>
                        </el-descriptions>
                        <el-descriptions class="margin-top" :column="2" size="medium" border>
                            <el-descriptions-item labelStyle="text-align:center;width:120px"
                                contentStyle="width:240px;text-align:center;word-break;break-all;">
                                <template slot="label">
                                    <i class="el-icon-info"></i>
                                    ä¸»ç±»åž‹
                                </template>
                                {{ obj.fromBtmTypeName }}
                            </el-descriptions-item>
                            <el-descriptions-item labelStyle="text-align:center;width:120px"
                                contentStyle="width:240px;text-align:center;word-break;break-all;">
                                <template slot="label">
                                    <i class="el-icon-info"></i>
                                    ä¸»ç±»åž‹
                                </template>
                                {{ obj.toBtmTypeName }}
                            </el-descriptions-item>
                            <el-descriptions-item span='2' labelStyle="text-align:center;width:120px">
                                <template slot="label">
                                    <i class="el-icon-chat-line-square"></i>
                                    æè¿°
                                </template>
                                {{ obj.description }}
                            </el-descriptions-item>
                        </el-descriptions>
                    </basic-container>
                    <!-- å±žæ€§åˆ—表-->
                    <basic-container>
                        <p style="margin-top: 10px;font-weight: 570;font-size: 19px">属性列表</p>
                        <avue-crud class="attributeCrud" v-model="obj" :data="obj.attributes" :option="loadOption">
                            <template slot="attrDataType" slot-scope="{row}">
                                <el-tag>{{ row.attrDataType }}</el-tag>
                            </template>
                        </avue-crud>
                    </basic-container>
                </el-main>
            </el-container>
        </el-container>
    </el-container>
</template>
<script>
import {
    initTree,
    refOnLoad,
    getDomain,
    saveFromTable,
    getDetail
} from "@/api/omd/linkType"
export default {
    name: "LinkType",
    data() {
        return {
            treeData: [
                { id: "1", name: "2", label: "label" },
                { id: "a", name: "b", label: "c" }
            ],
            loadOption: {
                border: true,
                height: 360,
                editBtn: false,
                addBtn: false,
                menu: false,
                highlightCurrentRow: true,
                refreshBtn: false,
                columnBtn: false,
                column: [
                    {
                        label: '英文名称',
                        prop: 'id',
                        align: 'center'
                    }, {
                        label: '中文名称',
                        prop: 'name',
                        align: 'center'
                    },
                    {
                        label: '类型',
                        prop: 'attrDataType',
                        align: 'center',
                        slot: true
                    },
                    {
                        label: '默认值',
                        prop: 'defaultValue',
                        align: 'center'
                    },
                    {
                        label: '说明',
                        prop: 'description',
                        align: 'center'
                    }
                ]
            },
            obj: {
                id: 'linkType',
                name: '链接类型',
                tableName: 'PLLT_OMD_LINKTYPE',
                domain: 'ubcs-omd',
                domainText: '对象建模',
                fromBtmTypes: [
                    { id: 'btm', name: '业务类型' },
                    { id: 'btm2', name: '业务类型2' }
                ],
                toBtmTypes: [{ id: 'btm', name: '业务类型' }, { id: 'btm2', name: '业务类型2' }],
                fromBtmTypeName: '',
                toBtmTypeName: '',
            },
            treeOption: {
                defaultExpandAll: true,
                title: '链接类型树',
                addBtn: false,
                props: {
                    labelText: '',
                    label: 'name',
                    value: 'oid',
                    children: 'childList',
                }
            },
        }
    },
    created() {
        this.initTreeOnLoad();
        // this.initDomainOption();
    },
    methods: {
        // æ ‘点击
        nodeClick(data) {
            console.log(data);
        },
        // æ·»åŠ æŒ‰é’®ç‚¹å‡»äº‹ä»¶
        linkTypeAdd() {
        },
        // ç¼–辑按钮点击事件
        linkTypeEdit() {
        },
        // ä»Žå·²æœ‰ä¸­èŽ·å–æŒ‰é’®ç‚¹å‡»äº‹ä»¶
        selectFromTable() {
        },
        initTreeOnLoad() {
            initTree().then(res => {
                this.treeData = res.data.data;
            });
        }
    }
}
</script>
<style lang="scss">
.attributeCrud>.el-card:nth-of-type(2)>.el-card__body>.avue-crud__menu {
    display: none !important;
}
</style>
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/dto/LinkTypeDTO.java
@@ -48,6 +48,11 @@
     */
    private String implClass;
    /**
     * æ•°æ®è¡¨å
     */
    private String tableName;
    /**
     * from端业务类型
     */
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LinkType.java
@@ -53,6 +53,11 @@
     */
    private String implClass;
    /**
     * æ•°æ®è¡¨å
     */
    private String tableName;
    /**
     * from端业务类型
     */
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IBtmTypeClient.java
@@ -1,10 +1,9 @@
package com.vci.ubcs.omd.feign;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.vci.ubcs.omd.vo.BtmTypeVO;
import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
import org.springblade.core.launch.constant.AppConstant;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
@@ -12,9 +11,7 @@
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
 * Description: ä¸šåŠ¡ç±»åž‹Feign接口类
@@ -53,6 +50,12 @@
     */
    String GET_BY_OIDS = API_PREFIX + "/btm-type/get-by-oids";
    String GET_DEFAULT_ATTR_BY_BTM_ID = API_PREFIX + "/btm-attribute/get-default-attr-by-btm-id";
    String GET_ALL_ATTR_BY_BTM_ID = API_PREFIX + "/btm-attribute/get-all-attr-by-btm-id";
    String GET_ALL_ATTR_BY_BTM_OID = API_PREFIX + "/btm-attribute/get-all-attr-by-btm-oid";
    /**
     * èŽ·å–ä¸šåŠ¡ç±»åž‹è¯¦æƒ…ä¿¡æ¯
     *
@@ -64,11 +67,12 @@
    /**
     * å‚照列表查询
     *
     * @param baseQueryObject æŸ¥è¯¢æ¡ä»¶å¯¹è±¡
     * @return æŸ¥è¯¢ç»“æžœ
     */
    @GetMapping(GET_REF_PAGE)
    R<IPage<BtmTypeVO>> getRefPage(@RequestBody BaseQueryObject baseQueryObject);
    @PostMapping(GET_REF_PAGE)
    R<Page<BtmTypeVO>> getRefPage(@RequestBody BaseQueryObject baseQueryObject);
    /**
     * å‚照列表查询
@@ -93,4 +97,31 @@
     */
    @PostMapping(GET_BY_OIDS)
    R<List<BtmTypeVO>> listBtmTypeByOidCollection(@RequestBody List<String> pkBtmTypeCollection);
    /**
     * èŽ·å–ä¸šåŠ¡ç±»åž‹ï¼Œåªæœ‰é»˜è®¤å­—æ®µ
     *
     * @param btmTypeId ä¸šåŠ¡ç±»åž‹id
     * @return é»˜è®¤å­—段属性
     */
    @GetMapping(GET_DEFAULT_ATTR_BY_BTM_ID)
    R<BtmTypeVO> getDefaultAttrByBtmId(@RequestParam("btmTypeId") String btmTypeId);
    /**
     * èŽ·å–ä¸šåŠ¡ç±»åž‹ï¼Œæœ‰æ‰€æœ‰çš„å­—æ®µ
     *
     * @param btmTypeId ä¸šåŠ¡ç±»åž‹id
     * @return æ‰€æœ‰å­—段
     */
    @GetMapping(GET_ALL_ATTR_BY_BTM_ID)
    R<BtmTypeVO> getAllAttributeByBtmId(@RequestParam("btmTypeId") String btmTypeId);
    /**
     * èŽ·å–ä¸šåŠ¡ç±»åž‹ï¼Œæœ‰æ‰€æœ‰çš„å­—æ®µ
     *
     * @param btmTypeOid ä¸šåŠ¡ç±»åž‹ä¸»é”®
     * @return æ‰€æœ‰å­—段
     */
    @GetMapping(GET_ALL_ATTR_BY_BTM_OID)
    R<BtmTypeVO> getAllAttributeByBtmOid(@RequestParam("btmTypeOid") String btmTypeOid);
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IBtmTypeFallback.java
@@ -16,17 +16,13 @@
 */
package com.vci.ubcs.omd.feign;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.vci.ubcs.omd.entity.Attribute;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.vci.ubcs.omd.vo.BtmTypeVO;
import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springframework.stereotype.Component;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
 * Feign失败配置
@@ -47,13 +43,13 @@
    }
    /**
     * å‚照列表查询
     *
     * @param baseQueryObject æŸ¥è¯¢æ¡ä»¶å¯¹è±¡
     * @return æŸ¥è¯¢ç»“æžœ
     */
     * å‚照列表查询
     *
     * @param baseQueryObject æŸ¥è¯¢æ¡ä»¶å¯¹è±¡
     * @return æŸ¥è¯¢ç»“æžœ
     */
    @Override
    public R<IPage<BtmTypeVO>> getRefPage(BaseQueryObject baseQueryObject) {
    public R<Page<BtmTypeVO>> getRefPage(BaseQueryObject baseQueryObject) {
        return R.fail("获取数据失败");
    }
@@ -89,4 +85,37 @@
    public R<List<BtmTypeVO>> selectByIdCollection(List<String> ids) {
        return R.fail("获取数据失败");
    }
    /**
     * æŒ‰ç…§ä¸šåŠ¡ç±»åž‹èŽ·å–é»˜è®¤å­—æ®µ
     *
     * @param btmTypeId ä¸šåŠ¡ç±»åž‹id
     * @return é»˜è®¤å­—段属性
     */
    @Override
    public R<BtmTypeVO> getDefaultAttrByBtmId(String btmTypeId) {
        return R.fail("获取数据失败");
    }
    /**
     * æŒ‰ä¸šåŠ¡ç±»åž‹id获取所有的字段
     *
     * @param btmTypeId ä¸šåŠ¡ç±»åž‹id
     * @return æ‰€æœ‰å­—段
     */
    @Override
    public R<BtmTypeVO> getAllAttributeByBtmId(String btmTypeId) {
        return R.fail("获取数据失败");
    }
    /**
     * æŒ‰ä¸šåŠ¡ç±»åž‹ä¸»é”®èŽ·å–æ‰€æœ‰çš„å­—æ®µ
     *
     * @param btmTypeOid ä¸šåŠ¡ç±»åž‹ä¸»é”®
     * @return æ‰€æœ‰å­—段
     */
    @Override
    public R<BtmTypeVO> getAllAttributeByBtmOid(String btmTypeOid) {
        return R.fail("获取数据失败");
    }
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/BtmTreeVO.java
ÎļþÃû´Ó Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/BtmTypeTreeVO.java ÐÞ¸Ä
@@ -13,7 +13,7 @@
 * @date 2023/5/5
 */
@Data
public class BtmTypeTreeVO implements Serializable{
public class BtmTreeVO implements Serializable{
    /**
     * åºåˆ—化
     */
@@ -25,5 +25,7 @@
    private String oid;
    private List<BtmTypeTreeVO> childList;
    private String type;
    private List<BtmTreeVO> childList;
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LinkTypeVO.java
@@ -119,6 +119,11 @@
     */
    private Date ts;
    /**
     * é¢†åŸŸå€¼
     */
    private String domain;
    /**
     * åŒ…含属性
     */
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/BtmTypeController.java
@@ -11,7 +11,7 @@
import com.vci.ubcs.omd.entity.BtmType;
import com.vci.ubcs.omd.repeater.DomainRepeater;
import com.vci.ubcs.omd.service.IBtmTypeService;
import com.vci.ubcs.omd.vo.BtmTypeTreeVO;
import com.vci.ubcs.omd.vo.BtmTreeVO;
import com.vci.ubcs.omd.vo.BtmTypeVO;
import com.vci.ubcs.omd.vo.DomainVO;
import com.vci.ubcs.omd.wrapper.BtmTypeWrapper;
@@ -161,7 +161,7 @@
    @GetMapping("/tree-domain")
    @ApiOperationSupport(order = 7)
    @ApiOperation(value = "业务类型树形结构", notes = "业务类型树形结构")
    public R<List<BtmTypeTreeVO>> treeDomain(){
    public R<List<BtmTreeVO>> treeDomain(){
        return R.data(btmTypeService.treeDomain());
    }
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/LinkTypeController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,169 @@
package com.vci.ubcs.omd.controller;
import com.alibaba.cloud.commons.lang.StringUtils;
import com.alibaba.nacos.api.exception.NacosException;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.vci.ubcs.omd.constant.OmdCacheConstant;
import com.vci.ubcs.omd.dto.LinkTypeDTO;
import com.vci.ubcs.omd.entity.LinkType;
import com.vci.ubcs.omd.repeater.DomainRepeater;
import com.vci.ubcs.omd.service.ILinkTypeService;
import com.vci.ubcs.omd.vo.BtmTreeVO;
import com.vci.ubcs.omd.vo.LinkTypeVO;
import com.vci.ubcs.omd.vo.DomainVO;
import com.vci.ubcs.omd.wrapper.LinkTypeWrapper;
import io.swagger.annotations.*;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.cache.utils.CacheUtil;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringPool;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import javax.validation.Valid;
import java.util.*;
import java.util.stream.Collectors;
/**
 * Description:链接类型控制器
 *
 * @author LiHang
 * @date 2023/5/29
 */
@NonDS
@RestController
@AllArgsConstructor
@RequestMapping("/link-type")
@Api(value = "链接类型控制器", tags = "链接类型控制器")
public class LinkTypeController extends BladeController {
    /**
     * é“¾æŽ¥ç±»åž‹æœåŠ¡
     */
    private final ILinkTypeService linkTypeService;
    /**
     * æŸ¥çœ‹è¯¦æƒ…
     *
     * @param oid ä¸»é”®
     * @return æ‰§è¡Œç»“æžœ
     */
    @GetMapping("/detail")
    @ApiOperationSupport(order = 1)
    @ApiOperation(value = "查看详情", notes = "传入主键")
    public R<LinkTypeVO> detail(String oid) {
        return R.data(linkTypeService.getLinkTypeByOid(oid));
    }
    /**
     * åˆ—表
     *
     * @param condition æŸ¥è¯¢æ¡ä»¶
     * @return æ‰§è¡Œç»“æžœ
     */
    @GetMapping("/list")
    @ApiImplicitParams({
        @ApiImplicitParam(name = "oid", value = "主键", paramType = "query", dataType = "string"),
        @ApiImplicitParam(name = "id", value = "链接类型英文名称", paramType = "query", dataType = "string"),
        @ApiImplicitParam(name = "name", value = "链接类型中文名称", paramType = "query", dataType = "string"),
        @ApiImplicitParam(name = "tableName", value = "链接类型数据库表名", paramType = "query", dataType = "string"),
    })
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "查询列表", notes = "传入查询")
    public R<List<LinkTypeVO>> list(@ApiIgnore @RequestParam Map<String, Object> condition) {
        return R.data(LinkTypeWrapper.build().listEntityVO(linkTypeService.list(Condition.getQueryWrapper(condition, LinkType.class).lambda().orderByAsc(LinkType::getId))));
    }
    /**
     * åˆ†é¡µåˆ—表
     *
     * @param condition æŸ¥è¯¢æ¡ä»¶
     */
    @GetMapping("/page")
    @ApiImplicitParams({
        @ApiImplicitParam(name = "oid", value = "主键", paramType = "query", dataType = "string"),
        @ApiImplicitParam(name = "id", value = "链接类型英文名称", paramType = "query", dataType = "string"),
        @ApiImplicitParam(name = "name", value = "链接类型中文名称", paramType = "query", dataType = "string"),
        @ApiImplicitParam(name = "tableName", value = "链接类型数据库表名", paramType = "query", dataType = "string"),
    })
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "查询列表", notes = "传入查询")
    public R<IPage<LinkTypeVO>> parentList(@ApiIgnore @RequestParam Map<String, Object> condition, Query query) {
        IPage<LinkTypeVO> pageVO = new Page<>();
        IPage<LinkType> page = linkTypeService.page(Condition.getPage(query), Condition.getQueryWrapper(condition, LinkType.class).lambda().orderByAsc(LinkType::getId));
        BeanUtil.copy(page, pageVO);
        pageVO.setRecords(LinkTypeWrapper.build().listEntityVO(page.getRecords()));
        return R.data(pageVO);
    }
    /**
     * æ–°å¢žæˆ–修改
     *
     * @param dto å…ƒæ•°æ®é¡µé¢ä¼ è¾“对象
     * @return æ‰§è¡Œç»“æžœ
     */
    @PostMapping("/submit/{auto}")
    @ApiOperationSupport(order = 4)
    @ApiOperation(value = "新增或修改", notes = "传入链接类型对象")
    public R submit(@Valid @RequestBody LinkTypeVO dto, @PathVariable(value = "auto") boolean auto) {
        CacheUtil.clear(OmdCacheConstant.LINK_CACHE);
        if (StringUtils.isNotBlank(dto.getOid())){
            return R.data(linkTypeService.editSave(dto));
        }else {
            return R.data(linkTypeService.addSave(dto));
        }
    }
    /**
     * åˆ é™¤
     *
     * @param ids ä¸»é”®é›†åˆ
     * @return æ‰§è¡Œç»“æžœ
     */
    @PostMapping("/remove")
    @ApiOperationSupport(order = 5)
    @ApiOperation(value = "删除", notes = "主键集合")
    public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
        CacheUtil.clear(OmdCacheConstant.LINK_CACHE);
        List<String> oidList = new ArrayList<>();
        if (ids.contains(",")) {
            oidList.addAll(Func.toStrList(",", ids));
        } else {
            oidList.add(ids);
        }
        return R.status(linkTypeService.removeBatchByIds(oidList));
    }
    /**
     * èŽ·å–é¢†åŸŸå€¼
     */
    @GetMapping("/domain")
    @ApiOperationSupport(order = 6)
    @ApiOperation(value = "获取领域值")
    public R<List<DomainVO>> getDomain(){
        try {
            return R.data(DomainRepeater.getDomain());
        } catch (NacosException e) {
            return R.fail(e.getErrMsg());
        }
    }
    /**
     * æŒ‰domain分组,查询链接类型的树形结构
     */
    @GetMapping("/tree-domain")
    @ApiOperationSupport(order = 7)
    @ApiOperation(value = "链接类型树形结构", notes = "链接类型树形结构")
    public R<List<BtmTreeVO>> treeDomain(){
        return R.data(linkTypeService.treeDomain());
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/BtmTypeClient.java
@@ -51,7 +51,7 @@
    @Override
    @GetMapping(GET_DETAIL)
    public R<BtmTypeVO> getDetail(String oid) {
        return R.data(btmTypeService.getBtmTypeByOid(oid));
        return R.data(btmTypeService.getAllAttributeByBtmOid(oid));
    }
    /**
@@ -62,7 +62,7 @@
     */
    @Override
    @PostMapping(GET_REF_PAGE)
    public R<IPage<BtmTypeVO>> getRefPage(BaseQueryObject baseQueryObject) {
    public R<Page<BtmTypeVO>> getRefPage(BaseQueryObject baseQueryObject) {
        Map<String, String> conditionMap = baseQueryObject.getConditionMap();
        if (conditionMap == null){
            conditionMap = new HashMap<>(16);
@@ -83,10 +83,10 @@
        query.setSize(pageHelper.getLimit());
        query.setCurrent(pageHelper.getPage());
        IPage<BtmType> page = btmTypeService.page(Condition.getPage(query), Condition.getQueryWrapper(queryObj).lambda().eq(BtmType::getDomain, domainValue).orderByAsc(BtmType::getId));
        IPage<BtmTypeVO> pageVO = new Page<>();
        Page<BtmTypeVO> pageVO = new Page<>();
        BeanUtil.copy(page,pageVO);
        pageVO.setRecords(BtmTypeWrapper.build().listEntityVO(page.getRecords()));
        R<IPage<BtmTypeVO>> r = R.data(pageVO);
        R<Page<BtmTypeVO>> r = R.data(pageVO);
        r.setSuccess(true);
        return r;
    }
@@ -152,4 +152,37 @@
        );
        return R.data(voList);
    }
    /**
     * èŽ·å–ä¸šåŠ¡ç±»åž‹ï¼Œåªæœ‰é»˜è®¤å­—æ®µ
     *
     * @param btmTypeId ä¸šåŠ¡ç±»åž‹id
     * @return é»˜è®¤å­—段属性
     */
    @Override
    public R<BtmTypeVO> getDefaultAttrByBtmId(String btmTypeId) {
        return R.data(Optional.ofNullable(btmTypeService.getDefaultAttrByBtmId(btmTypeId)).orElseGet(BtmTypeVO::new));
    }
    /**
     * èŽ·å–ä¸šåŠ¡ç±»åž‹ï¼Œæœ‰æ‰€æœ‰çš„å­—æ®µ
     *
     * @param btmTypeId ä¸šåŠ¡ç±»åž‹id
     * @return æ‰€æœ‰å­—段
     */
    @Override
    public R<BtmTypeVO> getAllAttributeByBtmId(String btmTypeId) {
        return R.data(Optional.ofNullable(btmTypeService.getAllAttributeByBtmId(btmTypeId)).orElseGet(BtmTypeVO::new));
    }
    /**
     * èŽ·å–ä¸šåŠ¡ç±»åž‹ï¼Œæœ‰æ‰€æœ‰çš„å­—æ®µ
     *
     * @param btmTypeOid ä¸šåŠ¡ç±»åž‹ä¸»é”®
     * @return æ‰€æœ‰å­—段
     */
    @Override
    public R<BtmTypeVO> getAllAttributeByBtmOid(String btmTypeOid) {
        return R.data(Optional.ofNullable(btmTypeService.getAllAttributeByBtmOid(btmTypeOid)).orElseGet(BtmTypeVO::new));
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/LinkTypeMapper.java
@@ -1,13 +1,22 @@
package com.vci.ubcs.omd.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.vci.ubcs.omd.entity.BtmType;
import com.vci.ubcs.omd.entity.LinkType;
import java.util.List;
/**
 * Description:
 * Description: é“¾æŽ¥ç±»åž‹æ•°æ®å±‚
 *
 * @author LiHang
 * @date 2023/5/24
 */
public interface LinkTypeMapper extends BaseMapper<LinkType> {
    /**
     * æŸ¥è¯¢å…¨éƒ¨çš„链接
     * @return é“¾æŽ¥ç±»åž‹æ•°æ®å¯¹è±¡åˆ—表
     */
    List<LinkType> selectAll();
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IBtmTypeAttributeService.java
@@ -3,6 +3,7 @@
import com.vci.ubcs.omd.dto.BtmTypeLinkAttributesDTO;
import com.vci.ubcs.omd.entity.BtmTypeAttribute;
import com.vci.ubcs.omd.vo.BtmTypeAttributeVO;
import com.vci.ubcs.omd.vo.BtmTypeVO;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseService;
@@ -74,4 +75,18 @@
     * @return åŒ…含的属性
     */
    List<BtmTypeAttribute> selectByBtmTypeIds(List<String> idList);
    /**
     * èŽ·å–é»˜è®¤å­—æ®µ
     * @param btmType ä¸šåŠ¡ç±»åž‹
     * @return æ‰§è¡Œç»“æžœ
     */
    List<BtmTypeAttributeVO> getDefaultAttribute(BtmTypeVO btmType);
    /**
     * èŽ·å–æ‰€æœ‰å­—æ®µ
     * @param btmType ä¸šåŠ¡ç±»åž‹
     * @return æ‰§è¡Œç»“æžœ
     */
    List<BtmTypeAttributeVO> getAllAttribute(BtmTypeVO btmType);
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IBtmTypeService.java
@@ -1,11 +1,9 @@
package com.vci.ubcs.omd.service;
import com.vci.ubcs.omd.dto.BtmTypeDTO;
import com.vci.ubcs.omd.dto.BtmTypeLinkAttributesDTO;
import com.vci.ubcs.omd.entity.BtmType;
import com.vci.ubcs.omd.entity.BtmTypeAttribute;
import com.vci.ubcs.omd.entity.ModifyAttributeInfo;
import com.vci.ubcs.omd.vo.BtmTypeTreeVO;
import com.vci.ubcs.omd.vo.BtmTreeVO;
import com.vci.ubcs.omd.vo.BtmTypeVO;
import com.vci.ubcs.omd.vo.BtmTypeAttributeVO;
import com.vci.ubcs.omd.vo.LinkTypeVO;
@@ -14,7 +12,6 @@
import org.springblade.core.tool.api.R;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -216,7 +213,7 @@
     * æŒ‰domain分组,查询业务类型属性结构
     * @return æŸ¥è¯¢ç»“æžœ
     */
    List<BtmTypeTreeVO> treeDomain();
    List<BtmTreeVO> treeDomain();
    /**
     * ä»Žæ•°æ®åº“表中获取
@@ -232,4 +229,25 @@
     * @return æ‰§è¡Œç»“æžœ
     */
    List<BtmTypeVO> saveFromTable(List<BtmTypeDTO> btmTypeDTOList,String domain);
    /**
     * æŒ‰ç…§ä¸šåŠ¡ç±»åž‹id获取默认属性
     * @param btmTypeId ä¸šåŠ¡ç±»åž‹id
     * @return ä¸šåŠ¡ç±»åž‹
     */
    BtmTypeVO getDefaultAttrByBtmId(String btmTypeId);
    /**
     * æŒ‰ç…§ä¸šåŠ¡ç±»åž‹id获取所有的属性
     * @param btmTypeId ä¸šåŠ¡ç±»åž‹id
     * @return ä¸šåŠ¡ç±»åž‹
     */
    BtmTypeVO getAllAttributeByBtmId(String btmTypeId);
    /**
     * æŒ‰ç…§ä¸šåŠ¡ç±»åž‹ä¸»é”®èŽ·å–æ‰€æœ‰çš„å±žæ€§
     * @param btmTypeOid ä¸šåŠ¡ç±»åž‹ä¸»é”®
     * @return ä¸šåŠ¡ç±»åž‹
     */
    BtmTypeVO getAllAttributeByBtmOid(String btmTypeOid);
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/ILinkTypeService.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.omd.entity.LinkType;
import com.vci.ubcs.omd.vo.BtmTreeVO;
import com.vci.ubcs.omd.vo.LinkTypeAttributeVO;
import com.vci.ubcs.omd.vo.LinkTypeVO;
import com.vci.ubcs.starter.exception.VciBaseException;
@@ -203,4 +204,9 @@
     * @return è‹±æ–‡åç§°è‹±æ–‡å°å†™
     */
    Set<String> listUsedBtmType();
    /**
     * æŒ‰domain分组,查询业务类型属性结构
     * @return æŸ¥è¯¢ç»“æžœ
     */
    List<BtmTreeVO> treeDomain();
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmAttributeServiceImpl.java
@@ -1,15 +1,20 @@
package com.vci.ubcs.omd.service.impl;
import com.alibaba.cloud.commons.lang.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.omd.constant.BtmTypeConstant;
import com.vci.ubcs.omd.constant.BtmTypeFieldConstant;
import com.vci.ubcs.omd.dto.BtmTypeLinkAttributesDTO;
import com.vci.ubcs.omd.entity.BtmTypeAttribute;
import com.vci.ubcs.omd.mapper.BtmTypeAttributeMapper;
import com.vci.ubcs.omd.service.IAttributeService;
import com.vci.ubcs.omd.service.IBtmTypeAttributeService;
import com.vci.ubcs.omd.vo.BtmTypeAttributeVO;
import com.vci.ubcs.omd.vo.BtmTypeVO;
import com.vci.ubcs.omd.wrapper.BtmTypeAttributeWrapper;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.web.enumpck.VciFieldTypeEnum;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import org.springblade.core.tool.utils.Func;
import org.springframework.beans.factory.annotation.Autowired;
@@ -169,4 +174,95 @@
    public List<BtmTypeAttribute> selectByBtmTypeIds(List<String> idList) {
        return baseMapper.selectByBtmTypeIds(idList);
    }
    /**
     * èŽ·å–é»˜è®¤å­—æ®µ
     *
     * @param btmType ä¸šåŠ¡ç±»åž‹
     * @return æ‰§è¡Œç»“æžœ
     */
    @Override
    public List<BtmTypeAttributeVO> getDefaultAttribute(BtmTypeVO btmType) {
        List<BtmTypeAttributeVO> list = new ArrayList<>();
        // ä¸šåŠ¡ç±»åž‹çš„åŸºæœ¬å­—æ®µ
        BtmTypeFieldConstant.BASIC_FIELD_MAP.forEach((id,name) -> {
            BtmTypeAttributeVO vo = new BtmTypeAttributeVO();
            vo.setId(id);
            vo.setName(name);
            vo.setPkBtmType(btmType.getOid());
            if (StringUtils.equals(id,"oid")){
                vo.setNullableFlag(false);
            }else {
                vo.setNullableFlag(true);
            }
            if (Arrays.asList("createtime","lastmodifytime","owner").contains(id)){
                vo.setAttrDataType(VciFieldTypeEnum.VTDateTime.name());
                vo.setAttributeLength(6);
            }else {
                vo.setAttrDataType(VciFieldTypeEnum.VTString.name());
                vo.setAttributeLength(150);
            }
            list.add(vo);
        });
        // ç‰ˆæœ¬è§„则字段
        if (StringUtils.isNotBlank(btmType.getRevisionRuleId())){
            BtmTypeFieldConstant.REVISION_MANAGE_FIELD_MAP.forEach((id,name) -> {
                BtmTypeAttributeVO vo = new BtmTypeAttributeVO();
                vo.setId(id);
                vo.setName(name);
                vo.setPkBtmType(btmType.getOid());
                if (Arrays.asList("lastr","firstr","lastv","firstv","revisionseq","versionseq","revisionvalue","versionvalue").contains(id)){
                    vo.setAttributeLength(5);
                    vo.setAttrDataType(VciFieldTypeEnum.VTInteger.name());
                }
                if (Arrays.asList("checkintime","checkouttime").contains(id)){
                    vo.setAttrDataType(VciFieldTypeEnum.VTDateTime.name());
                    vo.setAttributeLength(6);
                }
                list.add(vo);
            });
        }
        // ç”Ÿå‘½å‘¨æœŸå­—段
        if (StringUtils.isNotBlank(btmType.getLifeCycleId())){
            BtmTypeFieldConstant.LIFECYCLE_MANAGE_FIELD_MAP.forEach((id,name) -> {
                BtmTypeAttributeVO vo = new BtmTypeAttributeVO();
                vo.setId(id);
                vo.setName(name);
                vo.setPkBtmType(btmType.getOid());
                vo.setAttributeLength(50);
                vo.setAttrDataType(VciFieldTypeEnum.VTString.name());
                list.add(vo);
            });
        }
        // å¯†çº§å­—段
        if (btmType.isSecretFlag()){
            BtmTypeFieldConstant.SECRET_MANAGE_FIELD_MAP.forEach((id,name) -> {
                BtmTypeAttributeVO vo = new BtmTypeAttributeVO();
                vo.setId(id);
                vo.setName(name);
                vo.setPkBtmType(btmType.getOid());
                vo.setAttributeLength(5);
                vo.setAttrDataType(VciFieldTypeEnum.VTInteger.name());
                list.add(vo);
            });
        }
        return list;
    }
    /**
     * èŽ·å–æ‰€æœ‰å­—æ®µ
     *
     * @param btmType ä¸šåŠ¡ç±»åž‹
     * @return æ‰§è¡Œç»“æžœ
     */
    @Override
    public List<BtmTypeAttributeVO> getAllAttribute(BtmTypeVO btmType) {
        List<BtmTypeAttributeVO> list = getAttributeByBtmTypeOid(btmType.getOid());
        list.addAll(getDefaultAttribute(btmType));
        return list;
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java
@@ -88,7 +88,7 @@
    /**
     * è¡¨åå‰ç¼€
     */
    public static final String PL = "PL";
    public static final String PL = "PLBT";
    /**
     * è®¾ç½®å¹³å°æœ¬èº«çš„业务类型
@@ -639,20 +639,20 @@
     * @return æŸ¥è¯¢ç»“æžœ
     */
    @Override
    public List<BtmTypeTreeVO> treeDomain() {
    public List<BtmTreeVO> treeDomain() {
        try {
            Map<String, String> domain = Optional.ofNullable(DomainRepeater.getDomain()).orElseGet(ArrayList::new).stream().collect(Collectors.toMap(s -> s.getValue(), t -> t.getLabel()));
            List<BtmTypeVO> vos = BtmTypeWrapper.build().listEntityVO(baseMapper.selectAll());
            Map<String, List<BtmTypeVO>> domainMap = vos.stream().collect(Collectors.groupingBy(BtmTypeVO::getDomain));
            List<BtmTypeTreeVO> treeList = new ArrayList<>();
            List<BtmTreeVO> treeList = new ArrayList<>();
            domainMap.forEach((k,v)-> {
                if (domain.containsKey(k)){
                    String label = domain.get(k);
                    BtmTypeTreeVO parent = new BtmTypeTreeVO();
                    BtmTreeVO parent = new BtmTreeVO();
                    parent.setName(label);
                    parent.setId(k);
                    parent.setChildList(v.stream().map(s -> {
                        BtmTypeTreeVO child = new BtmTypeTreeVO();
                        BtmTreeVO child = new BtmTreeVO();
                        child.setOid(s.getOid());
                        child.setName(s.getId() + " " + (s.getName() == null ? "" : s.getName()));
                        child.setId(s.getId());
@@ -810,4 +810,52 @@
        }
        return BtmTypeWrapper.build().listEntityVO(btmList);
    }
    /**
     * æŒ‰ç…§ä¸šåŠ¡ç±»åž‹id获取默认属性
     *
     * @param btmTypeId ä¸šåŠ¡ç±»åž‹id
     * @return ä¸šåŠ¡ç±»åž‹
     */
    @Override
    public BtmTypeVO getDefaultAttrByBtmId(String btmTypeId) {
        BtmTypeVO btmType = getBtmTypeById(btmTypeId);
        if (btmType == null){
            return null;
        }
        btmType.setAttributes(btmTypeAttributeService.getDefaultAttribute(btmType));
        return btmType;
    }
    /**
     * æŒ‰ç…§ä¸šåŠ¡ç±»åž‹id获取所有的属性
     *
     * @param btmTypeId ä¸šåŠ¡ç±»åž‹id
     * @return ä¸šåŠ¡ç±»åž‹
     */
    @Override
    public BtmTypeVO getAllAttributeByBtmId(String btmTypeId) {
        BtmTypeVO btmType = getBtmTypeById(btmTypeId);
        if (btmType == null){
            return null;
        }
        btmType.setAttributes(btmTypeAttributeService.getAllAttribute(btmType));
        return btmType;
    }
    /**
     * æŒ‰ç…§ä¸šåŠ¡ç±»åž‹ä¸»é”®èŽ·å–æ‰€æœ‰çš„å±žæ€§
     *
     * @param btmTypeOid ä¸šåŠ¡ç±»åž‹ä¸»é”®
     * @return ä¸šåŠ¡ç±»åž‹
     */
    @Override
    public BtmTypeVO getAllAttributeByBtmOid(String btmTypeOid) {
        BtmTypeVO btmType = getBtmTypeByOid(btmTypeOid);
        if (btmType == null){
            return null;
        }
        btmType.setAttributes(btmTypeAttributeService.getAllAttribute(btmType));
        return btmType;
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/LinkTypeServiceImpl.java
@@ -26,8 +26,8 @@
import com.vci.ubcs.omd.mapper.LinkTypeMapper;
import com.vci.ubcs.omd.repeater.DomainRepeater;
import com.vci.ubcs.omd.service.*;
import com.vci.ubcs.omd.vo.LinkTypeAttributeVO;
import com.vci.ubcs.omd.vo.LinkTypeVO;
import com.vci.ubcs.omd.vo.*;
import com.vci.ubcs.omd.wrapper.BtmTypeWrapper;
import com.vci.ubcs.omd.wrapper.LinkTypeAttributeWrapper;
import com.vci.ubcs.omd.wrapper.LinkTypeWrapper;
import com.vci.ubcs.starter.exception.VciBaseException;
@@ -95,12 +95,10 @@
    @Autowired
    private IModifyAttributeService modifyAttributeService;
    public final String BTM_NAME = "linkType";
    /**
     * è¡¨åå‰ç¼€
     */
    public static final String PL = "PL";
    public static final String PL = "PLLT";
    /**
@@ -865,4 +863,38 @@
        }
        return btmTypeSet;
    }
    /**
     * æŒ‰domain分组,查询链接类型属性结构
     *
     * @return æŸ¥è¯¢ç»“æžœ
     */
    @Override
    public List<BtmTreeVO> treeDomain() {
        try {
            Map<String, String> domain = Optional.ofNullable(DomainRepeater.getDomain()).orElseGet(ArrayList::new).stream().collect(Collectors.toMap(DomainVO::getValue, DomainVO::getLabel));
            List<LinkTypeVO> vos = LinkTypeWrapper.build().listEntityVO(baseMapper.selectAll());
            Map<String, List<LinkTypeVO>> domainMap = vos.stream().collect(Collectors.groupingBy(LinkTypeVO::getDomain));
            List<BtmTreeVO> treeList = new ArrayList<>();
            domainMap.forEach((k,v)-> {
                if (domain.containsKey(k)){
                    String label = domain.get(k);
                    BtmTreeVO parent = new BtmTreeVO();
                    parent.setName(label);
                    parent.setId(k);
                    parent.setChildList(v.stream().map(s -> {
                        BtmTreeVO child = new BtmTreeVO();
                        child.setOid(s.getOid());
                        child.setName(s.getId() + " " + (s.getName() == null ? "" : s.getName()));
                        child.setId(s.getId());
                        return child;
                    }).collect(Collectors.toList()));
                    treeList.add(parent);
                }
            });
            return treeList;
        } catch (NacosException e) {
            throw new RuntimeException(e);
        }
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/LinkTypeMapper.xml
@@ -23,7 +23,7 @@
    </resultMap>
    <sql id="base_query_column">
        oid, id, name, descrption, shape, impl_class, from_btm_type, from_btm_type_name,
        oid, id, name, description, shape, impl_class, from_btm_type, from_btm_type_name,
            to_btm_type, to_btm_type_name, btm_name, owner, creator, create_time, last_modifier, last_modify_time,
            ts, domain
    </sql>
@@ -31,4 +31,10 @@
    <sql id="tableName">
        pl_omd_link_type
    </sql>
    <select id="selectAll" resultMap="BaseResultMap">
        select <include refid="base_query_column"/>
        from <include refid="tableName" />
    </select>
</mapper>