lihang
2023-05-09 41c256180e5e7900c88b71a9f22590db21f87a7a
业务类型修正
已修改21个文件
已添加6个文件
1093 ■■■■ 文件已修改
Source/UBCS-WEB/src/api/omd/btmType.js 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/modeling/original.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/constant/BtmTypeFieldConstant.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/Attribute.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/BtmType.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/BtmTypeAttribute.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/ModifyAttributeInfo.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/BtmTypeTreeVO.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/BtmTypeVO.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/processor/dll/DllMapperProcessor.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/service/impl/DdlServiceImpl.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/BtmTypeController.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/AttributeMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/BtmTypeAttributeMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/BtmTypeMapper.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/repeater/DomainRepeater.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IBtmTypeAttributeService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IBtmTypeService.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/AttributeServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmAttributeServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java 184 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/BtmTypeWrapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/AttributeMapper.xml 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/BtmTypeAttributeMapper.xml 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/BtmTypeMapper.xml 221 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/ModifyAttributeInfoMapper.xml 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/omd/btmType.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
import request from '@/router/axios';
export const initTree = () => {
    return request({
        url: '/api/ubcs-omd/btm-type/tree-domain',
        method: 'get',
    })
}
export const refOnLoad = (domain) => {
    return request({
        url: '/api/ubcs-omd/btm-type/get-from-table',
        method: 'get',
        params: {
            domain: domain
        }
    })
}
export const getDomain = () => {
    return request({
        url: '/api/ubcs-omd/btm-type/domain',
        method: 'get'
    })
}
export const saveFromTable = (list,domain) => {
    return request({
        url: '/api/ubcs-omd/btm-type/save-from-table/' + domain,
        method: 'post',
        data: list
    })
}
export const getDetail = (oid) => {
    return request({
        url: '/api/ubcs-omd/btm-type/detail',
        method: 'get',
        params: {
            oid: oid
        }
    })
}
Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,112 @@
<template>
    <el-dialog
    title="业务类型"
    :visible.sync="showSubmitDialog"
    append-to-body
    @close="closeSubmitDialog"
    width="70%"
    >
        <el-form ref="form" :model="btmType" show-message="true" inline>
            <el-form-item label="英文名称:" label-width="100px">
                <el-input v-model="btmType.id" prefix-icon="el-icon-finished"></el-input>
            </el-form-item>
            <el-form-item label="中文名称:" label-width="100px">
                <el-input v-model="btmType.name" prefix-icon="el-icon-info"></el-input>
            </el-form-item>
            <el-form-item label="数据库表名:" label-width="100px">
                <el-input v-model="btmType.tableName" prefix-icon="el-icon-date"></el-input>
            </el-form-item>
            <el-form-item label="所属领域:" label-width="100px">
                <el-select v-model="btmType.domain" prefix-icon="el-icon-folder-opened">
                    <el-option v-for="item in domainOption"
                    :label="item"></el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="版本规则:" label-width="100px">
                <el-input v-model="btmType.revisionRuleId" prefix-icon="el-icon-s-check"></el-input>
            </el-form-item>
            <el-form-item label="生命周期:" label-width="100px">
                <el-input v-model="btmType.lifeCycleId" prefix-icon="el-icon-refresh-right"></el-input>
            </el-form-item>
            <el-form-item label="视图:" label-width="100px">
                <el-input v-model="btmType.view" prefix-icon="el-icon-view"></el-input>
            </el-form-item>
            <el-form-item label="描述:" label-width="100px">
                <el-input v-model="btmType.description"
                prefix-icon="el-icon-chat-line-square"
                style="width:254%;"></el-input>
            </el-form-item>
        </el-form>
        <avue-crud :option="option" :data="btmType.attributes"></avue-crud>
    </el-dialog>
