From 087511862a295eda0cf808a92f2ed2df348d54ff Mon Sep 17 00:00:00 2001
From: fujunling <2984387807@qq.com>
Date: 星期五, 26 五月 2023 19:00:23 +0800
Subject: [PATCH] 动态表单

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreViewModelServiceImpl.java              |   54 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreAttrMappingService.java                    |   14 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreViewModelDTO.java                       |   19 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/result/DataVO.java           |   28 
 Source/UBCS-WEB/src/api/GetItem.js                                                                                               |   21 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreViewWrapper.java                            |   50 
 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreClassifyMapper.xml                                        |   48 
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/RevisionRule.java                                |    2 
 Source/UBCS-WEB/vue.config.js                                                                                                    |    3 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/CodeRuleVO.java           |    5 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/DockingGroupDataVO.java      |   31 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreClassifyDTO.java                        |   15 
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/BtmTypeAttribute.java                            |    2 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreMetaAttrService.java                       |    5 
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/Status.java                                      |    2 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/result/DataObjectVO.java     |   36 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/QueryClassifyVO.java      |   23 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreApplyFormDTO.java                       |   33 
 Source/UBCS-WEB/src/views/flow/flowPath.vue                                                                                      |  188 ++
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/QueryLibraryVO.java       |   39 
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LinkType.java                                    |    2 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/MdmInterJtClient.java                                   |    4 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreApplyFormVO.java               |    7 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreAttrMappingServiceImpl.java            |  434 +++++
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/AttributeServiceImpl.java                          |   11 
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LinkTypeAttribute.java                           |    2 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/DockingViewVO.java           |   29 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/ResultData.java           |   45 
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleLine.java                               |    4 
 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreMetaAttrMapper.xml                                        |    2 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/ResultDataVO.java            |   15 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreMetaAttrWrapper.java                        |   55 
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/Attribute.java                                   |    2 
 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreViewMapper.xml                                            |    2 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreViewModelVO.java               |   18 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/ClassifyVO.java           |  141 +
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/ModifyAttributeInfo.java                         |    2 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/AttributeController.java                             |    2 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreClassifyService.java                       |   13 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreClassifyWrapper.java                        |   50 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingLogeWrapper.java                               |   51 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreClassifyMapper.java                          |   22 
 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/application-dev.yml                                                        |    4 
 Source/UBCS-WEB/src/main.js                                                                                                      |    2 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreAttrRangeWrapper.java                       |   26 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/DockingMainData.java         |   47 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/IMdmInterJtClient.java                                  |   31 
 Source/UBCS-WEB/src/components/Crud/Crud.vue                                                                                     |   85 +
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/LibraryVO.java            |   52 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/ResultClassifyVO.java     |   21 
 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreAttrMappingMapper.xml                                     |    2 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreClassifyServiceImpl.java               |   91 +
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/result/ResultDataObject.java |   48 
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleLineEvent.java                          |    2 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/AttributeWrapper.java                                   |   38 
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleRule.java                               |    2 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreAttrMappingWrapper.java                     |   24 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreApplyFormWrapper.java                       |   50 
 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingLogeMapper.xml                                               |    2 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreMetaAttrServiceImpl.java               |   19 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreClassifyVO.java                |   17 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingPreApplyForm.java                       |   11 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/QueryData.java            |   45 
 Source/UBCS-WEB/src/api/omd/btmType.js                                                                                           |   12 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/DockingPreApplyCodeController.java                 |   73 
 Source/UBCS-WEB/src/views/modeling/original.vue                                                                                  |  553 +----
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreViewModelService.java                      |   10 
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleEvent.java                              |    2 
 Source/UBCS-WEB/src/components/FormTemplate/index.vue                                                                            | 1579 +++++++++---------
 Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/constant/LauncherConstant.java                                         |    2 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java                        |    2 
 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreAttrRangeMapper.xml                                       |    2 
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/BtmType.java                                     |    2 
 Source/UBCS-WEB/src/views/modeling/originalAdd.vue                                                                               |  452 +++++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/MdmBtmTypeConstant.java                              |   34 
 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreApplyFormMapper.xml                                       |    6 
 76 files changed, 3,588 insertions(+), 1,291 deletions(-)

diff --git a/Source/UBCS-WEB/src/api/GetItem.js b/Source/UBCS-WEB/src/api/GetItem.js
new file mode 100644
index 0000000..e3b471f
--- /dev/null
+++ b/Source/UBCS-WEB/src/api/GetItem.js
@@ -0,0 +1,21 @@
+import request from "@/router/axios";
+
+export const MasterTable =(params)=>{
+  return request({
+    url: 'api/ubcs-code/ubcs-code//mdmEngineController/getUIInfoByClassifyOid',
+    method: 'get',
+    params:{
+      ...params
+    }
+  })
+}
+
+export const TableData =(params)=>{
+  return request({
+    url: 'api/ubcs-code/ubcs-code//mdmEngineController/gridTableDataByClassifyOid',
+    method: 'get',
+    params:{
+      ...params
+    }
+  })
+}
diff --git a/Source/UBCS-WEB/src/api/omd/btmType.js b/Source/UBCS-WEB/src/api/omd/btmType.js
index 86d043c..11938d0 100644
--- a/Source/UBCS-WEB/src/api/omd/btmType.js
+++ b/Source/UBCS-WEB/src/api/omd/btmType.js
@@ -56,4 +56,16 @@
         method: 'post',
         data: btmType
     })
+}
+
+export const btmPage = (current,size,params) => {
+    return request ({
+        url: '/api/ubcs-omd/btm-type/page',
+        method: 'get',
+        params: {
+            current,
+            size,
+            ...params
+        }
+    })
 }
\ No newline at end of file
diff --git a/Source/UBCS-WEB/src/components/Crud/Crud.vue b/Source/UBCS-WEB/src/components/Crud/Crud.vue
index 30b5efe..90412c5 100644
--- a/Source/UBCS-WEB/src/components/Crud/Crud.vue
+++ b/Source/UBCS-WEB/src/components/Crud/Crud.vue
@@ -1,15 +1,94 @@
 <template>
-  <avue-crud :data="data" ></avue-crud>
+<basic-container style="height: 750px">
+  <avue-crud ref="crud" :data="data" :option="option" style="height: 750px" @sort-change="sortChange"></avue-crud>
+</basic-container>
 </template>
 
 <script>
+import { MasterTable,TableData } from "@/api/GetItem";
 export default {
   name: "Crud.vue",
   data(){
     return{
-      data:[],
-      option:{}
+      data:[
+        {
+          zhiliangbz:"111",
+        },
+        {
+          xinghaoguige:"1121",
+        },
+      ],
+      option:{
+        //榛樿楂樺害,
+        align:'center',
+        menuAlign:'center',
+        column:[]
+      },
+      List:[],
+      columnType: {
+        text: "input",
+        combox: "select",
+        truefalse: "switch",
+        number: "number",
+        datetime: "datetime",
+      },
     }
+  },
+  created() {
+   this.CrudHeaderRend();
+   this.CrudRend()
+  },
+  activated() {
+    this.doLayout()
+  },
+  methods:{
+    doLayout() {
+      this.$nextTick(() => {
+        this.$refs.crud.doLayout();
+      });
+    },
+    CrudHeaderRend(){
+      MasterTable({codeClassifyOid:"D9CF223F-317D-71EB-BD11-433A94CAD9F3",functionId: 5,_: 1685067339479}).then(res=>{
+        this.List=res.data.tableDefineVO.cols[0];
+        this.List.forEach(item=>{
+          console.log(item)
+          let columnItem={
+            label:item.title,
+            prop:item.field,
+            type:this.columnType[item.type],
+            sortable:item.sort,
+            width:item.minWidth
+          };
+          this.option.column.push(columnItem);
+
+        })
+      })
+    },
+    CrudRend(){
+      TableData({templateOid: "A12826E4-2B66-6D56-DE30-92BB1D7F607F",
+        codeClassifyOid: "D9CF223F-317D-71EB-BD11-433A94CAD9F3",
+        page: 1,
+        limit: 9,
+        _: 1685089123575
+      }).then(res=>{
+        console.log(res)
+        this.data=res.data.data
+      })
+    },
+    // 鎺掑簭
+    sortChange(val){
+      console.log(val)
+
+      // TableData(  {
+      //   templateOid: "A12826E4-2B66-6D56-DE30-92BB1D7F607F",
+      //   codeClassifyOid: "D9CF223F-317D-71EB-BD11-433A94CAD9F3",
+      //   order:"desc",
+      //   sort:val.prop
+      // }).then(res=>{
+      //   console.log(res.data.data)
+      //   this.data=res.data.data
+      // })
+    },
   }
 }
 </script>
