From 41c256180e5e7900c88b71a9f22590db21f87a7a Mon Sep 17 00:00:00 2001
From: lihang <lihang@vci-tech.com>
Date: 星期二, 09 五月 2023 16:54:36 +0800
Subject: [PATCH] 业务类型修正

---
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/repeater/DomainRepeater.java               |   75 ++-
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/constant/BtmTypeFieldConstant.java |    8 
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/BtmTypeVO.java                  |    5 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/BtmTypeController.java          |   75 +++
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/BtmTypeAttribute.java       |    4 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/BtmTypeMapper.xml                               |  221 +++++++++++
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/AttributeServiceImpl.java     |    2 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/BtmTypeMapper.java                  |   14 
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/BtmTypeTreeVO.java              |   27 +
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmAttributeServiceImpl.java  |   12 
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/Attribute.java              |    2 
 Source/UBCS-WEB/src/api/omd/btmType.js                                                                      |   43 ++
 Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/service/impl/DdlServiceImpl.java           |    7 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/AttributeMapper.java                |    7 
 Source/UBCS-WEB/src/views/modeling/original.vue                                                             |    4 
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/ModifyAttributeInfo.java    |    5 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/AttributeMapper.xml                             |   76 ++-
 Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/BtmTypeAttributeMapper.xml                      |  111 +++++
 Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue                                                          |  112 +++++
 Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/processor/dll/DllMapperProcessor.java      |   16 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IBtmTypeAttributeService.java      |    6 
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/BtmType.java                |    2 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/ModifyAttributeInfoMapper.xml                   |   47 ++
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IBtmTypeService.java               |   22 +
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/BtmTypeWrapper.java                |    2 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/BtmTypeAttributeMapper.java         |    4 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java       |  184 +++++++++
 27 files changed, 974 insertions(+), 119 deletions(-)

diff --git a/Source/UBCS-WEB/src/api/omd/btmType.js b/Source/UBCS-WEB/src/api/omd/btmType.js
new file mode 100644
index 0000000..1d9218e
--- /dev/null
+++ b/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
+        }
+    })
+}
\ No newline at end of file
diff --git a/Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue b/Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue
new file mode 100644
index 0000000..5a75644
--- /dev/null
+++ b/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>
\ No newline at end of file
diff --git a/Source/UBCS-WEB/src/views/modeling/original.vue b/Source/UBCS-WEB/src/views/modeling/original.vue
index 8597d3e..818ba05 100644
--- a/Source/UBCS-WEB/src/views/modeling/original.vue
+++ b/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) {
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/constant/BtmTypeFieldConstant.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/constant/BtmTypeFieldConstant.java
index 67c34cc..674618c 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/constant/BtmTypeFieldConstant.java
+++ b/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() {
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/Attribute.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/Attribute.java
index 8abd472..6d45916 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/Attribute.java
+++ b/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;
 
 	/**
 	 * 鍙傜収瀵硅薄鐨勫悕绉�
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/BtmType.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/BtmType.java
index c221329..e6c83e0 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/BtmType.java
+++ b/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;
 
     /**
      * 鎷ユ湁鑰�
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/BtmTypeAttribute.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/BtmTypeAttribute.java
index 28738a4..9d902d0 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/BtmTypeAttribute.java
+++ b/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;
 
     /**
      * 鎷ユ湁鑰�
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/ModifyAttributeInfo.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/ModifyAttributeInfo.java
index 6526d96..82a2d1c 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/ModifyAttributeInfo.java
+++ b/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;
 }
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/BtmTypeTreeVO.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/BtmTypeTreeVO.java
new file mode 100644
index 0000000..e0d2770
--- /dev/null
+++ b/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;
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/BtmTypeVO.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/BtmTypeVO.java
index 4c4f54e..74bee2c 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/BtmTypeVO.java
+++ b/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;
 
     /**
      * 鎷ユ湁鑰�
diff --git a/Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/processor/dll/DllMapperProcessor.java b/Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/processor/dll/DllMapperProcessor.java
index b211b73..eab3885 100644
--- a/Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/processor/dll/DllMapperProcessor.java
+++ b/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;
diff --git a/Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/service/impl/DdlServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/service/impl/DdlServiceImpl.java
index f493a6b..6bd64b9 100644
--- a/Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/service/impl/DdlServiceImpl.java
+++ b/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);
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/BtmTypeController.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/BtmTypeController.java
index 698a29a..87a2030 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/BtmTypeController.java
+++ b/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());
 		}
 	}
+
+	/**
+	 * 鎸塪omain鍒嗙粍锛屾煡璇笟鍔$被鍨嬬殑鏍戝舰缁撴瀯
+	 */
+	@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));
+	}
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/AttributeMapper.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/AttributeMapper.java
index 45f779a..c0084a2 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/AttributeMapper.java
+++ b/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 鏌ヨ缁撴灉
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/BtmTypeAttributeMapper.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/BtmTypeAttributeMapper.java
index 867a903..23db8b1 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/BtmTypeAttributeMapper.java
+++ b/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);
 
 	/**
 	 * 鑾峰彇涓氬姟绫诲瀷涓殑鎸囧畾灞炴��
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/BtmTypeMapper.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/BtmTypeMapper.java
index 035e810..7d153eb 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/BtmTypeMapper.java
+++ b/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);
 
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/repeater/DomainRepeater.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/repeater/DomainRepeater.java
index 24e772c..e7ad4cc 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/repeater/DomainRepeater.java
+++ b/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");
 	}
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IBtmTypeAttributeService.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IBtmTypeAttributeService.java
index 372316a..2e06c1f 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IBtmTypeAttributeService.java
+++ b/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 鏌ヨ缁撴灉
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IBtmTypeService.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IBtmTypeService.java
index f59367e..d47082a 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IBtmTypeService.java
+++ b/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);
+
+	/**
+	 * 鎸塪omain鍒嗙粍锛屾煡璇笟鍔$被鍨嬪睘鎬х粨鏋�
+	 * @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);
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/AttributeServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/AttributeServiceImpl.java
index a2deddc..b4f9ac5 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/AttributeServiceImpl.java
+++ b/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));
 	}
 
 	/**
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmAttributeServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmAttributeServiceImpl.java
index 880efbc..a37c01c 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmAttributeServiceImpl.java
+++ b/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);
 	}
 
 	/**
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java
index 994199f..8c7215d 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java
+++ b/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;
 	}
+
+	/**
+	 * 鎸塪omain鍒嗙粍锛屾煡璇笟鍔$被鍨嬪睘鎬х粨鏋�
+	 *
+	 * @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);
+	}
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/BtmTypeWrapper.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/BtmTypeWrapper.java
index 744366a..4a60ab2 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/BtmTypeWrapper.java
+++ b/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);
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/AttributeMapper.xml b/Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/AttributeMapper.xml
index 89528cf..7da922c 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/AttributeMapper.xml
+++ b/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>
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/BtmTypeAttributeMapper.xml b/Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/BtmTypeAttributeMapper.xml
new file mode 100644
index 0000000..7ea52e2
--- /dev/null
+++ b/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>
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/BtmTypeMapper.xml b/Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/BtmTypeMapper.xml
new file mode 100644
index 0000000..548cc12
--- /dev/null
+++ b/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>
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/ModifyAttributeInfoMapper.xml b/Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/ModifyAttributeInfoMapper.xml
new file mode 100644
index 0000000..d7b80ff
--- /dev/null
+++ b/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>

--
Gitblit v1.9.3