</template>
<script>
import { } from '@/api/omd/btmType';
import { } from '@/api/omd/OmdAttribute';
export default {
    name: 'BusinessAdd',
    props: {
        btmType:{
            type: Object
        },
        domainOption:{
            type: Array
        }
    },
    data() {
        return {
            form: {},
            showSubmitDialog : false,
            option: {
                height: "330px",
                selection: true,
                headerAlign: 'center',
                border: true,
                index: true,
                rowKey: 'id',
                tabs: true,
                menu: false,
                highlightCurrentRow: true,
                column: [
                    {
                        label: '属性英文名称',
                        prop: 'id',
                        align: 'center'
                    }, {
                        label: '属性中文名称',
                        prop: 'name',
                        align: 'center'
                    },
                    {
                        label: "属性类型",
                        prop: "attrDataType",
                        align: 'center'
                    },
                    {
                        label: "默认值",
                        prop: "defaultValue",
                        align: 'center'
                    },
                    {
                        label: "说明",
                        prop: "description",
                        align: 'center'
                    }
                ]
            },
        }
    },
    created() {
        console.log('123');
    },
    methods: {
        closeSubmitDialog(){
            this.showSubmitDialog = false;
        }
    }
}
</script>
<style></style>
Source/UBCS-WEB/src/views/modeling/original.vue
@@ -147,6 +147,7 @@
        index: true,
        rowKey: 'id',
        tabs: true,
        highlightCurrentRow:true,
        column: [
          {
            label: '属性编号',
@@ -540,6 +541,9 @@
        this.loading = false;
        this.data = res.data.data.records
        this.itemData = this.data[0];
        this.$nextTick(() => {
          this.$refs.crud.setCurrentRow(this.data[0]);
        })
      })
    },
    rowClick(row) {
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/constant/BtmTypeFieldConstant.java
@@ -74,10 +74,10 @@
        };
        BASE_MODEL_COMPATIBILITY_MAP = new HashMap() {
            {
                this.put("lastr", "islastr");
                this.put("firstr", "isfirstr");
                this.put("lastv", "islastv");
                this.put("firstv", "isfirstv");
                this.put("lastr", "lastr");
                this.put("firstr", "firstr");
                this.put("lastv", "lastv");
                this.put("firstv", "firstv");
            }
        };
        LIFECYCLE_MANAGE_FIELD_MAP = new HashMap() {
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/Attribute.java
@@ -126,7 +126,7 @@
     */
    @ApiModelProperty("参照的主键")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long referToId;
    private String referToId;
    /**
     * å‚照对象的名称
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/BtmType.java
@@ -135,7 +135,7 @@
    /**
     * ä¸šåŠ¡ç±»åž‹åç§°
     */
    private String btmname;
    private String btmName;
    /**
     * æ‹¥æœ‰è€…
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/BtmTypeAttribute.java
@@ -14,7 +14,7 @@
 * @date 2019/10/11 3:21 PM
 */
@Data
@TableName("pl_omd_btm_type_attr")
@TableName("pl_omd_btm_type_attribute")
@ApiModel(value = "业务类型包含的属性", description = "业务类型包含的属性")
public class BtmTypeAttribute implements java.io.Serializable{
@@ -106,7 +106,7 @@
    /**
     * ä¸šåŠ¡ç±»åž‹åç§°
     */
    private String btmname;
    private String btmName;
    /**
     * æ‹¥æœ‰è€…
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/ModifyAttributeInfo.java
@@ -125,4 +125,9 @@
     * åˆ›å»ºæ—¶é—´
     */
    private Date createTime;
    /**
     * æ—¶é—´æˆ³
     */
    private Date ts;
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/BtmTypeTreeVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
package com.vci.ubcs.omd.vo;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
 * Description: ä¸šåŠ¡ç±»åž‹æ ‘çš„æ˜¾ç¤ºå¯¹è±¡
 *
 * @author LiHang
 * @date 2023/5/5
 */
@Data
public class BtmTypeTreeVO implements Serializable{
    /**
     * åºåˆ—化
     */
    private static final long serialVersionUID = -1243940048761060562L;
    private String name;
    private String oid;
    private List<BtmTypeTreeVO> childList;
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/BtmTypeVO.java
@@ -2,6 +2,7 @@
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
@@ -11,7 +12,7 @@
 * @date 2019/10/11 5:24 PM
 */
@Data
public class BtmTypeVO implements java.io.Serializable{
public class BtmTypeVO implements Serializable {
    /**
     * ç¦æ­¢ä¿®æ”¹è¿™ä¸ªå€¼
@@ -139,7 +140,7 @@
    /**
     * ä¸šåŠ¡ç±»åž‹åç§°
     */
    private String btmname;
    private String btmName;
    /**
     * æ‹¥æœ‰è€…
Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/processor/dll/DllMapperProcessor.java
@@ -153,18 +153,18 @@
        List<VciFieldTypeEnum> fieldTypes = listFieldInMapByColumnStr(columnStr, map);
        VciFieldTypeEnum finalField = null;
        int i = Integer.MAX_VALUE;
        if (CollectionUtils.isEmpty(fieldTypes)){
            return null;
        }
        if (fieldTypes.size() == 1){
            return fieldTypes.get(0);
        }
        for (VciFieldTypeEnum fieldType : fieldTypes) {
            DdlFieldMappingAttrBO bo = map.get(fieldType);
            int i1 = Math.abs(bo.getDataLength() - length);
            if (i1 < i){
                finalField = fieldType;
                i = i1;
            if (fieldType.equals(VciFieldTypeEnum.VTString)) {
                finalField = VciFieldTypeEnum.VTString;
            }
            if (fieldType.equals(VciFieldTypeEnum.VTDateTime)){
                finalField = VciFieldTypeEnum.VTDateTime;
            }
            if (fieldType.equals(VciFieldTypeEnum.VTInteger) && length <= 26){
                finalField = VciFieldTypeEnum.VTInteger;
            }
        }
        return finalField;
Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/service/impl/DdlServiceImpl.java
@@ -1104,13 +1104,13 @@
            List<BtmTypeVO> btmTypeVOList = new ArrayList<>();
            allTableBO.forEach(table -> {
                BtmTypeVO vo = new BtmTypeVO();
                vo.setTableName(table.getTableName());
                vo.setTableName(table.getTableName().toLowerCase());
                vo.setDescription(table.getTableDesc());
                List<DdlTableInDataBaseBO> columns = selectTableColumnInfo(table.getTableName());
                List<BtmTypeAttributeVO> attributes = new ArrayList<>();
                columns.forEach(col -> {
                    BtmTypeAttributeVO attributeVO = new BtmTypeAttributeVO();
                    attributeVO.setId(col.getId());
                    attributeVO.setId(col.getId().toLowerCase());
                    attributeVO.setName(col.getName());
                    attributeVO.setNullableFlag(col.getNullableFlag());
                    attributeVO.setAttributeLength(col.getAttributeLength());
@@ -1120,6 +1120,9 @@
                    if (field != null){
                        attributeVO.setAttrDataType(field.name());
                    }
                    if(col.getPrecisionLength() != null){
                        attributeVO.setAttrDataType(VciFieldTypeEnum.VTDouble.name());
                    }
                    attributes.add(attributeVO);
                });
                vo.setAttributes(attributes);
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/BtmTypeController.java
@@ -1,7 +1,9 @@
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;
@@ -9,6 +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.BtmTypeVO;
import com.vci.ubcs.omd.wrapper.BtmTypeWrapper;
import io.swagger.annotations.*;
@@ -21,13 +24,13 @@
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.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
 * Description: ä¸šåŠ¡ç±»åž‹æŽ§åˆ¶å™¨
@@ -92,7 +95,7 @@
        @ApiImplicitParam(name = "name", value = "业务类型中文名称", paramType = "query", dataType = "string"),
        @ApiImplicitParam(name = "tableName", value = "业务类型数据库表名", paramType = "query", dataType = "string"),
    })
    @ApiOperationSupport(order = 2)
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "查询列表", notes = "传入查询")
    public R<IPage<BtmTypeVO>> parentList(@ApiIgnore @RequestParam Map<String, Object> condition, Query query) {
        IPage<BtmTypeVO> pageVO = new Page<>();
@@ -110,7 +113,7 @@
     * @return æ‰§è¡Œç»“æžœ
     */
    @PostMapping("/submit/{auto}")
    @ApiOperationSupport(order = 3)
    @ApiOperationSupport(order = 4)
    @ApiOperation(value = "新增或修改", notes = "传入业务类型对象")
    public R submit(@Valid @RequestBody BtmTypeDTO dto,@PathVariable(value = "auto") boolean auto) {
        CacheUtil.clear(OmdCacheConstant.BTM_CACHE);
@@ -124,7 +127,7 @@
     * @return æ‰§è¡Œç»“æžœ
     */
    @PostMapping("/remove")
    @ApiOperationSupport(order = 4)
    @ApiOperationSupport(order = 5)
    @ApiOperation(value = "删除", notes = "主键集合")
    public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
        CacheUtil.clear(OmdCacheConstant.BTM_CACHE);
@@ -141,7 +144,7 @@
     * èŽ·å–é¢†åŸŸå€¼
     */
    @GetMapping("/domain")
    @ApiOperationSupport(order = 5)
    @ApiOperationSupport(order = 6)
    @ApiOperation(value = "获取领域值")
    public R<List<String>> getDomain(){
        try {
@@ -150,4 +153,62 @@
            return R.fail(e.getErrMsg());
        }
    }
    /**
     * æŒ‰domain分组,查询业务类型的树形结构
     */
    @GetMapping("/tree-domain")
    @ApiOperationSupport(order = 7)
    @ApiOperation(value = "业务类型树形结构", notes = "业务类型树形结构")
    public R<List<BtmTypeTreeVO>> treeDomain(){
        return R.data(btmTypeService.treeDomain());
    }
    /**
     * ä»Žæ•°æ®åº“表中获取
     * @param domain é¢†åŸŸå€¼
     * @return è¯»å–结果
     */
    @GetMapping("/get-from-table")
    @ApiOperation(value = "从数据库表中读取",notes = "从数据库表中读取")
    @ApiOperationSupport(order = 8)
    public R<List<BtmTypeVO>> getFromTable(String domain){
        return R.data(btmTypeService.getFromTable(domain));
    }
    /**
     * æ•°æ®åº“选择的表保存为业务类型
     * @param btmTypeDTOList é¡µé¢ä¼ è¾“对象
     * @return æ‰§è¡Œç»“æžœ
     */
    @PostMapping("/save-from-table/{domain}")
    @ApiOperation(value = "从数据库中保存",notes = "从数据库中保存")
    @ApiOperationSupport(order = 9)
    public R saveFromTable(@RequestBody List<BtmTypeDTO> btmTypeDTOList,@PathVariable(value = "domain") String domain){
        // æ•°æ®åº“表不能重复
        Set<String> tableNames = btmTypeDTOList.stream().map(BtmTypeDTO::getTableName).filter(StringUtils::isNotBlank).collect(Collectors.toSet());
        long count = btmTypeService.count(Wrappers.<BtmType>query().lambda().in(BtmType::getTableName,tableNames));
        if (count > 0){
            return R.fail("所选表在业务类型中已存在");
        }
        // ä¸šåŠ¡ç±»åž‹ä¸èƒ½é‡å¤
        btmTypeDTOList = btmTypeDTOList.stream().peek(s -> {
            String id;
            String tableName = s.getTableName();
            if (tableName.contains(StringPool.UNDERSCORE)) {
                List<String> strList = Arrays.asList(tableName.split(StringPool.UNDERSCORE));
                id = strList.get(strList.size() - 1);
            } else {
                id = tableName;
            }
            s.setId(id.toLowerCase());
        }).collect(Collectors.toList());
        List<String> btmTypeIdList = btmTypeDTOList.stream().map(BtmTypeDTO::getId).collect(Collectors.toList());
        long countId = btmTypeService.count(Wrappers.<BtmType>query().lambda().in(BtmType::getId, btmTypeIdList));
        if (countId > 0){
            return R.fail("所选表与已存在业务类型冲突");
        }
        return R.data(btmTypeService.saveFromTable(btmTypeDTOList,domain));
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/AttributeMapper.java
@@ -21,13 +21,6 @@
    List<Attribute> selectAll();
    /**
     * ä¸»é”®æŸ¥è¯¢
     * @param primaryKey ä¸»é”®
     * @return æŸ¥è¯¢ç»“æžœ
     */
    Attribute selectByPrimaryKey(Long primaryKey);
    /**
     * ä¸»é”®æ‰¹é‡æŸ¥è¯¢
     * @param primaryKeyCollection ä¸»é”®é›†åˆ
     * @return æŸ¥è¯¢ç»“æžœ
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/BtmTypeAttributeMapper.java
@@ -15,10 +15,10 @@
 */
public interface BtmTypeAttributeMapper extends BladeMapper<BtmTypeAttribute> {
    int batchDelete(List<String> records);
    int batchDelete(@Param("records") List<String> records);
    int batchUpdate(List<BtmTypeAttribute> btmTypeAttributeDOList);
    int batchUpdate(@Param("records") List<BtmTypeAttribute> btmTypeAttributeDOList);
    /**
     * èŽ·å–ä¸šåŠ¡ç±»åž‹ä¸­çš„æŒ‡å®šå±žæ€§
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/BtmTypeMapper.java
@@ -1,5 +1,6 @@
package com.vci.ubcs.omd.mapper;
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.vci.ubcs.omd.entity.BtmTypeAttribute;
import com.vci.ubcs.omd.entity.BtmType;
import org.apache.ibatis.annotations.Param;
@@ -9,21 +10,13 @@
import java.util.Collection;
import java.util.List;
@Repository
public interface BtmTypeMapper extends BladeMapper<BtmType> {
    /**
     * æ ¹æ®ä¸»é”®åˆ é™¤å¯¹è±¡
     * @param oid ç”Ÿå‘½å‘¨æœŸä¸»é”®
     * @return å½±å“çš„行数
     */
    int deleteByPrimaryKey(String oid);
    /**
     * æ’入业务类型
     * @param record è¦æ·»åŠ çš„ä¸šåŠ¡ç±»åž‹å¯¹è±¡
     * @return å½±å“çš„行数
     */
    int insert(BtmType record);
    int deleteByPrimaryKey(@Param("oid") String oid);
    /**
     * æ ¹æ®ä¸»é”®èŽ·å–æ•°æ®å¯¹è±¡
@@ -113,6 +106,7 @@
     * @param records æ‰¹é‡çš„信息
     * @return æ‰§è¡Œæ€»æ•°
     */
    Long batchInsert(@Param("records") List<BtmTypeAttribute> records);
    @InterceptorIgnore(tenantLine = "1")
    Long batchInsert(@Param("records") List<BtmType> records);
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/repeater/DomainRepeater.java
@@ -2,11 +2,13 @@
import com.alibaba.cloud.nacos.NacosDiscoveryProperties;
import com.alibaba.cloud.nacos.NacosServiceManager;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.nacos.api.exception.NacosException;
import com.alibaba.nacos.api.naming.NamingService;
import com.alibaba.nacos.api.naming.pojo.Instance;
import com.alibaba.nacos.api.naming.pojo.ServiceInfo;
import com.vci.ubcs.common.constant.LauncherConstant;
import com.vci.ubcs.omd.dto.BtmAndLinkTypeDdlDTO;
import com.vci.ubcs.omd.vo.BtmTypeVO;
import com.vci.ubcs.omd.vo.LinkTypeVO;
@@ -15,11 +17,9 @@
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.StringPool;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.http.*;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import org.springframework.web.client.HttpClientErrorException;
import org.springframework.web.client.RestTemplate;
@@ -68,12 +68,27 @@
     * Nacos服务列表
     */
    private static NamingService namingService;
    @Autowired
    private NacosServiceManager manager;
    @Autowired
    private NacosDiscoveryProperties properties;
    /**
     * æ‹¿å–服务中的所有表信息
     * @param serviceName æœåŠ¡åç§°
     * @return è¿”回结果
     * @throws NacosException æ‰¾ä¸åˆ°æœåŠ¡æ—¶æŠ›å‡ºå¼‚å¸¸
     */
    public static R getFromTable(String serviceName) throws NacosException{
        ResponseEntity<R> responseEntity = executeGet(getUrl(serviceName, API_GET_ALL_TABLE_INFO), new HashMap<>());
        if (responseEntity.getStatusCode().equals(HttpStatus.OK)) {
            R body = Objects.requireNonNull(responseEntity.getBody());
            return body;
        }
        return R.fail(String.valueOf(responseEntity.getStatusCode().value()));
    }
    @PostConstruct
    private void init() {
@@ -198,29 +213,41 @@
    }
    /**
     * æ‰§è¡ŒhttpGet接口
     *
     * @param url          åœ°å€
     * @param extraHeaders è¯·æ±‚头参数
     * @return æ‰§è¡Œç»“æžœ
     */
    private static ResponseEntity<R> executeGet(String url,Map<String, String> extraHeaders) {
        RestTemplate restTemplate = new RestTemplate();
        HttpHeaders httpHeaders = new HttpHeaders();
        httpHeaders.add("Blade-Auth", AuthUtil.getHeader());
        HttpEntity<String> request = new HttpEntity<>(httpHeaders);
        if (!CollectionUtils.isEmpty(extraHeaders)){
            StringBuilder sb = new StringBuilder().append("?");
            extraHeaders.forEach( (k,v) -> {
                sb.append(k).append(StringPool.EQUALS).append(v).append(StringPool.AMPERSAND);
            });
            String str = sb.toString();
            if (str.endsWith(StringPool.AMPERSAND)){
                str = str.substring(0,str.length()-1);
            }
            url = url + str;
        }
        return restTemplate.exchange(url, HttpMethod.GET,request,R.class,"");
    }
    /**
     * èŽ·å–æ‰€æœ‰å·²æ³¨å†Œçš„æœåŠ¡
     * @return ä¸åŒ…含默认服务的其他服务
     * @throws NacosException
     */
    public static List<String> getDomain() throws NacosException {
        List<ServiceInfo> services = namingService.getSubscribeServices();
        Set<String> serviceNames = new HashSet<>();
        serviceNames.add(AppConstant.APPLICATION_GATEWAY_NAME);
        serviceNames.add(AppConstant.APPLICATION_ADMIN_NAME);
        serviceNames.add(AppConstant.APPLICATION_AUTH_NAME);
        serviceNames.add(AppConstant.APPLICATION_DESK_NAME);
        serviceNames.add(AppConstant.APPLICATION_DEVELOP_NAME);
        serviceNames.add(AppConstant.APPLICATION_FLOW_NAME);
        serviceNames.add(AppConstant.APPLICATION_FLOWDESIGN_NAME);
        serviceNames.add(AppConstant.APPLICATION_LOG_NAME);
        serviceNames.add(AppConstant.APPLICATION_REPORT_NAME);
        serviceNames.add(AppConstant.APPLICATION_SWAGGER_NAME);
        serviceNames.add(AppConstant.APPLICATION_SYSTEM_NAME);
        serviceNames.add(AppConstant.APPLICATION_TURBINE_NAME);
        serviceNames.add(AppConstant.APPLICATION_USER_NAME);
        serviceNames.add(AppConstant.APPLICATION_WEBSOCKET_NAME);
        serviceNames.add(AppConstant.APPLICATION_ZIPKIN_NAME);
        serviceNames.add(AppConstant.APPLICATION_NAME_OMD);
        return services.stream().map(ServiceInfo::getName).filter(s -> !serviceNames.contains(s)).collect(Collectors.toList());
        RestTemplate restTemplate = new RestTemplate();
        String url = "http://" +LauncherConstant.NACOS_DEV_ADDR + "/nacos/v1/ns/service/list?pageNo=1&pageSize=50";
        String forObject = restTemplate.getForObject(url, String.class);
        JSONObject jsonObject = JSON.parseObject(forObject);
        return (List<String>) jsonObject.get("doms");
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IBtmTypeAttributeService.java
@@ -27,12 +27,6 @@
    List<BtmTypeAttributeVO> checkAndInsert(String btmTypeOid, List<BtmTypeLinkAttributesDTO> attributesDTOList, String creator, Date now);
    /**
     * æ‰¹é‡æ’å…¥
     * @param records æ•°æ®å¯¹è±¡é›†åˆ
     */
    int batchInsert(List<BtmTypeAttribute> records);
    /**
     * ä¸šåŠ¡ç±»åž‹ä¸»é”®æŸ¥å±žæ€§
     * @param btmTypeOid ä¸šåŠ¡ç±»åž‹ä¸»é”®
     * @return æŸ¥è¯¢ç»“æžœ
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IBtmTypeService.java
@@ -5,6 +5,7 @@
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.BtmTypeVO;
import com.vci.ubcs.omd.vo.BtmTypeAttributeVO;
import com.vci.ubcs.omd.vo.LinkTypeVO;
@@ -210,4 +211,25 @@
     * @return æ‰§è¡Œç»“æžœ
     */
    R submit(BtmTypeDTO btmTypeDTO,boolean autoCreateTable);
    /**
     * æŒ‰domain分组,查询业务类型属性结构
     * @return æŸ¥è¯¢ç»“æžœ
     */
    List<BtmTypeTreeVO> treeDomain();
    /**
     * ä»Žæ•°æ®åº“表中获取
     * @param domain é¢†åŸŸå€¼
     * @return è¯»å–结果
     */
    List<BtmTypeVO> getFromTable(String domain);
    /**
     * é€‰æ‹©æ•°æ®åº“表保存为业务类型
     * @param btmTypeDTOList é¡µé¢ä¼ è¾“对象
     * @param domain é¢†åŸŸ
     * @return æ‰§è¡Œç»“æžœ
     */
    List<BtmTypeVO> saveFromTable(List<BtmTypeDTO> btmTypeDTOList,String domain);
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/AttributeServiceImpl.java
@@ -60,7 +60,7 @@
    @Override
    public AttributeVO getAttributeDetail(Long id) {
        Func.requireNotNull(id,"主键不能为空");
        return AttributeWrapper.build().entityVO(baseMapper.selectByPrimaryKey(id));
        return AttributeWrapper.build().entityVO(baseMapper.selectById(id));
    }
    /**
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmAttributeServiceImpl.java
@@ -62,7 +62,7 @@
            if (!exists){
                return null;
            }
            batchInsert(btmTypeAttributeDOList);
            saveBatch(btmTypeAttributeDOList);
            return BtmTypeAttributeWrapper.build().listEntityVO(btmTypeAttributeDOList);
//            btmTypeAttributeDOList.stream().forEachOrdered(s -> {
//                btmTypeAttributeDOMapper.insert(s);
@@ -116,16 +116,6 @@
//            });
        }
        return null;
    }
    /**
     * æ‰¹é‡æ’å…¥
     *
     * @param records æ•°æ®å¯¹è±¡é›†åˆ
     */
    @Override
    public int batchInsert(List<BtmTypeAttribute> records) {
        return baseMapper.insertBatchSomeColumn(records);
    }
    /**
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java
@@ -1,15 +1,19 @@
package com.vci.ubcs.omd.service.impl;
import com.alibaba.cloud.commons.lang.StringUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.nacos.api.exception.NacosException;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.omd.constant.BtmTypeFieldConstant;
import com.vci.ubcs.omd.dto.BtmAndLinkTypeDdlDTO;
import com.vci.ubcs.omd.entity.Attribute;
import com.vci.ubcs.omd.repeater.DomainRepeater;
import com.vci.ubcs.omd.service.IAttributeService;
import com.vci.ubcs.omd.service.IBtmTypeAttributeService;
import com.vci.ubcs.omd.service.IModifyAttributeService;
import com.vci.ubcs.omd.wrapper.BtmTypeAttributeWrapper;
import com.vci.ubcs.omd.vo.BtmTypeTreeVO;
import com.vci.ubcs.omd.wrapper.BtmTypeWrapper;
import com.vci.ubcs.omd.wrapper.ModifyAttributeWrapper;
import com.vci.ubcs.starter.web.constant.OmdRegExpConstant;
@@ -24,6 +28,7 @@
import com.vci.ubcs.omd.vo.BtmTypeAttributeVO;
import com.vci.ubcs.omd.vo.LinkTypeVO;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.web.enumpck.BooleanEnum;
import com.vci.ubcs.starter.web.enumpck.VciFieldTypeEnum;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import com.vci.ubcs.starter.web.util.VciDateUtil;
@@ -38,6 +43,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.DefaultTransactionDefinition;
import org.springframework.util.CollectionUtils;
@@ -71,6 +77,12 @@
     */
    @Autowired
    private IModifyAttributeService modifyAttributeService;
    /**
     * å±žæ€§çš„æœåŠ¡
     */
    @Autowired
    private IAttributeService attributeService;
    /**
     * è¡¨åå‰ç¼€
@@ -621,4 +633,174 @@
    public boolean changeStatus(@NotEmpty List<Long> ids, Integer status) {
        return false;
    }
    /**
     * æŒ‰domain分组,查询业务类型属性结构
     *
     * @return æŸ¥è¯¢ç»“æžœ
     */
    @Override
    public List<BtmTypeTreeVO> treeDomain() {
        try {
            List<String> domain = DomainRepeater.getDomain();
            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<>();
            domainMap.forEach((k,v)-> {
                if (domain.contains(k)){
                    BtmTypeTreeVO parent = new BtmTypeTreeVO();
                    parent.setOid(k);
                    parent.setName(k);
                    parent.setChildList(v.stream().map(s -> {
                        BtmTypeTreeVO child = new BtmTypeTreeVO();
                        child.setOid(s.getOid());
                        child.setName(s.getId() + " " + (s.getName() == null ? "" : s.getName()));
                        return child;
                    }).collect(Collectors.toList()));
                    treeList.add(parent);
                }
            });
            return treeList;
        } catch (NacosException e) {
            throw new RuntimeException(e);
        }
    }
    /**
     * ä»Žæ•°æ®åº“表中获取
     *
     * @param domain é¢†åŸŸå€¼
     * @return è¯»å–结果
     */
    @Override
    public List<BtmTypeVO> getFromTable(String domain) {
        VciBaseUtil.alertNotNull(domain,"领域值");
        try {
            if (!DomainRepeater.getDomain().contains(domain)){
                return null;
            }
            R result = DomainRepeater.getFromTable(domain);
            if (result.isSuccess()){
                List<BtmTypeVO> list = new ArrayList<>();
                Object dataList = result.getData();
                if (dataList instanceof  List){
                    ((List<?>) dataList).forEach(data -> {
                        JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(data));
                        list.add(BeanUtil.copy(jsonObject,BtmTypeVO.class));
                    });
                }
                return list;
            }else {
                return new ArrayList<>();
            }
        } catch (NacosException e) {
            throw new RuntimeException(e);
        }
    }
    /**
     * é€‰æ‹©æ•°æ®åº“表保存为业务类型
     *
     * @param btmTypeDTOList é¡µé¢ä¼ è¾“对象
     * @param domain é¢†åŸŸ
     * @return æ‰§è¡Œç»“æžœ
     */
    @Override
    @Transactional
    public List<BtmTypeVO> saveFromTable(List<BtmTypeDTO> btmTypeDTOList,String domain) {
        // ä¹‹å‰å·²ç»åšè¿‡é‡å¤æ ¡éªŒäº†ï¼Œè¿™è¾¹ç›´æŽ¥æ‰§è¡Œä¿å­˜é€»è¾‘即可
        List<BtmType> btmList = new ArrayList<>();
        List<BtmTypeAttribute> btmTypeAttributes = new ArrayList<>();
        Map<String,Attribute> idAttrMap = new HashMap<>();
        // æ ¡éªŒå±žæ€§æ˜¯å¦å­˜åœ¨
        Set<String> attributeIds = new HashSet<>();
        Date now = new Date();
        String user = AuthUtil.getUserAccount();
        btmTypeDTOList.stream().forEach(dto -> {
            BtmType btmType = Objects.requireNonNull(BeanUtil.copy(dto, BtmType.class));
            btmType.setOid(VciBaseUtil.getPk());
            btmType.setTs(now);
            btmType.setCreator(user);
            btmType.setBtmName("btmType");
            btmType.setCreateTime(now);
            btmType.setDomain(domain);
            btmType.setLastModifyTime(now);
            btmType.setLastModifier(user);
            btmType.setName(dto.getDescription());
            Set<String> ids = dto.getAttributes().stream().filter(s -> {
                return ! (BtmTypeFieldConstant.BASIC_FIELD_MAP.containsKey(s.getId())
                || BtmTypeFieldConstant.LIFECYCLE_MANAGE_FIELD_MAP.containsKey(s.getId())
                || BtmTypeFieldConstant.SECRET_MANAGE_FIELD_MAP.containsKey(s.getId())
                || BtmTypeFieldConstant.REVISION_MANAGE_FIELD_MAP.containsKey(s.getId())
                );
            }).map(attr -> {
                // æ·»åŠ å±žæ€§ï¼Œ1是校验,2是添加
                Attribute attribute = new Attribute();
                attribute.setKey(attr.getId());
                attribute.setLabel(attr.getName());
                attribute.setDictKey(attr.getAttrDataType());
                attribute.setMaxLength(attr.getAttributeLength());
                attribute.setPrecision(attr.getPrecisionLength());
                attribute.setDescription(attr.getDescription());
                attribute.setDefaultValue(attr.getDefaultValue());
                attribute.setNullable(String.valueOf(attr.isNullableFlag()));
                attribute.setHashtag(attr.getDescription());
                attribute.setReferToId(attr.getReferBtmTypeId());
                attribute.setReferToName(attr.getReferBtmTypeName());
                attribute.setTs(now);
                attribute.setCreateTime(now);
                attribute.setCreateUser(AuthUtil.getUserId());
                idAttrMap.put(attribute.getKey(),attribute);
                // åœ¨è¿™é‡Œç»™ä¸šåŠ¡ç±»åž‹è®¾ç½®ç‰ˆæœ¬æŽ§åˆ¶ã€ç”Ÿå‘½å‘¨æœŸæŽ§åˆ¶ã€å¯†çº§æŽ§åˆ¶ç›¸å…³çš„ä¿¡æ¯
                // æ·»åŠ ä¸šåŠ¡ç±»åž‹å’Œå±žæ€§çš„å…³ç³»
                BtmTypeAttribute btmTypeAttribute = Objects.requireNonNull(BeanUtil.copy(attr, BtmTypeAttribute.class));
                btmTypeAttribute.setPkBtmType(btmType.getOid());
                btmTypeAttribute.setCreator(user);
                btmTypeAttribute.setCreateTime(now);
                btmTypeAttribute.setLastModifier(user);
                btmTypeAttribute.setLastModifyTime(now);
//                btmTypeAttribute.setBtmName("btmTypeAttribute");
                btmTypeAttribute.setOid(VciBaseUtil.getPk());
                btmTypeAttribute.setBtmName(btmType.getId());
                btmTypeAttribute.setOwner(user);
                btmTypeAttributes.add(btmTypeAttribute);
                return attr;
            }).map(BtmTypeLinkAttributesDTO::getId).collect(Collectors.toSet());
            attributeIds.addAll(ids);
            btmType.setLifeCycleFlag(String.valueOf(ids.stream().anyMatch(BtmTypeFieldConstant.LIFECYCLE_MANAGE_FIELD_MAP::containsKey)));
            btmType.setRevisionFlag(String.valueOf(ids.stream().anyMatch(BtmTypeFieldConstant.REVISION_MANAGE_FIELD_MAP::containsKey)));
            btmType.setSecretFlag(String.valueOf(ids.stream().anyMatch(BtmTypeFieldConstant.SECRET_MANAGE_FIELD_MAP::containsKey)));
            btmType.setConsistence(BooleanEnum.TRUE.getValue());
            btmList.add(btmType);
        });
        List<Attribute> existAttr = attributeService.list(Wrappers.<Attribute>query().lambda().in(Attribute::getKey, attributeIds));
        if (!CollectionUtils.isEmpty(btmList)){
            baseMapper.batchInsert(btmList);
        }
        if (!CollectionUtils.isEmpty(btmTypeAttributes)){
            btmTypeAttributeService.saveBatch(btmTypeAttributes);
        }
        BtmTypeFieldConstant.BASIC_FIELD_MAP.forEach((k,v) -> {
            idAttrMap.remove(k);
        });
        BtmTypeFieldConstant.LIFECYCLE_MANAGE_FIELD_MAP.forEach((k,v) -> {
            idAttrMap.remove(k);
        });
        BtmTypeFieldConstant.SECRET_MANAGE_FIELD_MAP.forEach((k,v) -> {
            idAttrMap.remove(k);
        });
        BtmTypeFieldConstant.REVISION_MANAGE_FIELD_MAP.forEach((k,v) -> {
            idAttrMap.remove(k);
        });
        if (CollectionUtils.isEmpty(existAttr)){
            attributeService.saveBatch(idAttrMap.values());
        }else {
            List<Attribute> addList = idAttrMap.values().stream().filter(a -> existAttr.stream().noneMatch(b -> StringUtils.equals(a.getKey(), b.getKey()))).collect(Collectors.toList());
            if (CollectionUtils.isEmpty(addList)) {
                attributeService.saveBatch(addList);
            }
        }
        return BtmTypeWrapper.build().listEntityVO(btmList);
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/BtmTypeWrapper.java
@@ -84,7 +84,7 @@
     */
    public BtmType entityBeforeSave(BtmType btmTypeDO) {
        btmTypeDO.setOid(VciBaseUtil.getPk());
        btmTypeDO.setBtmname("btmType");
        btmTypeDO.setBtmName("btmType");
        Date now  = new Date();
        String userAccount = AuthUtil.getUserAccount();
        btmTypeDO.setLastModifier(userAccount);
Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/AttributeMapper.xml
@@ -5,46 +5,64 @@
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="baseResultMap" type="com.vci.ubcs.omd.entity.Attribute">
        <id column="id" property="id"/>
        <result column="create_user" property="createUser"/>
        <result column="create_dept" property="createDept"/>
        <result column="create_time" property="createTime"/>
        <result column="update_user" property="updateUser"/>
        <result column="update_time" property="updateTime"/>
        <result column="status" property="status"/>
        <result column="is_deleted" property="isDeleted"/>
        <result column="tenant_id" property="tenantId"/>
        <result column="key" property="key"/>
        <result column="label" property="label"/>
        <result column="create_user" property="createUser" jdbcType="NUMERIC"/>
        <result column="create_dept" property="createDept" jdbcType="NUMERIC"/>
        <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
        <result column="update_user" property="updateUser" jdbcType="NUMERIC"/>
        <result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
        <result column="status" property="status" jdbcType="NUMERIC"/>
        <result column="is_deleted" property="isDeleted" jdbcType="NUMERIC"/>
        <result column="tenant_id" property="tenantId" jdbcType="NUMERIC"/>
        <result column="key" property="key" jdbcType="VARCHAR"/>
        <result column="label" property="label" jdbcType="VARCHAR"/>
        <result column="type_code" property="typeCode"/>
        <result column="type_key" property="typeKey"/>
        <result column="hashtag" property="hashtag" jdbcType="VARCHAR"/>
        <result column="description" property="description" jdbcType="VARCHAR"/>
        <result column="nullable" property="nullable"/>
        <result column="max_length" property="maxLength"/>
        <result column="precision" property="precision"/>
        <result column="refer_type_code" property="referTypeCode"/>
        <result column="refer_type_key" property="referTypeKey"/>
        <result column="refer_to_id" property="referToId" jdbcType="VARCHAR"/>
        <result column="refer_to_name" property="referToName"/>
        <result column="using_dict" property="usingDict"/>
        <result column="dict_code" property="dictCode"/>
        <result column="dict_key" property="dictKey"/>
        <result column="default_value" property="defaultValue"/>
        <result column="status" property="status"/>
        <result column="is_deleted" property="isDeleted"/>
        <result column="create_user" property="createUser" jdbcType="VARCHAR"/>
        <result column="create_dept" property="createDept" jdbcType="VARCHAR"/>
        <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
        <result column="update_user" property="updateUser" jdbcType="VARCHAR"/>
        <result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
        <result column="ts" property="ts" jdbcType="TIMESTAMP"/>
    </resultMap>
    <resultMap id="extraResultMap" type="com.vci.ubcs.omd.entity.Attribute">
        <result column="nullable" property="nullable" jdbcType="VARCHAR"/>
        <result column="max_length" property="maxLength" jdbcType="NUMERIC"/>
        <result column="precision" property="precision" jdbcType="NUMERIC"/>
        <result column="refer_to_id" property="referToId" jdbcType="NUMERIC"/>
        <result column="refer_type_code" property="referTypeCode" jdbcType="VARCHAR"/>
        <result column="refer_type_key" property="referTypeKey" jdbcType="VARCHAR"/>
        <result column="refer_to_name" property="referToName" jdbcType="VARCHAR"/>
<!--        <result column="using_dict" property="usingDict" jdbcType="VARCHAR"/>-->
<!--        <result column="dict_code" property="dictCode" jdbcType="VARCHAR"/>-->
<!--        <result column="dict_key" property="dictKey" jdbcType="VARCHAR"/>-->
        <result column="default_value" property="defaultValue" jdbcType="VARCHAR"/>
    </resultMap>
    <sql id="base_query_column">
        id, tenant_id ,key ,label ,type_code , type_key , hashtag , description, nullable , max_length, precision,
            refer_type_code, refer_type_key, refer_to_id, refer_to_name, using_dict, dict_code, dict_key, default_value,
            status, is_deleted, create_user, create_dept, create_time, update_user, update_time , ts
    </sql>
    <sql id="tableName">
        pl_omd_attribute
    </sql>
    <select id="selectAll" resultMap="baseResultMap">
        select
        <include refid="base_query_column"/>
        from
        <include refid="tableName"/>
    </select>
    <select id="selectByPrimaryKeyCollection" resultMap="baseResultMap">
        select DISTINCT <include refid="base_query_column" />
        from <include refid="tableName"/>
        <where>
            <foreach collection="oids" item="item" index="arrayindex" open=" OID in ( " close=")" >
                #{item,jdbcType=VARCHAR}
                <if test="(arrayindex != oids.size() -1)">
                    ,
                </if>
            </foreach>
        </where>
    </select>
</mapper>
Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/BtmTypeAttributeMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,111 @@
<?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.omd.mapper.BtmTypeAttributeMapper">
    <resultMap id="base_result_map" type="com.vci.ubcs.omd.entity.BtmTypeAttribute">
        <id column="oid" jdbcType="VARCHAR" property="oid"/>
        <result column="id" jdbcType="VARCHAR" property="id"/>
        <result column="name" jdbcType="VARCHAR" property="name"/>
        <result column="description" jdbcType="VARCHAR" property="description"/>
        <result column="pk_btm_type" jdbcType="VARCHAR" property="pkBtmType"/>
        <result column="attribute_length" jdbcType="DECIMAL" property="attributeLength"/>
        <result column="attr_data_type" jdbcType="VARCHAR" property="attrDataType"/>
        <result column="nullable_flag" jdbcType="VARCHAR" property="nullableFlag"/>
        <result column="default_value" jdbcType="VARCHAR" property="defaultValue"/>
        <result column="precision_length" jdbcType="DECIMAL" property="precisionLength"/>
        <result column="scale_length" property="scaleLength" jdbcType="DECIMAL"/>
        <result column="range" jdbcType="VARCHAR" property="range"/>
        <result column="refer_btm_type_id" jdbcType="VARCHAR" property="referBtmTypeId"/>
        <result column="refer_btm_type_name" jdbcType="VARCHAR" property="referBtmTypeName"/>
        <result column="enum_id" jdbcType="VARCHAR" property="enumId"/>
        <result column="enum_name" jdbcType="VARCHAR" property="enumName"/>
        <result column="btm_name" property="btmName" jdbcType="VARCHAR"/>
        <result column="owner" property="owner" jdbcType="VARCHAR"/>
        <result column="creator" jdbcType="VARCHAR" property="creator"/>
        <result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
        <result column="last_modifier" jdbcType="VARCHAR" property="lastModifier"/>
        <result column="last_modify_time" jdbcType="TIMESTAMP" property="lastModifyTime"/>
        <result column="ts" jdbcType="TIMESTAMP" property="ts"/>
    </resultMap>
    <sql id="base_query_column">
        oid, id, name, description, pk_btm_type, attribute_length, attr_data_type, nullable_flag,
        default_value, precision_length, scale_length, range, refer_btm_type_id, refer_btm_type_name,
        enum_id, enum_name, btm_name, owner, creator, create_time, last_modifier, last_modify_time, ts
    </sql>
    <sql id="tableName">
        pl_omd_btm_type_attribute
    </sql>
    <sql id="btmTypeTableName">
        pl_omd_btm_type
    </sql>
    <update id="batchUpdate" parameterType="java.util.List">
        <foreach collection="records" item="item" index="index" open="begin" close=";end;" separator=";">
            update <include refid="tableName"/> set
                id = #{item.id,jdbcType=VARCHAR},
                name = #{item.name,jdbcType=VARCHAR},
                descrption = #{item.decription,jdbcType=VARCHAR},
                pk_btm_type = #{item.pkBtmType,jdbcType=VARCHAR},
                attribute_length = #{item.attributeLength,jdbcType=DECIMAL},
                attr_data_type = #{item.attrDataType,jdbcType=VARCHAR},
                nullable_flag = #{item.nullableFlag,jdbcType=VARCHAR},
                default_value = #{item.defaultValue,jdbcType=VARCHAR},
                precision_length = #{item.precisionLength,jdbcType=DECIMAL},
                scale_length = #{item.scaleLength,jdbcType=DECIMAL},
                range = #{item.range,jdbcType=VARCHAR},
                refer_btm_type_id = #{item.referBtmTypeId,jdbcType=VARCHAR},
                refer_btm_type_name = #{item.referBtmTypeName,jdbcType=VARCHAR},
                enum_id = #{item.enumId,jdbcType=VARCHAR},
                enum_name = #{item.enumName,jdbcType=VARCHAR},
                btm_name = #{item.btmName,jdbcType=VARCHAR},
                owner = #{item.owner,jdbcType=VARCHAR},
                creator = #{item.creator,jdbcType=VARCHAR},
                create_time = #{item.createTime,jdbcType=TIMESTAMP},
                last_modifier = #{item.lastModifier,jdbcType=VARCHAR},
                last_modify_time = #{item.lastModifyTime,jdbcType=TIMESTAMP},
                ts = #{item.ts,jdbcType=TIMESTAMP}
        </foreach>
    </update>
    <delete id="batchDelete">
        delete from
        <include refid="tableName"/>
        <where>
            <foreach collection="records" item="item" index="arrayindex" open="oid in (" close=")">
                #{item,jdbcType=VARCHAR}
                <if test="(arrayindex != records.size() -1)">
                    ,
                </if>
            </foreach>
        </where>
    </delete>
    <select id="selectByBtmTypeIdAndAttributeIds" resultType="com.vci.ubcs.omd.entity.BtmTypeAttribute">
        select <include refid="base_query_column"/>
        from <include refid="tableName" />
        where PKBTMTYPE = (select oid from <include refid="btmTypeTableName"/> where lower(id) = lower(#{btmTypeId,jdbcType=VARCHAR}) )
        <if test="ids.size() > 0">
            and
            <foreach collection="ids" item="item" index="arrayindex" open=" lower(ID) in ( " close=")" >
                lower(#{item,jdbcType=VARCHAR})
                <if test="(arrayindex != ids.size() -1)">
                    ,
                </if>
            </foreach>
        </if>
    </select>
    <select id="selectByBtmTypeIds" resultType="com.vci.ubcs.omd.entity.BtmTypeAttribute">
        select DISTINCT <include refid="base_query_column" />
        from <include refid="tableName" />
        where PKBTMTYPE IN (
        select oid from <include refid="btmTypeTableName"/> where
        <foreach collection="ids" item="item" index="arrayindex" open=" lower(ID) in ( " close=")" >
            lower(#{item,jdbcType=VARCHAR})
            <if test="(arrayindex != ids.size() -1)">
                ,
            </if>
        </foreach>
        )
        order by id asc
    </select>
</mapper>
Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/BtmTypeMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,221 @@
<?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.omd.mapper.BtmTypeMapper">
    <resultMap id="BaseResultMap" type="com.vci.ubcs.omd.entity.BtmType">
        <id column="oid" jdbcType="VARCHAR" property="oid" />
        <result column="id" jdbcType="VARCHAR" property="id" />
        <result column="name" jdbcType="VARCHAR" property="name" />
        <result column="description" jdbcType="VARCHAR" property="description" />
        <result column="table_name" jdbcType="VARCHAR" property="tableName" />
        <result column="revision_rule_id" jdbcType="VARCHAR" property="revisionRuleId" />
        <result column="revision_rule_name" jdbcType="VARCHAR" property="revisionRuleName" />
        <result column="revision_sep" jdbcType="VARCHAR" property="revisionSep" />
        <result column="revision_flag" jdbcType="VARCHAR" property="revisionFlag" />
        <result column="input_revision_flag" jdbcType="VARCHAR" property="inputRevisionFlag" />
        <result column="secret_flag" jdbcType="VARCHAR" property="secretFlag" />
        <result column="abstract_flag" jdbcType="VARCHAR" property="abstractFlag" />
        <result column="impl_class" jdbcType="VARCHAR" property="implClass" />
        <result column="shape" jdbcType="VARCHAR" property="shape" />
        <result column="life_cycle_flag" jdbcType="VARCHAR" property="lifeCycleFlag" />
        <result column="life_cycle_id" jdbcType="VARCHAR" property="lifeCycleId" />
        <result column="life_cycle_name" jdbcType="VARCHAR" property="lifeCycleName" />
        <result column="version_rule" jdbcType="VARCHAR" property="versionRule" />
        <result column="sub_life_cycle_id" jdbcType="VARCHAR" property="subLifeCycleId" />
        <result column="sub_life_cycle_name" jdbcType="VARCHAR" property="subLifeCycleName" />
        <result column="view_flag" jdbcType="VARCHAR" property="viewFlag" />
        <result column="view_create_sql" jdbcType="VARCHAR" property="viewCreateSql" />
        <result column="btm_name" property="btmName" jdbcType="VARCHAR" />
        <result column="owner" property="owner" jdbcType="VARCHAR" />
        <result column="creator" jdbcType="VARCHAR" property="creator" />
        <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
        <result column="last_modifier" jdbcType="VARCHAR" property="lastModifier" />
        <result column="last_modify_time" jdbcType="TIMESTAMP" property="lastModifyTime" />
        <result column="ts" jdbcType="TIMESTAMP" property="ts" />
        <result column="domain" jdbcType="VARCHAR" property="domain" />
        <result column="consistence" jdbcType="VARCHAR" property="consistence" />
    </resultMap>
    <sql id="base_query_column">
        oid, id, name, description, table_name, revision_rule_id, revision_rule_name,revision_flag,
    revision_sep, input_revision_flag, secret_flag, abstract_flag, impl_class, shape,life_cycle_flag, life_cycle_id,life_cycle_name,
    version_rule,sub_life_cycle_id,sub_life_cycle_name, view_flag, view_create_sql,btm_name, owner, creator, create_time, last_modifier,
    last_modify_time, ts,domain,consistence
    </sql>
    <sql id="tableName">
        pl_omd_btm_type
    </sql>
    <insert id="batchInsert" useGeneratedKeys="false">
        insert into <include refid="tableName"/> (
            <include refid="base_query_column"/>
        )
        <foreach collection="records" item="item" separator="union all">
            (
            select #{item.oid,jdbcType=VARCHAR},
                   #{item.id,jdbcType=VARCHAR},
                   #{item.name,jdbcType=VARCHAR},
            #{item.description,jdbcType=VARCHAR},
            #{item.tableName,jdbcType=VARCHAR},
            #{item.revisionRuleId,jdbcType=VARCHAR},
            #{item.revisionRuleName,jdbcType=VARCHAR},
            #{item.revisionFlag,jdbcType=VARCHAR},
            #{item.revisionSep,jdbcType=VARCHAR},
            #{item.inputRevisionFlag,jdbcType=VARCHAR},
            #{item.secretFlag,jdbcType=VARCHAR},
            #{item.abstractFlag,jdbcType=VARCHAR},
            #{item.implClass,jdbcType=VARCHAR},
            #{item.shape,jdbcType=VARCHAR},
            #{item.lifeCycleFlag,jdbcType=VARCHAR},
            #{item.lifeCycleId,jdbcType=VARCHAR},
            #{item.lifeCycleName,jdbcType=VARCHAR},
            #{item.versionRule,jdbcType=VARCHAR},
            #{item.subLifeCycleId,jdbcType=VARCHAR},
            #{item.subLifeCycleName,jdbcType=VARCHAR},
            #{item.viewFlag,jdbcType=VARCHAR},
            #{item.viewCreateSql,jdbcType=VARCHAR},
            #{item.btmName,jdbcType=VARCHAR },
            #{item.owner,jdbcType=VARCHAR },
            #{item.creator,jdbcType=VARCHAR},
            #{item.createTime,jdbcType=TIMESTAMP},
            #{item.lastModifier,jdbcType=VARCHAR},
            #{item.lastModifyTime,jdbcType=TIMESTAMP},
            #{item.ts,jdbcType=TIMESTAMP},
            #{item.domain,jdbcType=VARCHAR},
            #{item.consistence,jdbcType=VARCHAR}
            from dual
            )
        </foreach>
    </insert>
    <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
        delete from <include refid="tableName"/>
        where OID = #{oid,jdbcType=VARCHAR}
    </delete>
    <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
        select <include refid="base_query_column"/>
        from <include refid="tableName" />
        where OID = #{oid,jdbcType=VARCHAR}
    </select>
    <select id="selectByPrimaryKeys" resultMap="BaseResultMap">
        select <include refid="base_query_column" />
        from <include refid="tableName" />
        where OID in ( ${oids,jdbcType=VARCHAR})
    </select>
    <select id="selectByPrimaryKeyCollection" resultMap="BaseResultMap">
        select <include refid="base_query_column" />
        from <include refid="tableName" />
        <where>
            <foreach collection="oids" item="item" index="arrayindex" open=" OID in ( " close=")" >
                #{item,jdbcType=VARCHAR}
                <if test="(arrayindex != oids.size() -1)">
                    ,
                </if>
            </foreach>
        </where>
    </select>
    <select id="selectByIdCollection" resultMap="BaseResultMap">
        select <include refid="base_query_column" />
        from <include refid="tableName" />
        <where>
            <foreach collection="ids" item="item" index="arrayindex" open=" lower(ID) in ( " close=")" >
                lower(#{item,jdbcType=VARCHAR})
                <if test="(arrayindex != ids.size() -1)">
                    ,
                </if>
            </foreach>
        </where>
    </select>
    <select id="selectAll" resultMap="BaseResultMap">
        select <include refid="base_query_column"/>
        from <include refid="tableName" />
    </select>
    <update id="updateByPrimaryKey" parameterType="com.vci.ubcs.omd.entity.BtmType">
        update <include refid="tableName"/>
        set id = #{id,jdbcType=VARCHAR},
            name = #{name,jdbcType=VARCHAR},
            description = #{description,jdbcType=VARCHAR},
            table_name = #{tableName,jdbcType=VARCHAR},
            revision_rule_id = #{revisionRuleId,jdbcType=VARCHAR},
            revision_flag = #{revisionFlag,jdbcType=VARCHAR},
            revision_rule_name = #{revisionRuleName,jdbcType=VARCHAR},
            revision_sep = #{revisionSep,jdbcType=VARCHAR},
            input_revision_flag = #{inputRevisionFlag,jdbcType=VARCHAR},
            secret_flag = #{secretFlag,jdbcType=VARCHAR},
            abstract_flag = #{abstractFlag,jdbcType=VARCHAR},
            impl_class = #{implClass,jdbcType=VARCHAR},
            shape = #{shape,jdbcType=VARCHAR},
            life_cycle_flag = #{lifeCycleFlag,jdbcType=VARCHAR},
            life_cycle_id = #{lifeCycleId,jdbcType=VARCHAR},
            life_cycle_name = #{lifeCycleName,jdbcType=VARCHAR},
            version_rule = #{versionRule,jdbcType=VARCHAR},
            sub_life_cycle_id = #{subLifeCycleId,jdbcType=VARCHAR},
            sub_life_cycle_name = #{subLifeCycleName,jdbcType=VARCHAR},
            view_flag = #{viewFlag,jdbcType=VARCHAR},
            view_create_sql = #{viewCreateSql,jdbcType=VARCHAR},
            btm_name =#{btmName,jdbcType=VARCHAR },
            owner = #{owner,jdbcType=VARCHAR },
            creator = #{creator,jdbcType=VARCHAR},
            create_time = #{createTime,jdbcType=TIMESTAMP},
            last_modifier = #{lastModifier,jdbcType=VARCHAR},
            last_modify_time = #{lastModifyTime,jdbcType=TIMESTAMP},
            ts = #{ts,jdbcType=TIMESTAMP},
            domain = #{domain,jdbcType=VARCHAR},
            consistence = #{consistence,jdbcType=VARCHAR}
        where OID = #{oid,jdbcType=VARCHAR}
    </update>
    <select id="selectNameByOid" resultType="java.lang.String">
        select NAME from <include refid="tableName" />
        where OID = #{oid,jdbcType=VARCHAR}
    </select>
    <select id="selectNameById" resultType="java.lang.String">
        select NAME from <include refid="tableName" />
        where ID = #{id,jdbcType=VARCHAR}
    </select>
    <select id="selectByAttributeOid" resultMap="BaseResultMap">
        select <include refid="base_query_column"/>
        from <include refid="tableName" /> where oid in (
        select DISTINCT PKBTMTYPE from <include refid="tableName"/>ATTRIBUTE
        where lower(ATTRIBUTEID) in (select id from vcibt_ATTRIBUTE where oid = #{pkAttribute,jdbcType=VARCHAR} ) )
    </select>
    <select id="selectByRevisionRuleOid" resultMap="BaseResultMap">
        select <include refid="base_query_column"/>
        from <include refid="tableName" /> where REVISIONRULEID in
        (select DISTINCT  id from  vcibt_REVISIONRULE where oid = #{pkRevisionRule,jdbcType=VARCHAR} )
    </select>
    <select id="selectByLifeCycleOid" resultMap="BaseResultMap">
        select <include refid="base_query_column"/>
        from <include refid="tableName" /> where LIFECYCLEID in
        (select DISTINCT  id from  vcibt_LIFECYCLE where oid = #{pkLifeCycle,jdbcType=VARCHAR} )
    </select>
    <delete id="batchDeleteByOids" >
        delete from <include refid="tableName" />
        <where>
            <foreach collection="oids" item="item" index="arrayindex" open=" oid in ( " close=")" >
                #{item,jdbcType=VARCHAR}
                <if test="(arrayindex != oids.size() -1)">
                    ,
                </if>
            </foreach>
        </where>
    </delete>
</mapper>
Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/ModifyAttributeInfoMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,47 @@
<?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.omd.mapper.ModifyAttributeInfoMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="baseResultMap" type="com.vci.ubcs.omd.entity.ModifyAttributeInfo">
        <id column="oid" property="oid" jdbcType="VARCHAR" />
        <result column="id" property="id" jdbcType="VARCHAR" />
        <result column="name" property="name" jdbcType="VARCHAR" />
        <result column="description" property="description" jdbcType="VARCHAR" />
        <result column="business_type" property="businessType" jdbcType="VARCHAR" />
        <result column="table_name" property="tableName" jdbcType="VARCHAR" />
        <result column="task_name" property="taskName" jdbcType="VARCHAR" />
        <result column="modify_column_reason" property="modifyColumnReason" jdbcType="VARCHAR" />
        <result column="order_modify_user_name" property="orderModifyUserName" jdbcType="VARCHAR" />
        <result column="order_modify_date" property="orderModifyDate" jdbcType="TIMESTAMP" />
        <result column="handle_finish_flag" property="handleFinishFlag" jdbcType="VARCHAR" />
        <result column="handle_user_name" property="handleUserName" jdbcType="VARCHAR" />
        <result column="handle_date" property="handleDate" jdbcType="TIMESTAMP" />
        <result column="handle_result" property="handleResult" jdbcType="VARCHAR" />
        <result column="btm_name" property="btmname" jdbcType="VARCHAR" />
        <result column="creator" property="creator" jdbcType="VARCHAR" />
        <result column="create_time" property="createTime" jdbcType="TIMESTAMP" />
        <result column="TS" property="ts" jdbcType="TIMESTAMP" />
        <result column="add_attributes" property="addAttributes" jdbcType="CLOB" />
        <result column="modify_attributes" property="modifyAttributes" jdbcType="CLOB" />
        <result column="delete_attributes" property="deleteAttributes" jdbcType="CLOB" />
        <result column="before_modify_attributes" property="beforeModifyAttributes" jdbcType="CLOB" />
    </resultMap>
    <resultMap id="extraResultMap" type="com.vci.ubcs.omd.entity.Attribute">
    </resultMap>
    <sql id="base_query_column">
        oid, id, name, description, business_type, table_name, task_name, modify_column_reason, order_modify_user_name,
        order_modify_date, handle_finish_flag, handle_user_name, handle_date, handle_result, btm_name, creator, create_time,
        ts, add_attributes, modify_attributes, delete_attributes, before_modify_attributes
    </sql>
    <sql id="tableName">
        pl_omd_modify_attribute_info
    </sql>
</mapper>