diff --git a/Source/UBCS-WEB/src/components/FormTemplate/index.vue b/Source/UBCS-WEB/src/components/FormTemplate/index.vue
index 108f8a0..9c3b592 100644
--- a/Source/UBCS-WEB/src/components/FormTemplate/index.vue
+++ b/Source/UBCS-WEB/src/components/FormTemplate/index.vue
@@ -1,790 +1,789 @@
-<template>
-  <el-dialog
-    :visible.sync="dialogVisible"
-    v-dialogDrag
-    top="0vh"
-    title="鎻愮ず"
-    class="avue-dialog avue-dialog--top"
-    :width="dialogOptions.width"
-    append-to-body
-  >
-    <avue-form
-      v-model="form"
-      :option="option"
-      v-loading="loading"
-      ref="form"
-      :key="index"
-    >
-      <template :slot="item.prop + 'Label'" v-for="item in option.column">
-        <span>{{ item.label }} </span>
-        <el-tooltip
-          v-if="item.keyAttr"
-          class="item"
-          effect="dark"
-          content="璇ュ睘鎬т负鍏抽敭灞炴��"
-          placement="top-start"
-        >
-          <i class="el-icon-star-on key_attr_icon"></i>
-        </el-tooltip>
-        <el-tooltip
-          v-if="item.tip"
-          class="item"
-          effect="dark"
-          :content="item.tip"
-          placement="top-start"
-        >
-          <i class="el-icon-warning"></i>
-        </el-tooltip>
-      </template>
-    </avue-form>
-    <div class="avue-dialog__footer">
-      <el-button @click="close()">鍙� 娑�</el-button>
-      <el-button @click="close()" type="primary">纭� 瀹�</el-button>
-    </div>
-    <el-dialog title="娴嬭瘯鍙傜収" :visible.sync="visible2" append-to-body>
-      <div style="height: 100px;">
-        <p>閮ㄩ棬鏁版嵁 {depName: '鎴戞槸閮ㄩ棬鍚嶇О', depId: '鎴戞槸閮ㄩ棬id'}</p>
-      </div>
-      <div class="avue-dialog__footer">
-        <el-button @click="visible2 = false">鍙� 娑�</el-button>
-        <el-button @click="czSubmit" type="primary">纭� 瀹�</el-button>
-      </div>
-    </el-dialog>
-  </el-dialog>
-</template>
-
-<script>
-import { getFormTemplate } from "../../api/common";
-import { getDictionary } from "../../api/system/dict";
-export default {
-  name: "FormTemplate",
-  props: {
-    visible: {
-      type: Boolean,
-      default: false,
-    },
-    disabledProp: {
-      type: Array,
-      default: () => ["id"],
-    },
-  },
-  data() {
-    return {
-      index: 0,
-      form: {},
-      loading: false,
-      dialogOptions: {
-        width: "60%",
-      },
-      option: {
-        emptyBtn: false,
-        submitBtn: false,
-        labelWidth: "120",
-        column: [],
-      },
-      templateData: {},
-      columnType: {
-        text: "input",
-        combox: "select",
-        truefalse: "switch",
-        number: "number",
-        textarea: "textarea",
-        datetime: "datetime",
-        date: "date",
-        file: "upload",
-      },
-      // 鍋囨暟鎹�
-      testItems: [
-        {
-          comboxKey: null,
-          customClass: null,
-          data: null,
-          dateFormate: "",
-          defaultValue: "",
-          displayExtension: null,
-          extendAttrMap: null,
-          extendAttrString: null,
-          field: "id",
-          hidden: false,
-          keyAttr: false,
-          prefix: "",
-          readOnly: false,
-          referConfig: null,
-          required: false,
-          selectLibFlag: "",
-          showField: null,
-          suffix: "",
-          text: "浼犲�肩鐢ㄥ姛鑳�",
-          tooltips: "",
-          type: "combox",
-          unique: false,
-          verify: "",
-        },
-        {
-          customClass: null,
-          data: null,
-          dateFormate: "",
-          defaultValue: "",
-          displayExtension: null,
-          extendAttrMap: null,
-          extendAttrString: null,
-          field: "state",
-          hidden: false,
-          keyAttr: false,
-          prefix: "",
-          readOnly: true,
-          referConfig: null,
-          required: false,
-          selectLibFlag: "",
-          showField: null,
-          suffix: "",
-          text: "鎺ュ彛绂佺敤鍔熻兘",
-          tooltips: "",
-          type: "combox",
-          unique: false,
-          verify: "",
-        },
-        {
-          comboxKey: null,
-          customClass: null,
-          data: null,
-          dateFormate: "",
-          defaultValue: "",
-          displayExtension: null,
-          extendAttrMap: null,
-          extendAttrString: null,
-          field: "oldcode",
-          hidden: false,
-          keyAttr: false,
-          prefix: "el-icon-search",
-          readOnly: false,
-          referConfig: null,
-          required: false,
-          selectLibFlag: "",
-          showField: null,
-          suffix: "鏂囨湰鍚庣紑娴嬭瘯",
-          text: "鍓嶅悗缂�鍔熻兘",
-          tooltips: "",
-          type: "text",
-          unique: false,
-          verify: "",
-        },
-        {
-          comboxKey: null,
-          customClass: null,
-          data: null,
-          dateFormate: "",
-          defaultValue: "",
-          displayExtension: null,
-          extendAttrMap: null,
-          extendAttrString: null,
-          field: "materialname",
-          hidden: false,
-          keyAttr: false,
-          prefix: "",
-          readOnly: false,
-          referConfig: null,
-          required: true,
-          selectLibFlag: "",
-          showField: null,
-          suffix: "",
-          text: "姝e垯鏍¢獙鍔熻兘",
-          tooltips: "璇疯緭鍏ユ暟瀛�",
-          type: "text",
-          unique: false,
-          verify: "/[0-9]/",
-        },
-        {
-          comboxKey: null,
-          customClass: null,
-          data: [
-            {
-              attributes: {},
-              key: "model_type",
-              value: "妯″瀷",
-            },
-            {
-              attributes: {},
-              key: "part_type",
-              value: "闆朵欢",
-            },
-          ],
-          dateFormate: "",
-          defaultValue: "",
-          displayExtension: null,
-          extendAttrMap: null,
-          extendAttrString: null,
-          field: "dataSelect",
-          hidden: false,
-          keyAttr: false,
-          prefix: "",
-          readOnly: false,
-          referConfig: null,
-          required: false,
-          selectLibFlag: "",
-          showField: null,
-          suffix: "",
-          text: "鐩存帴杩斿洖涓嬫媺",
-          tooltips: "",
-          type: "combox",
-          unique: false,
-          verify: "",
-        },
-        {
-          comboxKey: "formTemplateTest",
-          customClass: null,
-          data: [],
-          dateFormate: "",
-          defaultValue: "",
-          displayExtension: null,
-          extendAttrMap: null,
-          extendAttrString: null,
-          field: "dictSelect",
-          hidden: false,
-          keyAttr: false,
-          prefix: "",
-          readOnly: false,
-          referConfig: null,
-          required: false,
-          selectLibFlag: "",
-          showField: null,
-          suffix: "",
-          text: "瀛楀吀杩斿洖涓嬫媺",
-          tooltips: "",
-          type: "combox",
-          unique: false,
-          verify: "",
-        },
-        {
-          comboxKey: null,
-          customClass: null,
-          data: null,
-          dateFormate: "",
-          defaultValue: "",
-          displayExtension: null,
-          extendAttrMap: null,
-          extendAttrString: null,
-          field: "firstfl",
-          hidden: false,
-          keyAttr: false,
-          prefix: "",
-          readOnly: false,
-          referConfig: null,
-          required: false,
-          selectLibFlag: "",
-          showField: null,
-          suffix: "",
-          text: "鏁板瓧杈撳叆妗�",
-          tooltips: "",
-          type: "number",
-          unique: false,
-          verify: "",
-        },
-        {
-          comboxKey: null,
-          customClass: null,
-          data: null,
-          dateFormate: "yyyy-MM-dd HH:mm:ss",
-          defaultValue: "",
-          displayExtension: null,
-          extendAttrMap: null,
-          extendAttrString: null,
-          field: "datetime",
-          hidden: false,
-          keyAttr: false,
-          prefix: "",
-          readOnly: false,
-          referConfig: null,
-          required: false,
-          selectLibFlag: "",
-          showField: null,
-          suffix: "",
-          text: "鏃ユ湡鏃堕棿閫夋嫨鍣�",
-          tooltips: "",
-          type: "datetime",
-          unique: false,
-          verify: "",
-        },
-        {
-          comboxKey: null,
-          customClass: null,
-          data: null,
-          dateFormate: "",
-          defaultValue: "",
-          displayExtension: null,
-          extendAttrMap: null,
-          extendAttrString: null,
-          field: "time",
-          hidden: false,
-          keyAttr: false,
-          prefix: "",
-          readOnly: false,
-          referConfig: null,
-          required: false,
-          selectLibFlag: "",
-          showField: null,
-          suffix: "",
-          text: "鏃堕棿閫夋嫨鍣�",
-          tooltips: "",
-          type: "date",
-          unique: false,
-          verify: "",
-        },
-        {
-          comboxKey: null,
-          customClass: null,
-          data: null,
-          dateFormate: "",
-          defaultValue: "false",
-          displayExtension: null,
-          extendAttrMap: null,
-          extendAttrString: null,
-          field: "xiaoshouwl",
-          hidden: false,
-          keyAttr: false,
-          prefix: "",
-          readOnly: false,
-          referConfig: null,
-          required: false,
-          selectLibFlag: "",
-          showField: null,
-          suffix: "",
-          text: "寮�鍏�",
-          tooltips: "",
-          type: "truefalse",
-          unique: false,
-          verify: "",
-        },
-        {
-          comboxKey: null,
-          customClass: null,
-          data: null,
-          dateFormate: "",
-          defaultValue: "鎴戞槸榛樿鍊�",
-          displayExtension: null,
-          extendAttrMap: null,
-          extendAttrString: null,
-          field: "tuhao",
-          hidden: false,
-          keyAttr: false,
-          prefix: "",
-          readOnly: false,
-          referConfig: null,
-          required: false,
-          selectLibFlag: "",
-          showField: null,
-          suffix: "",
-          text: "榛樿鍊煎姛鑳�",
-          tooltips: "鎻愮ず",
-          type: "text",
-          unique: false,
-          verify: "",
-        },
-        {
-          comboxKey: null,
-          customClass: null,
-          data: null,
-          dateFormate: "",
-          defaultValue: "",
-          displayExtension: null,
-          extendAttrMap: null,
-          extendAttrString: null,
-          field: "xinghaoguige",
-          hidden: false,
-          keyAttr: true,
-          prefix: "",
-          readOnly: false,
-          referConfig: null,
-          required: false,
-          selectLibFlag: "",
-          showField: null,
-          suffix: "",
-          text: "灞炴�у叧閿��",
-          tooltips: "",
-          type: "text",
-          unique: false,
-          verify: "",
-        },
-        {
-          comboxKey: null,
-          customClass: null,
-          data: null,
-          dateFormate: "",
-          defaultValue: "",
-          displayExtension: null,
-          extendAttrMap: null,
-          extendAttrString: null,
-          field: "jiliangdw",
-          hidden: false,
-          keyAttr: false,
-          prefix: "",
-          readOnly: false,
-          tip: "鎴戞槸鎻愮ず鍔熻兘",
-          required: false,
-          selectLibFlag: "",
-          showField: "jiliangdwname",
-          suffix: "",
-          text: "鎻愮ず鍔熻兘",
-          tooltips: "",
-          type: "text",
-          unique: false,
-          verify: "",
-        },
-        {
-          comboxKey: null,
-          customClass: null,
-          data: null,
-          dateFormate: "",
-          defaultValue: "",
-          displayExtension: "this.form.sum = this.form.fun1 + this.form.fun2",
-          extendAttrMap: null,
-          extendAttrString: null,
-          field: "fun1",
-          hidden: false,
-          keyAttr: false,
-          prefix: "",
-          readOnly: false,
-          referConfig: null,
-          required: false,
-          selectLibFlag: "",
-          showField: null,
-          suffix: "",
-          text: "鍙傛暟1娴嬭瘯js",
-          tooltips: "",
-          type: "text",
-          unique: false,
-          verify: "",
-        },
-        {
-          comboxKey: null,
-          customClass: null,
-          data: null,
-          dateFormate: "",
-          defaultValue: "",
-          displayExtension: "this.form.sum = this.form.fun1 + this.form.fun2",
-          extendAttrMap: null,
-          extendAttrString: null,
-          field: "fun2",
-          hidden: false,
-          keyAttr: false,
-          prefix: "",
-          readOnly: false,
-          required: false,
-          selectLibFlag: "",
-          showField: "hesuanfenleiname",
-          suffix: "",
-          text: "鍙傛暟2娴嬭瘯js",
-          tooltips: "",
-          type: "text",
-          unique: false,
-          verify: "",
-        },
-        {
-          comboxKey: null,
-          customClass: null,
-          data: null,
-          dateFormate: "",
-          defaultValue: "",
-          displayExtension: "",
-          extendAttrMap: null,
-          extendAttrString: null,
-          field: "sum",
-          hidden: false,
-          keyAttr: false,
-          prefix: "",
-          readOnly: true,
-          required: false,
-          selectLibFlag: "",
-          showField: "",
-          suffix: "",
-          text: "鍙傛暟1鍙傛暟2姹傚拰",
-          tooltips: "",
-          type: "text",
-          unique: false,
-          verify: "",
-        },
-        {
-          comboxKey: null,
-          customClass: null,
-          data: null,
-          dateFormate: "",
-          defaultValue: "",
-          displayExtension: null,
-          extendAttrMap: null,
-          extendAttrString: null,
-          field: "textarea",
-          hidden: false,
-          keyAttr: false,
-          prefix: "",
-          readOnly: false,
-          referConfig: null,
-          required: false,
-          selectLibFlag: "",
-          showField: null,
-          suffix: "",
-          text: "鏂囨湰鍩�",
-          tooltips: "",
-          type: "textarea",
-          unique: false,
-          verify: "",
-        },
-        {
-          comboxKey: null,
-          customClass: null,
-          data: null,
-          dateFormate: "",
-          defaultValue: "",
-          displayExtension: null,
-          extendAttrMap: null,
-          extendAttrString: null,
-          field: "beizhushuoming",
-          hidden: false,
-          keyAttr: false,
-          prefix: "",
-          readOnly: false,
-          referConfig: null,
-          required: false,
-          selectLibFlag: "",
-          showField: null,
-          suffix: "",
-          text: "鏂囦欢鍔熻兘",
-          tooltips: "",
-          type: "file",
-          unique: false,
-          verify: "",
-        },
-        {
-          comboxKey: null,
-          customClass: null,
-          data: null,
-          dateFormate: "",
-          defaultValue: "",
-          displayExtension: null,
-          extendAttrMap: null,
-          extendAttrString: null,
-          field: "cz",
-          hidden: false,
-          keyAttr: false,
-          prefix: "",
-          readOnly: true,
-          referConfig: true,
-          required: false,
-          selectLibFlag: "",
-          showField: "depId",
-          suffix: "",
-          text: "鍙傜収",
-          tooltips: "",
-          type: "text",
-          unique: false,
-          verify: "",
-        },
-      ],
-      visible2: false,
-    };
-  },
-  created() {
-  },
-  computed: {
-    dialogVisible: {
-      get() {
-        return this.visible;
-      },
-      set(val) {
-        this.$emit("update:visible", val);
-      },
-    },
-  },
-  methods: {
-    getFormTemplate() {
-      this.loading = true;
-      getFormTemplate({
-        templateOid: "78B8C7C5-A042-0B96-FE6D-65421451782A",
-        codeClassifyOid: "4524E801-6CC6-92E8-1AC3-2AB9604E8F96",
-        page: 1,
-        limit: 30,
-      })
-        .then((res) => {
-          if (res.status === 200) {
-            this.templateData = res.data;
-            this.templateRender();
-          }
-          this.loading = false;
-          console.log(res.data);
-        })
-        .catch((err) => {
-          this.loading = false;
-          console.log(err);
-        });
-    },
-    templateRender() {
-      // const items = this.templateData.formDefineVO.items;
-      const items = this.testItems;
-      let column = [];
-      let dictKeys = [];
-      items.forEach((item) => {
-        // 闅愯棌琛ㄥ崟鍏冪礌
-        if (item.hide) {
-          return;
-        }
-        // 鎵嬫満瀛楀吀key缁熶竴寮傛璇锋眰鑾峰彇
-        if (!this.$utilFunc.isEmpty(item.comboxKey)) {
-          dictKeys.push({ dictKey: item.comboxKey, field: item.field });
-        }
-        // 绂佺敤閮ㄥ垎灞炴��
-        if (this.disabledProp.includes(item.field)) {
-          item.disabled = true;
-        }
-        // 璁剧疆琛ㄥ崟鏍¢獙鐨勮鍒欙紝鏂囨湰
-        let message = "璇烽�夋嫨";
-        let trigger = "change";
-        if (item.type === "text") {
-          message = "璇疯緭鍏�";
-          trigger = "blur";
-        } else if (item.type === "file") {
-          message = "璇蜂笂浼�";
-        }
-        let columnItem = {
-          label: item.text,
-          labelslot: true,
-          prop: item.referConfig ? item.showField : item.field,
-          type: this.columnType[item.type],
-          dicData: this.getDataList(item.type, item.data),
-          disabled: item.disabled,
-          readonly: item.readOnly,
-          prepend: this.preOrSufFixShow("text", item.prefix),
-          append: this.preOrSufFixShow("text", item.suffix),
-          prefixIcon: this.preOrSufFixShow("icon", item.prefix),
-          suffixIcon: this.preOrSufFixShow("icon", item.suffix),
-          valueFormat: item.dateFormate,
-          format: item.dateFormate,
-          keyAttr: item.keyAttr,
-          value: item.defaultValue,
-          tip: item.tip,
-          comboxKey: item.comboxKey,
-          change: ({ value, column }) => {
-            this.changeFun(value, column, item.displayExtension);
-          },
-          click: this.clickFun(item.referConfig),
-          // action:
-          //   item.type === "file"
-          //     ? "/api/ubcs-resource/oss/endpoint/put-file"
-          //     : "",
-          // propsHttp: {
-          //   res: "data",
-          //   url: "link",
-          // },
-          rules: [
-            {
-              required: item.required,
-              message: `璇�${message}${item.text}`,
-              trigger,
-            },
-            {
-              // 濡傛灉娌℃湁姝e垯鍒欏尮閰嶄换浣曞瓧绗�
-              pattern: item.verify ? item.verify : /[\s\S.]*/g,
-              message: item.tooltips,
-              trigger,
-            },
-          ],
-          props: {
-            label: "value",
-            value: "key",
-          },
-        };
-        column.push(columnItem);
-        this.$set(this.option, "column", column);
-      });
-      this.index++;
-      this.geDictData(dictKeys);
-    },
-    changeFun(value, column, jsCode) {
-      if (typeof jsCode === "string" && jsCode.length > 0) {
-        eval(jsCode);
-      }
-    },
-    clickFun(referConfig) {
-      if (referConfig) {
-        return () => {
-          this.visible2 = true
-        }
-      }
-    },
-    czSubmit() {
-      this.visible2 = false
-      this.form = Object.assign(this.form, {
-        depName: "鎴戞槸閮ㄩ棬鍚嶇О",
-        depId: "鎴戞槸閮ㄩ棬id",
-      });
-    },
-    close() {
-      this.dialogVisible = false;
-    },
-    // 鍓嶅悗缂�
-    preOrSufFixShow(type, val) {
-      if (this.$utilFunc.isEmpty(val) && typeof val !== "string") return;
-      const isIcon = val.slice(0, 8) === "el-icon-";
-      if ((type === "text" && !isIcon) || (type === "icon" && isIcon)) {
-        return val;
-      }
-    },
-    // 鑾峰彇swich鍜屽凡鎷垮埌鐨勪笅鎷夋暟鎹�
-    getDataList(type, dicData) {
-      if (type === "truefalse") {
-        return [
-          {
-            key: false,
-            value: "鍚�",
-          },
-          {
-            key: true,
-            value: "鏄�",
-          },
-        ];
-      } else if (type === "combox") {
-        return dicData;
-      }
-      return [];
-    },
-    // 鑾峰彇瀛楀吀鏁版嵁
-    geDictData(dictKeys) {
-      dictKeys.forEach((dictObj) => {
-        getDictionary({ code: dictObj.dictKey }).then((res) => {
-          if (res.data && res.data.code === 200) {
-            this.option.column = this.option.column.map((item) => {
-              if (item.field === dictObj.field) {
-                let dictData = (res.data.data || []).map((itm) => {
-                  itm.value = itm.dictValue;
-                  itm.key = itm.dictKey;
-                  return itm;
-                });
-                item.dicData = dictData;
-              }
-              return item;
-            });
-          }
-        });
-      });
-    },
-  },
-  watch: {
-    visible(newV) {
-      if (newV) {
-        this.getFormTemplate();
-      }
-    },
-  },
-};
-</script>
-
-<style lang="scss" scoped>
-.key_attr_icon {
-  font-size: 24px;
-  position: relative;
-  top: 2px;
-  color: red;
-}
-// 瑙e喅swich缁勪欢涓嶅瀭鐩村眳涓殑闂
-/deep/ .el-switch {
-  vertical-align: baseline;
-}
-</style>
+<template>
+  <el-dialog
+    :visible.sync="dialogVisible"
+    v-dialogDrag
+    top="0vh"
+    title="鎻愮ず"
+    class="avue-dialog avue-dialog--top"
+    :width="dialogOptions.width"
+    append-to-body
+  >
+    <avue-form
+      v-model="form"
+      :option="option"
+      v-loading="loading"
+      ref="form"
+      :key="index"
+    >
+      <template :slot="item.prop + 'Label'" v-for="item in option.column">
+        <span>{{ item.label }} </span>
+        <el-tooltip
+          v-if="item.keyAttr"
+          class="item"
+          effect="dark"
+          content="璇ュ睘鎬т负鍏抽敭灞炴��"
+          placement="top-start"
+        >
+          <i class="el-icon-star-on key_attr_icon"></i>
+        </el-tooltip>
+        <el-tooltip
+          v-if="item.tip"
+          class="item"
+          effect="dark"
+          :content="item.tip"
+          placement="top-start"
+        >
+          <i class="el-icon-warning"></i>
+        </el-tooltip>
+      </template>
+    </avue-form>
+    <div class="avue-dialog__footer">
+      <el-button @click="close()">鍙� 娑�</el-button>
+      <el-button @click="close()" type="primary">纭� 瀹�</el-button>
+    </div>
+    <el-dialog title="娴嬭瘯鍙傜収" :visible.sync="visible2" append-to-body>
+      <div style="height: 100px;">
+        <p>閮ㄩ棬鏁版嵁 {depName: '鎴戞槸閮ㄩ棬鍚嶇О', depId: '鎴戞槸閮ㄩ棬id'}</p>
+      </div>
+      <div class="avue-dialog__footer">
+        <el-button @click="visible2 = false">鍙� 娑�</el-button>
+        <el-button @click="czSubmit" type="primary">纭� 瀹�</el-button>
+      </div>
+    </el-dialog>
+  </el-dialog>
+</template>
+
+<script>
+import { getFormTemplate } from "../../api/common";
+import { getDictionary } from "../../api/system/dict";
+export default {
+  name: "FormTemplate",
+  props: {
+    visible: {
+      type: Boolean,
+      default: false,
+    },
+    disabledProp: {
+      type: Array,
+      default: () => ["id"],
+    },
+  },
+  data() {
+    return {
+      index: 0,
+      form: {},
+      loading: false,
+      dialogOptions: {
+        width: "60%",
+      },
+      option: {
+        emptyBtn: false,
+        submitBtn: false,
+        labelWidth: "120",
+        column: [],
+      },
+      templateData: {},
+      columnType: {
+        text: "input",
+        combox: "select",
+        truefalse: "switch",
+        number: "number",
+        textarea: "textarea",
+        datetime: "datetime",
+        date: "date",
+        file: "upload",
+      },
+      // 鍋囨暟鎹�
+      testItems: [
+        {
+          comboxKey: null,
+          customClass: null,
+          data: null,
+          dateFormate: "",
+          defaultValue: "",
+          displayExtension: null,
+          extendAttrMap: null,
+          extendAttrString: null,
+          field: "id",
+          hidden: false,
+          keyAttr: false,
+          prefix: "",
+          readOnly: false,
+          referConfig: null,
+          required: false,
+          selectLibFlag: "",
+          showField: null,
+          suffix: "",
+          text: "浼犲�肩鐢ㄥ姛鑳�",
+          tooltips: "",
+          type: "combox",
+          unique: false,
+          verify: "",
+        },
+        {
+          customClass: null,
+          data: null,
+          dateFormate: "",
+          defaultValue: "",
+          displayExtension: null,
+          extendAttrMap: null,
+          extendAttrString: null,
+          field: "state",
+          hidden: false,
+          keyAttr: false,
+          prefix: "",
+          readOnly: true,
+          referConfig: null,
+          required: false,
+          selectLibFlag: "",
+          showField: null,
+          suffix: "",
+          text: "鎺ュ彛绂佺敤鍔熻兘",
+          tooltips: "",
+          type: "combox",
+          unique: false,
+          verify: "",
+        },
+        {
+          comboxKey: null,
+          customClass: null,
+          data: null,
+          dateFormate: "",
+          defaultValue: "",
+          displayExtension: null,
+          extendAttrMap: null,
+          extendAttrString: null,
+          field: "oldcode",
+          hidden: false,
+          keyAttr: false,
+          prefix: "el-icon-search",
+          readOnly: false,
+          referConfig: null,
+          required: false,
+          selectLibFlag: "",
+          showField: null,
+          suffix: "鏂囨湰鍚庣紑娴嬭瘯",
+          text: "鍓嶅悗缂�鍔熻兘",
+          tooltips: "",
+          type: "text",
+          unique: false,
+          verify: "",
+        },
+        {
+          comboxKey: null,
+          customClass: null,
+          data: null,
+          dateFormate: "",
+          defaultValue: "",
+          displayExtension: null,
+          extendAttrMap: null,
+          extendAttrString: null,
+          field: "materialname",
+          hidden: false,
+          keyAttr: false,
+          prefix: "",
+          readOnly: false,
+          referConfig: null,
+          required: true,
+          selectLibFlag: "",
+          showField: null,
+          suffix: "",
+          text: "姝e垯鏍¢獙鍔熻兘",
+          tooltips: "璇疯緭鍏ユ暟瀛�",
+          type: "text",
+          unique: false,
+          verify: "/[0-9]/",
+        },
+        {
+          comboxKey: null,
+          customClass: null,
+          data: [
+            {
+              attributes: {},
+              key: "model_type",
+              value: "妯″瀷",
+            },
+            {
+              attributes: {},
+              key: "part_type",
+              value: "闆朵欢",
+            },
+          ],
+          dateFormate: "",
+          defaultValue: "",
+          displayExtension: null,
+          extendAttrMap: null,
+          extendAttrString: null,
+          field: "dataSelect",
+          hidden: false,
+          keyAttr: false,
+          prefix: "",
+          readOnly: false,
+          referConfig: null,
+          required: false,
+          selectLibFlag: "",
+          showField: null,
+          suffix: "",
+          text: "鐩存帴杩斿洖涓嬫媺",
+          tooltips: "",
+          type: "combox",
+          unique: false,
+          verify: "",
+        },
+        {
+          comboxKey: "formTemplateTest",
+          customClass: null,
+          data: [],
+          dateFormate: "",
+          defaultValue: "",
+          displayExtension: null,
+          extendAttrMap: null,
+          extendAttrString: null,
+          field: "dictSelect",
+          hidden: false,
+          keyAttr: false,
+          prefix: "",
+          readOnly: false,
+          referConfig: null,
+          required: false,
+          selectLibFlag: "",
+          showField: null,
+          suffix: "",
+          text: "瀛楀吀杩斿洖涓嬫媺",
+          tooltips: "",
+          type: "combox",
+          unique: false,
+          verify: "",
+        },
+        {
+          comboxKey: null,
+          customClass: null,
+          data: null,
+          dateFormate: "",
+          defaultValue: "",
+          displayExtension: null,
+          extendAttrMap: null,
+          extendAttrString: null,
+          field: "firstfl",
+          hidden: false,
+          keyAttr: false,
+          prefix: "",
+          readOnly: false,
+          referConfig: null,
+          required: false,
+          selectLibFlag: "",
+          showField: null,
+          suffix: "",
+          text: "鏁板瓧杈撳叆妗�",
+          tooltips: "",
+          type: "number",
+          unique: false,
+          verify: "",
+        },
+        {
+          comboxKey: null,
+          customClass: null,
+          data: null,
+          dateFormate: "yyyy-MM-dd HH:mm:ss",
+          defaultValue: "",
+          displayExtension: null,
+          extendAttrMap: null,
+          extendAttrString: null,
+          field: "datetime",
+          hidden: false,
+          keyAttr: false,
+          prefix: "",
+          readOnly: false,
+          referConfig: null,
+          required: false,
+          selectLibFlag: "",
+          showField: null,
+          suffix: "",
+          text: "鏃ユ湡鏃堕棿閫夋嫨鍣�",
+          tooltips: "",
+          type: "datetime",
+          unique: false,
+          verify: "",
+        },
+        {
+          comboxKey: null,
+          customClass: null,
+          data: null,
+          dateFormate: "",
+          defaultValue: "",
+          displayExtension: null,
+          extendAttrMap: null,
+          extendAttrString: null,
+          field: "time",
+          hidden: false,
+          keyAttr: false,
+          prefix: "",
+          readOnly: false,
+          referConfig: null,
+          required: false,
+          selectLibFlag: "",
+          showField: null,
+          suffix: "",
+          text: "鏃堕棿閫夋嫨鍣�",
+          tooltips: "",
+          type: "date",
+          unique: false,
+          verify: "",
+        },
+        {
+          comboxKey: null,
+          customClass: null,
+          data: null,
+          dateFormate: "",
+          defaultValue: "false",
+          displayExtension: null,
+          extendAttrMap: null,
+          extendAttrString: null,
+          field: "xiaoshouwl",
+          hidden: false,
+          keyAttr: false,
+          prefix: "",
+          readOnly: false,
+          referConfig: null,
+          required: false,
+          selectLibFlag: "",
+          showField: null,
+          suffix: "",
+          text: "寮�鍏�",
+          tooltips: "",
+          type: "truefalse",
+          unique: false,
+          verify: "",
+        },
+        {
+          comboxKey: null,
+          customClass: null,
+          data: null,
+          dateFormate: "",
+          defaultValue: "鎴戞槸榛樿鍊�",
+          displayExtension: null,
+          extendAttrMap: null,
+          extendAttrString: null,
+          field: "tuhao",
+          hidden: false,
+          keyAttr: false,
+          prefix: "",
+          readOnly: false,
+          referConfig: null,
+          required: false,
+          selectLibFlag: "",
+          showField: null,
+          suffix: "",
+          text: "榛樿鍊煎姛鑳�",
+          tooltips: "鎻愮ず",
+          type: "text",
+          unique: false,
+          verify: "",
+        },
+        {
+          comboxKey: null,
+          customClass: null,
+          data: null,
+          dateFormate: "",
+          defaultValue: "",
+          displayExtension: null,
+          extendAttrMap: null,
+          extendAttrString: null,
+          field: "xinghaoguige",
+          hidden: false,
+          keyAttr: true,
+          prefix: "",
+          readOnly: false,
+          referConfig: null,
+          required: false,
+          selectLibFlag: "",
+          showField: null,
+          suffix: "",
+          text: "灞炴�у叧閿��",
+          tooltips: "",
+          type: "text",
+          unique: false,
+          verify: "",
+        },
+        {
+          comboxKey: null,
+          customClass: null,
+          data: null,
+          dateFormate: "",
+          defaultValue: "",
+          displayExtension: null,
+          extendAttrMap: null,
+          extendAttrString: null,
+          field: "jiliangdw",
+          hidden: false,
+          keyAttr: false,
+          prefix: "",
+          readOnly: false,
+          tip: "鎴戞槸鎻愮ず鍔熻兘",
+          required: false,
+          selectLibFlag: "",
+          showField: "jiliangdwname",
+          suffix: "",
+          text: "鎻愮ず鍔熻兘",
+          tooltips: "",
+          type: "text",
+          unique: false,
+          verify: "",
+        },
+        {
+          comboxKey: null,
+          customClass: null,
+          data: null,
+          dateFormate: "",
+          defaultValue: "",
+          displayExtension: "this.form.sum = this.form.fun1 + this.form.fun2",
+          extendAttrMap: null,
+          extendAttrString: null,
+          field: "fun1",
+          hidden: false,
+          keyAttr: false,
+          prefix: "",
+          readOnly: false,
+          referConfig: null,
+          required: false,
+          selectLibFlag: "",
+          showField: null,
+          suffix: "",
+          text: "鍙傛暟1娴嬭瘯js",
+          tooltips: "",
+          type: "text",
+          unique: false,
+          verify: "",
+        },
+        {
+          comboxKey: null,
+          customClass: null,
+          data: null,
+          dateFormate: "",
+          defaultValue: "",
+          displayExtension: "this.form.sum = this.form.fun1 + this.form.fun2",
+          extendAttrMap: null,
+          extendAttrString: null,
+          field: "fun2",
+          hidden: false,
+          keyAttr: false,
+          prefix: "",
+          readOnly: false,
+          required: false,
+          selectLibFlag: "",
+          showField: "hesuanfenleiname",
+          suffix: "",
+          text: "鍙傛暟2娴嬭瘯js",
+          tooltips: "",
+          type: "text",
+          unique: false,
+          verify: "",
+        },
+        {
+          comboxKey: null,
+          customClass: null,
+          data: null,
+          dateFormate: "",
+          defaultValue: "",
+          displayExtension: "",
+          extendAttrMap: null,
+          extendAttrString: null,
+          field: "sum",
+          hidden: false,
+          keyAttr: false,
+          prefix: "",
+          readOnly: true,
+          required: false,
+          selectLibFlag: "",
+          showField: "",
+          suffix: "",
+          text: "鍙傛暟1鍙傛暟2姹傚拰",
+          tooltips: "",
+          type: "text",
+          unique: false,
+          verify: "",
+        },
+        {
+          comboxKey: null,
+          customClass: null,
+          data: null,
+          dateFormate: "",
+          defaultValue: "",
+          displayExtension: null,
+          extendAttrMap: null,
+          extendAttrString: null,
+          field: "textarea",
+          hidden: false,
+          keyAttr: false,
+          prefix: "",
+          readOnly: false,
+          referConfig: null,
+          required: false,
+          selectLibFlag: "",
+          showField: null,
+          suffix: "",
+          text: "鏂囨湰鍩�",
+          tooltips: "",
+          type: "textarea",
+          unique: false,
+          verify: "",
+        },
+        {
+          comboxKey: null,
+          customClass: null,
+          data: null,
+          dateFormate: "",
+          defaultValue: "",
+          displayExtension: null,
+          extendAttrMap: null,
+          extendAttrString: null,
+          field: "beizhushuoming",
+          hidden: false,
+          keyAttr: false,
+          prefix: "",
+          readOnly: false,
+          referConfig: null,
+          required: false,
+          selectLibFlag: "",
+          showField: null,
+          suffix: "",
+          text: "鏂囦欢鍔熻兘",
+          tooltips: "",
+          type: "file",
+          unique: false,
+          verify: "",
+        },
+        {
+          comboxKey: null,
+          customClass: null,
+          data: null,
+          dateFormate: "",
+          defaultValue: "",
+          displayExtension: null,
+          extendAttrMap: null,
+          extendAttrString: null,
+          field: "cz",
+          hidden: false,
+          keyAttr: false,
+          prefix: "",
+          readOnly: true,
+          referConfig: true,
+          required: false,
+          selectLibFlag: "",
+          showField: "depId",
+          suffix: "",
+          text: "鍙傜収",
+          tooltips: "",
+          type: "text",
+          unique: false,
+          verify: "",
+        },
+      ],
+      visible2: false,
+    };
+  },
+  created() {
+  },
+  computed: {
+    dialogVisible: {
+      get() {
+        return this.visible;
+      },
+      set(val) {
+        this.$emit("update:visible", val);
+      },
+    },
+  },
+  methods: {
+    getFormTemplate() {
+      this.loading = true;
+      getFormTemplate({
+        templateOid: "78B8C7C5-A042-0B96-FE6D-65421451782A",
+        codeClassifyOid: "4524E801-6CC6-92E8-1AC3-2AB9604E8F96",
+        page: 1,
+        limit: 30,
+      })
+        .then((res) => {
+          if (res.status === 200) {
+            this.templateData = res.data;
+            this.templateRender();
+          }
+          this.loading = false;
+          console.log(res.data);
+        })
+        .catch((err) => {
+          this.loading = false;
+          console.log(err);
+        });
+    },
+    templateRender() {
+      // const items = this.templateData.formDefineVO.items;
+      const items = this.testItems;
+      let column = [];
+      let dictKeys = [];
+      items.forEach((item) => {
+        // 闅愯棌琛ㄥ崟鍏冪礌
+        if (item.hide) {
+          return;
+        }
+        // 鎵嬫満瀛楀吀key缁熶竴寮傛璇锋眰鑾峰彇
+        if (!this.$utilFunc.isEmpty(item.comboxKey)) {
+          dictKeys.push({ dictKey: item.comboxKey, field: item.field });
+        }
+        // 绂佺敤閮ㄥ垎灞炴��
+        if (this.disabledProp.includes(item.field)) {
+          item.readOnly = true;
+        }
+        // 璁剧疆琛ㄥ崟鏍¢獙鐨勮鍒欙紝鏂囨湰
+        let message = "璇烽�夋嫨";
+        let trigger = "change";
+        if (item.type === "text") {
+          message = "璇疯緭鍏�";
+          trigger = "blur";
+        } else if (item.type === "file") {
+          message = "璇蜂笂浼�";
+        }
+        let columnItem = {
+          label: item.text,
+          labelslot: true,
+          prop: item.referConfig ? item.showField : item.field,
+          type: this.columnType[item.type],
+          dicData: this.getDataList(item.type, item.data),
+          disabled: item.readOnly,
+          prepend: this.preOrSufFixShow("text", item.prefix),
+          append: this.preOrSufFixShow("text", item.suffix),
+          prefixIcon: this.preOrSufFixShow("icon", item.prefix),
+          suffixIcon: this.preOrSufFixShow("icon", item.suffix),
+          valueFormat: item.dateFormate,
+          format: item.dateFormate,
+          keyAttr: item.keyAttr,
+          value: item.defaultValue,
+          tip: item.tip,
+          comboxKey: item.comboxKey,
+          change: ({ value, column }) => {
+            this.changeFun(value, column, item.displayExtension);
+          },
+          click: this.clickFun(item.referConfig),
+          // action:
+          //   item.type === "file"
+          //     ? "/api/ubcs-resource/oss/endpoint/put-file"
+          //     : "",
+          // propsHttp: {
+          //   res: "data",
+          //   url: "link",
+          // },
+          rules: [
+            {
+              required: item.required,
+              message: `璇�${message}${item.text}`,
+              trigger,
+            },
+            {
+              // 濡傛灉娌℃湁姝e垯鍒欏尮閰嶄换浣曞瓧绗�
+              pattern: item.verify ? item.verify : /[\s\S.]*/g,
+              message: item.tooltips,
+              trigger,
+            },
+          ],
+          props: {
+            label: "value",
+            value: "key",
+          },
+        };
+        column.push(columnItem);
+        this.$set(this.option, "column", column);
+      });
+      this.index++;
+      this.geDictData(dictKeys);
+    },
+    changeFun(value, column, jsCode) {
+      if (typeof jsCode === "string" && jsCode.length > 0) {
+        eval(jsCode);
+      }
+    },
+    clickFun(referConfig) {
+      if (referConfig) {
+        return () => {
+          this.visible2 = true
+        }
+      }
+    },
+    czSubmit() {
+      this.visible2 = false
+      this.form = Object.assign(this.form, {
+        depName: "鎴戞槸閮ㄩ棬鍚嶇О",
+        depId: "鎴戞槸閮ㄩ棬id",
+      });
+    },
+    close() {
+      this.dialogVisible = false;
+    },
+    // 鍓嶅悗缂�
+    preOrSufFixShow(type, val) {
+      if (this.$utilFunc.isEmpty(val) && typeof val !== "string") return;
+      const isIcon = val.slice(0, 8) === "el-icon-";
+      if ((type === "text" && !isIcon) || (type === "icon" && isIcon)) {
+        return val;
+      }
+    },
+    // 鑾峰彇swich鍜屽凡鎷垮埌鐨勪笅鎷夋暟鎹�
+    getDataList(type, dicData) {
+      if (type === "truefalse") {
+        return [
+          {
+            key: false,
+            value: "鍚�",
+          },
+          {
+            key: true,
+            value: "鏄�",
+          },
+        ];
+      } else if (type === "combox") {
+        return dicData;
+      }
+      return [];
+    },
+    // 鑾峰彇瀛楀吀鏁版嵁
+    geDictData(dictKeys) {
+      dictKeys.forEach((dictObj) => {
+        getDictionary({ code: dictObj.dictKey }).then((res) => {
+          if (res.data && res.data.code === 200) {
+            this.option.column = this.option.column.map((item) => {
+              if (item.field === dictObj.field) {
+                let dictData = (res.data.data || []).map((itm) => {
+                  itm.value = itm.dictValue;
+                  itm.key = itm.dictKey;
+                  return itm;
+                });
+                item.dicData = dictData;
+              }
+              return item;
+            });
+          }
+        });
+      });
+    },
+  },
+  watch: {
+    visible(newV) {
+      if (newV) {
+        this.getFormTemplate();
+      }
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.key_attr_icon {
+  font-size: 24px;
+  position: relative;
+  top: 2px;
+  color: red;
+}
+// 瑙e喅swich缁勪欢涓嶅瀭鐩村眳涓殑闂
+/deep/ .el-switch {
+  vertical-align: baseline;
+}
+</style>
diff --git a/Source/UBCS-WEB/src/main.js b/Source/UBCS-WEB/src/main.js
index 1eec9df..3cf0e47 100644
--- a/Source/UBCS-WEB/src/main.js
+++ b/Source/UBCS-WEB/src/main.js
@@ -41,6 +41,7 @@
 import referConfigFormDialog from "@/components/code-dialog-page/referConfigFormDialog"
 import businessAdd from "@/views/modeling/BusinessAdd"
 import TableCrud from "@/components/Crud/Crud"
+import originalAdd from "@/views/modeling/originalAdd"
 
 // 灏嗗伐鍏峰嚱鏁版坊鍔犲埌鍏ㄥ眬
 import utilFunc from './util/func'
@@ -83,6 +84,7 @@
 Vue.component('businessAdd',businessAdd)
 Vue.component('attrCrud',attrCrud)
 Vue.component('TableCrud',TableCrud)
+Vue.component('originalAdd',originalAdd)
 
 
 // 鍔犺浇鐩稿叧url鍦板潃
diff --git a/Source/UBCS-WEB/src/views/flow/flowPath.vue b/Source/UBCS-WEB/src/views/flow/flowPath.vue
new file mode 100644
index 0000000..f1fdcd4
--- /dev/null
+++ b/Source/UBCS-WEB/src/views/flow/flowPath.vue
@@ -0,0 +1,188 @@
+<template>
+    <div>
+        <el-button @click="outerVisible = true">娴佺▼娴嬭瘯</el-button>
+        <el-dialog :title="`鎵ц${title}`" width="90%" append-to-body="true" :visible.sync="outerVisible">
+            <div class="dialogwarp">
+                <div class="dialogwarp_tab">
+                    <el-card class="dialogwarp_tab_card">
+                        <el-tabs v-model="activeName" @tab-click="handleClick">
+                            <el-tab-pane label="涓氬姟鏁版嵁淇℃伅" name="first">
+
+                            </el-tab-pane>
+                            <el-tab-pane label="娴佺▼璺熻釜" name="second">
+                                <avue-crud :data="data" :option="option" ref="crud">
+                                </avue-crud>
+                                <el-image style="width: 100%; height: 100%" :src="url" fit="cover"></el-image>
+                            </el-tab-pane>
+                        </el-tabs>
+                    </el-card>
+                </div>
+                <div class="dialogwarp_card">
+                    <el-card class="box-card">
+                        <div slot="header" class="clearfix">
+                            <span>褰撳墠浠诲姟锛�</span>
+                            <span>{{ title }}</span>
+                        </div>
+                        <div style="width: 100%;">
+                            <p>璇峰湪涓嬫柟杈撳叆鎮ㄧ殑瀹℃壒鎰忚锛�</p>
+                            <el-input type="textarea" :rows="4" placeholder="璇疯緭鍏ュ唴瀹�" v-model="opinionVal">
+                            </el-input>
+                        </div>
+                        <div style="width: 100%;">
+                            <p>瀹℃壒鎰忚闄勪欢锛�</p>
+                            <el-upload drag action="https://jsonplaceholder.typicode.com/posts/" multiple
+                                style="width: 100%;">
+                                <i class="el-icon-upload"></i>
+                                <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div>
+                            </el-upload>
+                        </div>
+                        <div style="width: 100%;">
+                            <p>宸蹭笂浼犲鎵规枃浠讹細</p>
+                            <el-card class="box-card">
+                                <el-table :data="tableData" stripe style="width: 100%">
+                                    <el-table-column prop="date" label="鏂囦欢鍚�">
+                                    </el-table-column>
+                                    <el-table-column prop="name" label="涓婁紶浜�  ">
+                                    </el-table-column>
+                                    <el-table-column prop="address" label="鎿嶄綔">
+                                    </el-table-column>
+                                </el-table>
+                            </el-card>
+                        </div>
+                        <div style="margin-top: 20px;">
+                            <el-button v-if="!isRefuse" type="primary" size="mini" @click="handelAgree">鍚屾剰</el-button>
+                            <el-button v-if="!isAgree" type="primary" size="mini" @click="handelRefuse">涓嶅悓鎰�</el-button>
+                            <el-button v-if="isAgree && !isRefuse" type="primary" size="mini" @click="handelRevert"
+                                v-for="item in btnList" :key="item">{{ item }}</el-button>
+                            <el-button v-if="isRefuse" type="primary" size="mini" @click="handelExecute">鎵ц</el-button>
+                        </div>
+                    </el-card>
+                </div>
+            </div>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+export default {
+    data() {
+        return {
+            outerVisible: false,
+            destroyClose: true,
+            activeName: 'first',
+            fits: ['fill', 'contain', 'cover', 'none', 'scale-down'],
+            url: 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg',
+            title: '涓氬姟娴嬭瘯-鐢宠-鐗╁搧-瀹℃牳',
+            data: [
+                {
+                    name: '寮犱笁',
+                    sex: '鐢�'
+                }, {
+                    name: '鏉庡洓',
+                    sex: '濂�'
+                }, {
+                    name: '鏉庡洓',
+                    sex: '濂�'
+                }, {
+                    name: '鏉庡洓',
+                    sex: '濂�'
+                }
+            ],
+            btnList: ['杩斿洖1', '杩斿洖1', '杩斿洖1'],
+            isAgree: false,
+            isRefuse: false,
+            opinionVal: '',
+            option: {
+                menu: false,
+                addBtn: false,
+                refreshBtn: false,
+                columnBtn: false,
+                index: true,
+                header: false,
+                stripe: true,
+                indexLabelClassName: '搴忓彿',
+                column: [
+                    { label: '浠诲姟鍚嶇О', prop: 'name', minWidth: 120 },
+                    { label: '鎵ц鎿嶄綔', prop: 'sex', minWidth: 80 },
+                    { label: '浠诲姟寮�濮嬫椂闂�', prop: 'sex', minWidth: 140 },
+                    { label: '瀹℃壒鎰忚', prop: 'sex', minWidth: 220, overHidden: true },
+                    { label: '鎵ц浜�', prop: 'sex', minWidth: 80 },
+                    { label: '浠诲姟瀹屾垚鏃堕棿', prop: 'sex', minWidth: 140 },
+                    { label: '宸蹭笂浼犲鎵规枃浠�', prop: 'sex', minWidth: 220, overHidden: true },
+                ]
+            },
+        }
+    },
+    methods: {
+        closeDialog() {
+            this.destroyClose = true
+            this.outerVisible = false
+        },
+        handleClick(tab, event) {
+            console.log(event)
+        },
+        handelAgree() {
+            this.isAgree = !this.isAgree
+            this.outerVisible = false
+            console.log(this.isAgree)
+        },
+        handelRefuse() {
+            if (!this.opinionVal) {
+                this.$alert('褰撳鐞嗘柟寮忎负涓嶅悓鎰忔椂锛岄渶瑕佸~鍐欏鎵规剰瑙�', '鎻愮ず淇℃伅', {
+                    confirmButtonText: '纭畾',
+                }).then(() => {
+
+                });
+            } else {
+                this.isRefuse = true
+                this.isAgree = true
+                this.outerVisible = false
+                this.opinionVal = ''
+            }
+        },
+        handelExecute() {
+            this.outerVisible = false
+            this.isAgree = false
+            this.isRefuse = false
+        },
+        handelRevert() {
+            this.outerVisible = false
+            this.isAgree = false
+        }
+    }
+}
+</script>
+<style lang="scss" scoped>
+.dialogwarp {
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    justify-content: space-between;
+    height: 70vh;
+
+    &_tab {
+        width: 79%;
+
+
+        &_card {
+            width: 100%;
+            height: 100%;
+        }
+    }
+
+    &_card {
+        // margin-left: 20px;
+        width: 20%;
+    }
+}
+
+/deep/ .el-upload,
+/deep/ .el-upload-dragger {
+    width: 100%;
+    height: 120px;
+}
+
+/deep/ .el-upload-dragger .el-icon-upload {
+    margin: 15px 0 16px;
+}
+</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 fe46d55..9757875 100644
--- a/Source/UBCS-WEB/src/views/modeling/original.vue
+++ b/Source/UBCS-WEB/src/views/modeling/original.vue
@@ -2,22 +2,30 @@
   <el-container>
     <el-main>
       <basic-container>
-        <avue-crud v-model="form" :option="option" :data="data" ref="crud" @on-load="onLoad" @row-save="rowSave"
-          @row-update="rowUpdate" :before-open="beforeOpen" @row-del="rowDel" :page.sync="page"
-          @refresh-change="refreshChange" @row-click="rowClick"
-          @selection-change="selectChange">
-          <template slot-scope="{row,index,type}" slot="selInputForm">
-          <div style="margin-left: 75px">
-            <el-input v-model="form.text" :size="size" style="width: 210px" :readonly="true" @focus="selectBtmType" :disabled="referType.disable"></el-input>
-          </div>
-        </template>
-        <template slot="radio"
-                slot-scope="{row}">
-                    <el-radio v-model="selectRow"
-                        :label="row.$index">&nbsp;
-                    </el-radio>
+        <avue-crud v-model="form" 
+          ref="crud" 
+          :option="option" 
+          :data="data" 
+          @on-load="onLoad" 
+          :page.sync="page"
+          @refresh-change="refreshChange" 
+          @row-click="rowClick">
+               <template slot="radio"
+                  slot-scope="{row}">
+                      <el-radio v-model="selectRow"
+                          :label="row.$index">&nbsp;
+                      </el-radio>
                 </template>
+          <template slot="menu">
+             <el-button icon="el-icon-edit" size="small" type="text" @click="updateSave">缂栬緫</el-button>
+             <el-button icon="el-icon-delete" size="small" type="text" @click="deleteSave">鍒犻櫎</el-button>
+          </template>
          <template slot="menuLeft">
+            <el-button size="small"
+              type="primary"
+              icon="el-icon-plus"
+              @click="addSave">鏂�&nbsp;&nbsp;澧�
+            </el-button>
             <el-button size="small"
                        plain
                        type="primary"
@@ -31,76 +39,105 @@
             <avue-crud v-model="applyRange.model" :option="applyRange.option" :data="applyRange.data" class="applyRangeTable"
             ></avue-crud>
         </el-dialog>
-        <el-dialog :visible.sync="referType.display" append-to-body :title="referType.title" width="1000px">
-          <original-range @rowchange="rowchange"></original-range>
-          <span slot="footer" class="dialog-footer">
-            <el-button @click="dialoghandelfalse">鍙� 娑�</el-button>
-            <el-button type="primary" @click="dialoghandeltrue">纭� 瀹�</el-button>
-          </span>
-        </el-dialog>
-        <!-- <el-dialog :visible.sync="packageLinkBox" append-to-body title="鏌ョ湅閾炬帴绫诲瀷" width="1000px">
-          <original-link @rowLinkchange="rowLinkchange"></original-link>
-          <span slot="footer" class="dialog-footer">
-            <el-button @click="Linkdialoghandelfalse">鍙� 娑�</el-button>
-            <el-button type="primary" @click="Linkdialoghandeltrue">纭� 瀹�</el-button>
-          </span>
-        </el-dialog> -->
       </basic-container>
     </el-main>
     <el-aside>
       <basic-container class="itemForm">
-        <el-tabs v-model="activeName" @tab-click="handleClick">
-          <el-tab-pane label="灞炴�ч」" name="attrTab">
-            <el-form ref="form" :model="itemData" label-width="80px" style="height: 656px;">
-              <el-form-item label="灞炴�х紪鐮�">
-                <el-input v-model="itemData.id" :disabled="true"></el-input>
-              </el-form-item>
-              <el-form-item label="灞炴�у悕绉�">
-                <el-input v-model="itemData.name" :disabled="true"></el-input>
-              </el-form-item>
-              <el-form-item label="灞炴�х被鍨�">
-                <el-input v-model="itemData.typeValue" :disabled="true"></el-input>
-              </el-form-item>
-              <el-form-item label="鏍囩">
-                <el-input v-model="itemData.hashtag" :disabled="true"></el-input>
-              </el-form-item>
-              <el-form-item label="榛樿鍊�">
-                <el-input v-model="itemData.defaultValue" :disabled="true"></el-input>
-              </el-form-item>
-              <el-form-item label="鍏佽涓虹┖">
-                <el-switch v-model="itemData.nullable" :disabled="true"></el-switch>
-              </el-form-item>
-              <el-form-item label="闀垮害">
-                <el-input v-model="itemData.maxLength" :disabled="true"></el-input>
-              </el-form-item>
-              <el-form-item label="鎻忚堪">
-                <el-input v-model="itemData.description" :disabled="true"></el-input>
-              </el-form-item>
-            </el-form>
-          </el-tab-pane>
-          <el-tab-pane label="鍙傜収" name="valueTab">
-            <el-form ref="form" :model="itemData" label-width="80px" style="height: 656px;">
-              <el-form-item label="鍙傜収绫诲瀷">
-                <el-input v-model="itemData.referTypeValue" :disabled="true"></el-input>
-              </el-form-item>
-              <el-form-item label="鍙傜収鍚嶇О">
-                <el-input v-model="itemData.referToName" :disabled="true"></el-input>
-              </el-form-item>
-            </el-form>
+            <el-descriptions class="margin-top" :column="1" size="medium" border title="灞炴�ч」">
+              <el-descriptions-item>
+                <template slot="label">
+                  灞炴�х紪鍙�
+                </template>
+                {{ itemForm.itemData.id }}
+              </el-descriptions-item>
+              <el-descriptions-item>
+                <template slot="label">
+                  灞炴�у悕绉�
+                </template>
+                {{ itemForm.itemData.name }}
+              </el-descriptions-item>
+              <el-descriptions-item>
+                <template slot="label">
+                  灞炴�х被鍨�
+                </template>
+                {{ itemForm.itemData.typeValue }}
+              </el-descriptions-item>
+              <el-descriptions-item>
+                <template slot="label">
+                  鏍囩
+                </template>
+                {{ itemForm.itemData.hashtag }}
+              </el-descriptions-item>
+              <el-descriptions-item>
+                <template slot="label">
+                  榛樿鍊�
+                </template>
+                {{ itemForm.itemData.defaultValue }}
+              </el-descriptions-item>
+              <el-descriptions-item>
+                <template slot="label">
+                  鍏佽涓虹┖
+                </template>
+                {{ itemForm.itemData.nullable }}
+              </el-descriptions-item>
+              <el-descriptions-item>
+                <template slot="label">
+                  闀垮害
+                </template>
+                {{ itemForm.itemData.maxLength }}
+              </el-descriptions-item>
+              <el-descriptions-item>
+                <template slot="label">
+                  鎻忚堪
+                </template>
+                {{ itemForm.itemData.description }}
+              </el-descriptions-item>
+            </el-descriptions>
+            <div style="height:15px"></div>
+        <el-descriptions class="margin-top" :column="1" size="medium" border title="灞炴�ч厤缃�"></el-descriptions>
+        <el-tabs v-model="itemForm.activeName" @tab-click="handleClick" stretch="true" style="height:235px">
+        <el-tab-pane label="鍙傜収" name="referTab">
+            <el-descriptions class="margin-top" :column="1" size="medium" border>
+              <el-descriptions-item>
+                <template slot="label">
+                  浣跨敤鍙傜収
+                </template>
+                {{ itemForm.itemData.referTypeValue ? '鏄�' : '鍚�' }}
+              </el-descriptions-item>
+              <el-descriptions-item>
+                <template slot="label">
+                  鍙傜収绫诲瀷
+                </template>
+                {{ itemForm.itemData.referTypeValue }}
+              </el-descriptions-item>
+              <el-descriptions-item>
+                <template slot="label">
+                  鍙傜収鍚嶇О
+                </template>
+                {{ itemForm.itemData.referToName }}
+              </el-descriptions-item>
+            </el-descriptions>
           </el-tab-pane>
           <el-tab-pane label="鏋氫妇" name="enumTab">
-            <el-form ref="form" :model="itemData" label-width="80px" style="height: 656px;">
-              <el-form-item label="浣跨敤鏋氫妇">
-                <el-switch v-model="itemData.usingDict" :disabled="true"></el-switch>
-              </el-form-item>
-              <el-form-item label="鏋氫妇绫诲瀷">
-                <el-input v-model="form.dictCode" :disabled="true"></el-input>
-              </el-form-item>
-            </el-form>
+            <el-descriptions class="margin-top" :column="1" :size="small" border>
+              <el-descriptions-item>
+                <template slot="label">
+                  浣跨敤鏋氫妇
+                </template>
+                {{ itemForm.itemData.usingDict ? '鏄�' : '鍚�' }}
+              </el-descriptions-item>
+              <el-descriptions-item>
+                <template slot="label">
+                  鏋氫妇绫诲瀷
+                </template>
+                {{ itemForm.itemData.dictCode }}
+              </el-descriptions-item>
+            </el-descriptions>
           </el-tab-pane>
         </el-tabs>
       </basic-container>
     </el-aside>
+    <originalAdd ref="originalAdd" :attribute="attribute" @refreshTable="refreshChange"></originalAdd>
   </el-container>
 </template>
 
@@ -112,52 +149,21 @@
   update, getPage, getApplyRange
 } from "@/api/omd/OmdAttribute";
 
-import { getDictionary } from "@/api/omd/enum";
-
 export default {
   name: "original",
   data() {
-    return {
-      datas: [],
-      itemData: {},
-      activeName: 'attrTab',
-      formAtrr: {},
-      rouname: "",
-      referType: {
-        code: 'referType',
-        key: '',
-        value: '',
-        display: false,
-        title: '',
-        disable: true
-      },
-      //鍊煎煙涓嬫媺妗嗘暟鎹�
-      Typelist: [],
-      //鐗堟湰鏁版嵁
-      banList: [],
-      // 灞炴�х被鍨嬩笅鎷夋鏁版嵁
-      typeSelectList: [
-        {
-          label: "鍝堝搱鍝�",
-          value: 0
-        },],
-      // 鏄惁涓虹┖
-      nullable: [],
-      form: {
-        text: ""
-      },
-      detailForm: {
-        text: ""
-      },
+    return {  
       page: {
         pageSize: 10,
         currentPage: 1,
         total: 100
       },
       selectRow: '',
-      data: [
-
-      ],
+      data: [],
+      form:{},
+      attribute: {
+        nullable: true
+      },
       option: {
         height: "550px",
         headerAlign: 'center',
@@ -165,7 +171,13 @@
         index: true,
         rowKey: 'id',
         tabs: true,
+        stripe:true,
+        indexFixed: false,
+        menuWidth: 150,
         highlightCurrentRow: true,
+        addBtn:false,
+        editBtn:false,
+        delBtn:false,
         column: [{
             label: '閫夋嫨',
             prop: 'radio',
@@ -178,7 +190,8 @@
             prop: 'id',
             align: 'left',
             display: false,
-            width: 200
+            width: 200,
+            required: true
           }, {
             label: '灞炴�у悕绉�',
             prop: 'name',
@@ -200,10 +213,10 @@
             display: false,
             dicData: [{
               label: '鏄�',
-              value: 0
+              value: 'true'
             }, {
               label: '鍚�',
-              value: 1
+              value: 'false'
             }]
           },
           {
@@ -226,10 +239,10 @@
             labelWidth: 132,
             dicData: [{
               label: '鍚�',
-              value: 1
+              value: 'false'
             }, {
               label: '鏄�',
-              value: 0
+              value: 'true'
             }]
           },
           {
@@ -244,195 +257,6 @@
             type: "textarea",
             display: false
           },
-        ],
-        group: [
-          {
-            label: '灞炴�ч」',
-            prop: "index",
-            column: [
-              {
-                label: '灞炴�х紪鍙�',
-                prop: 'id',
-                align: 'left',
-              },
-              {
-                label: '灞炴�у悕绉�',
-                prop: 'name',
-                align: 'left',
-              },
-              {
-                label: '鏍囩',
-                prop: 'hashtag',
-                hide: true
-              }, {
-                label: '灞炴�х被鍨嬪瓧鍏哥爜',
-                prop: 'typeCode',
-                display: false,
-                value: 'attributeType'
-              },
-              {
-                label: '灞炴�х被鍨�',
-                prop: 'typeKey',
-                type: "select",
-                dicUrl: '/api/ubcs-omd/dict-biz/dictionary?code=attributeType',
-                dicType: 'String',
-                props: {
-                  label: 'dictValue',
-                  value: 'dictKey'
-                },
-                rules: [
-                  {
-                    required: true,
-                    message: "璇烽�夋嫨灞炴�х被鍨�",
-                    trigger: "click"
-                  }
-                ]
-              },
-              {
-                label: '榛樿鍊�',
-                prop: 'defaultValue',
-              },
-              {
-                label: '鍏佽涓虹┖',
-                prop: 'nullable',
-                type: 'switch',
-                hide: true,
-                labelWidth: 132,
-                dicData: [{
-                  label: '鍚�',
-                  value: 1
-                }, {
-                  label: '鏄�',
-                  value: 0
-                }]
-              },
-              {
-                label: "闀垮害",
-                prop: "maxLength",
-                hide: true
-              },
-              {
-                label: '鎻忚堪',
-                prop: 'description',
-                type: "textarea"
-              },
-            ]
-          },
-          {
-            label: '鍙傜収',
-            column: [
-              {
-                label: '鍙傜収绫诲埆',
-                prop: 'referTypeCode',
-                display: false,
-                hide: true
-              },{
-                span: 12,
-                label: '鍙傜収绫诲埆',
-                prop: 'referTypeKey',
-                type: "select",
-                change: this.selectChange,
-                dicUrl: '/api/ubcs-omd/dict-biz/dictionary?code=referType',
-                dicType: 'String',
-                props: {
-                  label: 'dictValue',
-                  value: 'dictKey'
-                },
-                rules: [
-                  {
-                    required: true,
-                    message: "璇烽�夋嫨鍙傜収绫诲埆",
-                    trigger: "click"
-                  }
-                ]
-              },
-              {
-                prop: "selInput",
-                placeholder: false,
-                readonly: true,
-                display: true,
-                formslot: true,
-              },
-              // {
-              //   label: "閫夋嫨鐗堟湰",
-              //   prop: "banben",
-              //   type: 'select',
-              //   value: 0,
-              //   change: this.selchange,
-              //   display: true,
-              //   dicData: [
-              //     {
-              //       label: '褰撳墠鐗堟湰娆�',
-              //       value: 0
-              //     },
-              //     {
-              //       label: '鏈�鏂扮増鏈',
-              //       value: 1
-              //     }
-              //   ]
-              // },
-              {
-                //榛樿琛ㄦ牸鎻掓Ы
-                prop: "default",
-                span: 24,
-                display: false
-              }
-            ]
-          },
-          {
-            label: '鏋氫妇',
-            column: [
-              {
-                label: '鏄惁浣跨敤鏋氫妇',
-                prop: 'isnot',
-                type: 'switch',
-                hide: true,
-                labelWidth: 132,
-                span: 8,
-                dicData: [{
-                  label: '鍚�',
-                  value: 1
-                }, {
-                  label: '鏄�',
-                  value: 0
-                }]
-              },
-              {
-                prop: 'text',
-                type: 'input',
-                placeholder: '璇疯緭鍏ュ唴瀹�',
-                hide: true,
-                display: false
-              },
-              {
-                prop: 'enumerationSelect',
-                type: 'select',
-                placeholder: '璇烽�夋嫨',
-                hide: true,
-                span: 12,
-                dicData: [
-                  {
-                    label: 'a',
-                    value: 0
-                  },
-                  {
-                    label: 'b',
-                    value: 1
-                  },
-                  {
-                    label: 'c',
-                    value: 2
-                  }
-                ]
-              },
-              {
-                label: '鎻忚堪',
-                prop: 'endesc',
-                type: "textarea",
-                labelWidth: 132,
-              },
-            ]
-          }
         ]
       },
       applyRange: {
@@ -464,115 +288,32 @@
         },
         data: [],
         display: false,
+      },
+      itemForm:{
+        itemData: {},
+        activeName: 'referTab',
+        form:{}
       }
     }
   },
-
-
   created() {
-    const column =this.findObject(this.option.group,"referTypeKey")
-    console.log(column);
+    
   },
   methods: {
-    rowLinkchange(row) {
-      this.form.text = row.name
-    },
-    rowchange(row) {
-      this.form.text = row.name
-    },
-    //鍊煎煙绫诲瀷閫夋嫨
-    addHandle() {
-      this.packageBox = true
-      if (this.Typelist.value == 0) {
-        this.packageBox = true
-        this.packageLinkBox = false
-      } else if (this.Typelist.value == 1) {
-        this.packageBox = false
-        this.packageLinkBox = true
-      }
-    },
-    // 鍊煎煙涓氬姟绫诲瀷瀵硅瘽妗嗗彇娑�
-    dialoghandelfalse() {
-      this.packageBox = false;
-      this.form.text = ""
-    },
-    //鍊煎煙涓氬姟绫诲瀷瀵硅瘽妗嗙‘瀹�
-    dialoghandeltrue() {
-      this.packageBox = false
-    },
-    // 鍊煎煙閾炬帴绫诲瀷瀵硅瘽妗嗗彇娑�
-    Linkdialoghandelfalse() {
-      this.packageLinkBox = false;
-      this.form.text = ""
-    },
-    //鍊煎煙閾炬帴绫诲瀷瀵硅瘽妗嗙‘瀹�
-    Linkdialoghandeltrue() {
-      this.packageLinkBox = false
-    },
-    selectChange(val) {
-       this.referType.key = val.value
-      if (val.value == 'businessType'){
-        this.referType.value = '涓氬姟绫诲瀷'
-      }
-      if (val.value == 'linkType'){
-        this.referType.value = '閾炬帴绫诲瀷'
-      }
-      if(val.value){
-        this.referType.disable = false
-      }
-    },
-    selchange(val) {
-      this.banList = val
-      console.log(val);
-    },
     refreshChange() {
       this.onLoad(this.pageParent, this.query);
     },
-    beforeOpen(done, type) {
-      
-      done();
-
+    addSave(){
+      this.$refs.originalAdd.showSubmitDialog = true;
+      this.$refs.originalAdd.attribute = {};
     },
-    rowDel(row) {
-      this.$confirm("纭畾灏嗛�夋嫨鏁版嵁鍒犻櫎?", {
-        confirmButtonText: "纭畾",
-        cancelButtonText: "鍙栨秷",
-        type: "warning"
-      })
-        .then(() => {
-          return remove(row.id);
-        })
-        .then(() => {
-          this.$message({
-            type: "success",
-            message: "鎿嶄綔鎴愬姛!"
-          });
-          this.onLoad();
-        });
+    updateSave(){
+      this.$refs.originalAdd.showSubmitDialog = true;
+      this.$refs.originalAdd.attribute = this.attribute;
     },
-    rowSave(row, done) {
-      add(row).then(() => {
-        this.$message({
-          type: "success",
-          message: "鎿嶄綔鎴愬姛!"
-        });
-        done(row)
-        this.onLoad()
-      }).catch((res) => {
-        this.$message({
-          type: "success",
-          message: res
-        });
-      })
-    },
-    rowUpdate(row, index, done) {
-      update(row).then(() => {
-        this.onLoad()
-        this.$message({
-          type: "success",
-          message: "淇敼鎴愬姛!"
-        });
-        done(row)
+    deleteSave(){
+      remove(this.itemForm.itemData).then(res => {
+        this.$message.success("鍒犻櫎鎴愬姛");
       })
     },
     onLoad(page, params = {}) {
@@ -587,9 +328,9 @@
       })
     },
     rowClick(row) {
-      this.itemData = row;
+      this.itemForm.itemData = row;
       this.selectRow = row.$index;
-
+      this.attribute = row;
     }
     ,selectBtmType(){
         this.referType.display = true;
@@ -603,11 +344,9 @@
           })
         }
         var oid = this.data[this.selectRow].oid;
-        console.log(oid);
         getApplyRange(oid).then(res => {
             this.applyRange.data = res.data.data;
         })
-        console.log("success");
         this.applyRange.display = true;
     },
     applyRangeClose(){
diff --git a/Source/UBCS-WEB/src/views/modeling/originalAdd.vue b/Source/UBCS-WEB/src/views/modeling/originalAdd.vue
new file mode 100644
index 0000000..274381b
--- /dev/null
+++ b/Source/UBCS-WEB/src/views/modeling/originalAdd.vue
@@ -0,0 +1,452 @@
+<template>
+    <el-container>
+        <el-dialog title="鍏冩暟鎹�" :visible.sync="showSubmitDialog" append-to-body @close="closeSubmitDialog" width="50%"
+            style="height: 115vh;">
+            <!-- 鍏冩暟鎹殑澧炴敼寮圭獥 -->
+            <el-form ref="form" :model="attribute" show-message="true" inline size="medium" label-suffix=":"
+                class="attributeForm" :rules="rules" @resetFields="resetAttributeForm" status-icon="true">
+                <el-form-item label="灞炴�х紪鍙�" label-width="100px" prop="id">
+                    <el-input v-model="attribute.id" maxlength="15" show-word-limit type="text"></el-input>
+                </el-form-item>
+                <el-form-item label="灞炴�у悕绉�" label-width="100px" prop="name">
+                    <el-input v-model="attribute.name"></el-input>
+                </el-form-item>
+                <el-form-item label="灞炴�х被鍨�" label-width="100px" prop="typeValue">
+                    <el-select v-model="attribute.typeValue" placeholder="璇烽�夋嫨灞炴�х被鍨�" @change="typeSelectChange">
+                        <el-option v-for="item in typeList" :key="item.value" :label="item.label" :value="item.value">
+                        </el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="鏍囩" label-width="100px">
+                    <el-input v-model="attribute.hashtag"></el-input>
+                </el-form-item>
+                <el-form-item label="榛樿鍊�" label-width="100px">
+                    <el-input v-model="attribute.defaultValue"></el-input>
+                </el-form-item>
+                <el-form-item label="鍏佽涓虹┖" label-width="100px">
+                    <el-switch v-model="attribute.nullable" active-text="鍏佽" inactive-text="涓嶅厑璁�"></el-switch>
+                </el-form-item>
+                <el-form-item label="闀垮害" label-width="100px" prop="maxLength">
+                    <el-input-number v-model="attribute.maxLength" :min="1" :max="4000" :step="1" controls-position="right"></el-input-number>
+                </el-form-item>
+                <el-form-item label="绮惧害" label-width="100px" v-if="attribute.typeValue == 'VTDouble'">
+                    <el-input-number v-model="attribute.precision" :min="1" :max="20" :step="1" controls-position="right" @change="changeNumber"></el-input-number>
+                </el-form-item>
+                <el-form-item label="鎻忚堪" label-width="100px">
+                    <el-input v-model="attribute.description" type="text"></el-input>
+                </el-form-item>
+
+                <el-tabs v-model="activeName" @tab-click="handleClick" stretch="true">
+                    <el-tab-pane label="鍙傜収" name="referTab">
+                        <el-form-item label="鍙傜収绫诲瀷" label-width="100px">
+                            <el-select v-model="attribute.referTypeKey" @change="referTypeSelectChange">
+                                <el-option v-for="item in btmRefer.referTypeList" :key="item.value" :label="item.label"
+                                    :value="item.value">
+                                </el-option>
+                            </el-select>
+                        </el-form-item>
+                        <el-form-item label="鍙傜収鍚嶇О" label-width="100px">
+                            <el-input v-model="attribute.referToName" @focus="openReferConfig" clearable="true"
+                                :disabled="referToFlag" @clear="clearReferTo">
+                                <i slot="suffix" class="el-input__icon el-icon-search"></i>
+                            </el-input>
+                        </el-form-item>
+                    </el-tab-pane>
+                    <el-tab-pane label="鏋氫妇" name="enumTab">
+                        <el-form-item label="鏋氫妇" label-width="100px">
+                            <el-input v-model="attribute.dictValue" @focus="openEnumConfig" clearable="true">
+                                <i slot="suffix" class="el-input__icon el-icon-search"></i>
+                            </el-input>
+                        </el-form-item>
+                        <el-form-item label="鏋氫妇椤�" label-width="100px">
+                            
+                        </el-form-item>
+                    </el-tab-pane>
+                </el-tabs>
+            </el-form>
+            <div slot="footer" class="dialog-footer">
+                <el-button type="primary" @click="submitAttribute">纭畾</el-button>
+                <el-button @click="cancleSubmit">鍙栨秷</el-button>
+            </div>
+            <!-- 閫夋嫨鍙傜収鏃剁殑寮圭獥 -->
+            <el-dialog title="鍙傜収鍒楄〃" :visible.sync="btmRefer.show" append-to-body @close="closeReferDialog" width="80%"
+                style="height: 115vh;">
+                <el-container>
+                    <el-aside>
+                        <basic-container>
+                           <span class="el-dialog__title"> {{ domain.treeOption.title }} </span>
+                            <div style="height:20px;"></div>
+                            <avue-tree id="domain" :data="domain.data" :option="domain.treeOption" @node-click="nodeClick"
+                                class="businessTree" style="height: 418px">
+                                <span class="el-tree-node__label" slot-scope="{ node, data }">
+                                    <span>
+                                        <i class="el-icon-star-on"></i>
+                                        {{ (node || {}).label }}
+                                    </span>
+                                </span>
+                            </avue-tree>
+                        </basic-container>
+                    </el-aside>
+                    <el-main>
+                        <basic-container>
+                            <avue-crud ref="btmTable" :option="btmRefer.option" :data="btmRefer.data" class="btmTable" @row-click="btmReferClick">
+                                <template slot="radio" slot-scope="{row}">
+                                    <el-radio v-model="btmRefer.selectRow" :label="row.$index">&nbsp;
+                                    </el-radio>
+                                </template>
+                            </avue-crud>
+                        </basic-container>
+                    </el-main>
+
+                </el-container>
+                <div slot="footer" class="dialog-footer">
+                    <el-button type="primary" @click="confirmBtm" size="small">纭畾</el-button>
+                    <el-button @click="cancleBtm" size="small">鍙栨秷</el-button>
+                </div>
+            </el-dialog>
+            <!-- 閫夋嫨鏋氫妇鏃剁殑寮圭獥 -->
+            <el-dialog title="鏋氫妇鍒楄〃" :visible.sync="enumRefer.show" append-to-body @close="closeEnumDialog" width="70%" 
+                style="height: 115vh;">
+                <avue-crud ref="eunmTable" :option="enumRefer.option" :data="enumRefer.data" class="enumTable" @row-click="enumReferClick" :page.sync="enumRefer.enumPage">
+                    <template slot="radio" slot-scope="{row}">
+                        <el-radio v-model="enumRefer.selectRow" :label="row.$index">&nbsp;
+                        </el-radio>
+                    </template>
+                </avue-crud>
+                <div slot="footer" class="dialog-footer">
+                    <el-button type="primary" @click="confirmEnum" size="small">纭畾</el-button>
+                    <el-button @click="cancleEnum" size="small">鍙栨秷</el-button>
+                </div>
+            </el-dialog>
+        </el-dialog>
+
+    </el-container>
+</template>
+
+<script>
+import { getDictionary,getParentList } from '@/api/omd/enum'
+import { initTree,btmPage } from '@/api/omd/btmType'
+import { add} from '@/api/omd/OmdAttribute'
+export default {
+    name: 'originalAdd',
+    props: {
+        attribute: {
+            type: Object
+        },
+    },
+    data() {
+        return {
+            showSubmitDialog: false,
+            // 榛樿鐨勯〉绛�
+            activeName: 'referTab',
+            // 灞炴�х被鍨嬩笅鎷夋鏁版嵁
+            typeList: [],
+            // 鍙傜収涓嬫媺妗嗘槸鍚﹀彲鐢�
+            referToFlag: true,
+            // 琛ㄥ崟鏍¢獙瑙勫垯
+            rules: {
+                id: [
+                    { required: true, message: '璇疯緭鍏ュ睘鎬х紪鍙�', trigger: 'blur' },
+                    { pattern: /^[A-Za-z]+$/, message: '灞炴�х紪鍙峰彧鑳戒负鑻辨枃', trigger: 'blur' },
+                    { min: 2, max: 15, message: '闀垮害鍦�2鍒�15涓瓧绗�', trigger: 'blur' }
+                ],
+                name: [
+                    { required: true, message: '璇疯緭鍏ュ睘鎬у悕绉�', trigger: 'blur' }
+                ],
+                typeValue: [
+                    { required: true, message: '璇烽�夋嫨灞炴�х被鍨�', trigger: 'change' }
+                ],
+                maxLength: [
+                    { required: true, message: '闇�瑕佹寚瀹氶暱搴�', trigger: 'blur' }
+                ]
+            },
+            // 鍙傜収椤甸潰琛ㄦ牸閰嶇疆
+            btmRefer: {
+                show: false,
+                btmPage: {
+                    pageSize: 10,
+                    currentPage: 1,
+                    total: 100
+                },
+                option: {
+                    height: 405,
+                    addBtn: false,
+                    refreshBtn: false,
+                    columnBtn: false,
+                    menu: false,
+                    border: true,
+                    reserveSelection: true,
+                    searchMenuSpan: 32,
+                    searchShowBtn: false,
+                    highlightCurrentRow: true,
+                    column: [
+                        {
+                        label: '',
+                        prop: 'radio',
+                        width: 60,
+                        hide: false
+                    },
+                    {
+                        label: '鑻辨枃鍚嶇О',
+                        prop: 'id',
+                        align: 'center',
+                        searchSpan:8,
+                        search: true,
+                    }, {
+                        label: '涓枃鍚嶇О',
+                        prop: 'name',
+                        align: 'center',
+                        searchSpan:8,
+                        search: true,
+                    }]
+                },
+                // 鍙傜収椤甸潰琛ㄦ牸鏁版嵁
+                data: [],
+                selectRow: '',
+                selectItem: {},
+                referTypeList: []
+            },
+            // 鏋氫妇鍙傜収琛ㄦ牸閰嶇疆
+            enumRefer: {
+                show: false,
+                enumPage: {
+                    pageSize: 10,
+                    currentPage: 1,
+                    total: 100
+                },
+                option: {
+                    height: 360,
+                    addBtn: false,
+                    refreshBtn: false,
+                    columnBtn: false,
+                    selection: true,
+                    menu: false,
+                    border: true,
+                    reserveSelection: true,
+                    searchMenuSpan: 32,
+                    searchShowBtn: false,
+                    highlightCurrentRow: true,
+                    column: [{
+                        label: '',
+                        prop: 'radio',
+                        width: 60,
+                        hide: false
+                    },{
+                        label: '鏋氫妇浠e彿',
+                        prop: 'name',
+                        align: 'center',
+                        searchSpan:8,
+                        search: true,
+                    }, {
+                        label: '鏋氫妇鍚嶇О',
+                        prop: 'label',
+                        align: 'center',
+                        searchSpan:8,
+                        search: true,
+                    }]
+                },
+                // 鏋氫妇鍙傜収琛ㄦ牸鏁版嵁
+                data: [],
+                enumDictionary: [],
+                // 閫夊畾琛�
+                selectRow: '',
+                selectItem: {}
+            },
+            domain: {
+                data: [],
+                treeOption: {
+                    defaultExpandAll: true,
+                    title: '棰嗗煙鏈嶅姟鏍�',
+                    props: {
+                        labelText: '',
+                        label: 'name',
+                        value: 'oid',
+                    }
+                }
+            }
+        }
+    },
+    created() {
+        this.initAttributeTypeList();
+        this.initAttributeReferTypeList();
+    },
+    methods: {
+        closeSubmitDialog() {
+            this.resetAttributeForm();
+            this.showSubmitDialog = false;
+        },
+        resetAttributeForm() {
+            this.attribute = {
+                nullable: true,
+                referTypeKey: '',
+            };
+            this.referToFlag = true;
+            this.$refs.form.resetFields();
+        },
+        submitAttribute() { 
+            add(this.attribute).then(res => {
+                this.$message.success("淇濆瓨鎴愬姛");
+                this.showSubmitDialog = false;
+                this.attribute = {};
+                this.$emit('refreshTable');
+            });
+            
+        },
+        cancleSubmit() {
+            this.closeSubmitDialog();
+        },
+        closeEnumDialog() {
+            this.cancleEnum();
+         },
+        closeReferDialog() { 
+            this.cancleBtm();
+        },
+        confirmBtm() { 
+            this.attribute.referToId = this.btmRefer.selectItem.oid;
+            this.attribute.referToName = this.btmRefer.selectItem.name;
+            this.btmRefer.show = false;
+        },
+        cancleBtm() { 
+            this.btmRefer.selectItem = {};
+            this.btmRefer.show = false;
+            this.btmRefer.selectRow = '';
+        },
+        confirmEnum() {
+            this.attribute.usingDict = true;
+            this.attribute.dictCode = this.enumRefer.selectItem.name;
+            this.attribute.dictValue = this.enumRefer.selectItem.label;
+            this.enumRefer.show = false;
+         },
+        cancleEnum() { 
+            this.enumRefer.selectItem = {};
+            this.enumRefer.show = false;
+            this.enumRefer.selectRow = '';
+        },
+        // 鍙傜収鍚嶇О杈撳叆妗嗚幏鍙栫劍鐐规椂鐨勪簨浠�
+        openReferConfig() {
+            if (!this.attribute.referTypeKey) {
+                this.$message.warning('璇峰厛閫夋嫨鍙傜収鐨勭被鍨�');
+                this.referToFlag = true;
+                return;
+            }
+            this.domain.data = [];
+            this.btmRefer.data = [];
+            initTree().then(res => {
+                this.domain.data = res.data.data;
+            })
+            this.btmRefer.show = true;
+
+        },
+        // 鍙傜収绫诲瀷鏍戠殑鐐瑰嚮浜嬩欢
+        nodeClick(data) {
+            // 鍖哄垎涓氬姟绫诲瀷鐨勬煡璇㈠拰閾炬帴绫诲瀷鐨勬煡璇�
+            if(this.attribute.referTypeKey == 'btmType'){
+                btmPage(this.btmRefer.btmPage.currentPage,this.btmRefer.btmPage.pageSize,{domain:data.id}).then(res => {
+                    this.btmRefer.data = res.data.data.records;
+                    this.btmRefer.btmPage.total = res.data.data.total;
+                })
+            }
+            if(this.attribute.referTypeKey == 'linkType'){
+
+            }
+        },
+        // 鏋氫妇绫诲瀷杈撳叆妗嗚幏寰楃劍鐐规椂鐨勪簨浠�
+        openEnumConfig() {
+            getParentList(this.enumRefer.enumPage.currentPage,this.enumRefer.enumPage.pageSize).then(res => {
+                this.enumRefer.enumPage.total = res.data.data.total;
+                this.enumRefer.data = res.data.data.records;
+            })
+            this.enumRefer.show = true;
+        },
+        // 灞炴�х被鍨嬩笅鎷夋閫夋嫨浜嬩欢
+        typeSelectChange(value) {
+            if (value == 'VTString') {
+                this.$set(this.attribute,"maxLength",150)
+            } else if (value == 'VTInteger') {
+                this.$set(this.attribute,"maxLength",50)
+            } else if (value == 'VTBoolean') {
+                this.$set(this.attribute,"maxLength",5)
+            } else if (value == 'VTDouble') {
+                this.$set(this.attribute,"maxLength",26)
+                this.$set(this.attribute,"precision",8)
+            } else if (value == 'VTLong') {
+                this.$set(this.attribute,"maxLength",150)
+            } else if (value == 'VTDate' || value == 'VTTime' || value == 'VTDateTime') {
+                this.$set(this.attribute,"maxLength",6)
+            } else {
+                this.$set(this.attribute,"maxLength",50)
+            }
+            this.attribute.typeCode = 'attributeType';
+            this.attribute.typeKey = value;
+        },
+        referTypeSelectChange(value) {
+            this.attribute.referTypeCode = 'attributeReferType';
+            this.attribute.referTypeKey = value;
+            this.referToFlag = false;
+        },
+        initAttributeTypeList() {
+            getDictionary({ code: 'attributeType' }).then(res => {
+                res.data.data.forEach(element => {
+                    this.typeList.push(
+                        { value: element.itemValue, label: element.itemName }
+                    )
+                });
+            }).catch(() => {
+                this.$message.error('灞炴�х被鍨嬫病鎵惧埌鎴栬�呮湭瀹氫箟')
+            })
+        },
+        initAttributeReferTypeList(){
+            getDictionary({ code: 'attributeReferType' }).then(res => {
+                res.data.data.forEach(element => {
+                    this.btmRefer.referTypeList.push(
+                        { value: element.itemValue, label: element.itemName }
+                    )
+                });
+            }).catch(() => {
+                this.$message.error('鍙傜収绫诲瀷娌℃壘鍒版垨鑰呮湭瀹氫箟')
+            })
+        },
+        btmReferClick(row){
+            this.btmRefer.selectItem = row;
+            this.btmRefer.selectRow = row.$index;
+        },
+        enumReferClick(row){
+            this.enumRefer.selectItem = row;
+            this.enumRefer.selectRow = row.$index;
+        },
+        // 鍙傜収鍚嶇О鐐瑰嚮娓呴櫎鏁版嵁
+        clearReferTo(){
+            this.$delete(this.attribute,'referToId');
+            this.$delete(this.attribute,'referToName');
+            this.btmRefer.selectItem = {};
+            this.btmRefer.selectRow = '';
+        },
+        handleClick(tab){
+            // 鍥犱负鍙兘鍙傜収鍜屾灇涓句簩閫変竴銆傛墍浠ュ湪鍒囨崲鐨勬椂鍊欐妸灞炴�х粰娓呯┖銆�
+            this.$delete(this.attribute,'referTypeCode');
+            this.$delete(this.attribute,'referTypeKey');
+            this.$delete(this.attribute,'referTypeValue');
+            this.$delete(this.attribute,'referToId');
+            this.$delete(this.attribute,'referToName');
+            this.$delete(this.attribute,'dictCode');
+            this.$delete(this.attribute,'dictKey');
+            this.$delete(this.attribute,'dictValue');
+            this.$delete(this.attribute,'usingDict');
+        }
+    }
+}
+</script>
+
+<style>
+.btmTable>.el-card:nth-of-type(2)>.el-card__body>.avue-crud__menu {
+    display: none !important;
+}
+
+.enumTable>.el-card:nth-of-type(2)>.el-card__body>.avue-crud__menu {
+    display: none !important;
+}
+
+.attributeForm>.el-form-item>.el-form-item__content>.el-input>.el-input__inner {
+    width: 200px;
+}
+</style>
\ No newline at end of file
diff --git a/Source/UBCS-WEB/vue.config.js b/Source/UBCS-WEB/vue.config.js
index 1a23368..3b94341 100644
--- a/Source/UBCS-WEB/vue.config.js
+++ b/Source/UBCS-WEB/vue.config.js
@@ -28,7 +28,8 @@
         //鏈湴鏈嶅姟鎺ュ彛鍦板潃
         // target: 'http://localhost:37000',
         //target: 'http://192.168.3.7:37000',
-        target: 'http://dev.vci-tech.com:37000',
+        // target: 'http://dev.vci-tech.com:37000',
+        target: 'http://192.168.1.51:37000/',
         //杩滅▼婕旂ず鏈嶅姟鍦板潃,鍙敤浜庣洿鎺ュ惎鍔ㄩ」鐩�
         // target: 'https://saber.bladex.vip/api',
         ws: true,
diff --git a/Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/constant/LauncherConstant.java b/Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/constant/LauncherConstant.java
index 8c8a346..ff73742 100644
--- a/Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/constant/LauncherConstant.java
+++ b/Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/constant/LauncherConstant.java
@@ -41,7 +41,7 @@
 	 * nacos dev 鍦板潃
 	 */
 	//String NACOS_DEV_ADDR = "dev.vci-tech.com:38848";
-	String NACOS_DEV_ADDR = "localhost:8848";
+	String NACOS_DEV_ADDR = "127.0.0.1:8848";
 
 	/**
 	 * nacos prod 鍦板潃
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreApplyFormDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreApplyFormDTO.java
index 049e5af..6364f4c 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreApplyFormDTO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreApplyFormDTO.java
@@ -1,6 +1,7 @@
 package com.vci.ubcs.code.dto;
 
 import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
+import io.swagger.annotations.ApiModelProperty;
 
 /**
  * 璁板綍闆嗘垚灞炴暟鎹敵璇穒d
@@ -16,6 +17,11 @@
 	/***
 	 * 闆嗗洟缂栫爜
 	 */
+	private String groupCode;
+	/***
+	 * 閿欒鏍囪瘑鐮�
+	 */
+
 	private String code;
 
 	/***
@@ -34,6 +40,11 @@
 	 * 娑堟伅
 	 */
 	private String msg;
+
+	/**
+	 * 鐢宠鍗曠被鍨�1:鐢宠锛�2锛氭洿鏀�
+	 */
+	private  String operationType;
 
 	public String getCode() {
 		return code;
@@ -75,14 +86,32 @@
 		this.msg = msg;
 	}
 
+	public String getOperationType() {
+		return operationType;
+	}
+
+	public void setOperationType(String operationType) {
+		this.operationType = operationType;
+	}
+
+	public String getGroupCode() {
+		return groupCode;
+	}
+
+	public void setGroupCode(String groupCode) {
+		this.groupCode = groupCode;
+	}
+
 	@Override
 	public String toString() {
-		return "DockingPreApplyCodeFormVO{" +
-			"code='" + code + '\'' +
+		return "DockingPreApplyFormDTO{" +
+			"groupCode='" + groupCode + '\'' +
+			", code='" + code + '\'' +
 			", content='" + content + '\'' +
 			", dataOid='" + dataOid + '\'' +
 			", dataBtmName='" + dataBtmName + '\'' +
 			", msg='" + msg + '\'' +
+			", operationType='" + operationType + '\'' +
 			'}';
 	}
 }
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreClassifyDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreClassifyDTO.java
index 3a3403a..afe3d45 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreClassifyDTO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreClassifyDTO.java
@@ -2,6 +2,8 @@
 
 import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
 
+import java.util.List;
+
 /***
  * 璁板綍闆嗗洟鍒嗙被淇℃伅
  * @author xiejun
@@ -29,6 +31,10 @@
 	 * 鐖剁骇鑺傜偣
 	 */
 	private  String pid;
+	/**
+	 * 闆嗗洟鍒嗙被鍖呭惈鐨勬ā鍨嬭鍥�
+	 */
+	List<DockingPreViewModelDTO> dockingPreViewModelDTOList;
 
 	public String getClassName() {
 		return className;
@@ -62,6 +68,14 @@
 		this.pid = pid;
 	}
 
+	public List<DockingPreViewModelDTO> getDockingPreViewModelDTOList() {
+		return dockingPreViewModelDTOList;
+	}
+
+	public void setDockingPreViewModelDTOList(List<DockingPreViewModelDTO> dockingPreViewModelDTOList) {
+		this.dockingPreViewModelDTOList = dockingPreViewModelDTOList;
+	}
+
 	@Override
 	public String toString() {
 		return "DockingPreClassifyDTO{" +
@@ -69,6 +83,7 @@
 			", nodeLink='" + nodeLink + '\'' +
 			", getNodeLinkName='" + getNodeLinkName + '\'' +
 			", pid='" + pid + '\'' +
+			", dockingPreViewModelDTOList=" + dockingPreViewModelDTOList +
 			'}';
 	}
 }
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreViewModelDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreViewModelDTO.java
index 779cee7..da14768 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreViewModelDTO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreViewModelDTO.java
@@ -1,6 +1,9 @@
 package com.vci.ubcs.code.dto;
 
 import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
+import com.vci.ubcs.code.vo.pagemodel.DockingPreMetaAttrVO;
+
+import java.util.List;
 
 /**
  * 璁板綍闆嗘垚闆嗗洟鍒嗙被瑙嗗浘淇℃伅
@@ -27,7 +30,10 @@
 	 * 鏁版嵁xinx
 	 */
 	private  String impactList;
-
+	/***
+	 * 妯″瀷瑙嗗浘鍖呭惈鐨勫睘鎬�
+	 */
+	private List<DockingPreMetaAttrDTO> dockingPreMetaAttrDTOList;
 
 	public String getViewName() {
 		return viewName;
@@ -53,12 +59,21 @@
 		this.impactList = impactList;
 	}
 
+	public List<DockingPreMetaAttrDTO> getDockingPreMetaAttrDTOList() {
+		return dockingPreMetaAttrDTOList;
+	}
+
+	public void setDockingPreMetaAttrDTOList(List<DockingPreMetaAttrDTO> dockingPreMetaAttrDTOList) {
+		this.dockingPreMetaAttrDTOList = dockingPreMetaAttrDTOList;
+	}
+
 	@Override
 	public String toString() {
-		return "DockingPreViewModelVO{" +
+		return "DockingPreViewModelDTO{" +
 			"viewName='" + viewName + '\'' +
 			", sourceClassifyId='" + sourceClassifyId + '\'' +
 			", impactList='" + impactList + '\'' +
+			", dockingPreMetaAttrDTOList=" + dockingPreMetaAttrDTOList +
 			'}';
 	}
 }
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingPreApplyForm.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingPreApplyForm.java
index 324cc99..7b82cd1 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingPreApplyForm.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingPreApplyForm.java
@@ -16,11 +16,15 @@
 @ApiModel(value = "DockingPreApplyForm", description = "闆嗗洟缂栫爜鐢宠鍗曡褰曞璞�")
 @EqualsAndHashCode
 public class DockingPreApplyForm extends BaseModel {
-
 	/***
 	 * 闆嗗洟缂栫爜
 	 */
 	@ApiModelProperty(value = "闆嗗洟缂栫爜")
+	private String groupCode;
+	/***
+	 * 閿欒鏍囪瘑鐮�
+	 */
+	@ApiModelProperty(value = "閿欒鏍囪瘑鐮�")
 	private String code;
 
 	/***
@@ -43,4 +47,9 @@
 	 */
 	@ApiModelProperty(value = "娑堟伅")
 	private String msg;
+	/**
+	 * 鐢宠鍗曠被鍨�1:鐢宠锛�2锛氭洿鏀�
+	 */
+	@ApiModelProperty(value = "娑堟伅")
+	private  String operationType;
 }
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreApplyFormVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreApplyFormVO.java
index 2832160..23d85ab 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreApplyFormVO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreApplyFormVO.java
@@ -1,5 +1,8 @@
 package com.vci.ubcs.code.vo.pagemodel;
 
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.xml.soap.SAAJResult;
 
 /**
  * 璁板綍闆嗘垚灞炴暟鎹敵璇穒d
@@ -15,6 +18,10 @@
 	/***
 	 * 闆嗗洟缂栫爜
 	 */
+	private String  groupCode;
+	/***
+	 * 閿欒鏍囪瘑鐮�
+	 */
 	private String code;
 
 	/***
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreClassifyVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreClassifyVO.java
index 8284527..4b9f618 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreClassifyVO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreClassifyVO.java
@@ -1,5 +1,7 @@
 package com.vci.ubcs.code.vo.pagemodel;
 
+import java.util.List;
+
 /**
  * 璁板綍闆嗘垚闆嗗洟鍒嗙被淇℃伅
  * @author xiejun
@@ -27,6 +29,10 @@
 	 * 鐖剁骇鑺傜偣
 	 */
 	private  String pid;
+	/***
+	 * 鍒嗙被妯″瀷瑙嗗浘
+	 */
+	private List<DockingPreViewModelVO> dockingPreViewModelVOList;
 
 	public String getClassName() {
 		return className;
@@ -60,13 +66,22 @@
 		this.pid = pid;
 	}
 
+	public List<DockingPreViewModelVO> getDockingPreViewModelVOList() {
+		return dockingPreViewModelVOList;
+	}
+
+	public void setDockingPreViewModelVOList(List<DockingPreViewModelVO> dockingPreViewModelVOList) {
+		this.dockingPreViewModelVOList = dockingPreViewModelVOList;
+	}
+
 	@Override
 	public String toString() {
-		return "DockingPreClassifyDTO{" +
+		return "DockingPreClassifyVO{" +
 			"className='" + className + '\'' +
 			", nodeLink='" + nodeLink + '\'' +
 			", getNodeLinkName='" + getNodeLinkName + '\'' +
 			", pid='" + pid + '\'' +
+			", dockingPreViewModelVOList=" + dockingPreViewModelVOList +
 			'}';
 	}
 }
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreViewModelVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreViewModelVO.java
index 3421693..f4d047c 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreViewModelVO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreViewModelVO.java
@@ -1,4 +1,7 @@
 package com.vci.ubcs.code.vo.pagemodel;
+
+import java.util.List;
+
 /**
  * 璁板綍闆嗘垚闆嗗洟鍒嗙被瑙嗗浘淇℃伅
  * @author xiejun
@@ -24,8 +27,10 @@
 	 * 鏁版嵁xinx
 	 */
 	private  String impactList;
-
-
+	/***
+	 * 妯″瀷瑙嗗浘鍖呭惈鐨勫睘鎬�
+	 */
+	private List<DockingPreMetaAttrVO> dockingPreMetaAttrVOList;
 	public String getViewName() {
 		return viewName;
 	}
@@ -50,12 +55,21 @@
 		this.impactList = impactList;
 	}
 
+	public List<DockingPreMetaAttrVO> getDockingPreMetaAttrVOList() {
+		return dockingPreMetaAttrVOList;
+	}
+
+	public void setDockingPreMetaAttrVOList(List<DockingPreMetaAttrVO> dockingPreMetaAttrVOList) {
+		this.dockingPreMetaAttrVOList = dockingPreMetaAttrVOList;
+	}
+
 	@Override
 	public String toString() {
 		return "DockingPreViewModelVO{" +
 			"viewName='" + viewName + '\'' +
 			", sourceClassifyId='" + sourceClassifyId + '\'' +
 			", impactList='" + impactList + '\'' +
+			", dockingPreMetaAttrVOList=" + dockingPreMetaAttrVOList +
 			'}';
 	}
 }
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/ClassifyVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/ClassifyVO.java
new file mode 100644
index 0000000..c388477
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/ClassifyVO.java
@@ -0,0 +1,141 @@
+package com.vci.ubcs.code.vo.webserviceModel.coderule;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
+
+@XStreamAlias("classify")
+public class ClassifyVO {
+    /**
+     * 鍒嗙被id
+     */
+    @XStreamAsAttribute
+    private String id;
+    /***
+     * 鍒嗙被鍚嶇О
+     */
+    @XStreamAsAttribute
+    private String name;
+    /***
+     * 鐖惰妭鐐筰d
+     */
+    @XStreamAsAttribute
+    private String pid;
+    /***
+     * 鍒嗙被浠e彿
+     */
+    @XStreamAsAttribute
+    private String classCode;
+    /***
+     * 鎻忚堪
+     */
+    @XStreamAsAttribute
+    private  String description;
+    /***
+     * 鍒嗙被閾炬帴璺緞
+     */
+    @XStreamAsAttribute
+    private  String fullPathName;
+    /***
+     * 鍒嗙被鐘舵��
+     */
+    @XStreamAsAttribute
+    private String lcStatus;
+	/***
+	 * 瑙勫垯id
+	 */
+	@XStreamAsAttribute
+	private String codeRuleId;
+
+	/***
+	 * 鏄惁涓哄彾瀛愯妭鐐�
+	 */
+	@XStreamAsAttribute
+	private boolean isLeaf;
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getPid() {
+        return pid;
+    }
+
+    public void setPid(String pid) {
+        this.pid = pid;
+    }
+
+    public String getClassCode() {
+        return classCode;
+    }
+
+    public void setClassCode(String classCode) {
+        this.classCode = classCode;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public String getFullPathName() {
+        return fullPathName;
+    }
+
+    public void setFullPathName(String fullPathName) {
+        this.fullPathName = fullPathName;
+    }
+
+    public String getLcStatus() {
+        return lcStatus;
+    }
+
+    public void setLcStatus(String lcStatus) {
+        this.lcStatus = lcStatus;
+    }
+
+	public String getCodeRuleId() {
+		return codeRuleId;
+	}
+
+	public void setCodeRuleId(String codeRuleId) {
+		this.codeRuleId = codeRuleId;
+	}
+
+	public boolean isLeaf() {
+		return isLeaf;
+	}
+
+	public void setLeaf(boolean leaf) {
+		isLeaf = leaf;
+	}
+
+	@Override
+	public String toString() {
+		return "ClassifyVO{" +
+			"id='" + id + '\'' +
+			", name='" + name + '\'' +
+			", pid='" + pid + '\'' +
+			", classCode='" + classCode + '\'' +
+			", description='" + description + '\'' +
+			", fullPathName='" + fullPathName + '\'' +
+			", lcStatus='" + lcStatus + '\'' +
+			", codeRuleId='" + codeRuleId + '\'' +
+			", isLeaf=" + isLeaf +
+			'}';
+	}
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/CodeRuleVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/CodeRuleVO.java
new file mode 100644
index 0000000..8ab2193
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/CodeRuleVO.java
@@ -0,0 +1,5 @@
+package com.vci.ubcs.code.vo.webserviceModel.coderule;
+
+public class CodeRuleVO {
+//	private String
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/LibraryVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/LibraryVO.java
new file mode 100644
index 0000000..14b4b0f
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/LibraryVO.java
@@ -0,0 +1,52 @@
+package com.vci.ubcs.code.vo.webserviceModel.coderule;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
+import com.thoughtworks.xstream.annotations.XStreamImplicit;
+
+import java.util.List;
+
+@XStreamAlias("library ")
+public class LibraryVO {
+    @XStreamAsAttribute
+    private String id;
+    @XStreamAsAttribute
+    private  String name;
+    @XStreamImplicit
+    private List<ClassifyVO>classify;
+
+	private List<CodeRuleVO> coderule;
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public List<ClassifyVO> getClassify() {
+        return classify;
+    }
+
+    public void setClassify(List<ClassifyVO> classify) {
+        this.classify = classify;
+    }
+
+    @Override
+    public String toString() {
+        return "LibraryVO{" +
+                "id='" + id + '\'' +
+                ", name='" + name + '\'' +
+                ", classify=" + classify +
+                '}';
+    }
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/QueryClassifyVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/QueryClassifyVO.java
new file mode 100644
index 0000000..a5680d8
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/QueryClassifyVO.java
@@ -0,0 +1,23 @@
+package com.vci.ubcs.code.vo.webserviceModel.coderule;
+
+public class QueryClassifyVO {
+    /***
+     *
+     */
+    private QueryData data;
+
+    public QueryData getData() {
+        return data;
+    }
+
+    public void setData(QueryData data) {
+        this.data = data;
+    }
+
+    @Override
+    public String toString() {
+        return "QueryClassifyVO{" +
+                "data=" + data +
+                '}';
+    }
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/QueryData.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/QueryData.java
new file mode 100644
index 0000000..a62ecb4
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/QueryData.java
@@ -0,0 +1,45 @@
+package com.vci.ubcs.code.vo.webserviceModel.coderule;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
+import com.vci.ubcs.code.vo.webserviceModel.apply.UserVO;
+
+@XStreamAlias("data")
+public class QueryData {
+    @XStreamAsAttribute
+    private String systemId;
+    private UserVO user;
+    private QueryLibraryVO library ;
+    public QueryLibraryVO getLibrary() {
+        return library;
+    }
+
+    public void setLibrary(QueryLibraryVO library) {
+        this.library = library;
+    }
+
+    public String getSystemId() {
+        return systemId;
+    }
+
+    public void setSystemId(String systemId) {
+        this.systemId = systemId;
+    }
+
+	public UserVO getUser() {
+		return user;
+	}
+
+	public void setUser(UserVO user) {
+		this.user = user;
+	}
+
+	@Override
+    public String toString() {
+        return "QueryData{" +
+                "systemId='" + systemId + '\'' +
+                ", library=" + library +
+                '}';
+    }
+}
+
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/QueryLibraryVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/QueryLibraryVO.java
new file mode 100644
index 0000000..614b60c
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/QueryLibraryVO.java
@@ -0,0 +1,39 @@
+package com.vci.ubcs.code.vo.webserviceModel.coderule;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
+import com.thoughtworks.xstream.annotations.XStreamImplicit;
+
+import java.util.List;
+
+@XStreamAlias("library")
+public class QueryLibraryVO {
+    @XStreamAsAttribute
+    private String id;
+    @XStreamImplicit
+    private List<String> classifyid;
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public List<String> getClassifyid() {
+        return classifyid;
+    }
+
+    public void setClassifyid(List<String> classifyid) {
+        this.classifyid = classifyid;
+    }
+
+    @Override
+    public String toString() {
+        return "LibraryVO{" +
+                "id='" + id + '\'' +
+                ", classifyid=" + classifyid +
+                '}';
+    }
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/ResultClassifyVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/ResultClassifyVO.java
new file mode 100644
index 0000000..b514fa9
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/ResultClassifyVO.java
@@ -0,0 +1,21 @@
+package com.vci.ubcs.code.vo.webserviceModel.coderule;
+
+public class ResultClassifyVO {
+
+   private ResultData resultData;
+
+    public ResultData getResultData() {
+        return resultData;
+    }
+
+    public void setResultData(ResultData resultData) {
+        this.resultData = resultData;
+    }
+
+    @Override
+    public String toString() {
+        return "ResultClassifyVO{" +
+                "resultData=" + resultData +
+                '}';
+    }
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/ResultData.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/ResultData.java
new file mode 100644
index 0000000..2164004
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/coderule/ResultData.java
@@ -0,0 +1,45 @@
+package com.vci.ubcs.code.vo.webserviceModel.coderule;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+
+@XStreamAlias("data")
+public class ResultData {
+    @XStreamAlias("errorid")
+    private  String errorid;
+    @XStreamAlias("msg")
+    private String msg;
+    private LibraryVO library ;
+
+    public LibraryVO getLibrary() {
+        return library;
+    }
+
+    public void setLibrary(LibraryVO library) {
+        this.library = library;
+    }
+
+    public String getErrorid() {
+        return errorid;
+    }
+
+    public void setErrorid(String errorid) {
+        this.errorid = errorid;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    @Override
+    public String toString() {
+        return "ResultData{" +
+                "code='" + errorid + '\'' +
+                ", msg='" + msg + '\'' +
+                ", library=" + library +
+                '}';
+    }
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/DockingGroupDataVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/DockingGroupDataVO.java
new file mode 100644
index 0000000..7688858
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/DockingGroupDataVO.java
@@ -0,0 +1,31 @@
+package com.vci.ubcs.code.vo.webserviceModel.group;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.List;
+
+/***
+ * 闆嗗洟鐢宠鎺ュ彛鍙傛暟淇℃伅
+ */
+@Data
+public class DockingGroupDataVO {
+
+	/***
+	 * 绯荤粺鏍囪瘑
+	 */
+
+	private String sysName;
+	/**
+	 * 涓氬姟鏁版嵁
+	 */
+	private List<DockingMainData> mainData;
+
+	@Override
+	public String toString() {
+		return "DockingGroupDataVO{" +
+			"sysName='" + sysName + '\'' +
+			", mainData=" + mainData +
+			'}';
+	}
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/DockingMainData.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/DockingMainData.java
new file mode 100644
index 0000000..772edef
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/DockingMainData.java
@@ -0,0 +1,47 @@
+package com.vci.ubcs.code.vo.webserviceModel.group;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DockingMainData {
+	/**
+ 	* 鐢宠鍗曞彿
+ 	*/
+	private String  applyId;
+	/***
+	 * 瀵嗙骇
+	 */
+	private  String secretLevel;
+
+	/***
+	 * 鐢宠鍗曚綅浠g爜锛堝131460锛�
+	 */
+	private  String applyEntId;
+	/***
+	 * 鐢宠浜哄憳缂栫爜锛堢敤鎴峰悕锛屽85645824锛�
+	 */
+	private  String createBy;
+	/***
+	 * 鍒嗙被鍚嶇О
+	 */
+	private String  className;
+	/***
+	 * 妯″瀷瑙嗗浘淇℃伅
+	 */
+	private List<DockingViewVO> viewInfos;
+
+	@Override
+	public String toString() {
+		return "DockingMainData{" +
+			"applyId='" + applyId + '\'' +
+			", secretLevel='" + secretLevel + '\'' +
+			", applyEntId='" + applyEntId + '\'' +
+			", createBy='" + createBy + '\'' +
+			", className='" + className + '\'' +
+			", viewInfos=" + viewInfos +
+			'}';
+	}
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/DockingViewVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/DockingViewVO.java
new file mode 100644
index 0000000..e1e3b95
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/DockingViewVO.java
@@ -0,0 +1,29 @@
+package com.vci.ubcs.code.vo.webserviceModel.group;
+
+import lombok.Data;
+
+import java.util.List;
+import java.util.Map;
+
+/***
+ * 妯″瀷瑙嗗浘淇℃伅
+ */
+@Data
+public class DockingViewVO {
+	/**
+	 * 妯″瀷瑙嗗浘鍚嶇О
+	 */
+	private  String viewName;
+	/**
+	 * 灞炴�у璞′俊鎭�
+	 */
+	private List<Map<String,Object>> viewValue;
+
+	@Override
+	public String toString() {
+		return "DockingViewVO{" +
+			"viewName='" + viewName + '\'' +
+			", viewValue=" + viewValue +
+			'}';
+	}
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/ResultDataVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/ResultDataVO.java
new file mode 100644
index 0000000..6e2f501
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/ResultDataVO.java
@@ -0,0 +1,15 @@
+package com.vci.ubcs.code.vo.webserviceModel.group;
+
+import lombok.Data;
+
+@Data
+public class ResultDataVO<T> {
+	/***
+	 * 娑堟伅
+	 */
+	private String code;
+
+	private String msg;
+
+	private T data;
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/result/DataObjectVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/result/DataObjectVO.java
new file mode 100644
index 0000000..e2c9379
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/result/DataObjectVO.java
@@ -0,0 +1,36 @@
+package com.vci.ubcs.code.vo.webserviceModel.group.result;
+
+
+public class DataObjectVO {
+
+	private String msg;
+
+	private String code;
+
+	private DataVO data;
+
+	public String getMsg() {
+		return msg;
+	}
+
+	public void setMsg(String msg) {
+		this.msg = msg;
+	}
+
+	public String getCode() {
+		return code;
+	}
+
+	public void setCode(String code) {
+		this.code = code;
+	}
+
+	public DataVO getData() {
+		return data;
+	}
+
+	public void setData(DataVO data) {
+		this.data = data;
+	}
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/result/DataVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/result/DataVO.java
new file mode 100644
index 0000000..8c9ae96
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/result/DataVO.java
@@ -0,0 +1,28 @@
+package com.vci.ubcs.code.vo.webserviceModel.group.result;
+
+public class DataVO {
+
+	private String applyId;
+	private String customCoding;
+	private String formState;
+	public String getApplyId() {
+		return applyId;
+	}
+	public void setApplyId(String applyId) {
+		this.applyId = applyId;
+	}
+	public String getCustomCoding() {
+		return customCoding;
+	}
+	public void setCustomCoding(String customCoding) {
+		this.customCoding = customCoding;
+	}
+	public String getFormState() {
+		return formState;
+	}
+	public void setFormState(String formState) {
+		this.formState = formState;
+	}
+
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/result/ResultDataObject.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/result/ResultDataObject.java
new file mode 100644
index 0000000..2a7dcf7
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/group/result/ResultDataObject.java
@@ -0,0 +1,48 @@
+package com.vci.ubcs.code.vo.webserviceModel.group.result;
+
+
+import java.util.List;
+
+public class ResultDataObject {
+	/**
+	 * 鐘舵�佺爜	1锛氭垚鍔燂紱2锛氬け璐�
+	 */
+	private String code;
+	/**
+	 * 鎺ュ彛璋冪敤缁撴灉	鎴愬姛锛涘け璐ュ師鍥�
+	 */
+	private String msg;
+	/***
+	 * 鏁版嵁瀵硅薄
+	 */
+	private List<DataObjectVO> data;
+	public String getCode() {
+		return code;
+	}
+	public void setCode(String code) {
+		this.code = code;
+	}
+	public String getMsg() {
+		return msg;
+	}
+	public void setMsg(String msg) {
+		this.msg = msg;
+	}
+
+	public List<DataObjectVO> getData() {
+		return data;
+	}
+
+	public void setData(List<DataObjectVO> data) {
+		this.data = data;
+	}
+
+	@Override
+	public String toString() {
+		return "ResultDataObject{" +
+			"code='" + code + '\'' +
+			", msg='" + msg + '\'' +
+			", data=" + data +
+			'}';
+	}
+}
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 aa2c7cb..d808be2 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
@@ -1,6 +1,7 @@
 package com.vci.ubcs.omd.entity;
 
 import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
@@ -36,6 +37,7 @@
 	 */
 	@ApiModelProperty(value = "涓婚敭")
 	@NotNull
+	@TableId
 	private String oid;
 
 	/**
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 fa1e56c..89e6ada 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
@@ -1,6 +1,7 @@
 package com.vci.ubcs.omd.entity;
 
 
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
 import lombok.Data;
@@ -27,6 +28,7 @@
     /**
      * 涓婚敭
      */
+	@TableId
     private String oid;
 
     /**
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 9d902d0..760b6c1 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
@@ -1,6 +1,7 @@
 package com.vci.ubcs.omd.entity;
 
 
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
 import lombok.Data;
@@ -25,6 +26,7 @@
     /**
      * 涓婚敭
      */
+	@TableId
     private String oid;
 
     /**
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleEvent.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleEvent.java
index 73adf55..0c41e84 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleEvent.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleEvent.java
@@ -1,6 +1,7 @@
 package com.vci.ubcs.omd.entity;
 
 
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
 import lombok.Data;
@@ -26,6 +27,7 @@
     /**
      * 涓婚敭
      */
+	@TableId
     private String oid;
 
     /**
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleLine.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleLine.java
index 88fd971..1cb65c1 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleLine.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleLine.java
@@ -1,6 +1,7 @@
 package com.vci.ubcs.omd.entity;
 
 
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
 import lombok.Data;
@@ -61,12 +62,13 @@
     /**
      * 涓婚敭
      */
+	@TableId
     private String oid;
 
     /**
      * 涓氬姟绫诲瀷鍚嶇О
      */
-    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/LifeCycleLineEvent.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleLineEvent.java
index ad1f478..2f8d1cf 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleLineEvent.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleLineEvent.java
@@ -1,6 +1,7 @@
 package com.vci.ubcs.omd.entity;
 
 
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
 import lombok.Data;
@@ -25,6 +26,7 @@
     /**
      * 涓婚敭
      */
+	@TableId
     private String oid;
 
     /**
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleRule.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleRule.java
index bebe70c..6aed6d3 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleRule.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleRule.java
@@ -1,6 +1,7 @@
 package com.vci.ubcs.omd.entity;
 
 
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
 import lombok.Data;
@@ -26,6 +27,7 @@
     /**
      * 涓婚敭
      */
+	@TableId
     private String oid;
 
     /**
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LinkType.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LinkType.java
index 12f4ef1..c8df463 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LinkType.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LinkType.java
@@ -1,6 +1,7 @@
 package com.vci.ubcs.omd.entity;
 
 
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
 import lombok.Data;
@@ -24,6 +25,7 @@
     /**
      * 涓婚敭
      */
+	@TableId
     private String oid;
 
     /**
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LinkTypeAttribute.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LinkTypeAttribute.java
index af7355e..785b2f9 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LinkTypeAttribute.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LinkTypeAttribute.java
@@ -1,6 +1,7 @@
 package com.vci.ubcs.omd.entity;
 
 
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
 import lombok.Data;
@@ -26,6 +27,7 @@
     /**
      * 涓婚敭
      */
+	@TableId
     private String oid;
 
     /**
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 d85eb5c..eb5a27b 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
@@ -1,5 +1,6 @@
 package com.vci.ubcs.omd.entity;
 
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
 import lombok.Data;
@@ -105,6 +106,7 @@
 	/**
 	 * 涓婚敭
 	 */
+	@TableId
 	private String oid;
 
 	/**
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/RevisionRule.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/RevisionRule.java
index 12964ad..fb466bc 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/RevisionRule.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/RevisionRule.java
@@ -1,5 +1,6 @@
 package com.vci.ubcs.omd.entity;
 
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
 import lombok.Data;
@@ -24,6 +25,7 @@
 	/**
 	 * 涓婚敭
 	 */
+	@TableId
 	private String oid;
 
 	/**
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/Status.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/Status.java
index 5bf9899..0bce9c4 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/Status.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/Status.java
@@ -1,6 +1,7 @@
 package com.vci.ubcs.omd.entity;
 
 
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
 import lombok.Data;
@@ -27,6 +28,7 @@
 	/**
 	 * 涓婚敭
 	 */
+	@TableId
 	private String oid;
 
 	/**
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/MdmBtmTypeConstant.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/MdmBtmTypeConstant.java
index fc4aee3..6fce916 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/MdmBtmTypeConstant.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/MdmBtmTypeConstant.java
@@ -5,6 +5,21 @@
  */
 public class MdmBtmTypeConstant {
 
+
+	/**
+	 * 鐘舵��
+	 */
+	public static final String CODE_STATUS_FILED = "lcstatus";
+
+	/**
+	 * 闆嗗洟鐮佺殑瀛楁
+	 */
+	public static final String CODE_GROUP_FIELD = "groupcode";
+
+	/**
+	 * 鍒嗙被鐨勪富閿瓧娈�
+	 */
+	public static final String CODE_CLASSIFY_OID_FIELD = "codeclsfid";
     /**
      * 涓婚搴撳垎绫�
      */
@@ -157,17 +172,30 @@
     public static final String DOCKING_PRE_JINTEGMAPCONFIG = "jintegmapconifg";
 
     /**
-     * 闆嗘垚灞炴�ф槧灏勫叧绯讳笟鍔$被鍨�
+     * 闆嗘垚闆嗗洟鍒嗙被涓氬姟绫诲瀷
      */
     public static final String DOCKING_PRE_JCLASS = "jclass";
     /**
-     * 闆嗘垚灞炴�ф槧灏勫叧绯讳笟鍔$被鍨�
+     * 闆嗘垚闆嗗洟妯″瀷灞炴�т笟鍔$被鍨�
      */
     public static final String DOCKING_PRE_JMETAATRR = "jmetaattr";
 
     /**
-     * 闆嗘垚灞炴�ф槧灏勫叧绯讳笟鍔$被鍨�
+     * 闆嗘垚灞炴�у彇鍊艰寖鍥村叧绯讳笟鍔$被鍨�
      */
     public static final String DOCKING_PRE_JRANGE = "jrange";
 
+
+	/**
+	 * 闆嗘垚闆嗗洟鐢宠鍗曚笟鍔$被鍨�
+	 */
+	public static final String DOCKING_PRE_JAPPLYFORM = "japplyform";
+
+
+
+	/**
+	 * 闆嗘垚闆嗗洟妯″瀷灞炴�т笟鍔$被鍨�
+	 */
+	public static final String DOCKING_PRE_JVIEWMODEL = "jviewmodel";
+
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/DockingPreApplyCodeController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/DockingPreApplyCodeController.java
index 6ddef1b..fbc0489 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/DockingPreApplyCodeController.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/DockingPreApplyCodeController.java
@@ -1,14 +1,27 @@
 package com.vci.ubcs.code.controller;
 
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.code.entity.DockingPreApplyForm;
+import com.vci.ubcs.code.feign.IMdmInterJtClient;
+import com.vci.ubcs.code.service.IDockingPreApplyFormService;
 import com.vci.ubcs.code.service.IDockingPreAttrMappingService;
 import com.vci.ubcs.code.service.IDockingPreAttrRangeService;
+import com.vci.ubcs.code.service.IDockingPreClassifyService;
+import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
+import com.vci.ubcs.code.vo.pagemodel.DockingPreApplyFormVO;
 import com.vci.ubcs.code.vo.pagemodel.DockingPreAttrMappingVO;
 import com.vci.ubcs.code.vo.pagemodel.DockingPreAttrRangeVO;
+import com.vci.ubcs.code.wrapper.DockingPreApplyFormWrapper;
+import com.vci.ubcs.starter.revision.model.BaseModel;
+import com.vci.ubcs.starter.revision.model.TreeQueryObject;
+import com.vci.ubcs.starter.web.pagemodel.Tree;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springframework.web.bind.annotation.*;
 
@@ -24,7 +37,7 @@
  */
 @RestController
 @AllArgsConstructor
-@RequestMapping("ubcs-code/DockingPreApplyCode")
+@RequestMapping("/DockingPreApplyCode")
 @Api(value = "闆嗗洟灞炴�ф槧灏勯厤缃�", tags = "闆嗗洟灞炴�ф槧灏勯厤缃帴鍙�")
 public class DockingPreApplyCodeController {
 	/**
@@ -37,6 +50,20 @@
 
 	private final IDockingPreAttrRangeService dockingPreAttrRangeService;
 
+	/***
+	 * 鍒嗙被灞炴�ф灇涓捐寖鍥存湇鍔�
+	 */
+
+	private final IDockingPreClassifyService dockingPreClassifyService;
+
+	/***
+	 * 灞炴�ф灇涓捐寖鍥存湇鍔�
+	 */
+
+	private final IDockingPreApplyFormService dockingPreApplyFormService;
+
+
+
 	/**
 	 * 鏍规嵁涓绘暟鎹紪鐮乷id鑾峰彇闆嗗洟灞炴�ф槧灏勪俊鎭�
 	 * @param codeClassifyId 涓婚敭
@@ -44,9 +71,9 @@
 	 */
 	@GetMapping("/gridAttrMapping")
 	@ApiOperationSupport(order = 8)
-	@ApiOperation(value = "鍒嗙被涓婚敭鑾峰彇涓庨泦鍥㈡ā鍨嬪睘鎬ф槧灏勫叧绯�", notes = "浼犲叆codeClassifyId")
-	public R getDockingAttrMappingsByCodeClassId(String codeClassifyId){
-		List<DockingPreAttrMappingVO> dockingPreAttrMappingVOList=dockingPreAttrMappingService.getdockingAttrMappingsByCodeclassId(codeClassifyId);
+	@ApiOperation(value = "鍒嗙被涓婚敭鑾峰彇涓庨泦鍥㈡ā鍨嬪睘鎬ф槧灏勫叧绯�", notes = "浼犲叆涓绘暟鎹�:codeClassifyId,闆嗗洟鍒嗙被:sourceClassifyId")
+	public R getDockingAttrMappingsByCodeClassId(String codeClassifyId,String sourceClassifyId){
+		List<DockingPreAttrMappingVO> dockingPreAttrMappingVOList=dockingPreAttrMappingService.getDockingAttrMappingsByCodeClassifyId(codeClassifyId,sourceClassifyId);
 		return R.data(dockingPreAttrMappingVOList);
 	}
 
@@ -64,11 +91,23 @@
 	}
 
 	/**
+	 * 鐢宠鍗曟煡璇� 鑷畾涔夊垎椤�
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "鍒嗛〉", notes = "浼犲叆dockingPreApplyForm")
+	public R<IPage<DockingPreApplyFormVO>> page(DockingPreApplyForm dockingPreApplyForm, Query query) {
+		IPage<DockingPreApplyForm> pages = dockingPreApplyFormService.page(Condition.getPage(query), Condition.getQueryWrapper(dockingPreApplyForm));
+		return R.data(DockingPreApplyFormWrapper.build().pageVO(pages));
+	}
+	/**
 	 * 淇濆瓨灞炴�ф槧灏勯厤缃粍浠�
 	 * @param dockingPreAttrMappingVOList 灞炴�ф槧灏勯厤缃暟鎹紶杈撳璞�
 	 * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
 	 */
 	@PostMapping( "/batchAddSave")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "淇濆瓨灞炴�ф槧灏勯厤缃�", notes = "dockingPreAttrMappingVOList")
 	public R batchSave(@Valid @RequestBody List<DockingPreAttrMappingVO> dockingPreAttrMappingVOList){
 		List<DockingPreAttrMappingVO> dockingPreAttrRangeVOS=new ArrayList<>();
 		try {
@@ -79,4 +118,30 @@
 		return R.data(dockingPreAttrRangeVOS);
 	}
 
+
+	/**
+	 * 鍙傜収鏍� 闆嗗洟鍒嗙被锛堟槸鍚﹀寘鍚睘鎬э級
+	 * @param treeQueryObject 鏍戝舰鏌ヨ瀵硅薄 conditionMap 瀛樹笂 codeclsfid=涓绘暟鎹殑鍒嗙被oid
+	 * @return 涓婚搴撳垎绫绘樉绀烘爲
+	 */
+	@GetMapping("/referTree")
+	public List<Tree> referTree(@RequestBody TreeQueryObject treeQueryObject)  {
+		return dockingPreClassifyService.treeCompanyGroupClassify(treeQueryObject);
+	}
+
+	/***
+	 * 鐢宠闆嗗洟缂栫爜
+	 * @return
+	 */
+	@PostMapping( "/applyGroupCode")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "闆嗗洟鐮佺敵璇�", notes = "dockingPreAttrMappingVOList")
+	public R applyGroupCode(String oids,String btmName){
+		List<BaseModelVO> BaseModelVOs=new ArrayList<>();
+		try {
+			return dockingPreAttrMappingService.applyGroupCode(oids,btmName);
+		}catch (Throwable e){
+			return R.fail("闆嗗洟鐮佺敵璇峰け璐ワ細"+e.getMessage());
+		}
+	}
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/IMdmInterJtClient.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/IMdmInterJtClient.java
new file mode 100644
index 0000000..de03dae
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/IMdmInterJtClient.java
@@ -0,0 +1,31 @@
+package com.vci.ubcs.code.feign;
+
+
+import com.vci.ubcs.code.vo.webserviceModel.group.DockingGroupDataVO;
+import com.vci.ubcs.code.vo.webserviceModel.group.result.ResultDataObject;
+import org.springblade.core.tool.api.R;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * 涓庨泦鍥㈢郴缁熼泦鎴愮殑璋冪敤鍣�
+ * @author xiejun
+ * @date 2023-5-24
+ */
+@FeignClient(name = "groupCOdeIntegration",
+	url = "${docking.apply.jtInterUrl:http://116.205.176.185:8099}",
+	path = "")
+public interface IMdmInterJtClient {
+
+	/**
+	 * mdm璋冪敤闆嗗洟mdm鐢宠闆嗗洟缂栫爜
+	 * @param dockingGroupDataVO AO/TO鐨勪俊鎭�
+	 * @return 鎵ц缁撴灉
+	 */
+	@PostMapping("/externalMainData/receiveAddApply")
+	ResultDataObject receiveAddApply(@NotNull @RequestBody DockingGroupDataVO dockingGroupDataVO);
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/MdmInterJtClient.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/MdmInterJtClient.java
new file mode 100644
index 0000000..be1e1fc
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/MdmInterJtClient.java
@@ -0,0 +1,4 @@
+package com.vci.ubcs.code.feign;
+
+public class MdmInterJtClient {
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreClassifyMapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreClassifyMapper.java
index 859ef22..351634f 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreClassifyMapper.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreClassifyMapper.java
@@ -1,7 +1,29 @@
 package com.vci.ubcs.code.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.vci.ubcs.code.entity.CodeClassify;
 import com.vci.ubcs.code.entity.DockingPreClassify;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 public interface DockingPreClassifyMapper extends BaseMapper<DockingPreClassify> {
+
+
+	/**
+	 * 鏌ユ壘鏍戝舰缁撴瀯
+	 *
+	 * @param oid 鍒嗙被鐨勪富閿�
+	 * @return 鏁版嵁闆嗗悎
+	 */
+	List<DockingPreClassify> selectCompanyGroupClassifyVOByTree(@Param("oid") String oid);
+
+
+	/**
+	 * 鏍¢獙鏄惁鍖呭惈瀛愯妭鐐�
+	 *
+	 * @param oid 鍒嗙被鐨勪富閿�
+	 * @return true 琛ㄧず鍖呭惈
+	 */
+	Boolean checkHasChild(@Param("oid") String oid);
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreAttrMappingService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreAttrMappingService.java
index fd7d7f4..34c66a3 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreAttrMappingService.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreAttrMappingService.java
@@ -3,7 +3,10 @@
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.vci.ubcs.code.entity.DockingPreAttrMapping;
+import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
 import com.vci.ubcs.code.vo.pagemodel.DockingPreAttrMappingVO;
+import org.springblade.core.tool.api.R;
+
 import java.util.List;
 
 /**
@@ -18,7 +21,7 @@
 	 * @param codeClassifyId
 	 * @return
 	 */
-	List<DockingPreAttrMappingVO> getdockingAttrMappingsByCodeclassId(String codeClassifyId);
+	List<DockingPreAttrMappingVO> getDockingAttrMappingsByCodeClassifyId(String codeClassifyId,String sourceClassifyId);
 
 	/**
 	 * 浣跨敤鏌ヨ灏佽鍣ㄦ潵鏌ヨ
@@ -33,4 +36,13 @@
 	 * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
 	 */
 	public  List<DockingPreAttrMappingVO> batchAddSave(List<DockingPreAttrMappingVO> dockingPreAttrMappingDTOS)throws Exception;
+
+	/***
+	 * 涓绘暟鎹儚闆嗗洟鐢宠缂栫爜
+	 * @param oids
+	 * @param btmName
+	 * @return
+	 * @throws Exception
+	 */
+	public R applyGroupCode(String oids, String btmName)throws Throwable;
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreClassifyService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreClassifyService.java
index 271aab7..b48c619 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreClassifyService.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreClassifyService.java
@@ -2,6 +2,10 @@
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.vci.ubcs.code.entity.DockingPreClassify;
+import com.vci.ubcs.starter.revision.model.TreeQueryObject;
+import com.vci.ubcs.starter.web.pagemodel.Tree;
+
+import java.util.List;
 
 /***
  * 闆嗗洟鍒嗙被鏈嶅姟
@@ -9,4 +13,13 @@
  * @date 2022-05-23
  */
 public interface IDockingPreClassifyService extends IService<DockingPreClassify> {
+
+
+
+	/**
+	 * 鏌ヨ涓婚搴撳垎绫� 鏍�
+	 * @param treeQueryObject 鏍戞煡璇㈠璞�
+	 * @return 涓婚搴撳垎绫� 鏄剧ず鏍�
+	 */
+	List<Tree> treeCompanyGroupClassify(TreeQueryObject treeQueryObject);
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreMetaAttrService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreMetaAttrService.java
index dd623d1..a625756 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreMetaAttrService.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreMetaAttrService.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.vci.ubcs.code.entity.DockingPreMetaAttr;
+import com.vci.ubcs.code.vo.pagemodel.DockingPreMetaAttrVO;
 
 import java.util.List;
 
@@ -22,4 +23,8 @@
 	 */
 
 	public List<DockingPreMetaAttr> selectByWrapper(Wrapper wrapper);
+	/***
+	 * 鏍规嵁viewModel鏌ヨ妯″瀷瑙嗗浘灞炴��
+	 */
+	List<DockingPreMetaAttrVO> selectDockingPreMetaAttrByViewModelId(String viewModelId);
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreViewModelService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreViewModelService.java
index ca94816..9f24bc3 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreViewModelService.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreViewModelService.java
@@ -2,6 +2,9 @@
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.vci.ubcs.code.entity.DockingPreViewModel;
+import com.vci.ubcs.code.vo.pagemodel.DockingPreViewModelVO;
+
+import java.util.List;
 
 /***
  * 闆嗗洟鍒嗙被妯″瀷鏈嶅姟
@@ -9,4 +12,11 @@
  * @date 2023-05-23
  */
 public interface IDockingPreViewModelService extends IService<DockingPreViewModel> {
+	/**
+	 * 鏍规嵁鍒嗙被id鏌ヨ鍒嗙被瑙嗗浘
+	 * @param classifyId 闆嗗洟鍒嗙被id
+	 * @param isContainAttr 鏄惁鏌ヨ灞炴�э紝true锛� 鏄紝false锛屽惁
+	 * @return 杩斿洖鍒嗙被妯″瀷瑙嗗浘闆嗗悎瀵硅薄
+	 */
+	List<DockingPreViewModelVO> selectDockingPreViewModelByClassId(String classifyId, boolean isContainAttr);
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreAttrMappingServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreAttrMappingServiceImpl.java
index 2bff19f..66b5da9 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreAttrMappingServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreAttrMappingServiceImpl.java
@@ -1,28 +1,43 @@
 package com.vci.ubcs.code.service.impl;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.vci.ubcs.code.entity.DockingPreAttrMapping;
-import com.vci.ubcs.code.entity.DockingPreAttrRange;
-import com.vci.ubcs.code.entity.DockingPreMetaAttr;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
+import com.vci.ubcs.code.entity.*;
+import com.vci.ubcs.code.feign.IMdmInterJtClient;
 import com.vci.ubcs.code.mapper.DockingPreAttrMappingMapper;
-import com.vci.ubcs.code.service.IDockingPreAttrMappingService;
-import com.vci.ubcs.code.service.IDockingPreAttrRangeService;
-import com.vci.ubcs.code.service.IDockingPreMetaAttrService;
+import com.vci.ubcs.code.service.*;
+import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
 import com.vci.ubcs.code.vo.pagemodel.DockingPreAttrMappingVO;
 import com.vci.ubcs.code.vo.pagemodel.DockingPreAttrRangeVO;
+import com.vci.ubcs.code.vo.webserviceModel.group.DockingGroupDataVO;
+import com.vci.ubcs.code.vo.webserviceModel.group.DockingMainData;
+import com.vci.ubcs.code.vo.webserviceModel.group.DockingViewVO;
+import com.vci.ubcs.code.vo.webserviceModel.group.ResultDataVO;
+import com.vci.ubcs.code.vo.webserviceModel.group.result.DataObjectVO;
+import com.vci.ubcs.code.vo.webserviceModel.group.result.DataVO;
+import com.vci.ubcs.code.vo.webserviceModel.group.result.ResultDataObject;
 import com.vci.ubcs.code.wrapper.DockingPreAttrMappingWrapper;
 import com.vci.ubcs.code.wrapper.DockingPreAttrRangeWrapper;
 import com.vci.ubcs.starter.exception.VciBaseException;
+import com.vci.ubcs.starter.revision.model.BaseModel;
+import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
+import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
+import com.vci.ubcs.starter.web.util.VciBaseUtil;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.api.R;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /***
@@ -32,31 +47,70 @@
  */
 @Service
 public class DockingPreAttrMappingServiceImpl extends ServiceImpl<DockingPreAttrMappingMapper, DockingPreAttrMapping> implements IDockingPreAttrMappingService {
+
+
+
+	@Value("${docking.apply.unitCode:410-MDM}")
+	public String dockingApplyUnitCode;
+	@Autowired(required = false)
+	private  IMdmInterJtClient mdmInterJtClient;
+
 	/***
 	 * 闆嗗洟鍒嗙被灞炴�у睘鎬ф槧灏勯厤缃湇鍔�
 	 */
 	@Autowired(required = false)
-	DockingPreAttrMappingMapper dockingPreAttrMappingMapper;
+	private DockingPreAttrMappingMapper dockingPreAttrMappingMapper;
+
+	/***
+	 * 涓氬姟鏁版嵁灞炴�ф湇鍔�
+	 */
+	@Autowired(required = false)
+	private MdmEngineService mdmEngineService;
+
 	/***
 	 * 闆嗗洟灞炴�ф湇鍔�
 	 */
 	@Autowired(required = false)
-	IDockingPreMetaAttrService dockingPreMetaAttrService;
+	private IDockingPreMetaAttrService dockingPreMetaAttrService;
 	/***
 	 * 灞炴�у彇鍊艰寖鍥存湇鍔�
 	 */
 	@Autowired(required = false)
-	IDockingPreAttrRangeService dockingPreAttrRangeService;
+	private IDockingPreAttrRangeService dockingPreAttrRangeService;
+
+
+	/***
+	 * 闆嗗洟鍒嗙被鏈嶅姟
+	 */
+	@Autowired(required = false)
+	private IDockingPreClassifyService dockingPreClassifyService;
+
+	/***
+	 * 鐢宠鍗曟湇鍔�
+	 */
+	@Autowired(required = false)
+	private IDockingPreApplyFormService dockingPreApplyFormService;
+
+
+	/***
+	 * 妯″瀷瑙嗗浘鍗曟湇鍔�
+	 */
+	@Autowired(required = false)
+	private IDockingPreViewModelService dockingPreViewModelService;
+
+
 	/***
 	 * 鏍规嵁涓绘暟鎹垎绫讳富閿幏鍙栧垎绫讳俊鎭厤缃�
 	 * @param codeClassifyId
 	 * @return
 	 */
 	@Override
-	public List<DockingPreAttrMappingVO> getdockingAttrMappingsByCodeclassId(String codeClassifyId) {
+	public List<DockingPreAttrMappingVO> getDockingAttrMappingsByCodeClassifyId(String codeClassifyId,String sourceClassifyId) {
+		VciBaseUtil.alertNotNull(codeClassifyId,"涓绘暟鎹垎绫讳富閿�");
+		//VciBaseUtil.alertNotNull(sourceClassifyId,"闆嗗洟鍒嗙被涓婚敭");
 		//棣栧厛鑾峰彇鍒嗙被妯℃澘灞炴�э紝鐒跺悗涓庡睘鎬ч厤缃潗姣旇緝锛屼互闃茶鏈夊鍒犲睘鎬х殑鍙兘
-		List<DockingPreMetaAttr> dockingPreMetaAttrList=	dockingPreMetaAttrService.selectByWrapper(Wrappers.<DockingPreMetaAttr>query().lambda().eq(DockingPreMetaAttr::getSourceClassifyId,codeClassifyId));
-		List<DockingPreAttrMapping> dockingPreAttrMappings=this.selectByWrapper(Wrappers.<DockingPreAttrMapping>query().lambda().eq(DockingPreAttrMapping::getSourceClassifyId, codeClassifyId));
+		List<DockingPreMetaAttr> dockingPreMetaAttrList=	dockingPreMetaAttrService.selectByWrapper(Wrappers.<DockingPreMetaAttr>query().lambda().eq(DockingPreMetaAttr::getSourceClassifyId,sourceClassifyId));
+		List<DockingPreAttrMapping> dockingPreAttrMappings=this.selectByWrapper(Wrappers.<DockingPreAttrMapping>query().lambda().eq(DockingPreAttrMapping::getSourceClassifyId, sourceClassifyId).eq(DockingPreAttrMapping::getTargetClassifyId, codeClassifyId));
 		Map<String/**灞炴�т富閿�**/, DockingPreAttrMapping> dockingPreAttrMappingMap = dockingPreAttrMappings.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getMetaListId(), t -> t));
 
 		List<DockingPreAttrMapping> newDockingPreAttrMappingList=new ArrayList<>();
@@ -66,6 +120,7 @@
 			if(dockingPreAttrMappingMap.containsKey(attrOid)){
 				dockingPreAttrMapping=	dockingPreAttrMappingMap.get(attrOid);
 			}else{
+				DefaultAttrAssimtUtil.addDefaultAttrAssimt(dockingPreAttrMapping, MdmBtmTypeConstant.DOCKING_PRE_JAPPLYFORM);
 				dockingPreAttrMapping.setMetaListId(dockingPreMetaAttr.getOid());//灞炴�т富閿�
 				dockingPreAttrMapping.setSourceAttrKey(dockingPreMetaAttr.getEnglishName());//鑻辨枃鍚嶇О
 				dockingPreAttrMapping.setSourceAttrName(dockingPreMetaAttr.getChineseName());//涓枃鍚嶇О
@@ -165,6 +220,120 @@
 		}
 		return dockingPreAttrMappingVOList;
 	}
+	private String code="";
+
+	private String msg="";
+
+	/***
+	 * 鍍忛泦鍥㈢敵璇烽泦鍥㈢爜
+	 * @param oids
+	 * @param btmName
+	 * @return
+	 * @throws Exception
+	 */
+	@Override
+	@Transactional
+	public R applyGroupCode(String oids, String btmName) throws VciBaseException {
+		List<BaseModel> updateCbos=new ArrayList<BaseModel>();
+		List<DockingPreApplyForm> dockingPreAttrMappings=new ArrayList<>();
+		VciBaseUtil.alertNotNull(oids,"閫夋嫨鐨勬暟鎹�");
+		VciBaseUtil.alertNotNull(btmName,"涓氬姟绫诲瀷");
+		//List<BaseModelVO> codeWupins=mdmEngineService.listByIds(VciBaseUtil.str2List(oids));
+		List<BaseModelVO> dataModelList = new ArrayList<>();
+		if (!CollectionUtils.isEmpty(dataModelList)) {
+			DockingGroupDataVO dockingGroupDataVO = new DockingGroupDataVO();
+			//鐢宠鍗曞拰鐢宠鍗曞璞″叧绯�
+			Map<String, DockingPreApplyForm> addDockingPreApplyFormMap = new HashMap<String, DockingPreApplyForm>();
+			Map<String, DockingPreApplyForm> editDockingPreApplyFormMap = new HashMap<String, DockingPreApplyForm>();
+			Map<String, BaseModelVO> baseModelVOMap = new HashMap<String, BaseModelVO>();
+			//缁勭粐鏁版嵁
+			dockingGroupDataVO = queryApplycodeDataObjects(dataModelList, addDockingPreApplyFormMap, editDockingPreApplyFormMap, baseModelVOMap);
+			ResultDataObject resultDataObject = mdmInterJtClient.receiveAddApply(dockingGroupDataVO);
+			code = resultDataObject.getCode();
+			msg = resultDataObject.getMsg();
+			if ("1".equals(resultDataObject.getCode())) {//缁撴灉姝g‘鐨勬儏鍐�
+				List<DataObjectVO> dataObjectVOList = resultDataObject.getData();
+				dataObjectVOList.stream().forEach(dataObject -> {
+					boolean isEditDatas = false;
+					String code2 = dataObject.getCode();
+					DataVO data2 = dataObject.getData();
+					String applyId = data2.getApplyId();//鐢宠鍗昳d
+					String customCoding = StringUtils.isBlank(data2.getCustomCoding()) ? "" : data2.getCustomCoding();//闆嗗洟鐮佹
+					msg = dataObject.getMsg();
+					if (code2.equals("1")) {//缁撴灉姝g‘鐨勬儏鍐�
+						if (!"".equals(customCoding)) {
+							isEditDatas = true;
+						}
+					}
+					//闇�瑕佷慨鏀圭殑鐢宠鍗曟暟鎹�
+					if (editDockingPreApplyFormMap.containsKey(applyId)) {
+						DockingPreApplyForm dockingPreApplyForm = editDockingPreApplyFormMap.get(applyId);
+						dockingPreApplyForm.setCode(code2);
+						dockingPreApplyForm.setMsg("鐢宠锛�" + msg);
+						dockingPreApplyForm.setGroupCode(customCoding);
+						ObjectMapper mp = new ObjectMapper();
+						String writeValueAsString = null;
+						try {
+							writeValueAsString = mp.writeValueAsString(dataObject);
+							dockingPreApplyForm.setContent(writeValueAsString);
+						} catch (JsonProcessingException e) {
+						}
+					}
+					//鏂板鐨勭敵璇峰崟鏁版嵁
+					if (addDockingPreApplyFormMap.containsKey(applyId)) {
+						DockingPreApplyForm dockingPreApplyForm = addDockingPreApplyFormMap.get(applyId);
+						dockingPreApplyForm.setCode(code2);
+						dockingPreApplyForm.setMsg("鐢宠锛�" + msg);
+						dockingPreApplyForm.setGroupCode(customCoding);
+						ObjectMapper mp = new ObjectMapper();
+						String writeValueAsString = null;
+						try {
+							writeValueAsString = mp.writeValueAsString(dataObject);
+							dockingPreApplyForm.setContent(writeValueAsString);
+						} catch (JsonProcessingException e) {
+						}
+					}
+					//濡傛灉鏈夐泦鍥㈢爜鍒欐洿鏂版暟鎹�
+					if (isEditDatas) {
+						if (baseModelVOMap.containsKey(applyId)) {
+							BaseModelVO baseModelVO = baseModelVOMap.get(applyId);
+							BaseModel baseModel = new BaseModel();
+							BeanUtilForVCI.copyDeclaredIgnoreCase(baseModelVO, baseModel);
+							DefaultAttrAssimtUtil.updateDefaultAttrAssimt(baseModel);
+							DefaultAttrAssimtUtil.updateDefaultAttrAssimt(baseModel);
+							baseModelVO.setId(customCoding);
+							updateCbos.add(baseModel);//鏇存柊鏁版嵁闆嗗洟code
+						}
+					}
+				});
+			} else {
+				editDockingPreApplyFormMap.forEach((key, dockingPreApplyForm) -> {
+					dockingPreApplyForm.setCode("2");
+					dockingPreApplyForm.setMsg("鐢宠锛�" + msg);
+					dockingPreApplyForm.setContent("");
+					dockingPreApplyForm.setGroupCode("");
+					DefaultAttrAssimtUtil.updateDefaultAttrAssimt(dockingPreApplyForm);
+				});
+				addDockingPreApplyFormMap.forEach((key, dockingPreApplyForm) -> {
+					dockingPreApplyForm.setCode("2");
+					dockingPreApplyForm.setMsg("鐢宠锛�" + msg);
+					dockingPreApplyForm.setContent("");
+					dockingPreApplyForm.setGroupCode("");
+					DefaultAttrAssimtUtil.addDefaultAttrAssimt(dockingPreApplyForm, MdmBtmTypeConstant.DOCKING_PRE_JAPPLYFORM);
+				});
+			}
+			if (editDockingPreApplyFormMap.size() > 0) {
+				dockingPreAttrMappings.addAll(editDockingPreApplyFormMap.values());//娣诲姞鐢宠鍗曟暟鎹�
+			}
+			if (addDockingPreApplyFormMap.size() > 0) {
+				dockingPreAttrMappings.addAll(addDockingPreApplyFormMap.values());//闇�瑕佷慨鏀圭殑鐢宠鍗曟暟鎹�
+			}
+			//淇濆瓨琛ㄥ崟鏁版嵁
+			dockingPreApplyFormService.saveOrUpdateBatch(dockingPreAttrMappings);
+			//mdmEngineService.saveBatch(updateCbos);//淇濆瓨鏁版嵁
+		}
+		return R.success("鐢宠鎺ュ彛璋冪敤鎴愬姛");
+	}
 
 	/***
 	 * 瀵硅薄杞崲
@@ -184,4 +353,237 @@
 			}
 			return dockingPreAttrMappingVOList;
 		}
+
+
+	/**
+	 * 缁勭粐鏁版嵁
+	 * */
+	private DockingGroupDataVO queryApplycodeDataObjects(List<BaseModelVO> codeWupins,Map<String,DockingPreApplyForm>   addDockingPreApplyFormMap,Map<String,DockingPreApplyForm>  editDockingPreApplyFormMap,Map<String,BaseModelVO>  codeWupinMap) throws VciBaseException{
+		try {
+			String curUserName = AuthUtil.getUser().getUserName();
+			//鐢宠鐨勬暟鎹�
+			List<DockingMainData> mainDataList=new ArrayList<DockingMainData>();
+			for (BaseModelVO dataBusinessObject : codeWupins) {
+				String format = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
+				String codeclsfid = dataBusinessObject.getData().getOrDefault("codeclsfid","");
+				String btmName = dataBusinessObject.getBtmname();
+				String oid = dataBusinessObject.getOid();
+
+				DockingPreApplyForm dockingPreApplyForm = new DockingPreApplyForm();
+
+				String dataOid = dataBusinessObject.getOid();
+				Map<String, String> conditionsMap = new HashMap<String, String>();
+				List<DockingPreApplyForm> applyFormObjects = dockingPreApplyFormService.list(Wrappers.<DockingPreApplyForm>query().lambda().eq(DockingPreApplyForm::getDataOid, dataOid).eq(DockingPreApplyForm::getOperationType, "1"));
+				String apllyCode = "";
+				if (!CollectionUtils.isEmpty(applyFormObjects)) {
+					dockingPreApplyForm = applyFormObjects.get(0);
+					apllyCode = dockingPreApplyForm.getId();
+					editDockingPreApplyFormMap.put(apllyCode, dockingPreApplyForm);//鐢宠鍗曞拰鐢宠鍗曞璞″叧绯�
+				} else {
+					apllyCode = dockingApplyUnitCode + "-" + format;
+					dockingPreApplyForm.setId(apllyCode);
+					dockingPreApplyForm.setName("");
+					dockingPreApplyForm.setOperationType("2");
+					dockingPreApplyForm.setDescription(dataBusinessObject.getDescription());//鑾峰彇鏁版嵁鎻忚堪淇℃伅
+					dockingPreApplyForm.setDataOid(oid);
+					dockingPreApplyForm.setDataBtmName(btmName);
+					addDockingPreApplyFormMap.put(apllyCode, dockingPreApplyForm);//鐢宠鍗曞拰鐢宠鍗曞璞″叧绯�
+				}
+
+				codeWupinMap.put(apllyCode, dataBusinessObject);//鐢宠鍗曞拰瀵瑰簲鏁版嵁鍏崇郴
+				conditionsMap = new HashMap<String, String>();
+				conditionsMap.put("jtargetclsfid", codeclsfid);//瑙嗗浘oid
+
+				List<DockingPreAttrMapping> dockingPreAttrMappingList = this.selectByWrapper(Wrappers.<DockingPreAttrMapping>query().lambda().eq(DockingPreAttrMapping::getTargetClassifyId, codeclsfid));
+				if (CollectionUtils.isEmpty(dockingPreAttrMappingList)) {
+					throw new Exception("鏍规嵁鎵�閫夌殑鏁版嵁锛屾病鏈夋壘鍒板搴旂殑闆嗗洟鍒嗙被璁剧疆锛岃鏍稿!");
+				}
+				String jsourceclsfid = dockingPreAttrMappingList.get(0).getSourceClassifyId();
+				//鑾峰彇鏁版嵁妯″瀷鍒嗙被淇℃伅
+				DockingPreClassify dockingPreClassify = dockingPreClassifyService.getById(jsourceclsfid);
+				DockingMainData mainData = new DockingMainData();
+				mainData.setApplyEntId(dockingApplyUnitCode);//鐢宠鍗曚綅浠g爜
+				mainData.setApplyId(apllyCode);//鐢宠鍗曞彿
+				mainData.setClassName(dockingPreClassify.getGetNodeLinkName());//鍒嗙被鍚嶇О
+				mainData.setCreateBy(curUserName);//
+				mainData.setSecretLevel("鍐呴儴");//瀵嗙骇锛岄粯璁や负鍐呴儴
+				mainData.setViewInfos(getviewInfos(dockingPreClassify, dataBusinessObject));//鑾峰彇瑙嗗浘妯″瀷
+				mainDataList.add(mainData);
+			}
+			//鏍规嵁鏁版嵁妯″瀷锛岀粍缁囨墍闇�瑕佹暟鎹�
+			DockingGroupDataVO postParameters=new DockingGroupDataVO();
+			postParameters.setSysName("420-CODE");//绯荤粺鏍囪瘑
+			postParameters.setMainData(mainDataList);//
+			return postParameters;
+		} catch (Throwable e) {
+			// TODO Auto-generated catch block
+			throw new VciBaseException("鏌ヨ鏁版嵁鍑洪敊"+e);
+		}
+	}
+
+	/**
+	 * 鑾峰彇妯″瀷瑙嗗浘
+	 * @param dockingPreClassify
+	 * @param dataBusinessObject
+	 * @throws VciBaseException
+	 */
+	private List<DockingViewVO>getviewInfos(DockingPreClassify dockingPreClassify,BaseModelVO dataBusinessObject) throws Throwable{
+		List<DockingViewVO> viewInfoList=new ArrayList<>();
+		String jclassOid=	dockingPreClassify.getOid();
+		Map<String,String>conditionsMap=new HashMap<String, String>();
+		conditionsMap.put("jsourceclsfid",jclassOid);
+		conditionsMap.put("jviewname","缂栫爜瑙嗗浘");//鐢宠鍙紶缂栫爜瑙嗗浘
+		//鏍规嵁鍒嗙被鏌ヨ妯″瀷瑙嗗浘瀵硅薄
+		List<DockingPreViewModel> dockingPreViewModels= dockingPreViewModelService.list(Wrappers.<DockingPreViewModel>query().lambda().eq(DockingPreViewModel::getSourceClassifyId,jclassOid).eq(DockingPreViewModel::getViewName,"缂栫爜瑙嗗浘"));
+		for (DockingPreViewModel dockingPreViewModel : dockingPreViewModels) {
+			//缁勭粐鏁版嵁灞炴�т俊鎭�
+			DockingViewVO viewInfo=new DockingViewVO();
+			viewInfo.setViewName(dockingPreViewModel.getViewName());//瑙嗗浘鍚嶇О
+			viewInfo.setViewValue(getViewValueList(dockingPreViewModel,jclassOid,dataBusinessObject));//瑙嗗浘
+			viewInfoList.add(viewInfo);
+		}
+		return viewInfoList;
+	}
+
+	/***
+	 * 鑾峰彇閰嶇疆淇℃伅
+	 * @param dockingPreViewModel
+	 * @param jclassOid
+	 * @param dataBusinessObject
+	 * @return
+	 * @throws VciBaseException
+	 */
+	private List<Map<String, Object>> getViewValueList(DockingPreViewModel dockingPreViewModel,String jclassOid,BaseModelVO dataBusinessObject) throws Throwable{
+		//鏋勯�犳ā鍨嬭鍥炬暟鎹�
+		List<Map<String, Object>> viewValueList=new ArrayList<Map<String,Object>>();
+		String oid = dockingPreViewModel.getOid();
+		Map<String,String> dataValueMap=dataBusinessObject.getData();
+		String codeClassifyId=dataValueMap.get("codeclsfid");
+		Map<String,String>conditionsMap=new HashMap<String, String>();
+
+
+
+		List<DockingPreAttrMapping> dockingPreAttrMappingList = this.selectByWrapper(Wrappers.<DockingPreAttrMapping>query().lambda()
+			.eq(DockingPreAttrMapping::getSourceClassifyId, jclassOid).eq(DockingPreAttrMapping::getTargetClassifyId, codeClassifyId));
+		if(CollectionUtils.isEmpty(dockingPreAttrMappingList)) {
+			return viewValueList;
+		}
+
+		Map<String,DockingPreAttrMapping> jintegmappconfigMap=new HashMap<String, DockingPreAttrMapping>();
+		for (DockingPreAttrMapping businessObject : dockingPreAttrMappingList) {
+			jintegmappconfigMap.put(businessObject.getSourceAttrKey(), businessObject);
+		}
+		List<DockingPreMetaAttr> dockingPreMetaAttrList= dockingPreMetaAttrService.selectByWrapper(
+			Wrappers.<DockingPreMetaAttr>query().lambda().eq(DockingPreMetaAttr::getViewModelId,dockingPreViewModel.getOid())
+				.eq(DockingPreMetaAttr::getSourceClassifyId,dockingPreViewModel.getSourceClassifyId()));
+
+		Map<String,Object> viewValueMap=new HashMap<String,Object>();
+		for (DockingPreMetaAttr dockingPreMetaAttr : dockingPreMetaAttrList) {
+			String jenglishname=dockingPreMetaAttr.getEnglishName();////闆嗗洟閰嶇疆灞炴��
+			if(jintegmappconfigMap.containsKey(jenglishname)){
+				DockingPreAttrMapping dockingPreAttrMapping=jintegmappconfigMap.get(jenglishname);
+				String attrId = dockingPreAttrMapping.getTargetAttrId();//缂栫爜灞炴�d
+				String jtargetattrkey = dockingPreAttrMapping.getTargetAttrKey();//缂栫爜灞炴�d
+				Object newVaue=null;
+				if(StringUtils.isNotBlank(jtargetattrkey)){
+					getAttrRange(dockingPreMetaAttr);//鑾峰彇瀛楁鍙栧�艰寖鍥�
+					String value=dataValueMap.get(jtargetattrkey)==null?"":dataValueMap.getOrDefault(jtargetattrkey,"");
+					newVaue = getVaue(dockingPreMetaAttr, value);
+				}else{
+					newVaue = getVaue(dockingPreMetaAttr, "");
+				}
+				if(newVaue==null||"".equals(newVaue)){
+					newVaue= dockingPreMetaAttr.getDefaultValue();
+				}
+				viewValueMap.put(jenglishname, newVaue);
+			}
+		}
+
+		viewValueList.add(viewValueMap);
+		return viewValueList;
+	}
+
+	/***
+	 * 鑾峰彇灞炴�ф灇涓炬槧灏勯厤缃�
+	 */
+	Map<String,Map<String,DockingPreAttrRange>> attrRangeMap=new HashMap<String, Map<String,DockingPreAttrRange>>();
+	private void getAttrRange(DockingPreMetaAttr jmetaatter) throws Throwable{
+
+		String jmetalistoid = jmetaatter.getOid();
+		if(attrRangeMap.containsKey(jmetalistoid)) {
+			return;
+		}
+		Map<String,String>conditionsMap=new HashMap<String, String>();
+		conditionsMap.put("jmetalistid", jmetalistoid);//瑙嗗浘oid
+		List<DockingPreAttrRange> dockingPreAttrRangeList = dockingPreAttrRangeService.selectByWrapper(Wrappers.<DockingPreAttrRange>query().lambda().eq(DockingPreAttrRange::getMetaListId, jmetalistoid));
+		if (CollectionUtils.isEmpty(dockingPreAttrRangeList)) {
+			return;
+		}
+		Map<String, DockingPreAttrRange> rangeMap = new HashMap<String, DockingPreAttrRange>();
+		rangeMap = dockingPreAttrRangeList.stream().collect(Collectors.toMap(s -> s.getNumTextValue(), t -> t, (o1, o2) -> o2));
+		attrRangeMap.put(jmetalistoid, rangeMap);
+
+	}
+	/****
+	 * 鍊肩被鍨嬭浆鎹�
+	 * @param jmetaatter
+	 * @param value
+	 * @return
+	 * @throws Throwable
+	 */
+	private Object getVaue(DockingPreMetaAttr jmetaatter,String value) throws Throwable{
+		//jmetadatatype	鍏冩暟鎹被鍨嬶紙1 瀛楃鍨�, 2 鏁村瀷, 3 闀挎暣鍨�, 4 鍗曠簿搴�, 5 鍙岀簿搴�,6 鏃ユ湡鍨�, 7 鏃堕棿鍨�, 8 甯冨皵鍨�, 9 鏂囦欢, 10澶嶅悎鍨嬶級
+		int jmetadatatype = jmetaatter.getMetaDataType();
+		String jmetalistoid = jmetaatter.getOid();
+		Map<String, DockingPreAttrRange> rangeMap=new HashMap<String, DockingPreAttrRange>();
+		if(attrRangeMap.containsKey(jmetalistoid)){
+			rangeMap = attrRangeMap.get(jmetalistoid);
+			if(rangeMap.containsKey(value)){
+				DockingPreAttrRange dockingPreAttrRange = rangeMap.get(value);
+				value=dockingPreAttrRange.getNumText();//灏嗙紪鐮佸睘鎬у煙鍊艰浆鎹㈡垚闆嗗洟瀵瑰簲鐨勫煙鍊�
+			}
+		}
+
+		if(jmetadatatype==1){//1 瀛楃鍨�
+			return StringUtils.isBlank(value)?"":value;
+		}else if(jmetadatatype==2){//2 鏁村瀷
+			return StringUtils.isBlank(value)?null:Integer.parseInt(value);
+		}else if(jmetadatatype==3){//3 闀挎暣鍨�
+			return StringUtils.isBlank(value)?null:Long.parseLong(value);
+		}else if(jmetadatatype==4){//4 鍗曠簿搴�,
+			return StringUtils.isBlank(value)?null:Float.parseFloat(value);
+		}else if(jmetadatatype==5){// 5 鍙岀簿搴�
+			return StringUtils.isBlank(value)?null:Double.parseDouble(value);
+		}else if(jmetadatatype==6){//6 鏃ユ湡鍨�
+			SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-mm-dd");
+			if(StringUtils.isBlank(value)) {
+				return null;
+			}else {
+				try {
+					return simpleDateFormat.parse(value);
+				} catch (ParseException e) {
+					throw new VciBaseException("date", new String[]{"鏃ユ湡鏍煎紡杞崲閿欒"});
+				}
+			}
+		}else if(jmetadatatype==7){//7 鏃堕棿鍨�
+			SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm:ss");
+			if(StringUtils.isBlank(value)) {
+				return null;
+			}else{
+				try {
+					return simpleDateFormat.parse(value);
+				} catch (ParseException e) {
+					throw new VciBaseException("date", new String[]{"鏃ユ湡鏍煎紡杞崲閿欒"});
+				}
+			}
+		}else	if(jmetadatatype==8){//8 甯冨皵鍨�
+			return value;
+		}else if(jmetadatatype==9){//9 鏂囦欢,
+			return value;
+		}else if(jmetadatatype==10){//10澶嶅悎鍨�
+			return value;//绗﹀悎鍨嬫槸浠�涔堜笢涓滃浣曞鐞�
+		}
+		return value;
+	}
+
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreClassifyServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreClassifyServiceImpl.java
index 849557e..c2ca759 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreClassifyServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreClassifyServiceImpl.java
@@ -1,17 +1,26 @@
 package com.vci.ubcs.code.service.impl;
 
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.vci.ubcs.code.entity.DockingPreAttrRange;
 import com.vci.ubcs.code.entity.DockingPreClassify;
+import com.vci.ubcs.code.enumpack.FrameworkDataLCStatus;
 import com.vci.ubcs.code.mapper.DockingPreClassifyMapper;
 import com.vci.ubcs.code.service.IDockingPreClassifyService;
+import com.vci.ubcs.code.service.IDockingPreViewModelService;
+import com.vci.ubcs.code.vo.pagemodel.DockingPreClassifyVO;
+import com.vci.ubcs.code.vo.pagemodel.DockingPreViewModelVO;
+import com.vci.ubcs.code.wrapper.DockingPreClassifyWrapper;
+import com.vci.ubcs.starter.revision.model.TreeQueryObject;
+import com.vci.ubcs.starter.revision.model.TreeWrapperOptions;
+import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
+import com.vci.ubcs.starter.web.pagemodel.Tree;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
-import java.util.Collection;
-import java.util.Map;
-import java.util.function.Function;
+import javax.annotation.Resource;
+import java.util.*;
+
+import static com.vci.ubcs.code.constant.MdmBtmTypeConstant.CODE_CLASSIFY_OID_FIELD;
+import static com.vci.ubcs.code.service.impl.CodeClassifyServiceImpl.PARENT_FIELD_NAME;
 
 /**
  * 闆嗗洟鍒嗙被涓氬姟鏈嶅姟
@@ -19,7 +28,77 @@
  * @date 2023-05-23
  */
 @Service
+@Slf4j
 public class DockingPreClassifyServiceImpl extends ServiceImpl<DockingPreClassifyMapper, DockingPreClassify> implements IDockingPreClassifyService {
+	/***
+	 * 闆嗗洟鍒嗙被灞炴��
+	 */
+	@Resource
+	private DockingPreClassifyMapper dockingPreClassifyMapper;
 
+	/***
+	 * 闆嗗洟鍒嗙被灞炴��
+	 */
+	@Resource
+	private IDockingPreViewModelService dockingPreViewModelService;
 
+	/**
+	 * 瀵硅薄鐨勬搷浣�
+	 */
+	@Resource
+	private RevisionModelUtil revisionModelUtil;
+	/***
+	 * 闆嗗洟鍒嗙被鏍戝璞℃煡
+	 *@param treeQueryObject 闆嗗洟鍒嗙被鏌ヨ瀵硅薄
+	 *@return 杩斿洖鍒嗙被鏍戝璞�
+	 */
+	@Override
+	public List<Tree> treeCompanyGroupClassify(TreeQueryObject treeQueryObject) {
+		log.info("鑾峰彇闆嗗洟鍒嗙被鏍憇tart...");
+		Map<String,String> conditionMap= treeQueryObject.getConditionMap();
+		TreeWrapperOptions treeWrapperOptions = new TreeWrapperOptions(PARENT_FIELD_NAME.toLowerCase(Locale.ROOT));
+		treeWrapperOptions.copyFromTreeQuery(treeQueryObject);
+		List<DockingPreClassifyVO> dockingPreClassifyVOS= getCompanyGourpClassByParentId(treeQueryObject.getParentOid(),true);
+		List<Tree> tree= revisionModelUtil.doList2Trees(dockingPreClassifyVOS,treeWrapperOptions,(DockingPreClassifyVO s) ->{
+			//鍙互鍦ㄨ繖閲屽鐞嗘爲鑺傜偣鐨勬樉绀�
+			return s.getId() + " " + s.getName() + (FrameworkDataLCStatus.DISABLED.getValue().equalsIgnoreCase(s
+				.getLcStatus()) ? (" 銆愬仠鐢ㄣ�� ") : "");
+		});
+		Iterator var6 =  tree.listIterator();
+		while(var6.hasNext()){
+			Tree trees = (Tree) var6.next();
+			boolean checkHasChild=dockingPreClassifyMapper.checkHasChild(trees.getOid());
+			//濡傛灉涓庢潯浠朵紶杩囨潵鐨勫�煎尮閰嶇殑涓婂垯璁剧疆涓洪�変腑
+			if(conditionMap.containsKey(CODE_CLASSIFY_OID_FIELD)){
+				trees.setChecked(true);
+			}
+			;
+			if(checkHasChild){
+				trees.setLeaf(false);
+			}else{
+				trees.setLeaf(true);
+			}
+		}
+		log.info("鑾峰彇闆嗗洟鍒嗙被鏍慹nd...");
+		return tree;
+	}
+
+	/***
+	 * 鏍规嵁鐖跺垎绫籭d鏌ヨ灞傜骇鏍戞暟鎹璞¢泦鍚�
+	 * @param pid 闆嗗洟鍒嗙被鐨刼id
+	 * @return 杩斿洖灞傜骇鏍戞暟鎹璞¢泦鍚�
+	 */
+	private List<DockingPreClassifyVO> getCompanyGourpClassByParentId(String pid,boolean isContainView){
+		log.info("鏍规嵁鐖跺垎绫籶id->"+pid+"鏌ヨ灞傜骇鏍戞暟鎹璞¢泦鍚坰tart...");
+		List<DockingPreClassify> doList =dockingPreClassifyMapper.selectCompanyGroupClassifyVOByTree(pid);
+		List<DockingPreClassifyVO>dockingPreClassifyVOS= DockingPreClassifyWrapper.build().entityVOs(doList);
+		if(isContainView){
+			dockingPreClassifyVOS.stream().forEach(dockingPreClassifyVO -> {
+			List<DockingPreViewModelVO> dockingViewVOS=	dockingPreViewModelService.selectDockingPreViewModelByClassId(dockingPreClassifyVO.getOid(),isContainView);
+				dockingPreClassifyVO.setDockingPreViewModelVOList(dockingViewVOS);
+			});
+		}
+		log.info("鏍规嵁鐖跺垎绫籶id->"+pid+"鏌ヨ灞傜骇鏍戞暟鎹璞¢泦鍚坋nd...");
+		return dockingPreClassifyVOS;
+	}
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreMetaAttrServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreMetaAttrServiceImpl.java
index 167036f..f03a6cf 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreMetaAttrServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreMetaAttrServiceImpl.java
@@ -1,11 +1,15 @@
 package com.vci.ubcs.code.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.vci.ubcs.code.entity.DockingPreAttrMapping;
 import com.vci.ubcs.code.entity.DockingPreMetaAttr;
 import com.vci.ubcs.code.mapper.DockingPreMetaAttrMapper;
 import com.vci.ubcs.code.service.IDockingPreMetaAttrService;
+import com.vci.ubcs.code.vo.pagemodel.DockingPreMetaAttrVO;
+import com.vci.ubcs.code.wrapper.DockingPreMetaAttrWrapper;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -17,6 +21,7 @@
  * @date 2023-05-23
  */
 @Service
+@Slf4j
 public class DockingPreMetaAttrServiceImpl extends ServiceImpl<DockingPreMetaAttrMapper, DockingPreMetaAttr> implements IDockingPreMetaAttrService {
 
 	@Autowired(required = false)
@@ -26,4 +31,18 @@
 	public List<DockingPreMetaAttr> selectByWrapper(Wrapper wrapper) {
 		return dockingPreMetaAttrMapper.selectList(wrapper);
 	}
+
+	/***
+	 * 鏍规嵁妯″瀷瑙嗗浘oid鏌ヨ鏁版嵁
+	 * @param viewModelId
+	 * @return 杩斿洖灞炴�у璞�
+	 */
+	@Override
+	public List<DockingPreMetaAttrVO> selectDockingPreMetaAttrByViewModelId(String viewModelId) {
+		log.info("鏍规嵁妯″瀷瑙嗗浘oid"+viewModelId+"鏌ヨ鏁版嵁 star");
+		List<DockingPreMetaAttr> dockingPreMetaAttrList= selectByWrapper(Wrappers.<DockingPreMetaAttr>query().lambda().eq(DockingPreMetaAttr::getViewModelId,viewModelId));
+		List<DockingPreMetaAttrVO> dockingPreMetaAttrVOList=DockingPreMetaAttrWrapper.build().entityVOs(dockingPreMetaAttrList);
+		log.info("鏍规嵁妯″瀷瑙嗗浘oid"+viewModelId+"鏌ヨ鏁版嵁 end");
+		return dockingPreMetaAttrVOList;
+	}
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreViewModelServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreViewModelServiceImpl.java
index 9b8b5de..2e322bd 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreViewModelServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreViewModelServiceImpl.java
@@ -1,10 +1,23 @@
 package com.vci.ubcs.code.service.impl;
 
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.code.entity.DockingPreMetaAttr;
 import com.vci.ubcs.code.entity.DockingPreViewModel;
 import com.vci.ubcs.code.mapper.DockingPreViewModelMapper;
+import com.vci.ubcs.code.service.IDockingPreMetaAttrService;
 import com.vci.ubcs.code.service.IDockingPreViewModelService;
+import com.vci.ubcs.code.vo.pagemodel.DockingPreMetaAttrVO;
+import com.vci.ubcs.code.vo.pagemodel.DockingPreViewModelVO;
+import com.vci.ubcs.code.wrapper.DockingPreMetaAttrWrapper;
+import com.vci.ubcs.code.wrapper.DockingPreViewWrapper;
+import com.vci.ubcs.starter.web.util.VciBaseUtil;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
 
 /***
  * 闆嗗洟妯″瀷鏈嶅姟
@@ -12,5 +25,46 @@
  * @date 2023-05-23
  */
 @Service
+@Slf4j
 public class DockingPreViewModelServiceImpl extends ServiceImpl<DockingPreViewModelMapper,DockingPreViewModel> implements IDockingPreViewModelService {
+
+	/***
+	 * 闆嗗洟鍒嗙被灞炴��
+	 */
+	@Resource
+	private  DockingPreViewModelMapper dockingPreViewModelMapper;
+
+
+	/***
+	 * 闆嗗洟鍒嗙被灞炴�ф煡璇㈡湇鍔�
+	 */
+	@Resource
+	private IDockingPreMetaAttrService dockingPreMetaAttrService;
+
+	/**
+	 * 鏍规嵁鍒嗙被id鏌ヨ鍒嗙被瑙嗗浘
+	 * @param classifyId 闆嗗洟鍒嗙被id
+	 * @param isContainAttr 鏄惁鏌ヨ灞炴�э紝true锛� 鏄紝false锛屽惁
+	 * @return 杩斿洖鍒嗙被妯″瀷瑙嗗浘闆嗗悎瀵硅薄
+	 */
+	@Override
+	public List<DockingPreViewModelVO> selectDockingPreViewModelByClassId(String classifyId, boolean isContainAttr) {
+		log.info("鏍规嵁鍒嗙被id->"+classifyId+",鏌ヨ鍒嗙被瑙嗗浘statr");
+		VciBaseUtil.alertNotNull(classifyId,"闆嗗洟鍒嗙被涓婚敭");
+		List<DockingPreViewModel> dockingPreViewModels= dockingPreViewModelMapper.selectList(Wrappers.<DockingPreViewModel>query().lambda().eq(DockingPreViewModel::getSourceClassifyId,classifyId));
+		List<DockingPreViewModelVO> dockingPreViewModelVOS=DockingPreViewWrapper.build().entityVOs(dockingPreViewModels);
+		if(isContainAttr) {
+			dockingPreViewModelVOS.stream().forEach(dockingPreViewModelVO -> {
+				String viewModelVOOid=dockingPreViewModelVO.getOid();
+				String sourceClassifyId=dockingPreViewModelVO.getSourceClassifyId();
+				List<DockingPreMetaAttr> dockingPreMetaAttrList=dockingPreMetaAttrService.selectByWrapper(Wrappers.<DockingPreMetaAttr>query().lambda().eq(DockingPreMetaAttr::getSourceClassifyId,sourceClassifyId).eq(DockingPreMetaAttr::getViewModelId,viewModelVOOid));
+				List<DockingPreMetaAttrVO> dockingPreMetaAttrVOList= DockingPreMetaAttrWrapper.build().entityVOs(dockingPreMetaAttrList);
+				if(!CollectionUtils.isEmpty(dockingPreMetaAttrVOList)) {
+					dockingPreViewModelVO.setDockingPreMetaAttrVOList(dockingPreMetaAttrVOList);
+				}
+			});
+		}
+		log.info("鏍规嵁鍒嗙被id->"+classifyId+",鏌ヨ鍒嗙被瑙嗗浘end");
+		return dockingPreViewModelVOS;
+	}
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
index f96f6f5..2058eb7 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
@@ -2066,7 +2066,7 @@
 		} else {
 			//琛ㄩ渶瑕佹敼
 //			conditionMap.put(CODE_CLASSIFY_OID_FIELD, QueryOptionConstant.IN + "(select oid from " + VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_CLASSIFY)
-			conditionMap.put(CODE_CLASSIFY_OID_FIELD, QueryOptionConstant.IN + "(select oid from pl_code_wupin where lcstatus='" + FrameWorkDefaultValueConstant.FRAMEWORK_DATA_ENABLED +
+			conditionMap.put(CODE_CLASSIFY_OID_FIELD, QueryOptionConstant.IN + "(select oid from pl_code_classify where lcstatus='" + FrameWorkDefaultValueConstant.FRAMEWORK_DATA_ENABLED +
 				"' start with parentCodeClassifyOid = '" + codeClassifyOid + "' CONNECT BY PRIOR OID = parentCodeClassifyOid )");
 		}
 		conditionMap.put("lastr", "1");
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingLogeWrapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingLogeWrapper.java
index 208b9c4..93c2774 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingLogeWrapper.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingLogeWrapper.java
@@ -1,16 +1,67 @@
 package com.vci.ubcs.code.wrapper;
 
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.vci.ubcs.code.entity.DockingLog;
 import com.vci.ubcs.code.vo.pagemodel.DockingLogeVO;
 import org.springblade.core.mp.support.BaseEntityWrapper;
 import org.springblade.core.tool.utils.BeanUtil;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
 import java.util.Objects;
 
 public class DockingLogeWrapper extends BaseEntityWrapper<DockingLog, DockingLogeVO> {
+	public static DockingLogeWrapper build() {
+		return new DockingLogeWrapper();
+	}
+
 	@Override
 	public DockingLogeVO entityVO(DockingLog entity) {
 		DockingLogeVO dockingLogeVO = Objects.requireNonNull(BeanUtil.copy(entity, DockingLogeVO.class));
 		return dockingLogeVO;
 	}
+
+
+	/***
+	 * 鏁扮粍瀵硅薄杞崲
+	 * @param entitys
+	 * @return
+	 */
+	public List<DockingLogeVO> entityVOs(Collection<DockingLog> entitys) {
+		if(CollectionUtils.isEmpty(entitys)) {return new ArrayList<>();}
+		List<DockingLogeVO> vos=new ArrayList<>();
+		if(!CollectionUtils.isEmpty(entitys)) {
+			entitys.stream().forEach(vo -> {
+				vos.add(entityVO(vo));
+			});
+		}
+		return vos;
+	}
+
+	/***
+	 * 鏁扮粍瀵硅薄杞崲
+	 * @param vos
+	 * @return
+	 */
+	public List<DockingLog> voentitys(Collection<DockingLogeVO> vos) {
+		if(CollectionUtils.isEmpty(vos)) {return new ArrayList<>();}
+		List<DockingLog>entitys =new ArrayList<>();
+		if(!CollectionUtils.isEmpty(vos)) {
+			vos.stream().forEach(entity -> {
+				entitys.add(voentity(entity));
+			});
+		}
+		return entitys;
+	}
+
+	/***
+	 * 鏁扮粍瀵硅薄杞崲
+	 * @param vo
+	 * @return
+	 */
+	public DockingLog voentity( DockingLogeVO vo) {
+		DockingLog entity = Objects.requireNonNull(BeanUtil.copy(vo, DockingLog.class));
+		return entity;
+	}
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreApplyFormWrapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreApplyFormWrapper.java
index 1266111..9954956 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreApplyFormWrapper.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreApplyFormWrapper.java
@@ -1,10 +1,14 @@
 package com.vci.ubcs.code.wrapper;
 
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.vci.ubcs.code.entity.DockingPreApplyForm;
 import com.vci.ubcs.code.vo.pagemodel.DockingPreApplyFormVO;
 import org.springblade.core.mp.support.BaseEntityWrapper;
 import org.springblade.core.tool.utils.BeanUtil;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
 import java.util.Objects;
 
 /***
@@ -13,10 +17,54 @@
  * @date 2023-05-23
  */
 public class DockingPreApplyFormWrapper extends BaseEntityWrapper<DockingPreApplyForm, DockingPreApplyFormVO> {
-
+	public static DockingPreApplyFormWrapper build() {
+		return new DockingPreApplyFormWrapper();
+	}
 	@Override
 	public DockingPreApplyFormVO entityVO(DockingPreApplyForm entity) {
 		DockingPreApplyFormVO dockingPreApplyFormVO = Objects.requireNonNull(BeanUtil.copy(entity, DockingPreApplyFormVO.class));
 		return dockingPreApplyFormVO;
 	}
+
+	/***
+	 * 鏁扮粍瀵硅薄杞崲
+	 * @param entitys
+	 * @return
+	 */
+	public List<DockingPreApplyFormVO> entityVOs(Collection<DockingPreApplyForm> entitys) {
+		if(CollectionUtils.isEmpty(entitys)) {return new ArrayList<>();}
+		List<DockingPreApplyFormVO> vos=new ArrayList<>();
+		if(!CollectionUtils.isEmpty(entitys)) {
+			entitys.stream().forEach(vo -> {
+				vos.add(entityVO(vo));
+			});
+		}
+		return vos;
+	}
+
+	/***
+	 * 鏁扮粍瀵硅薄杞崲
+	 * @param vos
+	 * @return
+	 */
+	public List<DockingPreApplyForm> voentitys(Collection<DockingPreApplyFormVO> vos) {
+		if(CollectionUtils.isEmpty(vos)) {return new ArrayList<>();}
+		List<DockingPreApplyForm>entitys =new ArrayList<>();
+		if(!CollectionUtils.isEmpty(vos)) {
+			vos.stream().forEach(entity -> {
+				entitys.add(voentity(entity));
+			});
+		}
+		return entitys;
+	}
+
+	/***
+	 * 鏁扮粍瀵硅薄杞崲
+	 * @param vo
+	 * @return
+	 */
+	public DockingPreApplyForm voentity( DockingPreApplyFormVO vo) {
+		DockingPreApplyForm entity = Objects.requireNonNull(BeanUtil.copy(vo, DockingPreApplyForm.class));
+		return entity;
+	}
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreAttrMappingWrapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreAttrMappingWrapper.java
index 4db0b71..8bad0a0 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreAttrMappingWrapper.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreAttrMappingWrapper.java
@@ -2,9 +2,7 @@
 
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.vci.ubcs.code.entity.DockingPreAttrMapping;
-import com.vci.ubcs.code.entity.DockingPreAttrRange;
 import com.vci.ubcs.code.vo.pagemodel.DockingPreAttrMappingVO;
-import com.vci.ubcs.code.vo.pagemodel.DockingPreAttrRangeVO;
 import org.springblade.core.mp.support.BaseEntityWrapper;
 import org.springblade.core.tool.utils.BeanUtil;
 
@@ -31,14 +29,15 @@
 
 	/***
 	 * 鏁扮粍瀵硅薄杞崲
-	 * @param dockingPreAttrMappings
+	 * @param entitys
 	 * @return
 	 */
-	public List<DockingPreAttrMappingVO> entityVOs(Collection<DockingPreAttrMapping> dockingPreAttrMappings) {
+	public List<DockingPreAttrMappingVO> entityVOs(Collection<DockingPreAttrMapping> entitys) {
+		if(CollectionUtils.isEmpty(entitys)) {return new ArrayList<>();}
 		List<DockingPreAttrMappingVO> dockingPreAttrMappingVOList=new ArrayList<>();
-		if(!CollectionUtils.isEmpty(dockingPreAttrMappings)) {
-			dockingPreAttrMappings.stream().forEach(dockingPreAttrMapping -> {
-				dockingPreAttrMappingVOList.add(entityVO(dockingPreAttrMapping));
+		if(!CollectionUtils.isEmpty(entitys)) {
+			entitys.stream().forEach(entity -> {
+				dockingPreAttrMappingVOList.add(entityVO(entity));
 			});
 		}
 		return dockingPreAttrMappingVOList;
@@ -46,14 +45,15 @@
 
 	/***
 	 * 鏁扮粍瀵硅薄杞崲
-	 * @param dockingPreAttrMappingVOS
+	 * @param vos
 	 * @return
 	 */
-	public List<DockingPreAttrMapping> voentitys(Collection<DockingPreAttrMappingVO> dockingPreAttrMappingVOS) {
+	public List<DockingPreAttrMapping> voentitys(Collection<DockingPreAttrMappingVO> vos) {
+		if(CollectionUtils.isEmpty(vos)) {return new ArrayList<>();}
 		List<DockingPreAttrMapping> dockingPreAttrMappingList=new ArrayList<>();
-		if(!CollectionUtils.isEmpty(dockingPreAttrMappingVOS)) {
-			dockingPreAttrMappingVOS.stream().forEach(dockingPreAttrMappingVO -> {
-				dockingPreAttrMappingList.add(voentity(dockingPreAttrMappingVO));
+		if(!CollectionUtils.isEmpty(vos)) {
+			vos.stream().forEach(vo -> {
+				dockingPreAttrMappingList.add(voentity(vo));
 			});
 		}
 		return dockingPreAttrMappingList;
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreAttrRangeWrapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreAttrRangeWrapper.java
index 0df3141..f5ef92c 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreAttrRangeWrapper.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreAttrRangeWrapper.java
@@ -1,11 +1,8 @@
 package com.vci.ubcs.code.wrapper;
 
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
-import com.vci.ubcs.code.entity.DockingPreAttrMapping;
 import com.vci.ubcs.code.entity.DockingPreAttrRange;
-import com.vci.ubcs.code.vo.pagemodel.DockingPreAttrMappingVO;
 import com.vci.ubcs.code.vo.pagemodel.DockingPreAttrRangeVO;
-import com.vci.ubcs.code.vo.pagemodel.DockingPreClassifyVO;
 import org.springblade.core.mp.support.BaseEntityWrapper;
 import org.springblade.core.tool.utils.BeanUtil;
 
@@ -32,14 +29,16 @@
 
 	/***
 	 * 鏁扮粍瀵硅薄杞崲
-	 * @param dockingPreAttrRanges
+	 * @param entitys
 	 * @return
 	 */
-	public List<DockingPreAttrRangeVO> entityVOs(Collection<DockingPreAttrRange> dockingPreAttrRanges) {
+	public List<DockingPreAttrRangeVO> entityVOs(Collection<DockingPreAttrRange> entitys) {
+		if(CollectionUtils.isEmpty(entitys)) {return new ArrayList<>();}
 		List<DockingPreAttrRangeVO> dockingPreAttrRangeVOList=new ArrayList<>();
-		if(!CollectionUtils.isEmpty(dockingPreAttrRanges)) {
-			dockingPreAttrRanges.stream().forEach(dockingPreAttrRange -> {
-				dockingPreAttrRangeVOList.add(entityVO(dockingPreAttrRange));
+
+		if(!CollectionUtils.isEmpty(entitys)) {
+			entitys.stream().forEach(entity -> {
+				dockingPreAttrRangeVOList.add(entityVO(entity));
 			});
 		}
 		return dockingPreAttrRangeVOList;
@@ -47,14 +46,15 @@
 
 	/***
 	 * 鏁扮粍瀵硅薄杞崲
-	 * @param dockingPreAttrRangeVos
+	 * @param vos
 	 * @return
 	 */
-	public List<DockingPreAttrRange> voentitys(Collection<DockingPreAttrRangeVO> dockingPreAttrRangeVos) {
+	public List<DockingPreAttrRange> voentitys(Collection<DockingPreAttrRangeVO> vos) {
+		if(CollectionUtils.isEmpty(vos)) {return new ArrayList<>();}
 		List<DockingPreAttrRange> dockingPreAttrRangeList=new ArrayList<>();
-		if(!CollectionUtils.isEmpty(dockingPreAttrRangeVos)) {
-			dockingPreAttrRangeVos.stream().forEach(dockingPreAttrRangeVO -> {
-				dockingPreAttrRangeList.add(voentity(dockingPreAttrRangeVO));
+		if(!CollectionUtils.isEmpty(vos)) {
+			vos.stream().forEach(vo -> {
+				dockingPreAttrRangeList.add(voentity(vo));
 			});
 		}
 		return dockingPreAttrRangeList;
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreClassifyWrapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreClassifyWrapper.java
index 527c7b3..e57caee 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreClassifyWrapper.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreClassifyWrapper.java
@@ -1,11 +1,14 @@
 package com.vci.ubcs.code.wrapper;
 
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.vci.ubcs.code.entity.DockingPreClassify;
-import com.vci.ubcs.code.vo.pagemodel.DockingPreAttrMappingVO;
 import com.vci.ubcs.code.vo.pagemodel.DockingPreClassifyVO;
 import org.springblade.core.mp.support.BaseEntityWrapper;
 import org.springblade.core.tool.utils.BeanUtil;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
 import java.util.Objects;
 /**
  *闆嗗洟缂栫爜鍒嗙被鍖呰绫�
@@ -14,9 +17,54 @@
  * @since 2023-05-23
  */
 public class DockingPreClassifyWrapper extends BaseEntityWrapper<DockingPreClassify, DockingPreClassifyVO> {
+	public static DockingPreClassifyWrapper build() {
+		return new DockingPreClassifyWrapper();
+	}
 	@Override
 	public DockingPreClassifyVO entityVO(DockingPreClassify entity) {
 		DockingPreClassifyVO dockingPreClassifyVO = Objects.requireNonNull(BeanUtil.copy(entity, DockingPreClassifyVO.class));
 		return dockingPreClassifyVO;
 	}
+
+	/***
+	 * 鏁扮粍瀵硅薄杞崲
+	 * @param entitys
+	 * @return
+	 */
+	public List<DockingPreClassifyVO> entityVOs(Collection<DockingPreClassify> entitys) {
+		if(CollectionUtils.isEmpty(entitys)) {return new ArrayList<>();}
+		List<DockingPreClassifyVO> vos=new ArrayList<>();
+		if(!CollectionUtils.isEmpty(entitys)) {
+			entitys.stream().forEach(vo -> {
+				vos.add(entityVO(vo));
+			});
+		}
+		return vos;
+	}
+
+	/***
+	 * 鏁扮粍瀵硅薄杞崲
+	 * @param vos
+	 * @return
+	 */
+	public List<DockingPreClassify> voentitys(Collection<DockingPreClassifyVO> vos) {
+		if(CollectionUtils.isEmpty(vos)) {return new ArrayList<>();}
+		List<DockingPreClassify>entitys =new ArrayList<>();
+		if(!CollectionUtils.isEmpty(vos)) {
+			vos.stream().forEach(entity -> {
+				entitys.add(voentity(entity));
+			});
+		}
+		return entitys;
+	}
+
+	/***
+	 * 鏁扮粍瀵硅薄杞崲
+	 * @param vo
+	 * @return
+	 */
+	public DockingPreClassify voentity( DockingPreClassifyVO vo) {
+		DockingPreClassify entity = Objects.requireNonNull(BeanUtil.copy(vo, DockingPreClassify.class));
+		return entity;
+	}
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreMetaAttrWrapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreMetaAttrWrapper.java
index b0f0021..e880044 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreMetaAttrWrapper.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreMetaAttrWrapper.java
@@ -1,12 +1,14 @@
 package com.vci.ubcs.code.wrapper;
 
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.vci.ubcs.code.entity.DockingPreMetaAttr;
-import com.vci.ubcs.code.entity.DockingPreViewModel;
 import com.vci.ubcs.code.vo.pagemodel.DockingPreMetaAttrVO;
-import com.vci.ubcs.code.vo.pagemodel.DockingPreViewModelVO;
 import org.springblade.core.mp.support.BaseEntityWrapper;
 import org.springblade.core.tool.utils.BeanUtil;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
 import java.util.Objects;
 /**
  *闆嗗洟缂栫爜鐢宠妯″瀷灞炴�у寘瑁呯被
@@ -15,9 +17,58 @@
  * @since 2023-05-23
  */
 public class DockingPreMetaAttrWrapper extends BaseEntityWrapper<DockingPreMetaAttr, DockingPreMetaAttrVO> {
+
+	public static DockingPreMetaAttrWrapper build() {
+		return new DockingPreMetaAttrWrapper();
+	}
+
 	@Override
 	public DockingPreMetaAttrVO entityVO(DockingPreMetaAttr entity) {
 		DockingPreMetaAttrVO dockingPreMetaAttrVO = Objects.requireNonNull(BeanUtil.copy(entity, DockingPreMetaAttrVO.class));
 		return dockingPreMetaAttrVO;
 	}
+
+
+
+	/***
+	 * 鏁扮粍瀵硅薄杞崲
+	 * @param entitys
+	 * @return
+	 */
+	public List<DockingPreMetaAttrVO> entityVOs(Collection<DockingPreMetaAttr> entitys) {
+		if(CollectionUtils.isEmpty(entitys)) {return new ArrayList<>();}
+		List<DockingPreMetaAttrVO> vos=new ArrayList<>();
+		if(!CollectionUtils.isEmpty(entitys)) {
+			entitys.stream().forEach(vo -> {
+				vos.add(entityVO(vo));
+			});
+		}
+		return vos;
+	}
+
+	/***
+	 * 鏁扮粍瀵硅薄杞崲
+	 * @param vos
+	 * @return
+	 */
+	public List<DockingPreMetaAttr> voentitys(Collection<DockingPreMetaAttrVO> vos) {
+		if(CollectionUtils.isEmpty(vos)) {return new ArrayList<>();}
+		List<DockingPreMetaAttr>entitys =new ArrayList<>();
+		if(!CollectionUtils.isEmpty(vos)) {
+			vos.stream().forEach(entity -> {
+				entitys.add(voentity(entity));
+			});
+		}
+		return entitys;
+	}
+
+	/***
+	 * 鏁扮粍瀵硅薄杞崲
+	 * @param vo
+	 * @return
+	 */
+	public DockingPreMetaAttr voentity( DockingPreMetaAttrVO vo) {
+		DockingPreMetaAttr entity = Objects.requireNonNull(BeanUtil.copy(vo, DockingPreMetaAttr.class));
+		return entity;
+	}
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreViewWrapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreViewWrapper.java
index 4823305..518e96f 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreViewWrapper.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreViewWrapper.java
@@ -1,11 +1,14 @@
 package com.vci.ubcs.code.wrapper;
 
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.vci.ubcs.code.entity.DockingPreViewModel;
-import com.vci.ubcs.code.vo.pagemodel.DockingPreClassifyVO;
 import com.vci.ubcs.code.vo.pagemodel.DockingPreViewModelVO;
 import org.springblade.core.mp.support.BaseEntityWrapper;
 import org.springblade.core.tool.utils.BeanUtil;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
 import java.util.Objects;
 /**
  *闆嗗洟缂栫爜鐢宠瑙嗗浘鍖呰绫�
@@ -14,9 +17,54 @@
  * @since 2023-05-23
  */
 public class DockingPreViewWrapper  extends BaseEntityWrapper<DockingPreViewModel, DockingPreViewModelVO> {
+	public static DockingPreViewWrapper build() {
+		return new DockingPreViewWrapper();
+	}
 	@Override
 	public DockingPreViewModelVO entityVO(DockingPreViewModel entity) {
 		DockingPreViewModelVO dockingPreViewModelVO = Objects.requireNonNull(BeanUtil.copy(entity, DockingPreViewModelVO.class));
 		return dockingPreViewModelVO;
 	}
+
+	/***
+	 * 鏁扮粍瀵硅薄杞崲
+	 * @param entitys
+	 * @return
+	 */
+	public List<DockingPreViewModelVO> entityVOs(Collection<DockingPreViewModel> entitys) {
+		if(CollectionUtils.isEmpty(entitys)) {return new ArrayList<>();}
+		List<DockingPreViewModelVO> vos=new ArrayList<>();
+		if(!CollectionUtils.isEmpty(entitys)) {
+			entitys.stream().forEach(dockingPreAttrRange -> {
+				vos.add(entityVO(dockingPreAttrRange));
+			});
+		}
+		return vos;
+	}
+
+	/***
+	 * 鏁扮粍瀵硅薄杞崲
+	 * @param vos
+	 * @return
+	 */
+	public List<DockingPreViewModel> voentitys(Collection<DockingPreViewModelVO> vos) {
+		if(CollectionUtils.isEmpty(vos)) {return new ArrayList<>();}
+		List<DockingPreViewModel>entitys =new ArrayList<>();
+		if(!CollectionUtils.isEmpty(vos)) {
+			vos.stream().forEach(entity -> {
+				entitys.add(voentity(entity));
+			});
+		}
+		return entitys;
+	}
+
+	/***
+	 * 鏁扮粍瀵硅薄杞崲
+	 * @param vo
+	 * @return
+	 */
+	public DockingPreViewModel voentity( DockingPreViewModelVO vo) {
+		DockingPreViewModel entity = Objects.requireNonNull(BeanUtil.copy(vo, DockingPreViewModel.class));
+		return entity;
+	}
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/application-dev.yml b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/application-dev.yml
index 67e62cf..1096c57 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/application-dev.yml
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/application-dev.yml
@@ -12,6 +12,10 @@
 mybatis-plus:
   configuration:
     map-underscore-to-camel-case: false
+docking:
+  apply:
+    jtInterUrl: http://116.205.176.185:8099
+    unitCode: 410-MDM
 
 ######搴旂敤鍩烘湰閰嶇疆
 #app:
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingLogeMapper.xml b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingLogeMapper.xml
index af4f902..ce43015 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingLogeMapper.xml
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingLogeMapper.xml
@@ -2,7 +2,7 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.vci.ubcs.code.mapper.DockingLogeMapper">
     <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
-    <resultMap id="DockingPreAttrMappingResultMap" type="com.vci.ubcs.code.entity.DockingLog">
+    <resultMap id="plDockingLogResultMap" type="com.vci.ubcs.code.entity.DockingLog">
         <result column="OID" property="oid"/>
         <result column="REVISIONOID" property="revisionOid"/>
         <result column="NAMEOID" property="nameOid"/>
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreApplyFormMapper.xml b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreApplyFormMapper.xml
index 58c86ca..32a794f 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreApplyFormMapper.xml
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreApplyFormMapper.xml
@@ -33,6 +33,10 @@
         <result column="CONTENT" property="content"/>
         <result column="DATAOID" property="dataOid"/>
         <result column="DATABTMNAME" property="dataBtmName"/>
-        <result column="MSG" property="msg"/>
+        <result column="MSG" property="msg"  />
+        <result column="OPERATIONTYPE" property="operationType" />
+        <result column="GROUPCODE" property="groupCode" />
     </resultMap>
+
+
 </mapper>
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreAttrMappingMapper.xml b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreAttrMappingMapper.xml
index a6a0649..c75f1f1 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreAttrMappingMapper.xml
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreAttrMappingMapper.xml
@@ -2,7 +2,7 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.vci.ubcs.code.mapper.DockingPreAttrMappingMapper">
     <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
-    <resultMap id="DockingPreAttrMappingResultMap" type="com.vci.ubcs.code.entity.DockingPreAttrMapping">
+    <resultMap id="plDockingPreAttrMappingResultMap" type="com.vci.ubcs.code.entity.DockingPreAttrMapping">
             <result column="OID" property="oid"/>
             <result column="REVISIONOID" property="revisionOid"/>
             <result column="NAMEOID" property="nameOid"/>
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreAttrRangeMapper.xml b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreAttrRangeMapper.xml
index 903ee79..dbb11bc 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreAttrRangeMapper.xml
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreAttrRangeMapper.xml
@@ -2,7 +2,7 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.vci.ubcs.code.mapper.DockingPreAttrRangeMapper">
     <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
-    <resultMap id="DockingPreAttrMappingResultMap" type="com.vci.ubcs.code.entity.DockingPreAttrRange">
+    <resultMap id="plDockingPreAttrRangeResultMap" type="com.vci.ubcs.code.entity.DockingPreAttrRange">
         <result column="OID" property="oid"/>
         <result column="REVISIONOID" property="revisionOid"/>
         <result column="NAMEOID" property="nameOid"/>
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreClassifyMapper.xml b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreClassifyMapper.xml
index 89fc815..7c45672 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreClassifyMapper.xml
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreClassifyMapper.xml
@@ -2,7 +2,7 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.vci.ubcs.code.mapper.DockingPreClassifyMapper">
     <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
-    <resultMap id="DockingPreAttrMappingResultMap" type="com.vci.ubcs.code.entity.DockingPreClassify">
+    <resultMap id="plDockingClassifyResultMap" type="com.vci.ubcs.code.entity.DockingPreClassify">
         <result column="OID" property="oid"/>
         <result column="REVISIONOID" property="revisionOid"/>
         <result column="NAMEOID" property="nameOid"/>
@@ -34,5 +34,51 @@
         <result column="NODELINKNAME" property="getNodeLinkName"/>
         <result column="PID" property="pid"/>
     </resultMap>
+    <select id="selectCompanyGroupClassifyVOByTree" resultMap="plDockingClassifyResultMap">
+        select codeclassify0.OID                 as oid,
+        codeclassify0.REVISIONOID             as revisionoid,
+        codeclassify0.NAMEOID              as nameOid,
+        codeclassify0.BTMNAME            as btmname,
+        codeclassify0.LASTR          as lastr,
+        codeclassify0.FIRSTR              as firstr,
+        codeclassify0.LASTV           as lastv,
+        codeclassify0.FIRSTV           as firstv,
+        codeclassify0.CREATOR           as creator,
+        codeclassify0.CREATETIME           as createtime,
+        codeclassify0.LASTMODIFIER           as lastmodifier,
+        codeclassify0.LASTMODIFYTIME        as lastmodifytime,
+        codeclassify0.REVISIONRULE        as revisionrule,
+        codeclassify0.VERSIONRULE        as versionrule,
+        codeclassify0.REVISIONSEQ        as revisionseq,
+        codeclassify0.REVISIONVALUE        as revisionvalue,
+        codeclassify0.VERSIONSEQ        as versionseq,
+        codeclassify0.VERSIONVALUE        as versionvalue,
+        codeclassify0.LCTID        as lctid,
+        codeclassify0.LCSTATUS              as lcstatus,
+        codeclassify0.OID                   as oid,
+        codeclassify0.TS                    as ts,
+        codeclassify0.DESCRIPTION           as description,
+        codeclassify0.OWNER                 as owner,
+        codeclassify0.COPYFROMVERSION       as copyfromversion,
+        codeclassify0.ID                    as id,
+        codeclassify0.NAME                  as name,
+        codeclassify0.CLASSNAME               as classname,
+        codeclassify0.NODELINK   as nodelink,
+        codeclassify0.NODELINKNAME   as nodelinkname,
+        codeclassify0.PID   as pid
+        from PL_CODE_JCLASSIFY codeclassify0
+        <where>
+            <if test="oid != null and oid != ''">
+                codeclassify0.pid = '${oid}'
+            </if>
+            <if test="oid = null">
+                codeclassify0.pid is null
+            </if>
+        </where>
+        order by id asc
+    </select>
 
+    <select id="checkHasChild" resultType="java.lang.Boolean">
+        select count(oid) from PL_CODE_JCLASSIFY  where pid = #{oid}
+    </select>
 </mapper>
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreMetaAttrMapper.xml b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreMetaAttrMapper.xml
index f30a2ca..c1f8fa4 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreMetaAttrMapper.xml
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreMetaAttrMapper.xml
@@ -2,7 +2,7 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.vci.ubcs.code.mapper.DockingPreMetaAttrMapper">
     <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
-    <resultMap id="DockingPreAttrMappingResultMap" type="com.vci.ubcs.code.entity.DockingPreMetaAttr">
+    <resultMap id="plDockingPreMetaAttrResultMap" type="com.vci.ubcs.code.entity.DockingPreMetaAttr">
         <result column="OID" property="oid"/>
         <result column="REVISIONOID" property="revisionOid"/>
         <result column="NAMEOID" property="nameOid"/>
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreViewMapper.xml b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreViewMapper.xml
index 8801524..f88b982 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreViewMapper.xml
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreViewMapper.xml
@@ -2,7 +2,7 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.vci.ubcs.code.mapper.DockingPreViewModelMapper">
     <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
-    <resultMap id="DockingPreAttrMappingResultMap" type="com.vci.ubcs.code.entity.DockingPreViewModel">
+    <resultMap id="plDockingPreViewModelResultMap" type="com.vci.ubcs.code.entity.DockingPreViewModel">
         <result column="OID" property="oid"/>
         <result column="REVISIONOID" property="revisionOid"/>
         <result column="NAMEOID" property="nameOid"/>
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/AttributeController.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/AttributeController.java
index c03805d..d9eae5f 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/AttributeController.java
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/AttributeController.java
@@ -127,7 +127,7 @@
 	@PostMapping("/submit")
 	@ApiOperationSupport(order = 3)
 	@ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆鍏冩暟鎹璞�")
-	public R submit(@Valid @RequestBody AttributeDTO dto) {
+	public R submit(@RequestBody AttributeDTO dto) {
 		CacheUtil.clear(OmdCacheConstant.ATTR_CACHE);
 		return R.status(attributeService.submit(dto));
 	}
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 03f8eaf..4b7a621 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
@@ -53,9 +53,6 @@
 
 	private final String REGEXP = "^[A-Za-z]+$";
 
-	@Resource
-	private BtmTypeMapper btmTypeMapper;
-
 	@Override
 	public boolean deleteLogic(@NotEmpty List<Long> ids) {
 		return false;
@@ -86,17 +83,17 @@
 	 */
 	@Override
 	public boolean submit(AttributeDTO dto) {
-		if (Pattern.compile(REGEXP).matcher(dto.getId()).matches()){
+		if (!Pattern.compile(REGEXP).matcher(dto.getId()).matches()){
 			throw new VciBaseException("灞炴�у悕绉皗0}鍙兘鏄嫳鏂�",new Object[]{dto.getId()});
 		}
 		LambdaQueryWrapper<Attribute> wrapper = Wrappers.<Attribute>query().lambda().eq(Attribute::getId, dto.getId());
-		Long count = baseMapper.selectCount((Func.isEmpty(dto.getId())) ? wrapper : wrapper.notIn(Attribute::getId, dto.getId()));
+		Long count = baseMapper.selectCount((Func.isEmpty(dto.getOid())) ? wrapper : wrapper.notIn(Attribute::getOid, dto.getOid()));
 		if (count > 0L) {
 			throw new ServiceException("灞炴�у悕宸插瓨鍦�!");
 		}
-		Attribute omdAttribute = BeanUtil.copy(dto, Attribute.class);
+		Attribute attribute = AttributeWrapper.build().copyBeforeSave(dto);
 		CacheUtil.clear(OmdCacheConstant.ATTR_CACHE);
-		return saveOrUpdate(omdAttribute);
+		return saveOrUpdate(attribute);
 	}
 
 	/**
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/AttributeWrapper.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/AttributeWrapper.java
index d279695..837353b 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/AttributeWrapper.java
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/AttributeWrapper.java
@@ -1,12 +1,18 @@
 package com.vci.ubcs.omd.wrapper;
 
+import com.vci.ubcs.omd.cache.EnumCache;
+import com.vci.ubcs.omd.constant.BtmTypeConstant;
+import com.vci.ubcs.omd.dto.AttributeDTO;
 import com.vci.ubcs.omd.entity.Attribute;
 import com.vci.ubcs.omd.vo.*;
+import com.vci.ubcs.starter.web.util.VciBaseUtil;
 import com.vci.ubcs.system.cache.DictBizCache;
 import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.StringUtil;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Objects;
 import java.util.stream.Collectors;
@@ -32,12 +38,13 @@
 	@Override
 	public AttributeVO entityVO(Attribute entity) {
 		AttributeVO vo = Objects.requireNonNull(BeanUtil.copy(entity, AttributeVO.class));
-		vo.setTypeValue(DictBizCache.getValue(vo.getTypeCode(),vo.getTypeKey()));
+		vo.setTypeValue(EnumCache.getValue(vo.getTypeCode(),vo.getTypeKey()));
 		if (StringUtil.isNotBlank(vo.getReferTypeCode())){
-			vo.setReferTypeValue(DictBizCache.getValue(vo.getReferTypeCode(),vo.getReferTypeKey()));
+			vo.setReferTypeValue(EnumCache.getValue(vo.getReferTypeCode(),vo.getReferTypeKey()));
 		}
-		vo.setDictValue(vo.getDictKey());
-		vo.setTypeValue(vo.getTypeKey());
+		if (StringUtil.isNotBlank(vo.getDictCode())) {
+			vo.setDictValue(EnumCache.getValue(vo.getDictCode(),vo.getDictKey()));
+		}
 		return vo;
 	}
 
@@ -49,4 +56,27 @@
 	public List<AttributeVO> listEntityVO(List<Attribute> list) {
 		return list.stream().map(this::entityVO).collect(Collectors.toList());
 	}
+
+	/**
+	 * 鍦ㄤ繚瀛樹箣鍓嶈璁剧疆榛樿灞炴��
+	 * @param dto
+	 * @return
+	 */
+    public Attribute copyBeforeSave(AttributeDTO dto) {
+		Attribute attribute = BeanUtil.copy(dto, Attribute.class);
+		Objects.requireNonNull(attribute);
+		String currentUser = AuthUtil.getUserAccount();
+		Date now = new Date();
+		if (StringUtil.isBlank(dto.getOid())) {
+			attribute.setBtmName(BtmTypeConstant.ATTRIBUTE);
+			attribute.setCreator(currentUser);
+			attribute.setCreateTime(now);
+			attribute.setOwner(currentUser);
+			attribute.setOid(VciBaseUtil.getPk());
+		}
+		attribute.setLastModifier(currentUser);
+		attribute.setLastModifyTime(now);
+		attribute.setTs(now);
+		return attribute;
+	}
 }

--
Gitblit v1.9.3