From 75e0307428bdd1a16b9ff5b2a927620eec0ac41c Mon Sep 17 00:00:00 2001
From: yuxc <653031404@qq.com>
Date: 星期二, 23 五月 2023 17:59:15 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreViewModelServiceImpl.java   |   16 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreViewModelDTO.java            |   64 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreAttrRangeService.java           |    7 
 Source/UBCS/ubcs-service/ubcs-code/src/test/java/util.java                                                            |   46 
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LifeCycleLineVO.java                      |  158 -
 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreClassifyMapper.xml                             |   38 
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/RevisionRule.java                     |  104 
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LifeCycleLineEventVO.java                 |  122 -
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/Status.java                           |   82 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreAttrRangeDTO.java            |  126 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreApplyFormDTO.java            |   88 
 Source/UBCS-WEB/src/views/modeling/Version.vue                                                                        |   90 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreApplyFormVO.java    |   88 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IRevisionRuleService.java                    |  191 +
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreApplyFormMapper.java              |    7 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreViewModelVO.java    |   61 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/StatusMapper.java                             |   13 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreApplyFormService.java           |   12 
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IRevisionRuleClient.java               |   92 
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IRevisionRuleFallback.java             |   74 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreAttrRangeWrapper.java            |   25 
 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreAttrMappingMapper.xml                          |   48 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/RevisionRuleController.java               |   97 
 Source/UBCS-WEB/src/api/omd/revisionRule.js                                                                           |   75 
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleRule.java                    |    4 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreApplyFormWrapper.java            |   22 
 Source/UBCS-WEB/src/views/modeling/Business.vue                                                                       |    5 
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/RevisionRuleVO.java                       |  155 -
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreClassifyVO.java     |   72 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingPreApplyForm.java            |   46 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreMetaAttrMapper.java               |    7 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingPreViewModel.java            |   40 
 Source/UBCS-WEB/src/views/modeling/original.vue                                                                       |   27 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreViewModelService.java           |   12 
 Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue                                                                    |  172 +
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreMetaAttrDTO.java             |  135 +
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/StatusClient.java                              |   79 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/BtmTypeAttributeMapper.java                   |    3 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java                 |   25 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreAttrRangeVO.java    |  134 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingPreClassify.java             |   46 
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/ModifyAttributeInfoVO.java                |  241 --
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreAttrMappingService.java         |   11 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/RevisionRuleMapper.java                       |   14 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreViewWrapper.java                 |   22 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreMetaAttrVO.java     |  137 +
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/StatusController.java                     |  102 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/BtmTypeClient.java                             |    6 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreClassifyDTO.java             |   74 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreMetaAttrService.java            |   12 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreApplyFormServiceImpl.java   |   16 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/RevisionRuleClient.java                        |   97 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreAttrMappingServiceImpl.java |   16 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IStatusService.java                          |  164 +
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/BtmTypeMapper.java                            |    3 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/StatusMapper.xml                                          |   26 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreAttrMappingVO.java  |  266 +
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleLine.java                    |    2 
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IStatusClient.java                     |   69 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreAttrRangeMapper.java              |    7 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingLogeService.java                   |   16 
 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreMetaAttrMapper.xml                             |   43 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/RevisionRuleWrapper.java                     |   46 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreMetaAttrWrapper.java             |   23 
 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreViewMapper.xml                                 |   37 
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/StatusVO.java                             |  117 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingLogeMapper.java                      |   14 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreClassifyService.java            |   12 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreClassifyWrapper.java             |   22 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingPreAttrMapping.java          |  118 +
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreClassifyMapper.java               |    7 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreAttrRangeServiceImpl.java   |   17 
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LifeCycleEventVO.java                     |  113 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/RevisionRuleServiceImpl.java            |  563 ++++
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/StatusWrapper.java                           |   46 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreAttrMappingMapper.java            |    7 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreClassifyServiceImpl.java    |   25 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/StatusServiceImpl.java                  |  459 +++
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleLineEvent.java               |    2 
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LifeCycleVO.java                          |  150 -
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java           |   95 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreAttrMappingWrapper.java          |   22 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/RevisionRuleMapper.xml                                    |   32 
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LinkTypeAttributeVO.java                  |    4 
 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingLogeMapper.xml                                    |   48 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreViewModelMapper.java              |    7 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreMetaAttrServiceImpl.java    |   16 
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IStatusFallback.java                   |   51 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreAttrMappingDTO.java          |  338 +-
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/LifeCycleEvent.java                   |    2 
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LinkTypeVO.java                           |    4 
 Source/UBCS-WEB/src/views/modeling/status.vue                                                                         |  141 +
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingPreMetaAttr.java             |   64 
 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreAttrRangeMapper.xml                            |   39 
 Source/UBCS-WEB/src/api/omd/status.js                                                                                 |   75 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingPreAttrRange.java            |   50 
 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreApplyFormMapper.xml                            |   38 
 97 files changed, 5,330 insertions(+), 1,526 deletions(-)

diff --git a/Source/UBCS-WEB/src/api/omd/revisionRule.js b/Source/UBCS-WEB/src/api/omd/revisionRule.js
new file mode 100644
index 0000000..ac3ce70
--- /dev/null
+++ b/Source/UBCS-WEB/src/api/omd/revisionRule.js
@@ -0,0 +1,75 @@
+import request from '@/router/axios';
+
+export const getPage = (current,size,params) => {
+    return request({
+        url: '/api/ubcs-omd/revision-rule/page',
+        method: 'get',
+        params: {
+            ...params,
+            current,
+            size,
+        }
+    })
+}
+
+export const getDetail = (oid) => {
+    return request({
+        url: '/api/ubcs-omd/revision-rule/detail',
+        method: 'get',
+        params: {
+            oid: oid
+        }
+    })
+}
+
+export const add = (rule) => {
+    return request({
+        url: '/api/ubcs-omd/revision-rule/submit',
+        method: 'post',
+        data: rule
+    })
+}
+
+export const batchAdd = (rules) => {
+    return request({
+        url: '/api/ubcs-omd/revision-rule/batch-submit',
+        method: 'post',
+        data: rules
+    })
+}
+
+export const update = (rule) => {
+    return request({
+        url: '/api/ubcs-omd/revision-rule/submit',
+        method: 'post',
+        data: rule
+    })
+}
+
+export const batchUpdate = (rules) => {
+    return request({
+        url: '/api/ubcs-omd/revision-rule/batch-submit',
+        method: 'post',
+        data: rules
+    })
+}
+
+export const remove = (rule) => {
+    return request({
+        url: '/api/ubcs-omd/revision-rule/remove',
+        method: 'post',
+        data: rule
+    })
+}
+
+export const refList = (currentPage,pageSize,params) => {
+    return request({
+        url: '/api/ubcs-omd/revision-rule/ref',
+        method: 'get',
+        params: {
+            ...params,
+            currentPage,
+            pageSize
+        }
+    })
+}
\ No newline at end of file
diff --git a/Source/UBCS-WEB/src/api/omd/status.js b/Source/UBCS-WEB/src/api/omd/status.js
new file mode 100644
index 0000000..e80f0f8
--- /dev/null
+++ b/Source/UBCS-WEB/src/api/omd/status.js
@@ -0,0 +1,75 @@
+import request from '@/router/axios';
+
+export const getPage = (current,size,params) => {
+    return request({
+        url: '/api/ubcs-omd/status/page',
+        method: 'get',
+        params: {
+            ...params,
+            current,
+            size,
+        }
+    })
+}
+
+export const getDetail = (oid) => {
+    return request({
+        url: '/api/ubcs-omd/status/detail',
+        method: 'get',
+        params: {
+            oid: oid
+        }
+    })
+}
+
+export const add = (rule) => {
+    return request({
+        url: '/api/ubcs-omd/status/submit',
+        method: 'post',
+        data: rule
+    })
+}
+
+export const batchAdd = (rules) => {
+    return request({
+        url: '/api/ubcs-omd/status/batch-submit',
+        method: 'post',
+        data: rules
+    })
+}
+
+export const update = (rule) => {
+    return request({
+        url: '/api/ubcs-omd/status/submit',
+        method: 'post',
+        data: rule
+    })
+}
+
+export const batchUpdate = (rules) => {
+    return request({
+        url: '/api/ubcs-omd/status/batch-submit',
+        method: 'post',
+        data: rules
+    })
+}
+
+export const remove = (rule) => {
+    return request({
+        url: '/api/ubcs-omd/status/remove',
+        method: 'post',
+        data: rule
+    })
+}
+
+export const refList = (currentPage,pageSize,params) => {
+    return request({
+        url: '/api/ubcs-omd/status/ref',
+        method: 'get',
+        params: {
+            ...params,
+            currentPage,
+            pageSize
+        }
+    })
+}
\ No newline at end of file
diff --git a/Source/UBCS-WEB/src/views/modeling/Business.vue b/Source/UBCS-WEB/src/views/modeling/Business.vue
index bcdfec8..483d1b1 100644
--- a/Source/UBCS-WEB/src/views/modeling/Business.vue
+++ b/Source/UBCS-WEB/src/views/modeling/Business.vue
@@ -119,10 +119,13 @@
         </el-main>
         <el-dialog :visible="ref.visible" title="浠庢暟鎹簱涓坊鍔�" width="700px" append-to-body @close="dialoghandelfalse">
           閫夋嫨棰嗗煙锛�
-          <el-select v-model="domain" placeholder="璇烽�夋嫨" @change="refOnLoad">
+          <el-select v-model="domain" placeholder="璇烽�夋嫨" @change="refOnLoad" size="small">
             <el-option v-for="item in domainOptions" :key="item.value" :label="item.label" :value="item.value">
             </el-option>
           </el-select>
+          <div class="sep" style="height:7px">
+
+          </div>
           <avue-crud class="businessCrud" v-model="ref.form" :option="ref.option" :data="ref.data" @selection-change="selectionChange">
           </avue-crud>
           <span slot="footer" class="dialog-footer">
diff --git a/Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue b/Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue
index 909692e..92098e3 100644
--- a/Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue
+++ b/Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue
@@ -5,6 +5,7 @@
     append-to-body
     @close="closeSubmitDialog"
     width="70%"
+    style="height: 115vh;"
     >
         <el-form ref="form" :model="btmType" show-message="true" inline size="medium" label-suffix=":" class="btmTypeForm">
                 
@@ -24,7 +25,8 @@
                 </el-select>
             </el-form-item>
             <el-form-item label="鐗堟湰瑙勫垯" label-width="100px">
-                <el-input v-model="btmType.revisionRuleId" :prefix-icon="icons.revisionRule" class="revisionRule">
+                <el-input v-model="btmType.revisionRuleName" :prefix-icon="icons.revisionRule" class="revisionRule"
+                @focus="openRevision" clearable @clear="clearRevision">
                     <i slot="suffix" class="el-input__icon el-icon-search"></i>
                 </el-input>
             </el-form-item>
@@ -45,6 +47,7 @@
                 <el-input v-model="btmType.description" 
                 :prefix-icon="icons.desc" 
                 class="descClass"
+                id="descId"
                 ></el-input>
             </el-form-item>
         </el-form>
@@ -63,11 +66,11 @@
             
         </avue-crud>
         <div slot="footer" class="dialog-footer">
-            <el-button @click="submitBtmType">纭畾</el-button>
+            <el-button type="primary" @click="submitBtmType">纭畾</el-button>
             <el-button @click="cancleSubmitBtmType">鍙栨秷</el-button>
         </div>
 
-
+<!-- 灞炴�ф睜鐨勯�夋嫨 -->
         <el-dialog title="灞炴�ф睜"
             :visible="attrRef.visible"
             append-to-body
@@ -91,6 +94,30 @@
                 <el-button @click="cancleSelectAttr">鍙栨秷</el-button>
             </div>
         </el-dialog>
+<!-- 鐗堟湰瑙勫垯鐨勫弬鐓� -->
+        <el-dialog title="璇烽�夋嫨鐗堟湰瑙勫垯"
+            :visible.sync="revisionRef.visible"
+            append-to-body
+            width="80%">
+            
+            <avue-crud class="revisionRef"
+             :option="revisionRef.option"
+             :data="revisionRef.data"
+             :page.sync="revisionRef.page"
+             ref="revisionRef"
+             @row-click="revisionClick">
+                <template slot="radio"
+                slot-scope="{row}">
+                    <el-radio v-model="revisionRef.selectRow"
+                        :label="row.$index">&nbsp;
+                    </el-radio>
+                </template>
+            </avue-crud>
+            <div slot="footer" class="dialog-footer">
+                <el-button type="primary" @click="confirmRevision">纭畾</el-button>
+                <el-button @click="cancelRevision">鍙栨秷</el-button>
+            </div>
+        </el-dialog>
     </el-dialog>
 </template>
 
@@ -99,6 +126,7 @@
 
 import { add,update } from '@/api/omd/btmType';
 import { queryPage } from '@/api/omd/OmdAttribute';
+import { getPage } from '@/api/omd/revisionRule';
 export default {
     name: 'BusinessAdd',
     props: {
@@ -125,6 +153,7 @@
                 rowKey: 'id',
                 tabs: true,
                 menu: false,
+                addBtn:false,
                 highlightCurrentRow: true,
                 column: [
                     {
@@ -146,14 +175,12 @@
                     {
                         label: "榛樿鍊�",
                         prop: "defaultValue",
-                        cell: 'true',
                         align: 'center',
                         cell: true
                     },
                     {
                         label: "璇存槑",
                         prop: "description",
-                        cell: 'true',
                         align: 'center',
                         cell:true
                     }
@@ -176,6 +203,7 @@
                     border: true,
                     reserveSelection: true,
                     searchMenuSpan:8,
+                    highlightCurrentRow: true,
                     column: [
                         {
                         label: '鑻辨枃鍚嶇О',
@@ -223,13 +251,77 @@
                 },
                 data: [],
                 queryNotIn: null
-            }
+            },
+            revisionRef: {
+                visible: false,
+                page: {
+                    currentPage:1,
+                    pageSize: 10
+                },
+                selectRow:'',
+                searchKey: null,
+                option:{
+                    height: 360,
+                    addBtn: false,
+                    refreshBtn: false,
+                    columnBtn: false,
+                    menu: false,
+                    border: true,
+                    reserveSelection: true,
+                    searchMenuSpan:8,
+                    searchShowBtn: false,
+                    highlightCurrentRow: true,
+                    column:[{
+                        label: '閫夋嫨',
+                        prop: 'radio',
+                        width: 60,
+                        hide: false
+                    },
+                        {
+                            label:'鑻辨枃鍚嶇О',
+                            prop: 'id',
+                            search:true
+                        },
+                        {
+                            label:"涓枃鍚嶇О",
+                            prop:"name",
+                            search:true,
+                        },
+                        {
+                            label:"璺宠穬瀛楃",
+                            prop: "skipCode"
+                        },
+                        {
+                            label: "鍒濆鍊�",
+                            prop:"startCode"
+                        },
+                        {
+                            label: "姝ラ暱",
+                            prop: "serialStep"
+                        },
+                        {
+                            label: "鍓嶇紑",
+                            prop:"prefixCode"
+                        },
+                        {
+                            label: "鍚庣紑",
+                            prop: "suffixCode"
+                        },
+                        {
+                            label: "鎻忚堪",
+                            prop:"description",
+                            type:"textarea"
+                        }
+                    ]
+                },
+            },
         }
     },
     created() {
 
     },
     methods: {
+        // 鍏抽棴缁勪欢寮圭獥
         closeSubmitDialog(){
             this.showSubmitDialog = false;
             this.btmType.attributes = [];
@@ -237,13 +329,16 @@
             this.attrRef.selectData = [];
             this.attrRef.queryNotIn = null;
         },
+        // 鍏抽棴灞炴�ф睜鏌ヨ寮圭獥
         closeAttrDialog(){
             this.attrRef.visible = false;
         },
+        // 娣诲姞
         rowAdd(){
             this.attrRef.visible = true;
             this.attrRefOnLoad();
         },
+        // 灞炴�ф睜鍔犺浇
         attrRefOnLoad(){
             queryPage(this.attrRef.key,this.attrRef.queryNotIn,this.attrRef.page.currentPage, this.attrRef.page.pageSize).then(res => {
                 const data = res.data.data;
@@ -254,15 +349,18 @@
                 this.$refs.attrRef.refreshTable();
             });
         },
+        // 灞炴�ф睜妫�绱�
         attrRefSearch(form,done){
             this.attrRef.key = form.key;
             this.attrRefOnLoad();
             done();
             this.attrRef.key = null;
         },
+        // 灞炴�ф睜鍕鹃�変簨浠�
         selectionChange(list){
             this.attrRef.selectData = list;
         },
+        // 纭灞炴�ф睜鍕鹃��
         confirmSelectAttr(){
             this.btmType.attributes = [];
             this.attrRef.queryNotIn = "";
@@ -281,10 +379,12 @@
             });
             this.closeAttrDialog();
         },
+        // 鍙栨秷灞炴�ф睜鍕鹃��
         cancleSelectAttr(){
             this.attrRef.selectData = [];
             this.closeAttrDialog();
         },
+        // 娣诲姞涓氬姟绫诲瀷
         submitBtmType(){
             console.log(this.btmType);
             add(this.btmType,true).then(res => {
@@ -294,28 +394,78 @@
                 this.$emit('refreshTable');
             })
         },
+        // 鍙栨秷娣诲姞涓氬姟绫诲瀷
         cancleSubmitBtmType(){
             this.btmType = {};
             this.btmType.attributes = [];
             this.showSubmitDialog = false;
         },
+        // 鍒锋柊灞炴�у垪琛�
         refreshAttrTable(){
             this.$nextTick( () => {
                 this.$refs.attrTable.refreshTable();
             })
         },
+        // 
         viewChange(){
 
         },
+        // 鍒楄〃缂栬緫
         cellEditClick(cell){
             cell.$cellEdit = true;
         },
+        // 鍒楄〃缂栬緫淇濆瓨
         cellEditSave(row){
             this.btmType.attributes[row.$index].name = row.name
             this.btmType.attributes[row.$index].defaultValue = row.defaultValue;
             this.btmType.attributes[row.$index].description = row.description;
             row.$cellEdit = false;
-        }
+        },
+        // 鎵撳紑鐗堟湰瑙勫垯鍙傜収
+        async openRevision(){
+            await getPage().then(res => {
+                this.revisionRef.data = res.data.data.records;
+            });
+            this.revisionRef.visible = true;
+        },
+       // 鍏抽棴鐗堟湰瑙勫垯鍙傜収寮圭獥
+       closeRevisionDialog(){
+            this.revisionRef.visible = false;
+       },
+       // 鐗堟湰瑙勫垯鍙傜収鍒楄〃妫�绱�
+       revisionRefSearch(){
+
+       },
+       // 鐗堟湰瑙勫垯閫変腑浜嬩欢
+       revisionChange(){},
+       // 纭閫変腑鐗堟湰瑙勫垯
+       confirmRevision(){
+            this.btmType.revisionFlag = true;
+            this.btmType.revisionRuleId = this.revisionRef.selectData.id;
+            this.btmType.revisionRuleName = this.revisionRef.selectData.name;
+            this.btmType.inputRevisionFlag = false;
+            this.cancelRevision();
+       },
+       // 鍙栨秷閫変腑鐗堟湰瑙勫垯
+       cancelRevision(){
+            this.revisionRef.selectRow  = '';
+            this.revisionRef.selectData = {};
+            this.closeRevisionDialog();
+       },
+       // 鐗堟湰瑙勫垯鍗曢��
+       revisionClick(row){
+            this.revisionRef.selectRow = row.$index;
+            this.revisionRef.selectData = {
+                id: row.id,
+                name: row.name,
+            };
+       },
+       clearRevision(){
+            this.$delete(this.btmType,'revisionFlag');
+            this.$delete(this.btmType,'revisionRuleId');
+            this.$delete(this.btmType,'revisionRuleName');
+            this.$delete(this.btmType,'inputRevisionFlag');
+       }
     }
 }
 </script>
@@ -323,6 +473,10 @@
 <style>
 /* 灞炴�ф睜鍙傜収鍒楄〃 */
 .attrRef > .el-card:nth-of-type(2) > .el-card__body > .avue-crud__menu{
+    display: none !important;
+}
+
+.revisionRef > .el-card:nth-of-type(2) > .el-card__body > .avue-crud__menu{
     display: none !important;
 }
 
@@ -337,4 +491,8 @@
 .descClass > .el-input__inner {
     width: 57vw
 }
+
+#descId {
+    width: 57vw;
+}
 </style>
diff --git a/Source/UBCS-WEB/src/views/modeling/Version.vue b/Source/UBCS-WEB/src/views/modeling/Version.vue
index 929a250..3941b86 100644
--- a/Source/UBCS-WEB/src/views/modeling/Version.vue
+++ b/Source/UBCS-WEB/src/views/modeling/Version.vue
@@ -34,6 +34,7 @@
 </template>
 
 <script>
+import { getPage,add,update,remove } from '../../api/omd/revisionRule';
 export default {
   name: "Version",
   data(){
@@ -47,36 +48,6 @@
         total: 100
       },
       data:[
-        {
-          name:"娴嬭瘯1",
-          tag:"娴嬭瘯",
-          char:"娴嬭瘯",
-          Initial:"娴嬭瘯",
-          Step:"娴嬭瘯",
-          prefix:"娴嬭瘯",
-          suffix:"娴嬭瘯",
-          desc:"娴嬭瘯"
-        },
-        {
-          name:"娴嬭瘯2",
-          tag:"娴嬭瘯",
-          char:"娴嬭瘯",
-          Initial:"娴嬭瘯",
-          Step:"娴嬭瘯",
-          prefix:"娴嬭瘯",
-          suffix:"娴嬭瘯",
-          desc:"娴嬭瘯"
-        },
-        {
-          name:"娴嬭瘯3",
-          tag:"娴嬭瘯",
-          char:"娴嬭瘯",
-          Initial:"娴嬭瘯",
-          Step:"娴嬭瘯",
-          prefix:"娴嬭瘯",
-          suffix:"娴嬭瘯",
-          desc:"娴嬭瘯"
-        }
       ],
       form:{},
       option:{
@@ -87,37 +58,37 @@
         searchMenuSpan:5,
         column:[
           {
-            label:"鍚嶇О",
+            label:'鑻辨枃鍚嶇О',
+            prop: 'id'
+          },
+          {
+            label:"涓枃鍚嶇О",
             prop:"name",
             search:true,
           },
           {
-            label: "鏍囩",
-            prop:"tag"
-          },
-          {
             label:"璺宠穬瀛楃",
-            prop:"char"
+            prop: "skipCode"
           },
           {
             label: "鍒濆鍊�",
-            prop:"Initial"
+            prop:"startCode"
           },
           {
-            label:"姝ラ暱",
-            prop:"Step"
+            label: "姝ラ暱",
+            prop: "serialStep"
           },
           {
             label: "鍓嶇紑",
-            prop:"prefix"
+            prop:"prefixCode"
           },
           {
             label: "鍚庣紑",
-            prop: "suffix"
+            prop: "suffixCode"
           },
           {
             label: "鎻忚堪",
-            prop:"desc",
+            prop:"description",
             type:"textarea"
           }
         ]
@@ -128,25 +99,17 @@
     handleSearch(){
       this.packageSearchBox=true
     },
-    // getList() {
-    //   this.loading = true;
-    //   const data = Object.assign({
-    //     pageNum: this.page.currentPage,
-    //     pageSize: this.page.pageSize,
-    //   }, this.params)
-    //   this.data = [];
-    //   getList(data).then(res => {
-    //     const data = res.data.data
-    //     this.loading = false;
-    //     this.page.total = data.total;
-    //     const result = data.list;
-    //     this.data = result;
-    //   })
-    // },
+    getList() {
+      this.loading = true;
+      getPage(this.page.currentPage,this.page.pageSize,this.params).then(res => {
+        const data = res.data.data
+        this.loading = false;
+        this.page.total = data.total;
+        this.data = data.records;
+      })
+    },
     rowSave(row, done, loading) {
-      add(Object.assign({
-        createUser: this.userInfo.name
-      }, row)).then(() => {
+      add(row).then(() => {
         this.$message.success('鏂板鎴愬姛')
         done();
         this.getList();
@@ -155,9 +118,7 @@
       })
     },
     rowUpdate(row, index, done, loading) {
-      update(Object.assign({
-        updateUser: this.userInfo.name
-      }, row)).then(() => {
+      update(row).then(() => {
         this.$message.success('淇敼鎴愬姛')
         done()
         this.getList();
@@ -171,7 +132,8 @@
         cancelButtonText: '鍙栨秷',
         type: 'warning'
       }).then(() => {
-        return del(row.id)
+        console.log(row);
+        return remove({oid : row.oid})
       }).then(() => {
         this.$message.success('鍒犻櫎鎴愬姛')
         this.getList();
diff --git a/Source/UBCS-WEB/src/views/modeling/original.vue b/Source/UBCS-WEB/src/views/modeling/original.vue
index 72a86fc..0521748 100644
--- a/Source/UBCS-WEB/src/views/modeling/original.vue
+++ b/Source/UBCS-WEB/src/views/modeling/original.vue
@@ -4,14 +4,19 @@
       <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">
+          @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>
-            <!-- <el-button type="primary" style="margin-left: 10px" @click="addHandle">閫夋嫨</el-button> -->
-            <!-- <el-button type="info">鍙栨秷</el-button> -->
           </div>
         </template>
+        <template slot="radio"
+                slot-scope="{row}">
+                    <el-radio v-model="selectRow"
+                        :label="row.$index">&nbsp;
+                    </el-radio>
+                </template>
         </avue-crud>
         <el-dialog :visible.sync="referType.display" append-to-body :title="referType.title" width="1000px">
           <original-range @rowchange="rowchange"></original-range>
@@ -136,18 +141,24 @@
         currentPage: 1,
         total: 100
       },
+      selectRow: '',
       data: [
 
       ],
       option: {
         height: "550px",
-        selection: true,
         headerAlign: 'center',
         border: true,
         index: true,
         rowKey: 'id',
         tabs: true,
-        column: [
+        highlightCurrentRow: true,
+        column: [{
+            label: '閫夋嫨',
+            prop: 'radio',
+            width: 60,
+            hide: false
+          },
           {
             label: '灞炴�х紪鍙�',
             prop: 'key',
@@ -544,12 +555,14 @@
       })
     },
     rowClick(row) {
-      this.itemData = row
+      this.itemData = row;
+      this.selectRow = row.$index;
+
     }
     ,selectBtmType(){
         this.referType.display = true;
         this.referType.title = "璇烽�夋嫨" + this.referType.value
-    }
+    },
   },
 }
 </script>
diff --git a/Source/UBCS-WEB/src/views/modeling/status.vue b/Source/UBCS-WEB/src/views/modeling/status.vue
new file mode 100644
index 0000000..b6fac49
--- /dev/null
+++ b/Source/UBCS-WEB/src/views/modeling/status.vue
@@ -0,0 +1,141 @@
+<template>
+    <basic-container>
+      <avue-crud ref="crud"
+                 v-model="form"
+                 :data="data"
+                 :option="option"
+                 :page.sync="page"
+                 @on-load="getList"
+                 @row-update="rowUpdate"
+                 @row-save="rowSave"
+                 @row-del="rowDel"
+                 @refresh-change="refreshChange"
+                 @search-reset="searchChange"
+                 @search-change="searchChange">
+        <template slot="menuLeft">
+          <el-tooltip class="item" effect="dark" content="鏌ユ壘鐘舵�佹睜浣跨敤鑼冨洿" placement="top">
+            <el-button size="small"
+                       plain
+                       type="primary"
+                       icon="el-icon-zoom-in"
+                       @click="handleSearch">鏌ョ湅浣跨敤鑼冨洿
+            </el-button>
+          </el-tooltip>
+        </template>>
+      </avue-crud>
+      <el-dialog title="鏌ョ湅浣跨敤鑼冨洿"
+                 append-to-body
+                 :visible.sync="packageSearchBox"
+                 width="1200px">
+        <versionpackage></versionpackage>
+      </el-dialog>
+    </basic-container>
+  
+  </template>
+  
+  <script>
+  import { getPage,add,update,remove } from '../../api/omd/status';
+  export default {
+    name: "status",
+    data(){
+      return {
+        //鏌ョ湅浣跨敤鑼冨洿
+        packageSearchBox:false,
+        //鍒嗛〉鏁版嵁
+        page: {
+          pageSize: 10,
+          currentPage: 1,
+          total: 100
+        },
+        data:[
+        ],
+        form:{},
+        option:{
+          headerAlign:'center',
+          align: 'center',
+          border: true,
+          index: true,
+          searchMenuSpan:5,
+          column:[
+            {
+              label:'鑻辨枃鍚嶇О',
+              prop: 'id',
+              search: true
+            },
+            {
+              label:"涓枃鍚嶇О",
+              prop:"name",
+              search:true,
+            },
+            {
+              label: "鎻忚堪",
+              prop:"description",
+              type:"textarea"
+            }
+          ]
+        }
+      }
+    },
+    methods:{
+      handleSearch(){
+        this.packageSearchBox=true
+      },
+      getList() {
+        this.loading = true;
+        getPage(this.page.currentPage,this.page.pageSize,this.params).then(res => {
+          const data = res.data.data
+          this.loading = false;
+          this.page.total = data.total;
+          this.data = data.records;
+        })
+      },
+      rowSave(row, done, loading) {
+        add(row).then(() => {
+          this.$message.success('鏂板鎴愬姛')
+          done();
+          this.getList();
+        }).catch(() => {
+          loading()
+        })
+      },
+      rowUpdate(row, index, done, loading) {
+        update(row).then(() => {
+          this.$message.success('淇敼鎴愬姛')
+          done()
+          this.getList();
+        }).catch(() => {
+          loading()
+        })
+      },
+      rowDel(row) {
+        this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎, 鏄惁缁х画?', '鎻愮ず', {
+          confirmButtonText: '纭畾',
+          cancelButtonText: '鍙栨秷',
+          type: 'warning'
+        }).then(() => {
+          console.log(row);
+          return remove({oid : row.oid})
+        }).then(() => {
+          this.$message.success('鍒犻櫎鎴愬姛')
+          this.getList();
+        })
+      },
+      searchChange(params, done) {
+        if (done) done();
+        this.params = params;
+        this.page.currentPage = 1;
+        this.getList();
+        this.$message.success('鎼滅储鎴愬姛')
+      },
+      refreshChange() {
+        this.getList();
+        this.$message.success('鍒锋柊鎴愬姛')
+      }
+    }
+  }
+  </script>
+  
+  <style scoped>
+  
+  </style>
+  
\ No newline at end of file
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
new file mode 100644
index 0000000..049e5af
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreApplyFormDTO.java
@@ -0,0 +1,88 @@
+package com.vci.ubcs.code.dto;
+
+import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
+
+/**
+ * 璁板綍闆嗘垚灞炴暟鎹敵璇穒d
+ * @author xiejun
+ * @date  2023-05-22
+ */
+public class DockingPreApplyFormDTO extends BaseModelVO {
+
+	/**
+	 * 绂佹淇敼杩欎釜鍊�
+	 */
+	private static final long serialVersionUID = 4615707120361431429L;
+	/***
+	 * 闆嗗洟缂栫爜
+	 */
+	private String code;
+
+	/***
+	 * 鍐呭
+	 */
+	private String content;
+	/***
+	 *涓婚敭oid
+	 */
+	private String dataOid;
+	/**
+	 * 涓氬姟瀵硅薄
+	 */
+	private String dataBtmName;
+	/***
+	 * 娑堟伅
+	 */
+	private String msg;
+
+	public String getCode() {
+		return code;
+	}
+
+	public void setCode(String code) {
+		this.code = code;
+	}
+
+	public String getContent() {
+		return content;
+	}
+
+	public void setContent(String content) {
+		this.content = content;
+	}
+
+	public String getDataOid() {
+		return dataOid;
+	}
+
+	public void setDataOid(String dataOid) {
+		this.dataOid = dataOid;
+	}
+
+	public String getDataBtmName() {
+		return dataBtmName;
+	}
+
+	public void setDataBtmName(String dataBtmName) {
+		this.dataBtmName = dataBtmName;
+	}
+
+	public String getMsg() {
+		return msg;
+	}
+
+	public void setMsg(String msg) {
+		this.msg = msg;
+	}
+
+	@Override
+	public String toString() {
+		return "DockingPreApplyCodeFormVO{" +
+			"code='" + code + '\'' +
+			", content='" + content + '\'' +
+			", dataOid='" + dataOid + '\'' +
+			", dataBtmName='" + dataBtmName + '\'' +
+			", msg='" + msg + '\'' +
+			'}';
+	}
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreAttrMappingDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreAttrMappingDTO.java
index 165a97d..3484adf 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreAttrMappingDTO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreAttrMappingDTO.java
@@ -2,199 +2,239 @@
 
 
 import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
+import com.vci.ubcs.code.vo.pagemodel.DockingPreAttrRangeVO;
 
 import java.util.List;
 
 /**
  * 璁板綍闆嗘垚灞炴�т笌涓绘暟鎹睘鎬ф槧灏勫叧绯诲璞�
  * @author xiejun
- * @date 2023-01-06
+ * @date  2023-05-22
  */
 public class DockingPreAttrMappingDTO extends BaseModelVO {
     /**
      * 搴忓垪鍖�
      */
     private static final long serialVersionUID = 6020487634341415429L;
-    /***
-     * 榛樿鍊�
-     */
-    private String jdefaultValue;
+	/***
+	 * 榛樿鍊�
+	 */
+	private String defaultValue;
 
-    /***
-     * 榛樿鍊�
-     */
-    private String jmetaListId;
-    /**
-     * 婧愬垎绫籭d
-     */
-    private  String jsourceClsfId;
-    /**
-     * 婧愬垎绫诲悕绉�
-     */
-    private String jsourceClsfName;
-    /**
-     * 婧愬睘鎬id
-     */
-    private String jtargetAttrId;
+	/***
+	 * 榛樿鍊�
+	 */
+	private String metaListId;
+	/**
+	 * 婧愬垎绫籭d
+	 */
+	private  String sourceClassifyId;
+	/**
+	 * 婧愬垎绫诲悕绉�
+	 */
+	private String sourceClassifyName;
+	/**
+	 * 婧愬睘鎬id
+	 */
+	private String targetAttrId;
 
-    /**
-     * 鐩爣灞炴�id
-     */
-    private String jtargetClsfId;
+	/**
+	 * 鐩爣灞炴�id
+	 */
+	private String targetClassifyId;
 
-    /***
-     * 妯℃澘Id
-     */
-    private String jviewModeId;
-    /***
-     * 妯℃澘鍚嶇О
-     */
-    private String jviewModeName;
+	/***
+	 * 妯℃澘Id
+	 */
+	private String viewModeId;
+	/***
+	 * 妯℃澘鍚嶇О
+	 */
+	private String viewModeName;
 
-    /***
-     * 鐩爣灞炴�у唴閮ㄥ悕绉�
-     */
-    private String jtargetAttrKey;
+	/***
+	 * 鐩爣灞炴�у唴閮ㄥ悕绉�
+	 */
+	private String targetAttrKey;
 
-    /***
-     * 鐩爣灞炴�у悕绉�
-     */
-    private String jtargetAttrName;
+	/***
+	 * 鐩爣灞炴�у悕绉�
+	 */
+	private String targetAttrName;
 
-    /***
-     * 鐩爣灞炴�у唴閮ㄥ悕绉�
-     */
-    private String jsourceAttrKey;
+	/***
+	 * 鐩爣灞炴�у唴閮ㄥ悕绉�
+	 */
+	private String sourceAttrKey;
 
-    /***
-     * 鐩爣灞炴�у悕绉�
-     */
-    private String jsourceAttrName;
-    /**
-     * 灞炴�у彇鍊艰寖鍥�
-     */
-    private List<DockingPreAttrRangeDTO> dockingPreAttrRangeDTOS;
+	/***
+	 * 鐩爣灞炴�у悕绉�
+	 */
+	private String sourceAttrName;
+	/***
+	 * 瑙嗗浘鍚嶇О
+	 */
+	private String viewModelName;
+	/***
+	 * 瑙嗗浘鍚嶇О
+	 */
+	private String viewName;
+	/***
+	 * 鐩爣鍒嗙被
+	 */
+	private String targetClassifyName;
 
-    public String getJdefaultValue() {
-        return jdefaultValue;
-    }
+	private List<DockingPreAttrRangeVO> dockingPreAttrRangeVoList;
 
-    public void setJdefaultValue(String jdefaultValue) {
-        this.jdefaultValue = jdefaultValue;
-    }
+	public String getDefaultValue() {
 
-    public String getJmetaListId() {
-        return jmetaListId;
-    }
+		return defaultValue;
+	}
 
-    public void setJmetaListId(String jmetaListId) {
-        this.jmetaListId = jmetaListId;
-    }
+	public void setDefaultValue(String defaultValue) {
+		this.defaultValue = defaultValue;
+	}
 
-    public String getJsourceClsfId() {
-        return jsourceClsfId;
-    }
+	public String getMetaListId() {
+		return metaListId;
+	}
 
-    public void setJsourceClsfId(String jsourceClsfId) {
-        this.jsourceClsfId = jsourceClsfId;
-    }
+	public void setMetaListId(String metaListId) {
+		this.metaListId = metaListId;
+	}
 
-    public String getJsourceClsfName() {
-        return jsourceClsfName;
-    }
+	public String getSourceClassifyId() {
+		return sourceClassifyId;
+	}
 
-    public void setJsourceClsfName(String jsourceClsfName) {
-        this.jsourceClsfName = jsourceClsfName;
-    }
+	public void setSourceClassifyId(String sourceClassifyId) {
+		this.sourceClassifyId = sourceClassifyId;
+	}
 
-    public String getJtargetAttrId() {
-        return jtargetAttrId;
-    }
+	public String getSourceClassifyName() {
+		return sourceClassifyName;
+	}
 
-    public void setJtargetAttrId(String jtargetAttrId) {
-        this.jtargetAttrId = jtargetAttrId;
-    }
+	public void setSourceClassifyName(String sourceClassifyName) {
+		this.sourceClassifyName = sourceClassifyName;
+	}
 
-    public String getJtargetClsfId() {
-        return jtargetClsfId;
-    }
+	public String getTargetAttrId() {
+		return targetAttrId;
+	}
 
-    public void setJtargetClsfId(String jtargetClsfId) {
-        this.jtargetClsfId = jtargetClsfId;
-    }
+	public void setTargetAttrId(String targetAttrId) {
+		this.targetAttrId = targetAttrId;
+	}
 
-    public String getJviewModeId() {
-        return jviewModeId;
-    }
+	public String getTargetClassifyId() {
+		return targetClassifyId;
+	}
 
-    public void setJviewModeId(String jviewModeId) {
-        this.jviewModeId = jviewModeId;
-    }
+	public void setTargetClassifyId(String targetClassifyId) {
+		this.targetClassifyId = targetClassifyId;
+	}
 
-    public String getJviewModeName() {
-        return jviewModeName;
-    }
+	public String getViewModeId() {
+		return viewModeId;
+	}
 
-    public void setJviewModeName(String jviewModeName) {
-        this.jviewModeName = jviewModeName;
-    }
+	public void setViewModeId(String viewModeId) {
+		this.viewModeId = viewModeId;
+	}
 
-    public String getJtargetAttrKey() {
-        return jtargetAttrKey;
-    }
+	public String getViewModeName() {
+		return viewModeName;
+	}
 
-    public void setJtargetAttrKey(String jtargetAttrKey) {
-        this.jtargetAttrKey = jtargetAttrKey;
-    }
+	public void setViewModeName(String viewModeName) {
+		this.viewModeName = viewModeName;
+	}
 
-    public String getJtargetAttrName() {
-        return jtargetAttrName;
-    }
+	public String getTargetAttrKey() {
+		return targetAttrKey;
+	}
 
-    public void setJtargetAttrName(String jtargetAttrName) {
-        this.jtargetAttrName = jtargetAttrName;
-    }
+	public void setTargetAttrKey(String targetAttrKey) {
+		this.targetAttrKey = targetAttrKey;
+	}
 
-    public String getJsourceAttrKey() {
-        return jsourceAttrKey;
-    }
+	public String getTargetAttrName() {
+		return targetAttrName;
+	}
 
-    public void setJsourceAttrKey(String jsourceAttrKey) {
-        this.jsourceAttrKey = jsourceAttrKey;
-    }
+	public void setTargetAttrName(String targetAttrName) {
+		this.targetAttrName = targetAttrName;
+	}
 
-    public String getJsourceAttrName() {
-        return jsourceAttrName;
-    }
+	public String getSourceAttrKey() {
+		return sourceAttrKey;
+	}
 
-    public void setJsourceAttrName(String jsourceAttrName) {
-        this.jsourceAttrName = jsourceAttrName;
-    }
+	public void setSourceAttrKey(String sourceAttrKey) {
+		this.sourceAttrKey = sourceAttrKey;
+	}
 
-    public List<DockingPreAttrRangeDTO> getDockingPreAttrRangeDTOS() {
-        return dockingPreAttrRangeDTOS;
-    }
+	public String getSourceAttrName() {
+		return sourceAttrName;
+	}
 
-    public void setDockingPreAttrRangeDTOS(List<DockingPreAttrRangeDTO> dockingPreAttrRangeDTOS) {
-        this.dockingPreAttrRangeDTOS = dockingPreAttrRangeDTOS;
-    }
+	public void setSourceAttrName(String sourceAttrName) {
+		this.sourceAttrName = sourceAttrName;
+	}
 
-    @Override
-    public String toString() {
-        return "DockingPreAttrMappingDTO{" +
-                "jdefaultValue='" + jdefaultValue + '\'' +
-                ", jmetaListId='" + jmetaListId + '\'' +
-                ", jsourceClsfId='" + jsourceClsfId + '\'' +
-                ", jsourceClsfName='" + jsourceClsfName + '\'' +
-                ", jtargetAttrId='" + jtargetAttrId + '\'' +
-                ", jtargetClsfId='" + jtargetClsfId + '\'' +
-                ", jviewModeId='" + jviewModeId + '\'' +
-                ", jviewModeName='" + jviewModeName + '\'' +
-                ", jtargetAttrKey='" + jtargetAttrKey + '\'' +
-                ", jtargetAttrName='" + jtargetAttrName + '\'' +
-                ", jsourceAttrKey='" + jsourceAttrKey + '\'' +
-                ", jsourceAttrName='" + jsourceAttrName + '\'' +
-                ", dockingPreAttrRangeDTOS=" + dockingPreAttrRangeDTOS +
-                '}';
-    }
+	public List<DockingPreAttrRangeVO> getDockingPreAttrRangeVoList() {
+		return dockingPreAttrRangeVoList;
+	}
+
+	public void setDockingPreAttrRangeVoList(List<DockingPreAttrRangeVO> dockingPreAttrRangeVoList) {
+		this.dockingPreAttrRangeVoList = dockingPreAttrRangeVoList;
+	}
+
+	public String getViewModelName() {
+
+		return viewModelName;
+	}
+
+	public void setViewModelName(String viewModelName) {
+		this.viewModelName = viewModelName;
+	}
+
+	public String getViewName() {
+		return viewName;
+	}
+
+	public void setViewName(String viewName) {
+		this.viewName = viewName;
+	}
+
+	public String getTargetClassifyName() {
+		return targetClassifyName;
+	}
+
+	public void setTargetClassifyName(String targetClassifyName) {
+		this.targetClassifyName = targetClassifyName;
+	}
+
+	@Override
+	public String toString() {
+		return "DockingPreAttrMappingDTO{" +
+			"defaultValue='" + defaultValue + '\'' +
+			", metaListId='" + metaListId + '\'' +
+			", sourceClassifyId='" + sourceClassifyId + '\'' +
+			", sourceClassifyName='" + sourceClassifyName + '\'' +
+			", targetAttrId='" + targetAttrId + '\'' +
+			", targetClassifyId='" + targetClassifyId + '\'' +
+			", viewModeId='" + viewModeId + '\'' +
+			", viewModeName='" + viewModeName + '\'' +
+			", targetAttrKey='" + targetAttrKey + '\'' +
+			", targetAttrName='" + targetAttrName + '\'' +
+			", sourceAttrKey='" + sourceAttrKey + '\'' +
+			", sourceAttrName='" + sourceAttrName + '\'' +
+			", viewModelName='" + viewModelName + '\'' +
+			", viewName='" + viewName + '\'' +
+			", targetClassifyName='" + targetClassifyName + '\'' +
+			", dockingPreAttrRangeVoList=" + dockingPreAttrRangeVoList +
+			'}';
+	}
 }
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreAttrRangeDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreAttrRangeDTO.java
index fed8e76..1039f65 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreAttrRangeDTO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreAttrRangeDTO.java
@@ -2,81 +2,87 @@
 
 import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
 
+/**
+ * 璁板綍闆嗘垚灞炴�у彇鍊艰寖鍥撮厤缃�
+ * @author xiejun
+ * @date  2023-05-22
+ */
 public class DockingPreAttrRangeDTO extends BaseModelVO {
     /**
      * 搴忓垪鍖�
      */
     private static final long serialVersionUID = 6020487634341415410L;
-    /***
-     *灞炴�d
-     */
-    private String jmetaListId;
-    /**
-     * 灞炴�ф灇涓炬樉绀哄悕绉�
-     */
-    private  String jnumText;
-    /**
-     * 灞炴�ф灇涓惧唴閮ㄥ悕绉�
-     */
-    private String jnumTextValue;
+	/***
+	 *灞炴�d
+	 */
+	private String metaListId;
 
-    /**
-     * 婧愬睘鎬ф灇涓炬樉绀哄悕绉�
-     */
-    private  String jtargeNumText;
-    /**
-     * 婧愬睘鎬ф灇涓惧唴閮ㄥ悕绉�
-     */
-    private String jtargeNumTextValue;
+	/**
+	 * 灞炴�ф灇涓炬樉绀哄悕绉�
+	 */
+	private  String numText;
+	/**
+	 * 灞炴�ф灇涓惧唴閮ㄥ悕绉�
+	 */
+	private String numTextValue;
 
-    public String getJnumText() {
-        return jnumText;
-    }
+	/**
+	 * 婧愬睘鎬ф灇涓炬樉绀哄悕绉�
+	 */
+	private  String targetNumText;
+	/**
+	 * 婧愬睘鎬ф灇涓惧唴閮ㄥ悕绉�
+	 */
+	private String targetNumTextValue;
 
-    public void setJnumText(String jnumText) {
-        this.jnumText = jnumText;
-    }
+	public String getMetaListId() {
+		return metaListId;
+	}
 
-    public String getJnumTextValue() {
-        return jnumTextValue;
-    }
+	public void setMetaListId(String metaListId) {
+		this.metaListId = metaListId;
+	}
 
-    public void setJnumTextValue(String jnumTextValue) {
-        this.jnumTextValue = jnumTextValue;
-    }
+	public String getNumText() {
+		return numText;
+	}
 
-    public String getJtargeNumText() {
-        return jtargeNumText;
-    }
+	public void setNumText(String numText) {
+		this.numText = numText;
+	}
 
-    public void setJtargeNumText(String jtargeNumText) {
-        this.jtargeNumText = jtargeNumText;
-    }
+	public String getNumTextValue() {
+		return numTextValue;
+	}
 
-    public String getJtargeNumTextValue() {
-        return jtargeNumTextValue;
-    }
+	public void setNumTextValue(String numTextValue) {
+		this.numTextValue = numTextValue;
+	}
 
-    public void setJtargeNumTextValue(String jtargeNumTextValue) {
-        this.jtargeNumTextValue = jtargeNumTextValue;
-    }
+	public String getTargetNumText() {
+		return targetNumText;
+	}
 
-    public String getJmetaListId() {
-        return jmetaListId;
-    }
+	public void setTargetNumText(String targetNumText) {
+		this.targetNumText = targetNumText;
+	}
 
-    public void setJmetaListId(String jmetaListId) {
-        this.jmetaListId = jmetaListId;
-    }
+	public String getTargetNumTextValue() {
+		return targetNumTextValue;
+	}
 
-    @Override
-    public String toString() {
-        return "DockingPreAttrRangeDTO{" +
-                "jmetaListId='" + jmetaListId + '\'' +
-                ", jnumText='" + jnumText + '\'' +
-                ", jnumTextValue='" + jnumTextValue + '\'' +
-                ", jtargeNumText='" + jtargeNumText + '\'' +
-                ", jtargeNumTextValue='" + jtargeNumTextValue + '\'' +
-                '}';
-    }
+	public void setTargetNumTextValue(String targetNumTextValue) {
+		this.targetNumTextValue = targetNumTextValue;
+	}
+
+	@Override
+	public String toString() {
+		return "DockingPreAttrRangeDTO{" +
+			"metaListId='" + metaListId + '\'' +
+			", numText='" + numText + '\'' +
+			", numTextValue='" + numTextValue + '\'' +
+			", targetNumText='" + targetNumText + '\'' +
+			", targetNumTextValue='" + targetNumTextValue + '\'' +
+			'}';
+	}
 }
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
new file mode 100644
index 0000000..3a3403a
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreClassifyDTO.java
@@ -0,0 +1,74 @@
+package com.vci.ubcs.code.dto;
+
+import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
+
+/***
+ * 璁板綍闆嗗洟鍒嗙被淇℃伅
+ * @author xiejun
+ * @date 2021-05-22
+ */
+public class DockingPreClassifyDTO extends BaseModelVO {
+
+	/**
+	 * 搴忓垪鍖�
+	 */
+	private static final long serialVersionUID = 6020487634341415448L;
+	/***
+	 * 鍒嗙被鍚嶇О
+	 */
+	private String className;
+	/***
+	 * 鍒嗙被閾炬帴
+	 */
+	private String nodeLink;
+	/****
+	 * 鍒嗙被閾炬帴鍚嶇О
+	 */
+	private String getNodeLinkName;
+	/***
+	 * 鐖剁骇鑺傜偣
+	 */
+	private  String pid;
+
+	public String getClassName() {
+		return className;
+	}
+
+	public void setClassName(String className) {
+		this.className = className;
+	}
+
+	public String getNodeLink() {
+		return nodeLink;
+	}
+
+	public void setNodeLink(String nodeLink) {
+		this.nodeLink = nodeLink;
+	}
+
+	public String getGetNodeLinkName() {
+		return getNodeLinkName;
+	}
+
+	public void setGetNodeLinkName(String getNodeLinkName) {
+		this.getNodeLinkName = getNodeLinkName;
+	}
+
+	public String getPid() {
+		return pid;
+	}
+
+	public void setPid(String pid) {
+		this.pid = pid;
+	}
+
+	@Override
+	public String toString() {
+		return "DockingPreClassifyDTO{" +
+			"className='" + className + '\'' +
+			", nodeLink='" + nodeLink + '\'' +
+			", getNodeLinkName='" + getNodeLinkName + '\'' +
+			", pid='" + pid + '\'' +
+			'}';
+	}
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreMetaAttrDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreMetaAttrDTO.java
new file mode 100644
index 0000000..ca6ec62
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreMetaAttrDTO.java
@@ -0,0 +1,135 @@
+package com.vci.ubcs.code.dto;
+
+import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
+
+public class DockingPreMetaAttrDTO extends BaseModelVO {
+
+	/**
+	 * 搴忓垪鍖�
+	 */
+	private static final long serialVersionUID = 6020487634341415550L;
+
+	/**
+	 * 涓枃鍚嶇О
+	 */
+	private  String chineseName;
+	/***
+	 * 鑻辨枃鍚嶇О
+	 */
+	private String englishName;
+	/***
+	 * 瀛楁绫诲瀷
+	 */
+	private int metaDataType=1;
+
+	private int necesSaryConf=1;
+
+	/***
+	 * 鍙栧�艰寖鍥�
+	 */
+	private  String range;
+	/***
+	 * 鐖跺睘鎬�
+	 */
+	private  String pid;
+
+	/**
+	 * 闆嗗洟鍒嗙被id
+	 */
+	private String sourceClassifyId;
+	/**
+	 * 瑙嗗浘妯″瀷id
+	 */
+	private String viewModelId;
+	/***
+	 * 榛樿鍊�
+	 */
+	private String defaultValue;
+
+	public String getChineseName() {
+		return chineseName;
+	}
+
+	public void setChineseName(String chineseName) {
+		this.chineseName = chineseName;
+	}
+
+	public String getEnglishName() {
+		return englishName;
+	}
+
+	public void setEnglishName(String englishName) {
+		this.englishName = englishName;
+	}
+
+	public int getMetaDataType() {
+		return metaDataType;
+	}
+
+	public void setMetaDataType(int metaDataType) {
+		this.metaDataType = metaDataType;
+	}
+
+	public int getNecesSaryConf() {
+		return necesSaryConf;
+	}
+
+	public void setNecesSaryConf(int necesSaryConf) {
+		this.necesSaryConf = necesSaryConf;
+	}
+
+	public String getRange() {
+		return range;
+	}
+
+	public void setRange(String range) {
+		this.range = range;
+	}
+
+	public String getPid() {
+		return pid;
+	}
+
+	public void setPid(String pid) {
+		this.pid = pid;
+	}
+
+	public String getSourceClassifyId() {
+		return sourceClassifyId;
+	}
+
+	public void setSourceClassifyId(String sourceClassifyId) {
+		this.sourceClassifyId = sourceClassifyId;
+	}
+
+	public String getViewModelId() {
+		return viewModelId;
+	}
+
+	public void setViewModelId(String viewModelId) {
+		this.viewModelId = viewModelId;
+	}
+
+	public String getDefaultValue() {
+		return defaultValue;
+	}
+
+	public void setDefaultValue(String defaultValue) {
+		this.defaultValue = defaultValue;
+	}
+
+	@Override
+	public String toString() {
+		return "DockingPreMetaAttrVO{" +
+			"chineseName='" + chineseName + '\'' +
+			", englishName='" + englishName + '\'' +
+			", metaDataType=" + metaDataType +
+			", necessaryConf=" + necesSaryConf +
+			", range='" + range + '\'' +
+			", pid='" + pid + '\'' +
+			", sourceClassifyId='" + sourceClassifyId + '\'' +
+			", viewModelId='" + viewModelId + '\'' +
+			", defaultValue='" + defaultValue + '\'' +
+			'}';
+	}
+}
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
new file mode 100644
index 0000000..779cee7
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/DockingPreViewModelDTO.java
@@ -0,0 +1,64 @@
+package com.vci.ubcs.code.dto;
+
+import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
+
+/**
+ * 璁板綍闆嗘垚闆嗗洟鍒嗙被瑙嗗浘淇℃伅
+ * @author xiejun
+ * @date 2023-05-22
+ */
+public class DockingPreViewModelDTO extends BaseModelVO {
+
+	/**
+	 * 搴忓垪鍖�
+	 */
+	private static final long serialVersionUID = 6020487635341415538L;
+
+	/***
+	 * 妯″瀷瑙嗗浘鍚嶇О
+	 */
+	private String viewName;
+
+	/***
+	 * 闆嗗洟鍒嗙被oid
+	 */
+	private String sourceClassifyId;
+	/***
+	 * 鏁版嵁xinx
+	 */
+	private  String impactList;
+
+
+	public String getViewName() {
+		return viewName;
+	}
+
+	public void setViewName(String viewName) {
+		this.viewName = viewName;
+	}
+
+	public String getSourceClassifyId() {
+		return sourceClassifyId;
+	}
+
+	public void setSourceClassifyId(String sourceClassifyId) {
+		this.sourceClassifyId = sourceClassifyId;
+	}
+
+	public String getImpactList() {
+		return impactList;
+	}
+
+	public void setImpactList(String impactList) {
+		this.impactList = impactList;
+	}
+
+	@Override
+	public String toString() {
+		return "DockingPreViewModelVO{" +
+			"viewName='" + viewName + '\'' +
+			", sourceClassifyId='" + sourceClassifyId + '\'' +
+			", impactList='" + impactList + '\'' +
+			'}';
+	}
+}
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
new file mode 100644
index 0000000..324cc99
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingPreApplyForm.java
@@ -0,0 +1,46 @@
+package com.vci.ubcs.code.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.vci.ubcs.starter.revision.model.BaseModel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+/**
+ * 闆嗗洟缂栫爜鐢宠鍗曡褰曞璞�
+ * @author xiejun
+ * @date  2023-05-22
+ */
+@Data
+@TableName("PL_CODE_JINTEGMAPCONFIG")
+@ApiModel(value = "DockingPreApplyForm", description = "闆嗗洟缂栫爜鐢宠鍗曡褰曞璞�")
+@EqualsAndHashCode
+public class DockingPreApplyForm extends BaseModel {
+
+	/***
+	 * 闆嗗洟缂栫爜
+	 */
+	@ApiModelProperty(value = "闆嗗洟缂栫爜")
+	private String code;
+
+	/***
+	 * 鍐呭
+	 */
+	@ApiModelProperty(value = "鍐呭")
+	private String content;
+	/***
+	 *涓婚敭oid
+	 */
+	@ApiModelProperty(value = "鏁版嵁涓婚敭")
+	private String dataOid;
+	/**
+	 * 涓氬姟瀵硅薄
+	 */
+	@ApiModelProperty(value = "涓氬姟瀵硅薄")
+	private String dataBtmName;
+	/***
+	 * 娑堟伅
+	 */
+	@ApiModelProperty(value = "娑堟伅")
+	private String msg;
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingPreAttrMapping.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingPreAttrMapping.java
new file mode 100644
index 0000000..666c20e
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingPreAttrMapping.java
@@ -0,0 +1,118 @@
+package com.vci.ubcs.code.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.vci.ubcs.starter.revision.model.BaseModel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+/**
+ * 璁板綍闆嗘垚灞炴�т笌涓绘暟鎹睘鎬ф槧灏勫叧绯诲璞�
+ * @author xiejun
+ * @date  2023-05-22
+ */
+@Data
+@TableName("PL_CODE_JINTEGMAPCONFIG")
+@ApiModel(value = "DockingPreAttrMapping", description = "闆嗘垚灞炴�т笌涓绘暟鎹睘鎬ф槧灏勫叧绯诲璞�")
+@EqualsAndHashCode
+public class DockingPreAttrMapping extends BaseModel {
+
+	/**
+	 * 搴忓垪鍖�
+	 */
+	private static final long serialVersionUID = 6020487634341415429L;
+
+	/***
+	 * 榛樿鍊�
+	 */
+	@ApiModelProperty(value = "榛樿鍊�")
+	private String defaultValue;
+
+	/***
+	 * 榛樿鍊�
+	 */
+	@ApiModelProperty(value = "婧愮郴缁熺殑灞炴�id")
+	private String metaListId;
+	/**
+	 * 婧愬垎绫籭d
+	 */
+	@ApiModelProperty(value = "婧愮郴缁熺殑鍒嗙被oid")
+	@TableField(value = "sourceClsfId")
+	private  String sourceClassifyId;
+	/**
+	 * 婧愬垎绫诲悕绉�
+	 */
+	@ApiModelProperty(value = "婧愮郴缁熺殑鍒嗙被鍚嶇О")
+	@TableField(value = "sourceClsfName")
+	private String sourceClassifyName;
+	/**
+	 * 婧愬睘鎬id
+	 */
+	@ApiModelProperty(value = "鐩爣绯荤粺灞炴�х郴id")
+	private String targetAttrId;
+
+	/**
+	 * 鐩爣灞炴�id
+	 */
+	@ApiModelProperty(value = "鐩爣绯荤粺鍒嗙被oid")
+	@TableField(value = "targetClsfId")
+	private String targetClassifyId;
+
+	/***
+	 * 妯℃澘Id
+	 */
+	@ApiModelProperty(value = "妯℃澘瑙嗗浘鐨刼id")
+	private String viewModeId;
+	/***
+	 * 妯℃澘鍚嶇О
+	 */
+	@ApiModelProperty(value = "妯℃澘鍚嶇О")
+	private String viewModeName;
+
+	/***
+	 * 鐩爣灞炴�у唴閮ㄥ悕绉�
+	 */
+	@ApiModelProperty(value = "鐩爣绯荤粺灞炴�у唴閮ㄥ��")
+	private String targetAttrKey;
+
+	/***
+	 * 鐩爣灞炴�у悕绉�
+	 */
+	@ApiModelProperty(value = "鐩爣绯荤粺灞炴�у悕绉�")
+	private String targetAttrName;
+
+	/***
+	 * 鐩爣灞炴�у唴閮ㄥ悕绉�
+	 */
+	@ApiModelProperty(value = "婧愮郴缁熷睘鎬у唴閮ㄥ悕绉�")
+	private String sourceAttrKey;
+
+	/***
+	 * 鐩爣灞炴�у悕绉�
+	 */
+	@ApiModelProperty(value = "婧愮郴缁熷睘鎬у悕绉�")
+	private String sourceAttrName;
+
+
+
+	/***
+	 * 瑙嗗浘鍚嶇О
+	 */
+	@ApiModelProperty(value = "妯″瀷瑙嗗浘鍚嶇О")
+	private String viewModelName;
+	/***
+	 * 瑙嗗浘鍚嶇О
+	 */
+	@ApiModelProperty(value = "妯″瀷瑙嗗浘鍚嶇О")
+	private String viewName;
+	/***
+	 * 鐩爣灞炴�у悕绉�
+	 */
+	@ApiModelProperty(value = "鐩爣灞炴�у悕绉�")
+	@TableField(value = "targetClsfName")
+	private String targetClassifyName;
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingPreAttrRange.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingPreAttrRange.java
new file mode 100644
index 0000000..0f98be4
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingPreAttrRange.java
@@ -0,0 +1,50 @@
+package com.vci.ubcs.code.entity;
+
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.vci.ubcs.starter.revision.model.BaseModel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 璁板綍闆嗘垚灞炴�у彇鍊艰寖鍥撮厤缃�
+ * @author xiejun
+ * @date  2023-05-22
+ */
+@Data
+@TableName("PL_CODE_JRANGE")
+@ApiModel(value = "DockingPreAttrRange", description = "闆嗘垚灞炴�у彇鍊艰寖鍥�")
+@EqualsAndHashCode
+public class DockingPreAttrRange extends BaseModel {
+	/***
+	 *灞炴�d
+	 */
+	@ApiModelProperty(value = "灞炴�т富閿�")
+	private String metaListId;
+
+	/**
+	 * 灞炴�ф灇涓炬樉绀哄悕绉�
+	 */
+	@ApiModelProperty(value = "灞炴�ф灇涓炬樉绀哄悕绉�")
+	private  String numText;
+	/**
+	 * 灞炴�ф灇涓惧唴閮ㄥ悕绉�
+	 */
+	@ApiModelProperty(value = "灞炴�ф灇涓惧唴閮ㄥ悕绉�")
+	private String numTextValue;
+
+	/**
+	 * 婧愬睘鎬ф灇涓炬樉绀哄悕绉�
+	 */
+	@ApiModelProperty(value = "婧愬睘鎬ф灇涓炬樉绀哄悕绉�")
+	private  String targetNumText;
+	/**
+	 * 婧愬睘鎬ф灇涓惧唴閮ㄥ悕绉�
+	 */
+	@ApiModelProperty(value = "婧愬睘鎬ф灇涓惧唴閮ㄥ悕绉�")
+	private String targetNumTextValue;
+
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingPreClassify.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingPreClassify.java
new file mode 100644
index 0000000..9ef9f13
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingPreClassify.java
@@ -0,0 +1,46 @@
+package com.vci.ubcs.code.entity;
+
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.vci.ubcs.starter.revision.model.BaseModel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+/**
+ * 璁板綍闆嗘垚闆嗗洟鍒嗙被淇℃伅
+ * @author xiejun
+ * @date 2023-05-22
+ */
+@Data
+@TableName("PL_CODE_CLASSIFY")
+@ApiModel(value = "DockingPreClassify", description = "闆嗘垚闆嗗洟鍒嗙被淇℃伅")
+@EqualsAndHashCode
+public class DockingPreClassify extends BaseModel {
+
+	/**
+	 * 搴忓垪鍖�
+	 */
+	private static final long serialVersionUID = 6020487634340415438L;
+	/***
+	 * 鍒嗙被鍚嶇О
+	 */
+	@ApiModelProperty(value = "鍒嗙被鍚嶇О")
+	private String className;
+	/***
+	 * 鍒嗙被閾炬帴
+	 */
+	@ApiModelProperty(value = "閾炬帴鍦板潃")
+	private String nodeLink;
+	/****
+	 * 鍒嗙被閾炬帴鍚嶇О
+	 */
+	@ApiModelProperty(value = "閾炬帴鍚嶇О")
+	private String getNodeLinkName;
+	/***
+	 * 鐖剁骇鑺傜偣
+	 */
+	@ApiModelProperty(value = "鐖惰妭鐐�")
+	private  String pid;
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingPreMetaAttr.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingPreMetaAttr.java
new file mode 100644
index 0000000..a69a6eb
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingPreMetaAttr.java
@@ -0,0 +1,64 @@
+package com.vci.ubcs.code.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.vci.ubcs.starter.revision.model.BaseModel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@TableName("PL_CODE_JVIEWMODE")
+@ApiModel(value = "DockingPreViewModel", description = "闆嗗洟鍒嗙被妯″瀷瑙嗗浘淇℃伅")
+@EqualsAndHashCode
+public class DockingPreMetaAttr extends BaseModel {
+
+	/**
+	 * 涓枃鍚嶇О
+	 */
+	@ApiModelProperty(value = "涓枃鍚嶇О")
+	private  String chineseName;
+	/***
+	 * 鑻辨枃鍚嶇О
+	 */
+	@ApiModelProperty(value = "闆嗗洟鍒嗙被涓婚敭")
+	private String englishName;
+	/***
+	 * 灞炴�у瓧娈电被鍨�
+	 */
+	@ApiModelProperty(value = "灞炴�у瓧娈电被鍨�")
+	private int metaDataType=1;
+
+	@ApiModelProperty(value = "闆嗗洟鍒嗙被涓婚敭")
+	private int necesSaryConf=1;
+
+	/***
+	 * 鍙栧�艰寖鍥�
+	 */
+	@ApiModelProperty(value = "鍙栧�艰寖鍥�")
+	private  String range;
+	/***
+	 * 鐖跺睘鎬�
+	 */
+	@ApiModelProperty(value = "鐖跺睘鎬�")
+	private  String pid;
+
+	/**
+	 * 闆嗗洟鍒嗙被id
+	 */
+	@ApiModelProperty(value = "闆嗗洟鍒嗙被涓婚敭")
+	@TableField(value = "sourceClsfId")
+	private String sourceClassifyId;
+	/**
+	 * 瑙嗗浘妯″瀷id
+	 */
+	@ApiModelProperty(value = "瑙嗗浘妯″瀷涓婚敭")
+	private String viewModelId;
+	/***
+	 * 榛樿鍊�
+	 */
+	@ApiModelProperty(value = "榛樿鍊�")
+	private String defaultValue;
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingPreViewModel.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingPreViewModel.java
new file mode 100644
index 0000000..79799d1
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingPreViewModel.java
@@ -0,0 +1,40 @@
+package com.vci.ubcs.code.entity;
+
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.vci.ubcs.starter.revision.model.BaseModel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 璁板綍闆嗘垚闆嗗洟鍒嗙被妯″瀷瑙嗗浘淇℃伅
+ * @author xiejun
+ * @date 2023-05-22
+ */
+@Data
+@TableName("PL_CODE_JVIEWMODEL")
+@ApiModel(value = "DockingPreViewModel", description = "闆嗗洟鍒嗙被妯″瀷瑙嗗浘淇℃伅")
+@EqualsAndHashCode
+public class DockingPreViewModel extends BaseModel {
+
+	/***
+	 * 妯″瀷瑙嗗浘鍚嶇О
+	 */
+	@ApiModelProperty(value = "妯″瀷瑙嗗浘鍚嶇О")
+	private String viewName;
+
+	/***
+	 * 闆嗗洟鍒嗙被oid
+	 */
+	@ApiModelProperty(value = "闆嗗洟鍒嗙被涓婚敭")
+	@TableField(value = "sourceClsfId")
+	private String sourceClassifyId;
+	/***
+	 * 鏁版嵁
+	 */
+	@ApiModelProperty(value = "鏁版嵁")
+	private  String impactList;
+}
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
new file mode 100644
index 0000000..54655e6
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreApplyFormVO.java
@@ -0,0 +1,88 @@
+package com.vci.ubcs.code.vo.pagemodel;
+
+import javax.xml.soap.SAAJResult;
+
+/**
+ * 璁板綍闆嗘垚灞炴暟鎹敵璇穒d
+ * @author xiejun
+ * @date  2023-05-22
+ */
+public class DockingPreApplyFormVO  extends BaseModelVO {
+
+	/**
+	 * 绂佹淇敼杩欎釜鍊�
+	 */
+	private static final long serialVersionUID = 4615707120361431439L;
+	/***
+	 * 闆嗗洟缂栫爜
+	 */
+	private String code;
+
+	/***
+	 * 鍐呭
+	 */
+	private String content;
+	/***
+	 *涓婚敭oid
+	 */
+	private String dataOid;
+	/**
+	 * 涓氬姟瀵硅薄
+	 */
+	private String dataBtmName;
+	/***
+	 * 娑堟伅
+	 */
+	private String msg;
+
+	public String getCode() {
+		return code;
+	}
+
+	public void setCode(String code) {
+		this.code = code;
+	}
+
+	public String getContent() {
+		return content;
+	}
+
+	public void setContent(String content) {
+		this.content = content;
+	}
+
+	public String getDataOid() {
+		return dataOid;
+	}
+
+	public void setDataOid(String dataOid) {
+		this.dataOid = dataOid;
+	}
+
+	public String getDataBtmName() {
+		return dataBtmName;
+	}
+
+	public void setDataBtmName(String dataBtmName) {
+		this.dataBtmName = dataBtmName;
+	}
+
+	public String getMsg() {
+		return msg;
+	}
+
+	public void setMsg(String msg) {
+		this.msg = msg;
+	}
+
+	@Override
+	public String toString() {
+		return "DockingPreApplyCodeFormVO{" +
+			"code='" + code + '\'' +
+			", content='" + content + '\'' +
+			", dataOid='" + dataOid + '\'' +
+			", dataBtmName='" + dataBtmName + '\'' +
+			", msg='" + msg + '\'' +
+			'}';
+	}
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreAttrMappingVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreAttrMappingVO.java
index 22a3f38..8a460d3 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreAttrMappingVO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreAttrMappingVO.java
@@ -1,6 +1,7 @@
 package com.vci.ubcs.code.vo.pagemodel;
 
 
+import com.vci.ubcs.code.dto.DockingPreAttrRangeDTO;
 import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
 
 import java.util.List;
@@ -8,7 +9,7 @@
 /**
  * 璁板綍闆嗘垚灞炴�т笌涓绘暟鎹睘鎬ф槧灏勫叧绯诲璞�
  * @author xiejun
- * @date 2023-01-06
+ * @date  2023-05-22
  */
 public class DockingPreAttrMappingVO extends BaseModelVO {
     /**
@@ -18,182 +19,225 @@
     /***
      * 榛樿鍊�
      */
-    private String jdefaultValue;
+    private String defaultValue;
 
     /***
      * 榛樿鍊�
      */
-    private String jmetaListId;
+    private String metaListId;
     /**
      * 婧愬垎绫籭d
      */
-    private  String jsourceClsfId;
+    private  String sourceClassifyId;
     /**
      * 婧愬垎绫诲悕绉�
      */
-    private String jsourceClsfName;
+    private String sourceClassifyName;
     /**
      * 婧愬睘鎬id
      */
-    private String jtargetAttrId;
+    private String targetAttrId;
 
     /**
      * 鐩爣灞炴�id
      */
-    private String jtargetClsfId;
+    private String targetClassifyId;
 
     /***
      * 妯℃澘Id
      */
-    private String jviewModeId;
+    private String viewModeId;
     /***
      * 妯℃澘鍚嶇О
      */
-    private String jviewModeName;
+    private String viewModeName;
 
     /***
      * 鐩爣灞炴�у唴閮ㄥ悕绉�
      */
-    private String jtargetAttrKey;
+    private String targetAttrKey;
 
     /***
      * 鐩爣灞炴�у悕绉�
      */
-    private String jtargetAttrName;
+    private String targetAttrName;
 
     /***
      * 鐩爣灞炴�у唴閮ㄥ悕绉�
      */
-    private String jsourceAttrKey;
+    private String sourceAttrKey;
 
     /***
      * 鐩爣灞炴�у悕绉�
      */
-    private String jsourceAttrName;
-
-    private List<DockingPreAttrRangeVO> dockingPreAttrRangeVOS;
+    private String sourceAttrName;
 
 
-    public String getJdefaultValue() {
-        return jdefaultValue;
-    }
 
-    public void setJdefaultValue(String jdefaultValue) {
-        this.jdefaultValue = jdefaultValue;
-    }
+	/***
+	 * 瑙嗗浘鍚嶇О
+	 */
+	private String viewModelName;
+	/***
+	 * 瑙嗗浘鍚嶇О
+	 */
+	private String viewName;
+	/***
+	 * 鐩爣鍒嗙被
+	 */
+	private String targetClassifyName;
 
-    public String getJmetaListId() {
-        return jmetaListId;
-    }
+    private List<DockingPreAttrRangeVO> dockingPreAttrRangeVoList;
 
-    public void setJmetaListId(String jmetaListId) {
-        this.jmetaListId = jmetaListId;
-    }
 
-    public String getJsourceClsfId() {
-        return jsourceClsfId;
-    }
+	public String getDefaultValue() {
+		return defaultValue;
+	}
 
-    public void setJsourceClsfId(String jsourceClsfId) {
-        this.jsourceClsfId = jsourceClsfId;
-    }
+	public void setDefaultValue(String defaultValue) {
+		this.defaultValue = defaultValue;
+	}
 
-    public String getJsourceClsfName() {
-        return jsourceClsfName;
-    }
+	public String getMetaListId() {
+		return metaListId;
+	}
 
-    public void setJsourceClsfName(String jsourceClsfName) {
-        this.jsourceClsfName = jsourceClsfName;
-    }
+	public void setMetaListId(String metaListId) {
+		this.metaListId = metaListId;
+	}
 
-    public String getJtargetAttrId() {
-        return jtargetAttrId;
-    }
+	public String getSourceClassifyId() {
+		return sourceClassifyId;
+	}
 
-    public void setJtargetAttrId(String jtargetAttrId) {
-        this.jtargetAttrId = jtargetAttrId;
-    }
+	public void setSourceClassifyId(String sourceClassifyId) {
+		this.sourceClassifyId = sourceClassifyId;
+	}
 
-    public String getJtargetClsfId() {
-        return jtargetClsfId;
-    }
+	public String getSourceClassifyName() {
+		return sourceClassifyName;
+	}
 
-    public void setJtargetClsfId(String jtargetClsfId) {
-        this.jtargetClsfId = jtargetClsfId;
-    }
+	public void setSourceClassifyName(String sourceClassifyName) {
+		this.sourceClassifyName = sourceClassifyName;
+	}
 
-    public String getJviewModeId() {
-        return jviewModeId;
-    }
+	public String getTargetAttrId() {
+		return targetAttrId;
+	}
 
-    public void setJviewModeId(String jviewModeId) {
-        this.jviewModeId = jviewModeId;
-    }
+	public void setTargetAttrId(String targetAttrId) {
+		this.targetAttrId = targetAttrId;
+	}
 
-    public String getJviewModeName() {
-        return jviewModeName;
-    }
+	public String getTargetClassifyId() {
+		return targetClassifyId;
+	}
 
-    public void setJviewModeName(String jviewModeName) {
-        this.jviewModeName = jviewModeName;
-    }
+	public void setTargetClassifyId(String targetClassifyId) {
+		this.targetClassifyId = targetClassifyId;
+	}
 
-    public String getJtargetAttrKey() {
-        return jtargetAttrKey;
-    }
+	public String getViewModeId() {
+		return viewModeId;
+	}
 
-    public void setJtargetAttrKey(String jtargetAttrKey) {
-        this.jtargetAttrKey = jtargetAttrKey;
-    }
+	public void setViewModeId(String viewModeId) {
+		this.viewModeId = viewModeId;
+	}
 
-    public String getJtargetAttrName() {
-        return jtargetAttrName;
-    }
+	public String getViewModeName() {
+		return viewModeName;
+	}
 
-    public void setJtargetAttrName(String jtargetAttrName) {
-        this.jtargetAttrName = jtargetAttrName;
-    }
+	public void setViewModeName(String viewModeName) {
+		this.viewModeName = viewModeName;
+	}
 
-    public String getJsourceAttrKey() {
-        return jsourceAttrKey;
-    }
+	public String getTargetAttrKey() {
+		return targetAttrKey;
+	}
 
-    public void setJsourceAttrKey(String jsourceAttrKey) {
-        this.jsourceAttrKey = jsourceAttrKey;
-    }
+	public void setTargetAttrKey(String targetAttrKey) {
+		this.targetAttrKey = targetAttrKey;
+	}
 
-    public String getJsourceAttrName() {
-        return jsourceAttrName;
-    }
+	public String getTargetAttrName() {
+		return targetAttrName;
+	}
 
-    public void setJsourceAttrName(String jsourceAttrName) {
-        this.jsourceAttrName = jsourceAttrName;
-    }
+	public void setTargetAttrName(String targetAttrName) {
+		this.targetAttrName = targetAttrName;
+	}
 
-    public List<DockingPreAttrRangeVO> getDockingPreAttrRangeVOS() {
-        return dockingPreAttrRangeVOS;
-    }
+	public String getSourceAttrKey() {
+		return sourceAttrKey;
+	}
 
-    public void setDockingPreAttrRangeVOS(List<DockingPreAttrRangeVO> dockingPreAttrRangeVOS) {
-        this.dockingPreAttrRangeVOS = dockingPreAttrRangeVOS;
-    }
+	public void setSourceAttrKey(String sourceAttrKey) {
+		this.sourceAttrKey = sourceAttrKey;
+	}
 
-    @Override
-    public String toString() {
-        return "DockingPreAttrMappingVO{" +
-                "jdefaultValue='" + jdefaultValue + '\'' +
-                ", jmetaListId='" + jmetaListId + '\'' +
-                ", jsourceClsfId='" + jsourceClsfId + '\'' +
-                ", jsourceClsfName='" + jsourceClsfName + '\'' +
-                ", jtargetAttrId='" + jtargetAttrId + '\'' +
-                ", jtargetClsfId='" + jtargetClsfId + '\'' +
-                ", jviewModeId='" + jviewModeId + '\'' +
-                ", jviewModeName='" + jviewModeName + '\'' +
-                ", jtargetAttrKey='" + jtargetAttrKey + '\'' +
-                ", jtargetAttrName='" + jtargetAttrName + '\'' +
-                ", jsourceAttrKey='" + jsourceAttrKey + '\'' +
-                ", jsourceAttrName='" + jsourceAttrName + '\'' +
-                ", dockingPreAttrRangeVOS=" + dockingPreAttrRangeVOS +
-                '}';
-    }
+	public String getSourceAttrName() {
+		return sourceAttrName;
+	}
+
+	public void setSourceAttrName(String sourceAttrName) {
+		this.sourceAttrName = sourceAttrName;
+	}
+
+	public List<DockingPreAttrRangeVO> getDockingPreAttrRangeVoList() {
+		return dockingPreAttrRangeVoList;
+	}
+
+	public void setDockingPreAttrRangeVoList(List<DockingPreAttrRangeVO> dockingPreAttrRangeVoList) {
+		this.dockingPreAttrRangeVoList = dockingPreAttrRangeVoList;
+	}
+
+	public String getViewModelName() {
+
+		return viewModelName;
+	}
+
+	public void setViewModelName(String viewModelName) {
+		this.viewModelName = viewModelName;
+	}
+
+	public String getViewName() {
+		return viewName;
+	}
+
+	public void setViewName(String viewName) {
+		this.viewName = viewName;
+	}
+
+	public String getTargetClassifyName() {
+		return targetClassifyName;
+	}
+
+	public void setTargetClassifyName(String targetClassifyName) {
+		this.targetClassifyName = targetClassifyName;
+	}
+
+	@Override
+	public String toString() {
+		return "DockingPreAttrMappingVO{" +
+			"defaultValue='" + defaultValue + '\'' +
+			", metaListId='" + metaListId + '\'' +
+			", sourceClassifyId='" + sourceClassifyId + '\'' +
+			", sourceClassifyName='" + sourceClassifyName + '\'' +
+			", targetAttrId='" + targetAttrId + '\'' +
+			", targetClassifyId='" + targetClassifyId + '\'' +
+			", viewModeId='" + viewModeId + '\'' +
+			", viewModeName='" + viewModeName + '\'' +
+			", targetAttrKey='" + targetAttrKey + '\'' +
+			", targetAttrName='" + targetAttrName + '\'' +
+			", sourceAttrKey='" + sourceAttrKey + '\'' +
+			", sourceAttrName='" + sourceAttrName + '\'' +
+			", viewModelName='" + viewModelName + '\'' +
+			", viewName='" + viewName + '\'' +
+			", targetClassifyName='" + targetClassifyName + '\'' +
+			", dockingPreAttrRangeVoList=" + dockingPreAttrRangeVoList +
+			'}';
+	}
 }
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreAttrRangeVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreAttrRangeVO.java
index 9104bc9..774bcea 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreAttrRangeVO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreAttrRangeVO.java
@@ -2,82 +2,88 @@
 
 import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
 
+/**
+ * 璁板綍闆嗘垚灞炴�у彇鍊艰寖鍥撮厤缃�
+ * @author xiejun
+ * @date  2023-05-22
+ */
 public class DockingPreAttrRangeVO extends BaseModelVO {
-    /**
-     * 搴忓垪鍖�
-     */
-    private static final long serialVersionUID = 6020487634341415410L;
-    /***
-     *灞炴�d
-     */
-    private String jmetaListId;
+	/**
+	 * 搴忓垪鍖�
+	 */
+	private static final long serialVersionUID = 6020487634341415410L;
+	/***
+	 *灞炴�d
+	 */
+	private String metaListId;
 
-    /**
-     * 灞炴�ф灇涓炬樉绀哄悕绉�
-     */
-    private  String jnumText;
-    /**
-     * 灞炴�ф灇涓惧唴閮ㄥ悕绉�
-     */
-    private String jnumTextValue;
+	/**
+	 * 灞炴�ф灇涓炬樉绀哄悕绉�
+	 */
+	private  String numText;
+	/**
+	 * 灞炴�ф灇涓惧唴閮ㄥ悕绉�
+	 */
+	private String numTextValue;
 
-    /**
-     * 婧愬睘鎬ф灇涓炬樉绀哄悕绉�
-     */
-    private  String jtargeNumText;
-    /**
-     * 婧愬睘鎬ф灇涓惧唴閮ㄥ悕绉�
-     */
-    private String jtargeNumTextValue;
+	/**
+	 * 婧愬睘鎬ф灇涓炬樉绀哄悕绉�
+	 */
+	private  String targetNumText;
+	/**
+	 * 婧愬睘鎬ф灇涓惧唴閮ㄥ悕绉�
+	 */
+	private String targetNumTextValue;
 
-    public String getJmetaListId() {
-        return jmetaListId;
-    }
 
-    public void setJmetaListId(String jmetaListId) {
-        this.jmetaListId = jmetaListId;
-    }
+	public String getMetaListId() {
+		return metaListId;
+	}
 
-    public String getJnumText() {
-        return jnumText;
-    }
+	public void setMetaListId(String metaListId) {
+		this.metaListId = metaListId;
+	}
 
-    public void setJnumText(String jnumText) {
-        this.jnumText = jnumText;
-    }
+	public String getNumText() {
+		return numText;
+	}
 
-    public String getJnumTextValue() {
-        return jnumTextValue;
-    }
+	public void setNumText(String numText) {
+		this.numText = numText;
+	}
 
-    public void setJnumTextValue(String jnumTextValue) {
-        this.jnumTextValue = jnumTextValue;
-    }
+	public String getNumTextValue() {
+		return numTextValue;
+	}
 
-    public String getJtargeNumText() {
-        return jtargeNumText;
-    }
+	public void setNumTextValue(String numTextValue) {
+		this.numTextValue = numTextValue;
+	}
 
-    public void setJtargeNumText(String jtargeNumText) {
-        this.jtargeNumText = jtargeNumText;
-    }
+	public String getTargetNumText() {
+		return targetNumText;
+	}
 
-    public String getJtargeNumTextValue() {
-        return jtargeNumTextValue;
-    }
+	public void setTargetNumText(String targetNumText) {
+		this.targetNumText = targetNumText;
+	}
 
-    public void setJtargeNumTextValue(String jtargeNumTextValue) {
-        this.jtargeNumTextValue = jtargeNumTextValue;
-    }
+	public String getTargetNumTextValue() {
+		return targetNumTextValue;
+	}
 
-    @Override
-    public String toString() {
-        return "DockingPreAttrRangeVO{" +
-                "jmetaListId='" + jmetaListId + '\'' +
-                ", jnumText='" + jnumText + '\'' +
-                ", jnumTextValue='" + jnumTextValue + '\'' +
-                ", jtargeNumText='" + jtargeNumText + '\'' +
-                ", jtargeNumTextValue='" + jtargeNumTextValue + '\'' +
-                '}';
-    }
+	public void setTargetNumTextValue(String targetNumTextValue) {
+		this.targetNumTextValue = targetNumTextValue;
+	}
+
+	@Override
+	public String toString() {
+		return "DockingPreAttrRangeVO{" +
+			"metaListId='" + metaListId + '\'' +
+			", numText='" + numText + '\'' +
+			", numTextValue='" + numTextValue + '\'' +
+			", targetNumText='" + targetNumText + '\'' +
+			", targetNumTextValue='" + targetNumTextValue + '\'' +
+			'}';
+	}
 }
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
new file mode 100644
index 0000000..8284527
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreClassifyVO.java
@@ -0,0 +1,72 @@
+package com.vci.ubcs.code.vo.pagemodel;
+
+/**
+ * 璁板綍闆嗘垚闆嗗洟鍒嗙被淇℃伅
+ * @author xiejun
+ * @date 2023-05-22
+ */
+public class DockingPreClassifyVO  extends BaseModelVO{
+
+	/**
+	 * 搴忓垪鍖�
+	 */
+	private static final long serialVersionUID = 6020487634341415438L;
+	/***
+	 * 鍒嗙被鍚嶇О
+	 */
+	private String className;
+	/***
+	 * 鍒嗙被閾炬帴
+	 */
+	private String nodeLink;
+	/****
+	 * 鍒嗙被閾炬帴鍚嶇О
+	 */
+	private String getNodeLinkName;
+	/***
+	 * 鐖剁骇鑺傜偣
+	 */
+	private  String pid;
+
+	public String getClassName() {
+		return className;
+	}
+
+	public void setClassName(String className) {
+		this.className = className;
+	}
+
+	public String getNodeLink() {
+		return nodeLink;
+	}
+
+	public void setNodeLink(String nodeLink) {
+		this.nodeLink = nodeLink;
+	}
+
+	public String getGetNodeLinkName() {
+		return getNodeLinkName;
+	}
+
+	public void setGetNodeLinkName(String getNodeLinkName) {
+		this.getNodeLinkName = getNodeLinkName;
+	}
+
+	public String getPid() {
+		return pid;
+	}
+
+	public void setPid(String pid) {
+		this.pid = pid;
+	}
+
+	@Override
+	public String toString() {
+		return "DockingPreClassifyDTO{" +
+			"className='" + className + '\'' +
+			", nodeLink='" + nodeLink + '\'' +
+			", getNodeLinkName='" + getNodeLinkName + '\'' +
+			", pid='" + pid + '\'' +
+			'}';
+	}
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreMetaAttrVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreMetaAttrVO.java
new file mode 100644
index 0000000..4225cd6
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreMetaAttrVO.java
@@ -0,0 +1,137 @@
+package com.vci.ubcs.code.vo.pagemodel;
+/**
+ * 璁板綍闆嗘垚闆嗗洟鍒嗙被淇℃伅
+ * @author xiejun
+ * @date 2023-05-22
+ */
+public class DockingPreMetaAttrVO extends BaseModelVO{
+
+	/**
+	 * 搴忓垪鍖�
+	 */
+	private static final long serialVersionUID = 6020487634341415551L;
+
+	/**
+	 * 涓枃鍚嶇О
+	 */
+	private  String chineseName;
+	/***
+	 * 鑻辨枃鍚嶇О
+	 */
+	private String englishName;
+	/***
+	 * 瀛楁绫诲瀷
+	 */
+	private int metaDataType=1;
+
+	private int necesSaryConf=1;
+
+	/***
+	 * 鍙栧�艰寖鍥�
+	 */
+	private  String range;
+	/***
+	 * 鐖跺睘鎬�
+	 */
+	private  String pid;
+
+	/**
+	 * 闆嗗洟鍒嗙被id
+	 */
+	private String sourceClassifyId;
+	/**
+	 * 瑙嗗浘妯″瀷id
+	 */
+	private String viewModelId;
+	/***
+	 * 榛樿鍊�
+	 */
+	private String defaultValue;
+
+	public String getChineseName() {
+		return chineseName;
+	}
+
+	public void setChineseName(String chineseName) {
+		this.chineseName = chineseName;
+	}
+
+	public String getEnglishName() {
+		return englishName;
+	}
+
+	public void setEnglishName(String englishName) {
+		this.englishName = englishName;
+	}
+
+	public int getMetaDataType() {
+		return metaDataType;
+	}
+
+	public void setMetaDataType(int metaDataType) {
+		this.metaDataType = metaDataType;
+	}
+
+	public int getNecesSaryConf() {
+		return necesSaryConf;
+	}
+
+	public void setNecesSaryConf(int necesSaryConf) {
+		this.necesSaryConf = necesSaryConf;
+	}
+
+	public String getRange() {
+		return range;
+	}
+
+	public void setRange(String range) {
+		this.range = range;
+	}
+
+	public String getPid() {
+		return pid;
+	}
+
+	public void setPid(String pid) {
+		this.pid = pid;
+	}
+
+	public String getSourceClassifyId() {
+		return sourceClassifyId;
+	}
+
+	public void setSourceClassifyId(String sourceClassifyId) {
+		this.sourceClassifyId = sourceClassifyId;
+	}
+
+	public String getViewModelId() {
+		return viewModelId;
+	}
+
+	public void setViewModelId(String viewModelId) {
+		this.viewModelId = viewModelId;
+	}
+
+	public String getDefaultValue() {
+		return defaultValue;
+	}
+
+	public void setDefaultValue(String defaultValue) {
+		this.defaultValue = defaultValue;
+	}
+
+	@Override
+	public String toString() {
+		return "DockingPreMetaAttrVO{" +
+			"chineseName='" + chineseName + '\'' +
+			", englishName='" + englishName + '\'' +
+			", metaDataType=" + metaDataType +
+			", necesSaryConf=" + necesSaryConf +
+			", range='" + range + '\'' +
+			", pid='" + pid + '\'' +
+			", sourceClassifyId='" + sourceClassifyId + '\'' +
+			", viewModelId='" + viewModelId + '\'' +
+			", defaultValue='" + defaultValue + '\'' +
+			'}';
+	}
+}
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
new file mode 100644
index 0000000..3421693
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/DockingPreViewModelVO.java
@@ -0,0 +1,61 @@
+package com.vci.ubcs.code.vo.pagemodel;
+/**
+ * 璁板綍闆嗘垚闆嗗洟鍒嗙被瑙嗗浘淇℃伅
+ * @author xiejun
+ * @date 2023-05-22
+ */
+public class DockingPreViewModelVO extends BaseModelVO{
+
+	/**
+	 * 搴忓垪鍖�
+	 */
+	private static final long serialVersionUID = 6020487634341415538L;
+
+	/***
+	 * 妯″瀷瑙嗗浘鍚嶇О
+	 */
+	private String viewName;
+
+	/***
+	 * 闆嗗洟鍒嗙被oid
+	 */
+	private String sourceClassifyId;
+	/***
+	 * 鏁版嵁xinx
+	 */
+	private  String impactList;
+
+
+	public String getViewName() {
+		return viewName;
+	}
+
+	public void setViewName(String viewName) {
+		this.viewName = viewName;
+	}
+
+	public String getSourceClassifyId() {
+		return sourceClassifyId;
+	}
+
+	public void setSourceClassifyId(String sourceClassifyId) {
+		this.sourceClassifyId = sourceClassifyId;
+	}
+
+	public String getImpactList() {
+		return impactList;
+	}
+
+	public void setImpactList(String impactList) {
+		this.impactList = impactList;
+	}
+
+	@Override
+	public String toString() {
+		return "DockingPreViewModelVO{" +
+			"viewName='" + viewName + '\'' +
+			", sourceClassifyId='" + sourceClassifyId + '\'' +
+			", impactList='" + impactList + '\'' +
+			'}';
+	}
+}
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 1832c80..73adf55 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
@@ -14,7 +14,7 @@
  * @date 2019/10/17 9:32
  */
 @Data
-@TableName("pl_omd_lift_cycle_event")
+@TableName("pl_omd_life_cycle_event")
 @ApiModel(value = "鐢熷懡鍛ㄦ湡浜嬩欢闆嗗悎", description = "鐢熷懡鍛ㄦ湡浜嬩欢闆嗗悎")
 public class LifeCycleEvent implements java.io.Serializable{
 
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 1d3b5ff..88fd971 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
@@ -14,7 +14,7 @@
  * @date 2019/10/10 6:56 PM
  */
 @Data
-@TableName("pl_omd_lift_cycle_line")
+@TableName("pl_omd_life_cycle_line")
 @ApiModel(value = "鐢熷懡鍛ㄦ湡鐘舵�佽繛鎺ョ嚎", description = "鐢熷懡鍛ㄦ湡鐘舵�佽繛鎺ョ嚎")
 public class LifeCycleLine implements java.io.Serializable {
 
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 74760c2..ad1f478 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
@@ -14,7 +14,7 @@
  * @date 2019/10/11 2:49 PM
  */
 @Data
-@TableName("pl_omd_lift_cycle_line_event")
+@TableName("pl_omd_life_cycle_line_event")
 @ApiModel(value = "鐢熷懡鍛ㄦ湡鐘舵�佽繛鎺ョ嚎", description = "鐢熷懡鍛ㄦ湡鐘舵�佽繛鎺ョ嚎")
 public class LifeCycleLineEvent implements java.io.Serializable{
 
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 af28860..bebe70c 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
@@ -14,7 +14,7 @@
  * @date 2019/10/10 5:59 PM
  */
 @Data
-@TableName("pl_omd_lift_cycle_rule")
+@TableName("pl_omd_life_cycle_rule")
 @ApiModel(value = "鐢熷懡鍛ㄦ湡瑙勫垯", description = "鐢熷懡鍛ㄦ湡瑙勫垯")
 public class LifeCycleRule implements java.io.Serializable {
 
@@ -60,7 +60,7 @@
     /**
      * 涓氬姟绫诲瀷鍚嶇О
      */
-    private String btmname;
+    private String btmName;
 
     /**
      * 鎷ユ湁鑰�
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/RevisionRule.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/RevisionRule.java
new file mode 100644
index 0000000..12964ad
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/RevisionRule.java
@@ -0,0 +1,104 @@
+package com.vci.ubcs.omd.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * Description: 鐗堟湰瑙勫垯
+ *
+ * @author LiHang
+ * @date 2023/5/17
+ */
+@Data
+@TableName("pl_omd_revision_rule")
+@ApiModel(value = "鐗堟湰瑙勫垯", description = "鐗堟湰瑙勫垯")
+public class RevisionRule implements Serializable {
+	/**
+	 * 搴忓垪鍖�
+	 */
+	private static final long serialVersionUID = -8011164573572900457L;
+	/**
+	 * 涓婚敭
+	 */
+	private String oid;
+
+	/**
+	 * 鑻辨枃鍚嶇О
+	 */
+	private String id;
+
+	/**
+	 * 涓枃鍚嶇О
+	 */
+	private String name;
+
+	/**
+	 * 璺宠穬瀛楃
+	 */
+	private String skipCode;
+
+	/**
+	 * 鍒濆鍊�
+	 */
+	private String startCode;
+
+	/**
+	 * 姝ラ暱
+	 */
+	private Integer serialStep;
+
+	/**
+	 * 鍓嶇紑
+	 */
+	private String prefixCode;
+
+	/**
+	 * 鍚庣紑
+	 */
+	private String suffixCode;
+
+	/**
+	 * 鎻忚堪
+	 */
+	private String description;
+
+
+	/**
+	 * 涓氬姟绫诲瀷鍚嶇О
+	 */
+	private String btmName;
+
+	/**
+	 * 鎷ユ湁鑰�
+	 */
+	private String owner;
+
+	/**
+	 * 鍒涘缓浜�
+	 */
+	private String creator;
+
+	/**
+	 * 鍒涘缓鏃堕棿
+	 */
+	private Date createTime;
+
+	/**
+	 * 鏈�鍚庝慨鏀逛汉
+	 */
+	private String lastModifier;
+
+	/**
+	 * 鏈�鍚庝慨鏀规椂闂达紝鏍煎紡鏄痽yyy-MM-dd HH:mm:ss
+	 */
+	private Date lastModifyTime;
+
+	/**
+	 * 鏃堕棿鎴筹紝鏍煎紡鏄痽yyy-MM-dd HH:mm:ss.SSS
+	 */
+	private Date ts;
+}
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
new file mode 100644
index 0000000..5bf9899
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/Status.java
@@ -0,0 +1,82 @@
+package com.vci.ubcs.omd.entity;
+
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * Description:鐘舵�佹睜瀵硅薄
+ *
+ * @author LiHang
+ * @date 2023/5/23
+ */
+@Data
+@TableName("pl_omd_status")
+@ApiModel(value = "鐘舵�佹睜瀵硅薄", description = "鐘舵�佹睜瀵硅薄")
+public class Status implements Serializable {
+
+	/**
+	 * 搴忓垪鍖�
+	 */
+	private static final long serialVersionUID = 5914235157247110985L;
+
+	/**
+	 * 涓婚敭
+	 */
+	private String oid;
+
+	/**
+	 * 鐘舵�佽嫳鏂囧悕绉�
+	 */
+	private String id;
+
+	/**
+	 * 鐘舵�佷腑鏂囧悕绉�
+	 */
+	private String name;
+
+	/**
+	 * 鎻忚堪
+	 */
+	private String description;
+
+	/**
+	 * 涓氬姟绫诲瀷鍚嶇О
+	 */
+	private String btmName;
+
+	/**
+	 * 鎷ユ湁鑰�
+	 */
+	private String owner;
+
+	/**
+	 * 鍒涘缓浜�
+	 */
+	private String creator;
+
+	/**
+	 * 鍒涘缓鏃堕棿
+	 */
+	private Date createTime;
+
+	/**
+	 * 鏈�鍚庝慨鏀逛汉
+	 */
+	private String lastModifier;
+
+	/**
+	 * 鏈�鍚庝慨鏀规椂闂达紝鏍煎紡鏄痽yyy-MM-dd HH:mm:ss
+	 */
+	private Date lastModifyTime;
+
+	/**
+	 * 鏃堕棿鎴筹紝鏍煎紡鏄痽yyy-MM-dd HH:mm:ss.SSS
+	 */
+	private Date ts;
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IRevisionRuleClient.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IRevisionRuleClient.java
new file mode 100644
index 0000000..ef2da98
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IRevisionRuleClient.java
@@ -0,0 +1,92 @@
+package com.vci.ubcs.omd.feign;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.vci.ubcs.omd.vo.RevisionRuleVO;
+import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
+import org.springblade.core.launch.constant.AppConstant;
+import org.springblade.core.tool.api.R;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * Description:鐗堟湰瑙勫垯Feign鎺ュ彛绫�
+ *
+ * @author LiHang
+ * @date 2023/5/22
+ */
+@FeignClient(
+	value = AppConstant.APPLICATION_NAME_OMD,
+	fallback = IRevisionRuleFallback.class
+)
+public interface IRevisionRuleClient {
+
+	/**
+	 * 鍓嶇紑
+	 */
+	String API_PREFIX = "/client";
+	/**
+	 * 鍙傜収鍒楄〃鏌ヨ
+	 */
+	String GET_REF_PAGE = API_PREFIX + "/revision-rule/get-ref-page";
+	/**
+	 * 鍙傜収鍒楄〃鏌ヨ鏃犲垎椤�
+	 */
+	String GET_REF = API_PREFIX + "/revision-rule/get-ref";
+	/**
+	 * 鍙傜収鏄庣粏
+	 */
+	String GET_DETAIL = API_PREFIX + "/revision-rule/get-detail";
+	/**
+	 * 鑻辨枃鍚嶇О鎵归噺鏌ヨ
+	 */
+	String GET_BY_IDS = API_PREFIX + "/revision-rule/get-by-ids";
+	/**
+	 * 涓婚敭鎵归噺鏌ヨ
+	 */
+	String GET_BY_OIDS = API_PREFIX + "/revision-rule/get-by-oids";
+
+	/**
+	 * 鑾峰彇鐗堟湰瑙勫垯璇︽儏淇℃伅
+	 *
+	 * @param oid 涓婚敭
+	 * @return 鐗堟湰瑙勫垯璇︽儏淇℃伅
+	 */
+	@GetMapping(GET_DETAIL)
+	R<RevisionRuleVO> getDetail(@RequestParam("oid") String oid);
+
+	/**
+	 * 鍙傜収鍒楄〃鏌ヨ
+	 * @param baseQueryObject 鏌ヨ鏉′欢
+	 * @return 鏌ヨ缁撴灉
+	 */
+	@GetMapping(GET_REF_PAGE)
+	R<IPage<RevisionRuleVO>> getRefPage(@RequestParam("baseQueryObject") BaseQueryObject baseQueryObject);
+
+	/**
+	 * 鍙傜収鍒楄〃鏌ヨ
+	 * @param baseQueryObject 鏌ヨ鏉′欢
+	 * @return 鏌ヨ缁撴灉
+	 */
+	@GetMapping(GET_REF)
+	R<List<RevisionRuleVO>> getRef(@RequestParam("baseQueryObject")BaseQueryObject baseQueryObject);
+
+	/**
+	 * 鏍规嵁鑻辨枃鍚嶇О鎵归噺鏌ヨ瀵硅薄
+	 * @param ids 瀵硅薄鑻辨枃鍚嶇О 浣嗘槸涓嶈兘瓒呰繃1000
+	 * @return 涓氬姟瀵硅薄
+	 */
+	@GetMapping(GET_BY_IDS)
+	R<List<RevisionRuleVO>> selectByIdCollection(List<String> ids);
+
+	/**
+	 * 鎵归噺鏍规嵁涓婚敭鑾峰彇鐗堟湰瑙勫垯
+	 * @param pkBtmTypeCollection 鐗堟湰瑙勫垯涓婚敭闆嗗悎
+	 * @return 鐗堟湰瑙勫垯鍒楄〃锛屽鏋滄湁涓嶅瓨鍦ㄧ殑涓嶄細杩斿洖锛屽叏閮ㄤ笉瀛樺湪鐨勫垯杩斿洖绌哄垪琛�
+	 */
+	@GetMapping(GET_BY_OIDS)
+	R<List<RevisionRuleVO>> listBtmTypeByOidCollection(Collection<String> pkBtmTypeCollection);
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IRevisionRuleFallback.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IRevisionRuleFallback.java
new file mode 100644
index 0000000..ebd891e
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IRevisionRuleFallback.java
@@ -0,0 +1,74 @@
+package com.vci.ubcs.omd.feign;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.vci.ubcs.omd.vo.RevisionRuleVO;
+import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Description: Feign澶辫触绫�
+ *
+ * @author LiHang
+ * @date 2023/5/22
+ */
+public class IRevisionRuleFallback implements IRevisionRuleClient{
+	/**
+	 * 鑾峰彇鐗堟湰瑙勫垯璇︽儏淇℃伅
+	 *
+	 * @param oid 涓婚敭
+	 * @return 鐗堟湰瑙勫垯璇︽儏淇℃伅
+	 */
+	@Override
+	public R<RevisionRuleVO> getDetail(String oid) {
+		return R.fail("鑾峰彇鏁版嵁澶辫触");
+	}
+
+	/**
+	 * 鍙傜収鍒楄〃鏌ヨ
+	 *
+	 * @param baseQueryObject 鏌ヨ鏉′欢
+	 * @return 鏌ヨ缁撴灉
+	 */
+	@Override
+	public R<IPage<RevisionRuleVO>> getRefPage(BaseQueryObject baseQueryObject) {
+		return R.fail("鑾峰彇鏁版嵁澶辫触");
+	}
+
+	/**
+	 * 鍙傜収鍒楄〃鏌ヨ
+	 *
+	 * @param baseQueryObject 鏌ヨ鏉′欢
+	 * @return 鏌ヨ缁撴灉
+	 */
+	@Override
+	public R<List<RevisionRuleVO>> getRef(BaseQueryObject baseQueryObject) {
+		return R.fail("鑾峰彇鏁版嵁澶辫触");
+	}
+
+	/**
+	 * 鏍规嵁鑻辨枃鍚嶇О鎵归噺鏌ヨ瀵硅薄
+	 *
+	 * @param ids 瀵硅薄鑻辨枃鍚嶇О 浣嗘槸涓嶈兘瓒呰繃1000
+	 * @return 涓氬姟瀵硅薄
+	 */
+	@Override
+	public R<List<RevisionRuleVO>> selectByIdCollection(List<String> ids) {
+		return R.fail("鑾峰彇鏁版嵁澶辫触");
+	}
+
+	/**
+	 * 鎵归噺鏍规嵁涓婚敭鑾峰彇鐗堟湰瑙勫垯
+	 *
+	 * @param pkBtmTypeCollection 鐗堟湰瑙勫垯涓婚敭闆嗗悎
+	 * @return 鐗堟湰瑙勫垯鍒楄〃锛屽鏋滄湁涓嶅瓨鍦ㄧ殑涓嶄細杩斿洖锛屽叏閮ㄤ笉瀛樺湪鐨勫垯杩斿洖绌哄垪琛�
+	 */
+	@Override
+	public R<List<RevisionRuleVO>> listBtmTypeByOidCollection(Collection<String> pkBtmTypeCollection) {
+		return R.fail("鑾峰彇鏁版嵁澶辫触");
+	}
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IStatusClient.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IStatusClient.java
new file mode 100644
index 0000000..16af72e
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IStatusClient.java
@@ -0,0 +1,69 @@
+package com.vci.ubcs.omd.feign;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.vci.ubcs.omd.entity.Status;
+import com.vci.ubcs.omd.vo.StatusVO;
+import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
+import com.vci.ubcs.starter.web.pagemodel.KeyValue;
+import org.springblade.core.launch.constant.AppConstant;
+import org.springblade.core.tool.api.R;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Description: 鐘舵�佹睜Feign鎺ュ彛绫�
+ *
+ * @author LiHang
+ * @date 2023/5/23
+ */
+@FeignClient(
+	value = AppConstant.APPLICATION_NAME_OMD,
+	fallback = IRevisionRuleFallback.class
+)
+public interface IStatusClient {
+	/**
+	 * 鍓嶇紑
+	 */
+	String API_PREFIX = "/client";
+	/**
+	 * 鍙傜収鍒楄〃鏌ヨ
+	 */
+	String GET_REF_PAGE = API_PREFIX + "/status/get-ref-page";
+	/**
+	 * 鍙傜収鍒楄〃鏌ヨ鏃犲垎椤�
+	 */
+	String GET_REF = API_PREFIX + "/status/get-ref";
+
+	/**
+	 * 鑻辨枃鍚嶇О鎵归噺鏌ヨ
+	 */
+	String GET_NAME_BY_IDS = API_PREFIX + "/status/get-name-by-ids";
+
+	/**
+	 * 鍙傜収鍒楄〃鏌ヨ
+	 * @param baseQueryObject 鏌ヨ鏉′欢瀵硅薄
+	 * @return 鎵ц缁撴灉
+	 */
+	@GetMapping(GET_REF_PAGE)
+	R<IPage<StatusVO>> getRefPage(BaseQueryObject baseQueryObject);
+
+	/**
+	 * 鍙傜収鏌ヨ
+	 * @param baseQueryObject 鏌ヨ鏉′欢瀵硅薄
+	 * @return 鎵ц缁撴灉
+	 */
+	@GetMapping(GET_REF)
+	R<List<StatusVO>> getRef(BaseQueryObject baseQueryObject);
+
+	/**
+	 * 鑻辨枃鏌ヨ涓枃鍚嶇О
+	 * @param ids 鑻辨枃
+	 * @return 鏌ヨ缁撴灉
+	 */
+	@GetMapping(GET_NAME_BY_IDS)
+	R<Map<String,String>> getNameByIds(String ids);
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IStatusFallback.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IStatusFallback.java
new file mode 100644
index 0000000..2d2c6dd
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IStatusFallback.java
@@ -0,0 +1,51 @@
+package com.vci.ubcs.omd.feign;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.vci.ubcs.omd.vo.StatusVO;
+import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
+import com.vci.ubcs.starter.web.pagemodel.KeyValue;
+import org.springblade.core.tool.api.R;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Description:
+ *
+ * @author LiHang
+ * @date 2023/5/23
+ */
+public class IStatusFallback implements IStatusClient{
+	/**
+	 * 鍙傜収鍒楄〃鏌ヨ
+	 *
+	 * @param baseQueryObject 鏌ヨ鏉′欢瀵硅薄
+	 * @return 鎵ц缁撴灉
+	 */
+	@Override
+	public R<IPage<StatusVO>> getRefPage(BaseQueryObject baseQueryObject) {
+		return R.fail("鑾峰彇鏁版嵁澶辫触");
+	}
+
+	/**
+	 * 鍙傜収鏌ヨ
+	 *
+	 * @param baseQueryObject 鏌ヨ鏉′欢瀵硅薄
+	 * @return 鎵ц缁撴灉
+	 */
+	@Override
+	public R<List<StatusVO>> getRef(BaseQueryObject baseQueryObject) {
+		return R.fail("鑾峰彇鏁版嵁澶辫触");
+	}
+
+	/**
+	 * 鑻辨枃鏌ヨ涓枃鍚嶇О
+	 *
+	 * @param ids 鑻辨枃
+	 * @return 鏌ヨ缁撴灉
+	 */
+	@Override
+	public R<Map<String,String>> getNameByIds(String ids) {
+		return R.fail("鑾峰彇鏁版嵁澶辫触");
+	}
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LifeCycleEventVO.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LifeCycleEventVO.java
index f3600ee..8ca36cb 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LifeCycleEventVO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LifeCycleEventVO.java
@@ -1,12 +1,15 @@
 package com.vci.ubcs.omd.vo;
 
+import lombok.Data;
+
 import java.util.Date;
 
 /**
  * 鐢熷懡鍛ㄦ湡浜嬩欢鏄剧ず瀵硅薄
- * @author weidy
- * @date 2019/10/17 9:46
+ * @author LiHang
+ * @date 2023/4/3
  */
+@Data
 public class LifeCycleEventVO implements java.io.Serializable{
 
     /**
@@ -68,110 +71,4 @@
      * 鏃堕棿鎴筹紝鏍煎紡鏄痽yyy-MM-dd HH:mm:ss.SSS
      */
     private Date ts;
-
-    public String getEventFullName() {
-        return eventFullName;
-    }
-
-    public void setEventFullName(String eventFullName) {
-        this.eventFullName = eventFullName;
-    }
-
-    public String getEventShowName() {
-        return eventShowName;
-    }
-
-    public void setEventShowName(String eventShowName) {
-        this.eventShowName = eventShowName;
-    }
-
-    public String getDescription() {
-        return description;
-    }
-
-    public void setDescription(String description) {
-        this.description = description;
-    }
-
-    public String getCreator() {
-        return creator;
-    }
-
-    public void setCreator(String creator) {
-        this.creator = creator;
-    }
-
-    public Date getCreateTime() {
-        return createTime;
-    }
-
-    public void setCreateTime(Date createTime) {
-        this.createTime = createTime;
-    }
-
-    public String getLastModifier() {
-        return lastModifier;
-    }
-
-    public void setLastModifier(String lastModifier) {
-        this.lastModifier = lastModifier;
-    }
-
-    public Date getLastModifyTime() {
-        return lastModifyTime;
-    }
-
-    public void setLastModifyTime(Date lastModifyTime) {
-        this.lastModifyTime = lastModifyTime;
-    }
-
-    public Date getTs() {
-        return ts;
-    }
-
-    public void setTs(Date ts) {
-        this.ts = ts;
-    }
-
-    public String getOid() {
-        return oid;
-    }
-
-    public void setOid(String oid) {
-        this.oid = oid;
-    }
-
-
-    public String getBtmname() {
-        return btmname;
-    }
-
-    public void setBtmname(String btmname) {
-        this.btmname = btmname;
-    }
-
-    public String getOwner() {
-        return owner;
-    }
-
-    public void setOwner(String owner) {
-        this.owner = owner;
-    }
-
-    @Override
-    public String toString() {
-        return "OsLifeCycleEventVO{" +
-                "oid='" + oid + '\'' +
-                ", eventFullName='" + eventFullName + '\'' +
-                ", eventShowName='" + eventShowName + '\'' +
-                ", description='" + description + '\'' +
-                ", btmname='" + btmname + '\'' +
-                ", owner='" + owner + '\'' +
-                ", creator='" + creator + '\'' +
-                ", createTime=" + createTime +
-                ", lastModifier='" + lastModifier + '\'' +
-                ", lastModifyTime=" + lastModifyTime +
-                ", ts=" + ts +
-                '}';
-    }
 }
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LifeCycleLineEventVO.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LifeCycleLineEventVO.java
index 6770a11..9db39af 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LifeCycleLineEventVO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LifeCycleLineEventVO.java
@@ -1,13 +1,16 @@
 package com.vci.ubcs.omd.vo;
 
 
+import lombok.Data;
+
 import java.util.Date;
 
 /**
  * 鐢熷懡鍛ㄦ湡杩炴帴绾夸簨浠�
- * @author weidy
- * @date 2019/10/11 4:54 PM
+ * @author LiHang
+ * @date 2023/4/3
  */
+@Data
 public class LifeCycleLineEventVO implements java.io.Serializable{
 
     /**
@@ -74,119 +77,4 @@
      * 鏃堕棿鎴筹紝鏍煎紡鏄痽yyy-MM-dd HH:mm:ss.SSS
      */
     private Date ts;
-
-    public String getOid() {
-        return oid;
-    }
-
-    public void setOid(String oid) {
-        this.oid = oid;
-    }
-
-    public String getPkLifeCycleLine() {
-        return pkLifeCycleLine;
-    }
-
-    public void setPkLifeCycleLine(String pkLifeCycleLine) {
-        this.pkLifeCycleLine = pkLifeCycleLine;
-    }
-
-    public String getEventFullName() {
-        return eventFullName;
-    }
-
-    public void setEventFullName(String eventFullName) {
-        this.eventFullName = eventFullName;
-    }
-
-    public String getEventShowName() {
-        return eventShowName;
-    }
-
-    public void setEventShowName(String eventShowName) {
-        this.eventShowName = eventShowName;
-    }
-
-    public String getCreator() {
-        return creator;
-    }
-
-    public void setCreator(String creator) {
-        this.creator = creator;
-    }
-
-    public Date getCreateTime() {
-        return createTime;
-    }
-
-    public void setCreateTime(Date createTime) {
-        this.createTime = createTime;
-    }
-
-    public String getLastModifier() {
-        return lastModifier;
-    }
-
-    public void setLastModifier(String lastModifier) {
-        this.lastModifier = lastModifier;
-    }
-
-    public Date getLastModifyTime() {
-        return lastModifyTime;
-    }
-
-    public void setLastModifyTime(Date lastModifyTime) {
-        this.lastModifyTime = lastModifyTime;
-    }
-
-    public Date getTs() {
-        return ts;
-    }
-
-    public void setTs(Date ts) {
-        this.ts = ts;
-    }
-
-    public Integer getOrderNum() {
-        return orderNum;
-    }
-
-    public void setOrderNum(Integer orderNum) {
-        this.orderNum = orderNum;
-    }
-
-
-    public String getBtmname() {
-        return btmname;
-    }
-
-    public void setBtmname(String btmname) {
-        this.btmname = btmname;
-    }
-
-    public String getOwner() {
-        return owner;
-    }
-
-    public void setOwner(String owner) {
-        this.owner = owner;
-    }
-
-    @Override
-    public String toString() {
-        return "OsLifeCycleLineEventVO{" +
-                "oid='" + oid + '\'' +
-                ", pkLifeCycleLine='" + pkLifeCycleLine + '\'' +
-                ", eventFullName='" + eventFullName + '\'' +
-                ", eventShowName='" + eventShowName + '\'' +
-                ", orderNum=" + orderNum +
-                ", btmname='" + btmname + '\'' +
-                ", owner='" + owner + '\'' +
-                ", creator='" + creator + '\'' +
-                ", createTime=" + createTime +
-                ", lastModifier='" + lastModifier + '\'' +
-                ", lastModifyTime=" + lastModifyTime +
-                ", ts=" + ts +
-                '}';
-    }
 }
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LifeCycleLineVO.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LifeCycleLineVO.java
index 3cb2461..9ae40f7 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LifeCycleLineVO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LifeCycleLineVO.java
@@ -1,13 +1,16 @@
 package com.vci.ubcs.omd.vo;
 
+import lombok.Data;
+
 import java.util.Date;
 import java.util.List;
 
 /**
  * 鐢熷懡鍛ㄦ湡杩炴帴绾�
- * @author weidy
- * @date 2019/10/11 4:48 PM
+ * @author LiHang
+ * @date 2023/4/3
  */
+@Data
 public class LifeCycleLineVO implements java.io.Serializable {
 
     /**
@@ -94,155 +97,4 @@
      * 鍖呭惈浜嬩欢
      */
     private List<LifeCycleLineEventVO> events;
-
-    public String getPkLifeCycle() {
-        return pkLifeCycle;
-    }
-
-    public void setPkLifeCycle(String pkLifeCycle) {
-        this.pkLifeCycle = pkLifeCycle;
-    }
-
-    public String getSourceLifeStatus() {
-        return sourceLifeStatus;
-    }
-
-    public void setSourceLifeStatus(String sourceLifeStatus) {
-        this.sourceLifeStatus = sourceLifeStatus;
-    }
-
-    public String getSourceLifeStatusName() {
-        return sourceLifeStatusName;
-    }
-
-    public void setSourceLifeStatusName(String sourceLifeStatusName) {
-        this.sourceLifeStatusName = sourceLifeStatusName;
-    }
-
-    public String getTargetLifeStatus() {
-        return targetLifeStatus;
-    }
-
-    public void setTargetLifeStatus(String targetLifeStatus) {
-        this.targetLifeStatus = targetLifeStatus;
-    }
-
-    public String getTargetLifeStatusName() {
-        return targetLifeStatusName;
-    }
-
-    public void setTargetLifeStatusName(String targetLifeStatusName) {
-        this.targetLifeStatusName = targetLifeStatusName;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getTransLineSiteInfo() {
-        return transLineSiteInfo;
-    }
-
-    public void setTransLineSiteInfo(String transLineSiteInfo) {
-        this.transLineSiteInfo = transLineSiteInfo;
-    }
-
-    public String getOid() {
-        return oid;
-    }
-
-    public void setOid(String oid) {
-        this.oid = oid;
-    }
-
-    public String getCreator() {
-        return creator;
-    }
-
-    public void setCreator(String creator) {
-        this.creator = creator;
-    }
-
-    public Date getCreateTime() {
-        return createTime;
-    }
-
-    public void setCreateTime(Date createTime) {
-        this.createTime = createTime;
-    }
-
-    public String getLastModifier() {
-        return lastModifier;
-    }
-
-    public void setLastModifier(String lastModifier) {
-        this.lastModifier = lastModifier;
-    }
-
-    public Date getLastModifyTime() {
-        return lastModifyTime;
-    }
-
-    public void setLastModifyTime(Date lastModifyTime) {
-        this.lastModifyTime = lastModifyTime;
-    }
-
-    public Date getTs() {
-        return ts;
-    }
-
-    public void setTs(Date ts) {
-        this.ts = ts;
-    }
-
-    public List<LifeCycleLineEventVO> getEvents() {
-        return events;
-    }
-
-    public void setEvents(List<LifeCycleLineEventVO> events) {
-        this.events = events;
-    }
-
-
-    public String getBtmname() {
-        return btmname;
-    }
-
-    public void setBtmname(String btmname) {
-        this.btmname = btmname;
-    }
-
-    public String getOwner() {
-        return owner;
-    }
-
-    public void setOwner(String owner) {
-        this.owner = owner;
-    }
-
-    @Override
-    public String toString() {
-        return "OsLifeCycleLineVO{" +
-                "pkLifeCycle='" + pkLifeCycle + '\'' +
-                ", sourceLifeStatus='" + sourceLifeStatus + '\'' +
-                ", sourceLifeStatusName='" + sourceLifeStatusName + '\'' +
-                ", targetLifeStatus='" + targetLifeStatus + '\'' +
-                ", targetLifeStatusName='" + targetLifeStatusName + '\'' +
-                ", name='" + name + '\'' +
-                ", transLineSiteInfo='" + transLineSiteInfo + '\'' +
-                ", oid='" + oid + '\'' +
-                ", btmname='" + btmname + '\'' +
-                ", owner='" + owner + '\'' +
-                ", creator='" + creator + '\'' +
-                ", createTime=" + createTime +
-                ", lastModifier='" + lastModifier + '\'' +
-                ", lastModifyTime=" + lastModifyTime +
-                ", ts=" + ts +
-                ", events=" + events +
-                '}';
-    }
 }
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LifeCycleVO.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LifeCycleVO.java
index b6b0bdb..164824e 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LifeCycleVO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LifeCycleVO.java
@@ -1,13 +1,16 @@
 package com.vci.ubcs.omd.vo;
 
+import lombok.Data;
+
 import java.util.Date;
 import java.util.List;
 
 /**
  * 鐢熷懡鍛ㄦ湡鏄剧ず瀵硅薄
- * @author weidy
- * @date 2019/10/11 4:45 PM
+ * @author LiHang
+ * @date 2023/4/3
  */
+@Data
 public class LifeCycleVO implements java.io.Serializable{
 
     /**
@@ -88,146 +91,5 @@
     /**
      * 鍖呭惈杩炴帴绾�
      */
-    private List<LifeCycleLineVO> lines ;
-
-    public String getClassFullName() {
-        return classFullName;
-    }
-
-    public void setClassFullName(String classFullName) {
-        this.classFullName = classFullName;
-    }
-
-    public String getBtmname() {
-        return btmname;
-    }
-
-    public void setBtmname(String btmname) {
-        this.btmname = btmname;
-    }
-
-    public String getOwner() {
-        return owner;
-    }
-
-    public void setOwner(String owner) {
-        this.owner = owner;
-    }
-
-    public String getOid() {
-        return oid;
-    }
-
-    public void setOid(String oid) {
-        this.oid = oid;
-    }
-
-    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 getDescription() {
-        return description;
-    }
-
-    public void setDescription(String description) {
-        this.description = description;
-    }
-
-    public String getStartStatus() {
-        return startStatus;
-    }
-
-    public void setStartStatus(String startStatus) {
-        this.startStatus = startStatus;
-    }
-
-    public String getStartStatusName() {
-        return startStatusName;
-    }
-
-    public void setStartStatusName(String startStatusName) {
-        this.startStatusName = startStatusName;
-    }
-
-    public String getCreator() {
-        return creator;
-    }
-
-    public void setCreator(String creator) {
-        this.creator = creator;
-    }
-
-    public Date getCreateTime() {
-        return createTime;
-    }
-
-    public void setCreateTime(Date createTime) {
-        this.createTime = createTime;
-    }
-
-    public String getLastModifier() {
-        return lastModifier;
-    }
-
-    public void setLastModifier(String lastModifier) {
-        this.lastModifier = lastModifier;
-    }
-
-    public Date getLastModifyTime() {
-        return lastModifyTime;
-    }
-
-    public void setLastModifyTime(Date lastModifyTime) {
-        this.lastModifyTime = lastModifyTime;
-    }
-
-    public Date getTs() {
-        return ts;
-    }
-
-    public void setTs(Date ts) {
-        this.ts = ts;
-    }
-
-    public List<LifeCycleLineVO> getLines() {
-        return lines;
-    }
-
-    public void setLines(List<LifeCycleLineVO> lines) {
-        this.lines = lines;
-    }
-
-    @Override
-    public String toString() {
-        return "OsLifeCycleVO{" +
-                "oid='" + oid + '\'' +
-                ", id='" + id + '\'' +
-                ", name='" + name + '\'' +
-                ", description='" + description + '\'' +
-                ", classFullName='" + classFullName + '\'' +
-                ", startStatus='" + startStatus + '\'' +
-                ", startStatusName='" + startStatusName + '\'' +
-                ", btmname='" + btmname + '\'' +
-                ", owner='" + owner + '\'' +
-                ", creator='" + creator + '\'' +
-                ", createTime=" + createTime +
-                ", lastModifier='" + lastModifier + '\'' +
-                ", lastModifyTime=" + lastModifyTime +
-                ", ts=" + ts +
-                ", lines=" + lines +
-                '}';
-    }
+    private List<LifeCycleLineVO> lines;
 }
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LinkTypeAttributeVO.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LinkTypeAttributeVO.java
index 7f71297..6d80554 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LinkTypeAttributeVO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LinkTypeAttributeVO.java
@@ -5,8 +5,8 @@
 
 /**
  * 閾炬帴绫诲瀷鍖呭惈鐨勫睘鎬�
- * @author weidy
- * @date 2019/10/11 6:16 PM
+ * @author LiHang
+ * @date 2023/4/3
  */
 public class LinkTypeAttributeVO implements java.io.Serializable{
 
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LinkTypeVO.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LinkTypeVO.java
index 1c43b92..264ddb6 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LinkTypeVO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/LinkTypeVO.java
@@ -8,8 +8,8 @@
 /**
  *
  * 閾炬帴绫诲瀷鏄剧ず瀵硅薄
- * @author weidy
- * @date 2019/10/11 6:04 PM
+ * @author LiHang
+ * @date 2023/4/3
  */
 @Data
 public class LinkTypeVO implements java.io.Serializable {
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/ModifyAttributeInfoVO.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/ModifyAttributeInfoVO.java
index a19b3f0..977af15 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/ModifyAttributeInfoVO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/ModifyAttributeInfoVO.java
@@ -1,12 +1,15 @@
 package com.vci.ubcs.omd.vo;
 
+import lombok.Data;
+
 import java.util.Date;
 
 /**
  * 闇�瑕佷慨鏀规暟鎹簱琛ㄤ腑瀛楁鐨勪俊鎭�
- * @author weidy
- * @date 2019/10/18 11:48
+ * @author LiHang
+ * @date 2023/4/3
  */
+@Data
 public class ModifyAttributeInfoVO implements java.io.Serializable{
 
     /**
@@ -107,7 +110,7 @@
     /**
      * 涓氬姟绫诲瀷鍚嶇О
      */
-    private String btmname;
+    private String btmName;
 
     /**
      * 鎷ユ湁鑰�
@@ -138,236 +141,4 @@
      * 鏃堕棿鎴筹紝鏍煎紡鏄痽yyy-MM-dd HH:mm:ss.SSS
      */
     private Date ts;
-
-    public String getBtmTypeId() {
-        return btmTypeId;
-    }
-
-    public void setBtmTypeId(String btmTypeId) {
-        this.btmTypeId = btmTypeId;
-    }
-
-    public String getBtmTypeName() {
-        return btmTypeName;
-    }
-
-    public void setBtmTypeName(String btmTypeName) {
-        this.btmTypeName = btmTypeName;
-    }
-
-    public String getLinkTypeFlag() {
-        return linkTypeFlag;
-    }
-
-    public void setLinkTypeFlag(String linkTypeFlag) {
-        this.linkTypeFlag = linkTypeFlag;
-    }
-
-    public String getTableName() {
-        return tableName;
-    }
-
-    public void setTableName(String tableName) {
-        this.tableName = tableName;
-    }
-
-    public String getModifyAttributeType() {
-        return modifyAttributeType;
-    }
-
-    public void setModifyAttributeType(String modifyAttributeType) {
-        this.modifyAttributeType = modifyAttributeType;
-    }
-
-    public String getModifyAttributeTypeText() {
-        return modifyAttributeTypeText;
-    }
-
-    public void setModifyAttributeTypeText(String modifyAttributeTypeText) {
-        this.modifyAttributeTypeText = modifyAttributeTypeText;
-    }
-
-    public String getColumnName() {
-        return columnName;
-    }
-
-    public void setColumnName(String columnName) {
-        this.columnName = columnName;
-    }
-
-    public String getModifyColumnReason() {
-        return modifyColumnReason;
-    }
-
-    public void setModifyColumnReason(String modifyColumnReason) {
-        this.modifyColumnReason = modifyColumnReason;
-    }
-
-    public String getOrderModifyUserName() {
-        return orderModifyUserName;
-    }
-
-    public void setOrderModifyUserName(String orderModifyUserName) {
-        this.orderModifyUserName = orderModifyUserName;
-    }
-
-    public Date getOrderModifyDate() {
-        return orderModifyDate;
-    }
-
-    public void setOrderModifyDate(Date orderModifyDate) {
-        this.orderModifyDate = orderModifyDate;
-    }
-
-    public String getAttributeDataTypeBefore() {
-        return attributeDataTypeBefore;
-    }
-
-    public void setAttributeDataTypeBefore(String attributeDataTypeBefore) {
-        this.attributeDataTypeBefore = attributeDataTypeBefore;
-    }
-
-    public String getAttributeDataTypeAfter() {
-        return attributeDataTypeAfter;
-    }
-
-    public void setAttributeDataTypeAfter(String attributeDataTypeAfter) {
-        this.attributeDataTypeAfter = attributeDataTypeAfter;
-    }
-
-    public String getDeleteColumnFlag() {
-        return deleteColumnFlag;
-    }
-
-    public void setDeleteColumnFlag(String deleteColumnFlag) {
-        this.deleteColumnFlag = deleteColumnFlag;
-    }
-
-    public boolean isHandleFinishFlag() {
-        return handleFinishFlag;
-    }
-
-    public void setHandleFinishFlag(boolean handleFinishFlag) {
-        this.handleFinishFlag = handleFinishFlag;
-    }
-
-    public String getHandleUserName() {
-        return handleUserName;
-    }
-
-    public void setHandleUserName(String handleUserName) {
-        this.handleUserName = handleUserName;
-    }
-
-    public Date getHandleDate() {
-        return handleDate;
-    }
-
-    public void setHandleDate(Date handleDate) {
-        this.handleDate = handleDate;
-    }
-
-    public String getHandleResult() {
-        return handleResult;
-    }
-
-    public void setHandleResult(String handleResult) {
-        this.handleResult = handleResult;
-    }
-
-    public String getOid() {
-        return oid;
-    }
-
-    public void setOid(String oid) {
-        this.oid = oid;
-    }
-
-    public String getCreator() {
-        return creator;
-    }
-
-    public void setCreator(String creator) {
-        this.creator = creator;
-    }
-
-    public Date getCreateTime() {
-        return createTime;
-    }
-
-    public void setCreateTime(Date createTime) {
-        this.createTime = createTime;
-    }
-
-    public String getLastModifier() {
-        return lastModifier;
-    }
-
-    public void setLastModifier(String lastModifier) {
-        this.lastModifier = lastModifier;
-    }
-
-    public Date getLastModifyTime() {
-        return lastModifyTime;
-    }
-
-    public void setLastModifyTime(Date lastModifyTime) {
-        this.lastModifyTime = lastModifyTime;
-    }
-
-    public Date getTs() {
-        return ts;
-    }
-
-    public void setTs(Date ts) {
-        this.ts = ts;
-    }
-
-
-    public String getBtmname() {
-        return btmname;
-    }
-
-    public void setBtmname(String btmname) {
-        this.btmname = btmname;
-    }
-
-    public String getOwner() {
-        return owner;
-    }
-
-    public void setOwner(String owner) {
-        this.owner = owner;
-    }
-
-    @Override
-    public String toString() {
-        return "OsModifyAttributeInfoVO{" +
-                "btmTypeId='" + btmTypeId + '\'' +
-                ", btmTypeName='" + btmTypeName + '\'' +
-                ", linkTypeFlag='" + linkTypeFlag + '\'' +
-                ", tableName='" + tableName + '\'' +
-                ", modifyAttributeType='" + modifyAttributeType + '\'' +
-                ", modifyAttributeTypeText='" + modifyAttributeTypeText + '\'' +
-                ", columnName='" + columnName + '\'' +
-                ", modifyColumnReason='" + modifyColumnReason + '\'' +
-                ", orderModifyUserName='" + orderModifyUserName + '\'' +
-                ", orderModifyDate=" + orderModifyDate +
-                ", attributeDataTypeBefore='" + attributeDataTypeBefore + '\'' +
-                ", attributeDataTypeAfter='" + attributeDataTypeAfter + '\'' +
-                ", deleteColumnFlag='" + deleteColumnFlag + '\'' +
-                ", handleFinishFlag=" + handleFinishFlag +
-                ", handleUserName='" + handleUserName + '\'' +
-                ", handleDate=" + handleDate +
-                ", handleResult='" + handleResult + '\'' +
-                ", oid='" + oid + '\'' +
-                ", btmname='" + btmname + '\'' +
-                ", owner='" + owner + '\'' +
-                ", creator='" + creator + '\'' +
-                ", createTime=" + createTime +
-                ", lastModifier='" + lastModifier + '\'' +
-                ", lastModifyTime=" + lastModifyTime +
-                ", ts=" + ts +
-                '}';
-    }
 }
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/RevisionRuleVO.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/RevisionRuleVO.java
index ad5f3b2..3668011 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/RevisionRuleVO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/RevisionRuleVO.java
@@ -1,5 +1,7 @@
 package com.vci.ubcs.omd.vo;
 
+import lombok.Data;
+
 import java.util.Date;
 
 /**
@@ -7,6 +9,7 @@
  * @author weidy
  * @date 2019/10/11 5:19 PM
  */
+@Data
 public class RevisionRuleVO implements java.io.Serializable{
 
     /**
@@ -62,7 +65,7 @@
     /**
      * 涓氬姟绫诲瀷鍚嶇О
      */
-    private String btmname;
+    private String btmName;
 
     /**
      * 鎷ユ湁鑰�
@@ -93,155 +96,5 @@
      * 鏃堕棿鎴筹紝鏍煎紡鏄痽yyy-MM-dd HH:mm:ss.SSS
      */
     private Date ts;
-
-    public String getOid() {
-        return oid;
-    }
-
-    public void setOid(String oid) {
-        this.oid = oid;
-    }
-
-    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 getSkipCode() {
-        return skipCode;
-    }
-
-    public void setSkipCode(String skipCode) {
-        this.skipCode = skipCode;
-    }
-
-    public String getStartCode() {
-        return startCode;
-    }
-
-    public void setStartCode(String startCode) {
-        this.startCode = startCode;
-    }
-
-    public Integer getSerialStep() {
-        return serialStep;
-    }
-
-    public void setSerialStep(Integer serialStep) {
-        this.serialStep = serialStep;
-    }
-
-    public String getPrefixCode() {
-        return prefixCode;
-    }
-
-    public void setPrefixCode(String prefixCode) {
-        this.prefixCode = prefixCode;
-    }
-
-    public String getSuffixCode() {
-        return suffixCode;
-    }
-
-    public void setSuffixCode(String suffixCode) {
-        this.suffixCode = suffixCode;
-    }
-
-    public String getDescription() {
-        return description;
-    }
-
-    public void setDescription(String description) {
-        this.description = description;
-    }
-
-    public String getCreator() {
-        return creator;
-    }
-
-    public void setCreator(String creator) {
-        this.creator = creator;
-    }
-
-    public Date getCreateTime() {
-        return createTime;
-    }
-
-    public void setCreateTime(Date createTime) {
-        this.createTime = createTime;
-    }
-
-    public String getLastModifier() {
-        return lastModifier;
-    }
-
-    public void setLastModifier(String lastModifier) {
-        this.lastModifier = lastModifier;
-    }
-
-    public Date getLastModifyTime() {
-        return lastModifyTime;
-    }
-
-    public void setLastModifyTime(Date lastModifyTime) {
-        this.lastModifyTime = lastModifyTime;
-    }
-
-    public Date getTs() {
-        return ts;
-    }
-
-    public void setTs(Date ts) {
-        this.ts = ts;
-    }
-
-    public String getBtmname() {
-        return btmname;
-    }
-
-    public void setBtmname(String btmname) {
-        this.btmname = btmname;
-    }
-
-    public String getOwner() {
-        return owner;
-    }
-
-    public void setOwner(String owner) {
-        this.owner = owner;
-    }
-
-    @Override
-    public String toString() {
-        return "OsRevisionRuleVO{" +
-                "oid='" + oid + '\'' +
-                ", id='" + id + '\'' +
-                ", name='" + name + '\'' +
-                ", skipCode='" + skipCode + '\'' +
-                ", startCode='" + startCode + '\'' +
-                ", serialStep=" + serialStep +
-                ", prefixCode='" + prefixCode + '\'' +
-                ", suffixCode='" + suffixCode + '\'' +
-                ", description='" + description + '\'' +
-                ", btmname='" + btmname + '\'' +
-                ", owner='" + owner + '\'' +
-                ", creator='" + creator + '\'' +
-                ", createTime=" + createTime +
-                ", lastModifier='" + lastModifier + '\'' +
-                ", lastModifyTime=" + lastModifyTime +
-                ", ts=" + ts +
-                '}';
-    }
 }
 
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/StatusVO.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/StatusVO.java
index fd8a951..568972b 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/StatusVO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/StatusVO.java
@@ -1,12 +1,15 @@
 package com.vci.ubcs.omd.vo;
 
+import lombok.Data;
+
 import java.util.Date;
 
 /**
- * 鐘舵��
- * @author weidy
- * @date 2019/10/11 4:40 PM
+ * 鐘舵�佹睜
+ * @author lihang
+ * @date 2023/05/23
  */
+@Data
 public class StatusVO implements java.io.Serializable {
 
 
@@ -38,7 +41,7 @@
     /**
      * 涓氬姟绫诲瀷鍚嶇О
      */
-    private String btmname;
+    private String btmName;
 
     /**
      * 鎷ユ湁鑰�
@@ -69,110 +72,4 @@
      * 鏃堕棿鎴筹紝鏍煎紡鏄痽yyy-MM-dd HH:mm:ss.SSS
      */
     private Date ts;
-
-    public String getOid() {
-        return oid;
-    }
-
-    public void setOid(String oid) {
-        this.oid = oid;
-    }
-
-    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 getDescription() {
-        return description;
-    }
-
-    public void setDescription(String description) {
-        this.description = description;
-    }
-
-    public String getCreator() {
-        return creator;
-    }
-
-    public void setCreator(String creator) {
-        this.creator = creator;
-    }
-
-    public Date getCreateTime() {
-        return createTime;
-    }
-
-    public void setCreateTime(Date createTime) {
-        this.createTime = createTime;
-    }
-
-    public String getLastModifier() {
-        return lastModifier;
-    }
-
-    public void setLastModifier(String lastModifier) {
-        this.lastModifier = lastModifier;
-    }
-
-    public Date getLastModifyTime() {
-        return lastModifyTime;
-    }
-
-    public void setLastModifyTime(Date lastModifyTime) {
-        this.lastModifyTime = lastModifyTime;
-    }
-
-    public Date getTs() {
-        return ts;
-    }
-
-    public void setTs(Date ts) {
-        this.ts = ts;
-    }
-
-
-    public String getBtmname() {
-        return btmname;
-    }
-
-    public void setBtmname(String btmname) {
-        this.btmname = btmname;
-    }
-
-    public String getOwner() {
-        return owner;
-    }
-
-    public void setOwner(String owner) {
-        this.owner = owner;
-    }
-
-    @Override
-    public String toString() {
-        return "OsStatusVO{" +
-                "oid='" + oid + '\'' +
-                ", id='" + id + '\'' +
-                ", name='" + name + '\'' +
-                ", description='" + description + '\'' +
-                ", btmname='" + btmname + '\'' +
-                ", owner='" + owner + '\'' +
-                ", creator='" + creator + '\'' +
-                ", createTime=" + createTime +
-                ", lastModifier='" + lastModifier + '\'' +
-                ", lastModifyTime=" + lastModifyTime +
-                ", ts=" + ts +
-                '}';
-    }
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingLogeMapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingLogeMapper.java
index e4660f7..d40c3e7 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingLogeMapper.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingLogeMapper.java
@@ -1,14 +1,18 @@
 package com.vci.ubcs.code.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.vci.ubcs.code.entity.CodeWupinEntity;
 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.List;
 import java.util.Objects;
-
+/**
+ * 鍏叡鏌ヨmapper
+ *
+ * @author xiejun
+ * @date 2023-05-22
+ */
 public interface DockingLogeMapper extends BaseMapper<DockingLog> {
 
+
+
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreApplyFormMapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreApplyFormMapper.java
new file mode 100644
index 0000000..290485b
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreApplyFormMapper.java
@@ -0,0 +1,7 @@
+package com.vci.ubcs.code.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.vci.ubcs.code.entity.DockingPreApplyForm;
+
+public interface DockingPreApplyFormMapper extends BaseMapper<DockingPreApplyForm> {
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreAttrMappingMapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreAttrMappingMapper.java
new file mode 100644
index 0000000..40b81a6
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreAttrMappingMapper.java
@@ -0,0 +1,7 @@
+package com.vci.ubcs.code.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.vci.ubcs.code.entity.DockingPreAttrMapping;
+
+public interface DockingPreAttrMappingMapper extends BaseMapper<DockingPreAttrMapping> {
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreAttrRangeMapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreAttrRangeMapper.java
new file mode 100644
index 0000000..7dc54e5
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreAttrRangeMapper.java
@@ -0,0 +1,7 @@
+package com.vci.ubcs.code.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.vci.ubcs.code.entity.DockingPreAttrRange;
+
+public interface DockingPreAttrRangeMapper  extends BaseMapper<DockingPreAttrRange> {
+}
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
new file mode 100644
index 0000000..859ef22
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreClassifyMapper.java
@@ -0,0 +1,7 @@
+package com.vci.ubcs.code.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.vci.ubcs.code.entity.DockingPreClassify;
+
+public interface DockingPreClassifyMapper extends BaseMapper<DockingPreClassify> {
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreMetaAttrMapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreMetaAttrMapper.java
new file mode 100644
index 0000000..3b4b2c3
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreMetaAttrMapper.java
@@ -0,0 +1,7 @@
+package com.vci.ubcs.code.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.vci.ubcs.code.entity.DockingPreMetaAttr;
+
+public interface DockingPreMetaAttrMapper  extends BaseMapper<DockingPreMetaAttr> {
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreViewModelMapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreViewModelMapper.java
new file mode 100644
index 0000000..3c6f82e
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/DockingPreViewModelMapper.java
@@ -0,0 +1,7 @@
+package com.vci.ubcs.code.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.vci.ubcs.code.entity.DockingPreViewModel;
+
+public interface DockingPreViewModelMapper extends BaseMapper<DockingPreViewModel> {
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingLogeService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingLogeService.java
index 64f0f50..7561df5 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingLogeService.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingLogeService.java
@@ -1,22 +1,6 @@
 package com.vci.ubcs.code.service;
-
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
-import com.baomidou.mybatisplus.extension.conditions.query.QueryChainWrapper;
-import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
-import com.baomidou.mybatisplus.extension.conditions.update.UpdateChainWrapper;
-import com.baomidou.mybatisplus.extension.kotlin.KtQueryChainWrapper;
-import com.baomidou.mybatisplus.extension.kotlin.KtUpdateChainWrapper;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.vci.ubcs.code.entity.CodeWupinEntity;
 import com.vci.ubcs.code.entity.DockingLog;
-
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.function.Function;
 
 /**
  * 涓绘暟鎹紩鎿庢湇鍔�
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreApplyFormService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreApplyFormService.java
new file mode 100644
index 0000000..8ca312e
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreApplyFormService.java
@@ -0,0 +1,12 @@
+package com.vci.ubcs.code.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.vci.ubcs.code.entity.DockingPreApplyForm;
+
+/***
+ * 闆嗗洟鐢宠鍗曟湇鍔�
+ * @author xiejun
+ * @since 2023-04-10 2023-05-23
+ */
+public interface IDockingPreApplyFormService extends IService<DockingPreApplyForm> {
+}
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
new file mode 100644
index 0000000..10c9951
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreAttrMappingService.java
@@ -0,0 +1,11 @@
+package com.vci.ubcs.code.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.vci.ubcs.code.entity.DockingPreAttrMapping;
+/**
+ * 闆嗗洟闆嗘垚閰嶇疆鏈嶅姟
+ * @author xiej
+ * @date 2023-05-17
+ */
+public interface IDockingPreAttrMappingService extends IService<DockingPreAttrMapping> {
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreAttrRangeService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreAttrRangeService.java
new file mode 100644
index 0000000..aa5f397
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreAttrRangeService.java
@@ -0,0 +1,7 @@
+package com.vci.ubcs.code.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.vci.ubcs.code.entity.DockingPreAttrRange;
+
+public interface IDockingPreAttrRangeService extends IService<DockingPreAttrRange> {
+}
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
new file mode 100644
index 0000000..271aab7
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreClassifyService.java
@@ -0,0 +1,12 @@
+package com.vci.ubcs.code.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.vci.ubcs.code.entity.DockingPreClassify;
+
+/***
+ * 闆嗗洟鍒嗙被鏈嶅姟
+ * @author xiejun
+ * @date 2022-05-23
+ */
+public interface IDockingPreClassifyService extends IService<DockingPreClassify> {
+}
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
new file mode 100644
index 0000000..1ce7ec9
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreMetaAttrService.java
@@ -0,0 +1,12 @@
+package com.vci.ubcs.code.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.vci.ubcs.code.entity.DockingPreMetaAttr;
+
+/***
+ * 闆嗗洟灞炴�ф湇鍔�
+ * @author xiejun
+ * @date 2023-05-23
+ */
+public interface IDockingPreMetaAttrService extends IService<DockingPreMetaAttr> {
+}
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
new file mode 100644
index 0000000..ca94816
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/IDockingPreViewModelService.java
@@ -0,0 +1,12 @@
+package com.vci.ubcs.code.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.vci.ubcs.code.entity.DockingPreViewModel;
+
+/***
+ * 闆嗗洟鍒嗙被妯″瀷鏈嶅姟
+ * @author xiejun
+ * @date 2023-05-23
+ */
+public interface IDockingPreViewModelService extends IService<DockingPreViewModel> {
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreApplyFormServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreApplyFormServiceImpl.java
new file mode 100644
index 0000000..11910a7
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreApplyFormServiceImpl.java
@@ -0,0 +1,16 @@
+package com.vci.ubcs.code.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.code.entity.DockingPreApplyForm;
+import com.vci.ubcs.code.mapper.DockingPreApplyFormMapper;
+import com.vci.ubcs.code.service.IDockingPreApplyFormService;
+import org.springframework.stereotype.Service;
+
+/***
+ *闆嗗洟灞炴�ф槧灏勬湇鍔�
+ * @author xiejun
+ * @date 2023-05-22
+ */
+@Service
+public class DockingPreApplyFormServiceImpl extends ServiceImpl<DockingPreApplyFormMapper, DockingPreApplyForm> implements IDockingPreApplyFormService {
+}
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
new file mode 100644
index 0000000..d76f98b
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreAttrMappingServiceImpl.java
@@ -0,0 +1,16 @@
+package com.vci.ubcs.code.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.code.entity.DockingPreAttrMapping;
+import com.vci.ubcs.code.mapper.DockingPreAttrMappingMapper;
+import com.vci.ubcs.code.service.IDockingPreAttrMappingService;
+import org.springframework.stereotype.Service;
+
+/***
+ *闆嗗洟灞炴�ф槧灏勬湇鍔�
+ * @author xiejun
+ * @date 2023-05-22
+ */
+@Service
+public class DockingPreAttrMappingServiceImpl extends ServiceImpl<DockingPreAttrMappingMapper, DockingPreAttrMapping> implements IDockingPreAttrMappingService {
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreAttrRangeServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreAttrRangeServiceImpl.java
new file mode 100644
index 0000000..dc062bc
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreAttrRangeServiceImpl.java
@@ -0,0 +1,17 @@
+package com.vci.ubcs.code.service.impl;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.code.entity.DockingPreAttrRange;
+import com.vci.ubcs.code.mapper.DockingPreAttrRangeMapper;
+import com.vci.ubcs.code.service.IDockingPreAttrRangeService;
+import org.springframework.stereotype.Service;
+
+/***
+ *闆嗗洟灞炴�у彇鍊艰寖鍥存湇鍔�
+ * @author xiejun
+ * @date 2023-05-22
+ */
+@Service
+public class DockingPreAttrRangeServiceImpl extends ServiceImpl<DockingPreAttrRangeMapper, DockingPreAttrRange> implements IDockingPreAttrRangeService {
+}
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
new file mode 100644
index 0000000..849557e
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreClassifyServiceImpl.java
@@ -0,0 +1,25 @@
+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.mapper.DockingPreClassifyMapper;
+import com.vci.ubcs.code.service.IDockingPreClassifyService;
+import org.springframework.stereotype.Service;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.function.Function;
+
+/**
+ * 闆嗗洟鍒嗙被涓氬姟鏈嶅姟
+ * @author xiejun
+ * @date 2023-05-23
+ */
+@Service
+public class DockingPreClassifyServiceImpl extends ServiceImpl<DockingPreClassifyMapper, DockingPreClassify> implements IDockingPreClassifyService {
+
+
+}
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
new file mode 100644
index 0000000..71f79a5
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreMetaAttrServiceImpl.java
@@ -0,0 +1,16 @@
+package com.vci.ubcs.code.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.code.entity.DockingPreMetaAttr;
+import com.vci.ubcs.code.mapper.DockingPreMetaAttrMapper;
+import com.vci.ubcs.code.service.IDockingPreMetaAttrService;
+import org.springframework.stereotype.Service;
+
+/***
+ * 闆嗗洟灞炴�ф湇鍔�
+ * @author xiejun
+ * @date 2023-05-23
+ */
+@Service
+public class DockingPreMetaAttrServiceImpl extends ServiceImpl<DockingPreMetaAttrMapper, DockingPreMetaAttr> implements IDockingPreMetaAttrService {
+}
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
new file mode 100644
index 0000000..9b8b5de
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreViewModelServiceImpl.java
@@ -0,0 +1,16 @@
+package com.vci.ubcs.code.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.code.entity.DockingPreViewModel;
+import com.vci.ubcs.code.mapper.DockingPreViewModelMapper;
+import com.vci.ubcs.code.service.IDockingPreViewModelService;
+import org.springframework.stereotype.Service;
+
+/***
+ * 闆嗗洟妯″瀷鏈嶅姟
+ * @author xiejun
+ * @date 2023-05-23
+ */
+@Service
+public class DockingPreViewModelServiceImpl extends ServiceImpl<DockingPreViewModelMapper,DockingPreViewModel> implements IDockingPreViewModelService {
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java
index 6b06b57..0ea0711 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java
@@ -390,8 +390,99 @@
 	}
 
 	@Override
-	public String queryClassifyRule(String data, String datatype) throws Throwable {
-		return null;
+	public String queryClassifyRule(String data, String dataType) throws Throwable {
+
+		boolean issucess=false;
+		String resultStr = "";
+		String errorid="0";
+		msg="鎴愬姛";
+		String systemId="";
+		log.info("鏌ヨ鍒嗙被鐨勬暟鎹弬鏁�:->"+data);
+		log.info("鏌ヨ鍒嗙被鐨勬暟鎹被鍨�:->"+dataType);
+		ResultClassifyVO resultClassifyVO =new ResultClassifyVO();
+		List<ClassifyVO> classifyVOList=new ArrayList<>();
+		try {
+			if (StringUtils.isBlank(data)) {
+				errorid = "101";
+				throw new Throwable("鎺ュ彛鍙傛暟锛氫紶閫掍负绌�");
+			}
+			QueryClassifyVO queryClassifyVO = new QueryClassifyVO();
+			//濡傛灉dataType鏄痻ml鍒欙紝閫氳繃xml搴忓垪鍖栨垚瀵硅薄褰㈠紡锛屽鏋滄槸json鍒欓�氳繃json杞崲鎴愬璞℃牸寮�
+			try {
+				if ("xml".equals(dataType)) {
+					XStream xStream = new XStream(new DomDriver());
+					xStream.processAnnotations(QueryData.class);
+					xStream.autodetectAnnotations(true);
+					QueryData queryData = (QueryData) xStream.fromXML(data);
+					queryClassifyVO.setData(queryData);
+				} else {
+					queryClassifyVO = JSONObject.toJavaObject(JSONObject.parseObject(data), QueryClassifyVO.class);
+				}
+			} catch (Throwable e) {
+				errorid = "101";
+				msg = "鎺ュ彛鍙傛暟锛氫紶鍏ユ暟鎹弬鏁拌В鏋愬け璐�";
+				e.printStackTrace();
+				throw new Throwable("鎺ュ彛鍙傛暟锛氫紶鍏ユ暟鎹弬鏁拌В鏋愬け璐�");
+			}
+			QueryData queryData=queryClassifyVO.getData();
+			UserVO userVo=queryData.getUser();
+			systemId=queryData.getSystemId();
+			QueryLibraryVO libraryVO= queryData.getLibrary();
+			String libId= libraryVO.getId();
+			List<String> classifyIdList=  libraryVO.getClassifyid();
+			List<CodeClassifyVO> codeClassifyVOS =new ArrayList<>();
+			//杩欐槸璐﹀彿淇℃伅
+			//杩欐槸璐﹀彿淇℃伅
+			if(userVo!=null) {
+				SessionInfo sessionInfo = new SessionInfo();
+				sessionInfo.setUserId(userVo.getUserName());
+				sessionInfo.setUserName(userVo.getTrueName());
+				sessionInfo.setIp(userVo.getIp());
+				VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
+			}else{
+				errorid = "101";
+				throw new Throwable("鎺ュ彛鍙傛暟锛氳处鍙蜂俊鎭幏鍙栧け璐�");
+			}
+			if(!CollectionUtils.isEmpty(classifyIdList)){
+				//鍏堢畝绉版槸鍚︽湁鍏宠仈妯℃澘锛屾湁妯℃澘瑕佸厛鍒犻櫎
+				List<CodeClassify> libIdDos = classifyService.selectByWrapper(Wrappers.<CodeClassify>query().lambda().in(CodeClassify::getId, classifyIdList));
+				codeClassifyVOS=classifyService.codeClassifyDO2VOs(libIdDos);
+			}else {
+				List<CodeClassify> libIdDos = classifyService.selectByWrapper(Wrappers.<CodeClassify>query().lambda().eq(CodeClassify::getId, libId));
+				String oid= libIdDos.get(0).getOid();
+				TreeQueryObject treeQueryObject=new TreeQueryObject();
+				treeQueryObject.setParentOid(oid);
+				treeQueryObject.setQueryAllLevel(true);
+				codeClassifyVOS=classifyService.selectCodeClassifyDOByTree(treeQueryObject);
+			}
+
+		}catch (Throwable e){
+			e.printStackTrace();;
+			msg="鏌ヨ鍒嗙被澶辫触:"+e.getMessage();
+		}finally {
+		//	resultData.setErrorid(errorid);
+		//	resultData.setMsg(msg);
+		//	resultClassifyVO.setResultData(resultData);
+		}
+		if(dataType.equals("xml")){
+			//缁勭粐杩斿洖鎺ュ彛淇℃伅
+			XStream xStream = new XStream(new DomDriver());
+			xStream.processAnnotations(XMLResultSystemVO.class);
+			xStream.autodetectAnnotations(true);
+			//resultStr = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" + xStream.toXML(resultData);
+
+		}else{
+			Object object = JSONObject.toJSON(resultClassifyVO);
+			resultStr = object.toString();
+		}
+		try {
+			//璁板綍鏃ュ織
+			this.saveLogs(systemId, systemId, data, resultStr, issucess, msg, "queryClassify");
+		}catch (Throwable e){
+			e.printStackTrace();
+		}
+		log.info("杩斿洖鍙傛暟:"+resultStr);
+		return resultStr;
 	}
 
 	/***
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
new file mode 100644
index 0000000..1266111
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreApplyFormWrapper.java
@@ -0,0 +1,22 @@
+package com.vci.ubcs.code.wrapper;
+
+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.Objects;
+
+/***
+ * 鐢宠鍗曞寘瑁呯被
+ * @author xiejun
+ * @date 2023-05-23
+ */
+public class DockingPreApplyFormWrapper extends BaseEntityWrapper<DockingPreApplyForm, DockingPreApplyFormVO> {
+
+	@Override
+	public DockingPreApplyFormVO entityVO(DockingPreApplyForm entity) {
+		DockingPreApplyFormVO dockingPreApplyFormVO = Objects.requireNonNull(BeanUtil.copy(entity, DockingPreApplyFormVO.class));
+		return dockingPreApplyFormVO;
+	}
+}
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
new file mode 100644
index 0000000..e4bb278
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreAttrMappingWrapper.java
@@ -0,0 +1,22 @@
+package com.vci.ubcs.code.wrapper;
+
+import com.vci.ubcs.code.entity.DockingPreAttrMapping;
+import com.vci.ubcs.code.vo.pagemodel.DockingLogeVO;
+import com.vci.ubcs.code.vo.pagemodel.DockingPreAttrMappingVO;
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.utils.BeanUtil;
+
+import java.util.Objects;
+/**
+ *闆嗗洟缂栫爜闆嗘垚灞炴�ф槧灏勯厤缃寘瑁呯被
+ *
+ * @author xiejun
+ * @since 2023-05-23
+ */
+public class DockingPreAttrMappingWrapper extends BaseEntityWrapper<DockingPreAttrMapping, DockingPreAttrMappingVO> {
+	@Override
+	public DockingPreAttrMappingVO entityVO(DockingPreAttrMapping entity) {
+		DockingPreAttrMappingVO dockingPreAttrMappingVO = Objects.requireNonNull(BeanUtil.copy(entity, DockingPreAttrMappingVO.class));
+		return dockingPreAttrMappingVO;
+	}
+}
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
new file mode 100644
index 0000000..53d00d9
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreAttrRangeWrapper.java
@@ -0,0 +1,25 @@
+package com.vci.ubcs.code.wrapper;
+
+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;
+
+import java.util.Objects;
+/**
+ *闆嗗洟缂栫爜鍒嗙被妯″瀷瑙嗗浘灞炴�у彇鍊艰寖鍥村寘瑁呯被
+ *
+ * @author xiejun
+ * @since 2023-05-23
+ */
+public class DockingPreAttrRangeWrapper extends BaseEntityWrapper<DockingPreAttrRange, DockingPreAttrRangeVO> {
+
+	@Override
+	public DockingPreAttrRangeVO entityVO(DockingPreAttrRange entity) {
+		DockingPreAttrRangeVO dockingPreAttrRangeVO = Objects.requireNonNull(BeanUtil.copy(entity, DockingPreAttrRangeVO.class));
+		return dockingPreAttrRangeVO;
+	}
+}
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
new file mode 100644
index 0000000..527c7b3
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreClassifyWrapper.java
@@ -0,0 +1,22 @@
+package com.vci.ubcs.code.wrapper;
+
+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.Objects;
+/**
+ *闆嗗洟缂栫爜鍒嗙被鍖呰绫�
+ *
+ * @author xiejun
+ * @since 2023-05-23
+ */
+public class DockingPreClassifyWrapper extends BaseEntityWrapper<DockingPreClassify, DockingPreClassifyVO> {
+	@Override
+	public DockingPreClassifyVO entityVO(DockingPreClassify entity) {
+		DockingPreClassifyVO dockingPreClassifyVO = Objects.requireNonNull(BeanUtil.copy(entity, DockingPreClassifyVO.class));
+		return dockingPreClassifyVO;
+	}
+}
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
new file mode 100644
index 0000000..b0f0021
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreMetaAttrWrapper.java
@@ -0,0 +1,23 @@
+package com.vci.ubcs.code.wrapper;
+
+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.Objects;
+/**
+ *闆嗗洟缂栫爜鐢宠妯″瀷灞炴�у寘瑁呯被
+ *
+ * @author xiejun
+ * @since 2023-05-23
+ */
+public class DockingPreMetaAttrWrapper extends BaseEntityWrapper<DockingPreMetaAttr, DockingPreMetaAttrVO> {
+	@Override
+	public DockingPreMetaAttrVO entityVO(DockingPreMetaAttr entity) {
+		DockingPreMetaAttrVO dockingPreMetaAttrVO = Objects.requireNonNull(BeanUtil.copy(entity, DockingPreMetaAttrVO.class));
+		return dockingPreMetaAttrVO;
+	}
+}
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
new file mode 100644
index 0000000..4823305
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/DockingPreViewWrapper.java
@@ -0,0 +1,22 @@
+package com.vci.ubcs.code.wrapper;
+
+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.Objects;
+/**
+ *闆嗗洟缂栫爜鐢宠瑙嗗浘鍖呰绫�
+ *
+ * @author xiejun
+ * @since 2023-05-23
+ */
+public class DockingPreViewWrapper  extends BaseEntityWrapper<DockingPreViewModel, DockingPreViewModelVO> {
+	@Override
+	public DockingPreViewModelVO entityVO(DockingPreViewModel entity) {
+		DockingPreViewModelVO dockingPreViewModelVO = Objects.requireNonNull(BeanUtil.copy(entity, DockingPreViewModelVO.class));
+		return dockingPreViewModelVO;
+	}
+}
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
new file mode 100644
index 0000000..af4f902
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingLogeMapper.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.code.mapper.DockingLogeMapper">
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="DockingPreAttrMappingResultMap" type="com.vci.ubcs.code.entity.DockingLog">
+        <result column="OID" property="oid"/>
+        <result column="REVISIONOID" property="revisionOid"/>
+        <result column="NAMEOID" property="nameOid"/>
+        <result column="BTMNAME" property="btmname"/>
+        <result column="LASTR" property="lastR"/>
+        <result column="FIRSTR" property="firstR"/>
+        <result column="LASTV" property="lastV"/>
+        <result column="FIRSTV" property="firstV"/>
+        <result column="CREATOR" property="creator"/>
+        <result column="CREATETIME" property="createTime"/>
+        <result column="LASTMODIFIER" property="lastModifier"/>
+        <result column="LASTMODIFYTIME" property="lastModifyTime"/>
+        <result column="REVISIONRULE" property="revisionRule"/>
+        <result column="VERSIONRULE" property="versionRule"/>
+        <result column="REVISIONSEQ" property="revisionSeq"/>
+        <result column="REVISIONVALUE" property="revisionValue"/>
+        <result column="VERSIONSEQ" property="versionSeq"/>
+        <result column="VERSIONVALUE" property="versionValue"/>
+        <result column="LCTID" property="lctid"/>
+        <result column="LCSTATUS" property="lcStatus"/>
+        <result column="TS" property="ts"/>
+        <result column="ID" property="id"/>
+        <result column="NAME" property="name"/>
+        <result column="DESCRIPTION" property="description"/>
+        <result column="OWNER" property="owner"/>
+        <result column="COPYFROMVERSION" property="copyFromVersion"/>
+        <result column="SYSTEMOID" property="systemOid"/>
+        <result column="SYSTEMCODE" property="systemCode"/>
+        <result column="SYSTEMNAME" property="systemName"/>
+        <result column="CLASSIFYOID" property="classifyOid"/>
+        <result column="CLASSIFYID" property="classifyId"/>
+        <result column="CLASSIFYNAME" property="classifyName"/>
+        <result column="UNIQUECODE" property="uniqueCode"/>
+        <result column="TYPE" property="type"/>
+        <result column="MSG" property="msg"/>
+        <result column="PARAMSTRING" property="paramString"/>
+        <result column="SENDXML" property="sendXml"/>
+        <result column="RETURNSTRING" property="returnString"/>
+        <result column="INTERFACESTATUS" property="interfaceStatus"/>
+    </resultMap>
+
+
+</mapper>
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
new file mode 100644
index 0000000..58c86ca
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreApplyFormMapper.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.code.mapper.DockingPreApplyFormMapper">
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="DockingPreAttrMappingResultMap" type="com.vci.ubcs.code.entity.DockingPreApplyForm">
+        <result column="OID" property="oid"/>
+        <result column="REVISIONOID" property="revisionOid"/>
+        <result column="NAMEOID" property="nameOid"/>
+        <result column="BTMNAME" property="btmname"/>
+        <result column="LASTR" property="lastR"/>
+        <result column="FIRSTR" property="firstR"/>
+        <result column="LASTV" property="lastV"/>
+        <result column="FIRSTV" property="firstV"/>
+        <result column="CREATOR" property="creator"/>
+        <result column="CREATETIME" property="createTime"/>
+        <result column="LASTMODIFIER" property="lastModifier"/>
+        <result column="LASTMODIFYTIME" property="lastModifyTime"/>
+        <result column="REVISIONRULE" property="revisionRule"/>
+        <result column="VERSIONRULE" property="versionRule"/>
+        <result column="REVISIONSEQ" property="revisionSeq"/>
+        <result column="REVISIONVALUE" property="revisionValue"/>
+        <result column="VERSIONSEQ" property="versionSeq"/>
+        <result column="VERSIONVALUE" property="versionValue"/>
+        <result column="LCTID" property="lctid"/>
+        <result column="LCSTATUS" property="lcStatus"/>
+        <result column="TS" property="ts"/>
+        <result column="ID" property="id"/>
+        <result column="NAME" property="name"/>
+        <result column="DESCRIPTION" property="description"/>
+        <result column="OWNER" property="owner"/>
+        <result column="COPYFROMVERSION" property="copyFromVersion"/>
+        <result column="CODE" property="code"/>
+        <result column="CONTENT" property="content"/>
+        <result column="DATAOID" property="dataOid"/>
+        <result column="DATABTMNAME" property="dataBtmName"/>
+        <result column="MSG" property="msg"/>
+    </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
new file mode 100644
index 0000000..a6a0649
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreAttrMappingMapper.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.code.mapper.DockingPreAttrMappingMapper">
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="DockingPreAttrMappingResultMap" type="com.vci.ubcs.code.entity.DockingPreAttrMapping">
+            <result column="OID" property="oid"/>
+            <result column="REVISIONOID" property="revisionOid"/>
+            <result column="NAMEOID" property="nameOid"/>
+            <result column="BTMNAME" property="btmname"/>
+            <result column="LASTR" property="lastR"/>
+            <result column="FIRSTR" property="firstR"/>
+            <result column="LASTV" property="lastV"/>
+            <result column="FIRSTV" property="firstV"/>
+            <result column="CREATOR" property="creator"/>
+            <result column="CREATETIME" property="createTime"/>
+            <result column="LASTMODIFIER" property="lastModifier"/>
+            <result column="LASTMODIFYTIME" property="lastModifyTime"/>
+            <result column="REVISIONRULE" property="revisionRule"/>
+            <result column="VERSIONRULE" property="versionRule"/>
+            <result column="REVISIONSEQ" property="revisionSeq"/>
+            <result column="REVISIONVALUE" property="revisionValue"/>
+            <result column="VERSIONSEQ" property="versionSeq"/>
+            <result column="VERSIONVALUE" property="versionValue"/>
+            <result column="LCTID" property="lctid"/>
+            <result column="LCSTATUS" property="lcStatus"/>
+            <result column="TS" property="ts"/>
+            <result column="ID" property="id"/>
+            <result column="NAME" property="name"/>
+            <result column="DESCRIPTION" property="description"/>
+            <result column="OWNER" property="owner"/>
+            <result column="COPYFROMVERSION" property="copyFromVersion"/>
+            <result column="DEFAULTVALUE" property="defaultValue"/>
+            <result column="METALISTID" property="metaListId"/>
+            <result column="SOURCECLSFID" property="sourceClassifyId"/>
+            <result column="SOURCECLSFNAME" property="sourceClassifyName"/>
+            <result column="TARGETATTRID" property="targetAttrId"/>
+            <result column="TARGETCLSFID" property="targetClassifyId"/>
+            <result column="VIEWMODEID" property="viewModeId"/>
+            <result column="VIEWMODENAME" property="viewModeName"/>
+            <result column="TARGETATTRKEY" property="targetAttrKey"/>
+            <result column="TARGETATTRNAME" property="targetAttrName"/>
+            <result column="SOURCEATTRKEY" property="sourceAttrKey"/>
+            <result column="SOURCEATTRNAME" property="sourceAttrName"/>
+            <result column="VIEWMODELNAME" property="viewModelName"/>
+            <result column="VIEWNAME" property="viewName"/>
+            <result column="SOURCEATTRNAME" property="targetClassifyName"/>
+    </resultMap>
+</mapper>
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
new file mode 100644
index 0000000..903ee79
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreAttrRangeMapper.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.code.mapper.DockingPreAttrRangeMapper">
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="DockingPreAttrMappingResultMap" type="com.vci.ubcs.code.entity.DockingPreAttrRange">
+        <result column="OID" property="oid"/>
+        <result column="REVISIONOID" property="revisionOid"/>
+        <result column="NAMEOID" property="nameOid"/>
+        <result column="BTMNAME" property="btmname"/>
+        <result column="LASTR" property="lastR"/>
+        <result column="FIRSTR" property="firstR"/>
+        <result column="LASTV" property="lastV"/>
+        <result column="FIRSTV" property="firstV"/>
+        <result column="CREATOR" property="creator"/>
+        <result column="CREATETIME" property="createTime"/>
+        <result column="LASTMODIFIER" property="lastModifier"/>
+        <result column="LASTMODIFYTIME" property="lastModifyTime"/>
+        <result column="REVISIONRULE" property="revisionRule"/>
+        <result column="VERSIONRULE" property="versionRule"/>
+        <result column="REVISIONSEQ" property="revisionSeq"/>
+        <result column="REVISIONVALUE" property="revisionValue"/>
+        <result column="VERSIONSEQ" property="versionSeq"/>
+        <result column="VERSIONVALUE" property="versionValue"/>
+        <result column="LCTID" property="lctid"/>
+        <result column="LCSTATUS" property="lcStatus"/>
+        <result column="TS" property="ts"/>
+        <result column="ID" property="id"/>
+        <result column="NAME" property="name"/>
+        <result column="DESCRIPTION" property="description"/>
+        <result column="OWNER" property="owner"/>
+        <result column="COPYFROMVERSION" property="copyFromVersion"/>
+        <result column="METALISTID" property="metaListId"/>
+        <result column="NUMTEXT" property="numText"/>
+        <result column="NUMTEXTVALUE" property="numTextValue"/>
+        <result column="TARGETNUMTEXT" property="targetNumText"/>
+        <result column="TARGETNUMTEXTVALUE" property="targetNumTextValue"/>
+    </resultMap>
+
+</mapper>
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
new file mode 100644
index 0000000..89fc815
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreClassifyMapper.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.code.mapper.DockingPreClassifyMapper">
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="DockingPreAttrMappingResultMap" type="com.vci.ubcs.code.entity.DockingPreClassify">
+        <result column="OID" property="oid"/>
+        <result column="REVISIONOID" property="revisionOid"/>
+        <result column="NAMEOID" property="nameOid"/>
+        <result column="BTMNAME" property="btmname"/>
+        <result column="LASTR" property="lastR"/>
+        <result column="FIRSTR" property="firstR"/>
+        <result column="LASTV" property="lastV"/>
+        <result column="FIRSTV" property="firstV"/>
+        <result column="CREATOR" property="creator"/>
+        <result column="CREATETIME" property="createTime"/>
+        <result column="LASTMODIFIER" property="lastModifier"/>
+        <result column="LASTMODIFYTIME" property="lastModifyTime"/>
+        <result column="REVISIONRULE" property="revisionRule"/>
+        <result column="VERSIONRULE" property="versionRule"/>
+        <result column="REVISIONSEQ" property="revisionSeq"/>
+        <result column="REVISIONVALUE" property="revisionValue"/>
+        <result column="VERSIONSEQ" property="versionSeq"/>
+        <result column="VERSIONVALUE" property="versionValue"/>
+        <result column="LCTID" property="lctid"/>
+        <result column="LCSTATUS" property="lcStatus"/>
+        <result column="TS" property="ts"/>
+        <result column="ID" property="id"/>
+        <result column="NAME" property="name"/>
+        <result column="DESCRIPTION" property="description"/>
+        <result column="OWNER" property="owner"/>
+        <result column="COPYFROMVERSION" property="copyFromVersion"/>
+        <result column="CLASSNAME" property="className"/>
+        <result column="NODELINK" property="nodeLink"/>
+        <result column="NODELINKNAME" property="getNodeLinkName"/>
+        <result column="PID" property="pid"/>
+    </resultMap>
+
+</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
new file mode 100644
index 0000000..f30a2ca
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreMetaAttrMapper.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.code.mapper.DockingPreMetaAttrMapper">
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="DockingPreAttrMappingResultMap" type="com.vci.ubcs.code.entity.DockingPreMetaAttr">
+        <result column="OID" property="oid"/>
+        <result column="REVISIONOID" property="revisionOid"/>
+        <result column="NAMEOID" property="nameOid"/>
+        <result column="BTMNAME" property="btmname"/>
+        <result column="LASTR" property="lastR"/>
+        <result column="FIRSTR" property="firstR"/>
+        <result column="LASTV" property="lastV"/>
+        <result column="FIRSTV" property="firstV"/>
+        <result column="CREATOR" property="creator"/>
+        <result column="CREATETIME" property="createTime"/>
+        <result column="LASTMODIFIER" property="lastModifier"/>
+        <result column="LASTMODIFYTIME" property="lastModifyTime"/>
+        <result column="REVISIONRULE" property="revisionRule"/>
+        <result column="VERSIONRULE" property="versionRule"/>
+        <result column="REVISIONSEQ" property="revisionSeq"/>
+        <result column="REVISIONVALUE" property="revisionValue"/>
+        <result column="VERSIONSEQ" property="versionSeq"/>
+        <result column="VERSIONVALUE" property="versionValue"/>
+        <result column="LCTID" property="lctid"/>
+        <result column="LCSTATUS" property="lcStatus"/>
+        <result column="TS" property="ts"/>
+        <result column="ID" property="id"/>
+        <result column="NAME" property="name"/>
+        <result column="DESCRIPTION" property="description"/>
+        <result column="OWNER" property="owner"/>
+        <result column="COPYFROMVERSION" property="copyFromVersion"/>
+        <result column="CHINESENAME" property="chineseName"/>
+        <result column="ENGLISHNAME" property="englishName"/>
+        <result column="METADATATYPE" property="metaDataType"/>
+        <result column="NECESSARYCONF" property="necesSaryConf"/>
+        <result column="RANGE" property="range"/>
+        <result column="PID" property="pid"/>
+        <result column="SOURCECLSFID" property="sourceClassifyId"/>
+        <result column="VIEWMODEID" property="viewModelId"/>
+        <result column="DEFAULTVALUE" property="defaultValue"/>
+    </resultMap>
+
+</mapper>
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
new file mode 100644
index 0000000..8801524
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/DockingPreViewMapper.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.code.mapper.DockingPreViewModelMapper">
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="DockingPreAttrMappingResultMap" type="com.vci.ubcs.code.entity.DockingPreViewModel">
+        <result column="OID" property="oid"/>
+        <result column="REVISIONOID" property="revisionOid"/>
+        <result column="NAMEOID" property="nameOid"/>
+        <result column="BTMNAME" property="btmname"/>
+        <result column="LASTR" property="lastR"/>
+        <result column="FIRSTR" property="firstR"/>
+        <result column="LASTV" property="lastV"/>
+        <result column="FIRSTV" property="firstV"/>
+        <result column="CREATOR" property="creator"/>
+        <result column="CREATETIME" property="createTime"/>
+        <result column="LASTMODIFIER" property="lastModifier"/>
+        <result column="LASTMODIFYTIME" property="lastModifyTime"/>
+        <result column="REVISIONRULE" property="revisionRule"/>
+        <result column="VERSIONRULE" property="versionRule"/>
+        <result column="REVISIONSEQ" property="revisionSeq"/>
+        <result column="REVISIONVALUE" property="revisionValue"/>
+        <result column="VERSIONSEQ" property="versionSeq"/>
+        <result column="VERSIONVALUE" property="versionValue"/>
+        <result column="LCTID" property="lctid"/>
+        <result column="LCSTATUS" property="lcStatus"/>
+        <result column="TS" property="ts"/>
+        <result column="ID" property="id"/>
+        <result column="NAME" property="name"/>
+        <result column="DESCRIPTION" property="description"/>
+        <result column="OWNER" property="owner"/>
+        <result column="COPYFROMVERSION" property="copyFromVersion"/>
+        <result column="VIEWNAME" property="viewName"/>
+        <result column="SOURCECLSFID" property="sourceClassifyId"/>
+        <result column="IMPACTLIST" property="impactList"/>
+    </resultMap>
+
+</mapper>
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/test/java/util.java b/Source/UBCS/ubcs-service/ubcs-code/src/test/java/util.java
new file mode 100644
index 0000000..b112e8a
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/test/java/util.java
@@ -0,0 +1,46 @@
+
+
+import com.vci.ubcs.code.service.ICodeClassifyService;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import javax.annotation.Resource;
+import java.io.File;
+import java.io.IOException;
+
+//鍒楀嚭File鐨勪竴浜涘父鐢ㄦ搷浣�
+public class util {
+
+
+
+
+    /**
+     * 閬嶅巻鎸囧畾鐩綍涓嬶紙鍖呮嫭鍏跺瓙鐩綍锛夌殑鎵�鏈夋枃浠讹紝骞跺垹闄や互 lastUpdated 缁撳熬鐨勬枃浠�
+     * @param dir 鐩綍鐨勪綅缃� path
+     * @throws IOException
+     */
+    public static void listDirectory(File dir) throws IOException {
+        if (!dir.exists())
+            throw new IllegalArgumentException("鐩綍锛�" + dir + "涓嶅瓨鍦�.");
+        if (!dir.isDirectory()) {
+            throw new IllegalArgumentException(dir + " 涓嶆槸鐩綍銆�");
+        }
+        File[] files = dir.listFiles();
+        if (files != null && files.length > 0) {
+            for (File file : files) {
+                if (file.isDirectory())
+                    //閫掑綊
+                    listDirectory(file);
+                else{ // 鍒犻櫎浠� lastUpdated 缁撳熬鐨勬枃浠�
+                    String fileName = file.getName();
+                    boolean isLastupdated = fileName.toLowerCase().endsWith("lastupdated");
+                    if (isLastupdated){
+                        boolean is_delete = file.delete();
+                        System.out.println("鍒犻櫎鐨勬枃浠跺悕 => " + file.getName() + "  || 鏄惁鍒犻櫎鎴愬姛锛� ==> " + is_delete);
+                    }
+                }
+            }
+        }
+    }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/RevisionRuleController.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/RevisionRuleController.java
new file mode 100644
index 0000000..5df32ff
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/RevisionRuleController.java
@@ -0,0 +1,97 @@
+package com.vci.ubcs.omd.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.omd.dto.RevisionRuleDTO;
+import com.vci.ubcs.omd.entity.RevisionRule;
+import com.vci.ubcs.omd.service.IRevisionRuleService;
+import com.vci.ubcs.omd.vo.RevisionRuleVO;
+import com.vci.ubcs.omd.wrapper.RevisionRuleWrapper;
+import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * Description: 鐗堟湰瑙勫垯鎺у埗鍣�
+ *
+ * @author LiHang
+ * @date 2023/5/17
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/revision-rule")
+@Api(value = "鐗堟湰瑙勫垯鎺у埗鍣�", tags = "鐗堟湰瑙勫垯鎺ュ彛")
+public class RevisionRuleController {
+
+	private final IRevisionRuleService revisionRuleService;
+
+	/**
+	 * 鏌ョ湅璇︽儏
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "鏌ョ湅璇︽儏", notes = "鐗堟湰瑙勫垯")
+	public R<RevisionRuleVO> detail(RevisionRuleDTO ruleDTO){
+		RevisionRule rule = revisionRuleService.getOne(Condition.getQueryWrapper(BeanUtil.copy(ruleDTO, RevisionRule.class)));
+		return R.data(RevisionRuleWrapper.build().entityVO(rule));
+	}
+
+	/**
+	 * 鍒嗛〉鏌ヨ
+	 */
+	@GetMapping("page")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "鍒嗛〉鏌ヨ鐗堟湰瑙勫垯",notes = "鍒嗛〉鏌ヨ鐗堟湰瑙勫垯")
+	public R<IPage<RevisionRuleVO>> page(BaseQueryObject baseQueryObject){
+		return R.data(revisionRuleService.pageQueryVO(baseQueryObject));
+	}
+
+	/**
+	 * 鏂板鎴栦慨鏀�
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "鏂板鎴栦慨鏀�",notes = "浼犲叆鐗堟湰瑙勫垯椤甸潰瀵硅薄")
+	public R<RevisionRuleVO> submit(@RequestBody RevisionRuleDTO ruleDTO){
+		return R.data(revisionRuleService.addSave(ruleDTO));
+	}
+
+	/**
+	 * 鏂板鎴栦慨鏀�
+	 */
+	@PostMapping("/batch-submit")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "鏂板鎴栦慨鏀�",notes = "浼犲叆鐗堟湰瑙勫垯椤甸潰瀵硅薄")
+	public R<List<RevisionRuleVO>> batchSubmit(@RequestBody List<RevisionRuleDTO> ruleDTOList){
+		return R.data(revisionRuleService.batchAddSave(ruleDTOList));
+	}
+
+	/**
+	 * 鍒犻櫎
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆涓婚敭")
+	public R remove(@RequestBody RevisionRuleVO revisionRuleVO){
+		revisionRuleService.delete(revisionRuleVO);
+		return R.status(true);
+	}
+
+	/**
+	 * 鎵归噺鍒犻櫎
+	 */
+	@PostMapping("/batch-remove")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "鎵归噺鍒犻櫎",notes = "浼犲叆涓婚敭")
+	public R batchRemove(@RequestBody List<RevisionRuleVO> revisionRuleVOList){
+		revisionRuleService.batchDelete(revisionRuleVOList);
+		return R.status(true);
+	}
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/StatusController.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/StatusController.java
new file mode 100644
index 0000000..a7562b9
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/StatusController.java
@@ -0,0 +1,102 @@
+package com.vci.ubcs.omd.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.omd.entity.Status;
+import com.vci.ubcs.omd.service.IStatusService;
+import com.vci.ubcs.omd.vo.StatusVO;
+import com.vci.ubcs.omd.wrapper.StatusWrapper;
+import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Description: 鐘舵�佹睜鎺у埗鍣�
+ *
+ * @author LiHang
+ * @date 2023/5/23
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/status")
+@Api(value = "鐘舵�佹睜鎺у埗鍣�", tags = "鐘舵�佹睜鎺ュ彛")
+public class StatusController {
+
+	private final IStatusService statusService;
+
+	/**
+	 * 鏌ョ湅璇︽儏
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "鏌ョ湅璇︽儏", notes = "鐘舵�佹睜")
+	public R<StatusVO> detail(StatusVO statusVO){
+		Status status = statusService.getOne(Condition.getQueryWrapper(BeanUtil.copy(statusVO, Status.class)));
+		return R.data(StatusWrapper.build().entityVO(status));
+	}
+
+	/**
+	 * 鍒嗛〉鏌ヨ
+	 */
+	@GetMapping("page")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "鍒嗛〉鏌ヨ鐘舵�佹睜",notes = "鍒嗛〉鏌ヨ鐘舵�佹睜")
+	public R<IPage<StatusVO>> page(BaseQueryObject baseQueryObject){
+		Map<String, String> conditionMap = baseQueryObject.getConditionMap();
+		if (conditionMap == null){
+			conditionMap = new HashMap<>();
+		}
+		return R.data(statusService.listStatus(conditionMap,baseQueryObject.getPageHelper()));
+	}
+
+	/**
+	 * 鏂板鎴栦慨鏀�
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "鏂板鎴栦慨鏀�",notes = "浼犲叆鐘舵�佹睜椤甸潰瀵硅薄")
+	public R<StatusVO> submit(@RequestBody StatusVO statusVO){
+		return R.data(statusService.addSave(statusVO));
+	}
+
+	/**
+	 * 鏂板鎴栦慨鏀�
+	 */
+	@PostMapping("/batch-submit")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "鏂板鎴栦慨鏀�",notes = "浼犲叆鐘舵�佹睜椤甸潰瀵硅薄")
+	public R<List<StatusVO>> batchSubmit(@RequestBody List<StatusVO> statusVOList){
+		return R.data(statusService.batchAddSave(statusVOList));
+	}
+
+	/**
+	 * 鍒犻櫎
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆涓婚敭")
+	public R remove(@RequestBody StatusVO StatusVO){
+		statusService.delete(StatusVO);
+		return R.status(true);
+	}
+
+	/**
+	 * 鎵归噺鍒犻櫎
+	 */
+	@PostMapping("/batch-remove")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "鎵归噺鍒犻櫎",notes = "浼犲叆涓婚敭")
+	public R batchRemove(@RequestBody List<StatusVO> StatusVOList){
+		statusService.batchDelete(StatusVOList);
+		return R.status(true);
+	}
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/BtmTypeClient.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/BtmTypeClient.java
index 9cc00c3..1999394 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/BtmTypeClient.java
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/BtmTypeClient.java
@@ -14,6 +14,7 @@
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RestController;
 import springfox.documentation.annotations.ApiIgnore;
 
@@ -41,6 +42,7 @@
 	 * @return 涓氬姟绫诲瀷璇︽儏淇℃伅
 	 */
 	@Override
+	@GetMapping(GET_DETAIL)
 	public R<BtmTypeVO> getDetail(String oid) {
 		return R.data(btmTypeService.getBtmTypeByOid(oid));
 	}
@@ -54,6 +56,7 @@
 	 * @return 鏌ヨ缁撴灉
 	 */
 	@Override
+	@GetMapping(GET_REF_PAGE)
 	public R<IPage<BtmTypeVO>> getRefPage(Map<String, Object> condition, Query query, String domain) {
 		Func.requireNotNull(domain,"棰嗗煙鍊�");
 		IPage<BtmType> page = btmTypeService.page(Condition.getPage(query), Condition.getQueryWrapper(condition, BtmType.class).lambda().eq(BtmType::getDomain, domain).orderByAsc(BtmType::getId));
@@ -73,6 +76,7 @@
 	 * @return 鏌ヨ缁撴灉
 	 */
 	@Override
+	@GetMapping(GET_REF)
 	public R<List<BtmTypeVO>> getRef(Map<String, Object> condition, String domain) {
 		Func.requireNotNull(domain,"棰嗗煙鍊�");
 		List<BtmType> list = btmTypeService.list(Condition.getQueryWrapper(condition, BtmType.class).lambda().eq(BtmType::getDomain, domain).orderByAsc(BtmType::getId));
@@ -86,6 +90,7 @@
 	 * @return 涓氬姟瀵硅薄
 	 */
 	@Override
+	@GetMapping(GET_BY_IDS)
 	public R<List<BtmTypeVO>> selectByIdCollection(List<String> ids) {
 		Func.requireNotNull(ids,"涓氬姟绫诲瀷鑻辨枃鍚嶇О");
 		List<BtmTypeVO> voList = BtmTypeWrapper.build().listEntityVO(
@@ -104,6 +109,7 @@
 	 * @return 涓氬姟绫诲瀷鍒楄〃锛屽鏋滄湁涓嶅瓨鍦ㄧ殑涓嶄細杩斿洖锛屽叏閮ㄤ笉瀛樺湪鐨勫垯杩斿洖绌哄垪琛�
 	 */
 	@Override
+	@GetMapping(GET_BY_OIDS)
 	public R<List<BtmTypeVO>> listBtmTypeByOidCollection(Collection<String> pkBtmTypeCollection) {
 		Func.requireNotNull(pkBtmTypeCollection,"涓氬姟绫诲瀷涓婚敭");
 		List<BtmTypeVO> voList = BtmTypeWrapper.build().listEntityVO(
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/RevisionRuleClient.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/RevisionRuleClient.java
new file mode 100644
index 0000000..91090da
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/RevisionRuleClient.java
@@ -0,0 +1,97 @@
+package com.vci.ubcs.omd.feign;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.vci.ubcs.omd.entity.RevisionRule;
+import com.vci.ubcs.omd.service.IRevisionRuleService;
+import com.vci.ubcs.omd.vo.RevisionRuleVO;
+import com.vci.ubcs.omd.wrapper.RevisionRuleWrapper;
+import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
+import com.vci.ubcs.starter.web.pagemodel.PageHelper;
+import lombok.AllArgsConstructor;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springframework.cglib.beans.BeanMap;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+import java.util.*;
+
+/**
+ * Description:
+ *
+ * @author LiHang
+ * @date 2023/5/22
+ */
+@NonDS
+@ApiIgnore()
+@RestController
+@AllArgsConstructor
+public class RevisionRuleClient implements IRevisionRuleClient{
+
+	private final IRevisionRuleService service;
+	/**
+	 * 鑾峰彇鐗堟湰瑙勫垯璇︽儏淇℃伅
+	 *
+	 * @param oid 涓婚敭
+	 * @return 鐗堟湰瑙勫垯璇︽儏淇℃伅
+	 */
+	@GetMapping(GET_DETAIL)
+	@Override
+	public R<RevisionRuleVO> getDetail(String oid) {
+		return R.data(RevisionRuleWrapper.build().entityVO(service.getOne(Wrappers.<RevisionRule>query().lambda().eq(RevisionRule::getOid,oid))));
+	}
+
+	/**
+	 * 鍙傜収鍒楄〃鏌ヨ
+	 *
+	 * @param baseQueryObject 鏌ヨ鏉′欢
+	 * @return 鏌ヨ缁撴灉
+	 */
+	@GetMapping(GET_REF_PAGE)
+	@Override
+	public R<IPage<RevisionRuleVO>> getRefPage(BaseQueryObject baseQueryObject) {
+		return R.data(service.pageQueryVO(baseQueryObject));
+	}
+
+	/**
+	 * 鍙傜収鍒楄〃鏌ヨ
+	 *
+	 * @param baseQueryObject 鏌ヨ鏉′欢
+	 * @return 鏌ヨ缁撴灉
+	 */
+	@Override
+	@GetMapping(GET_REF)
+	public R<List<RevisionRuleVO>> getRef(BaseQueryObject baseQueryObject) {
+		RevisionRule query = new RevisionRule();
+		BeanMap.create(query).putAll(Optional.ofNullable(baseQueryObject.getConditionMap()).orElseGet(HashMap::new));
+		return R.data(RevisionRuleWrapper.build().listEntityVO(service.list(Condition.getQueryWrapper(query))));
+	}
+
+	/**
+	 * 鏍规嵁鑻辨枃鍚嶇О鎵归噺鏌ヨ瀵硅薄
+	 *
+	 * @param ids 瀵硅薄鑻辨枃鍚嶇О 浣嗘槸涓嶈兘瓒呰繃1000
+	 * @return 涓氬姟瀵硅薄
+	 */
+	@Override
+	@GetMapping(GET_BY_IDS)
+	public R<List<RevisionRuleVO>> selectByIdCollection(List<String> ids) {
+		return R.data(service.listRevisionRuleByIdCollection(ids));
+	}
+
+	/**
+	 * 鎵归噺鏍规嵁涓婚敭鑾峰彇鐗堟湰瑙勫垯
+	 *
+	 * @param oidCollection 鐗堟湰瑙勫垯涓婚敭闆嗗悎
+	 * @return 鐗堟湰瑙勫垯鍒楄〃锛屽鏋滄湁涓嶅瓨鍦ㄧ殑涓嶄細杩斿洖锛屽叏閮ㄤ笉瀛樺湪鐨勫垯杩斿洖绌哄垪琛�
+	 */
+	@Override
+	@GetMapping(GET_BY_OIDS)
+	public R<List<RevisionRuleVO>> listBtmTypeByOidCollection(Collection<String> oidCollection) {
+		return R.data(service.listRevisionRuleByOidCollection(oidCollection));
+	}
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/StatusClient.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/StatusClient.java
new file mode 100644
index 0000000..2158d86
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/StatusClient.java
@@ -0,0 +1,79 @@
+package com.vci.ubcs.omd.feign;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.vci.ubcs.omd.entity.Status;
+import com.vci.ubcs.omd.service.IStatusService;
+import com.vci.ubcs.omd.vo.StatusVO;
+import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
+import com.vci.ubcs.starter.web.util.VciBaseUtil;
+import lombok.AllArgsConstructor;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.StringUtil;
+import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Description: 鐘舵�佹睜鐨凢eign
+ *
+ * @author LiHang
+ * @date 2023/5/23
+ */
+@NonDS
+@ApiIgnore
+@RestController
+@AllArgsConstructor
+public class StatusClient implements IStatusClient{
+
+	private final IStatusService service;
+	/**
+	 * 鍙傜収鍒楄〃鏌ヨ
+	 *
+	 * @param baseQueryObject 鏌ヨ鏉′欢瀵硅薄
+	 * @return 鎵ц缁撴灉
+	 */
+	@Override
+	public R<IPage<StatusVO>> getRefPage(BaseQueryObject baseQueryObject) {
+		Map<String, String> conditionMap = baseQueryObject.getConditionMap();
+		if (conditionMap == null) {
+			conditionMap = new HashMap<>(16);
+		}
+		return R.data(service.listStatus(conditionMap,baseQueryObject.getPageHelper()));
+	}
+
+	/**
+	 * 鍙傜収鏌ヨ
+	 *
+	 * @param baseQueryObject 鏌ヨ鏉′欢瀵硅薄
+	 * @return 鎵ц缁撴灉
+	 */
+	@Override
+	public R<List<StatusVO>> getRef(BaseQueryObject baseQueryObject) {
+		return R.data(service.listStatusNoPage(baseQueryObject.getConditionMap()));
+	}
+
+	/**
+	 * 鑻辨枃鏌ヨ涓枃鍚嶇О
+	 *
+	 * @param ids 鑻辨枃
+	 * @return 鏌ヨ缁撴灉
+	 */
+	@Override
+	public R<Map<String,String>> getNameByIds(String ids) {
+		VciBaseUtil.alertNotNull(ids,"鑻辨枃鍚嶇О");
+		List<String> idList = Func.toStrList(",", ids);
+		List<Status> list = service.list(Wrappers.<Status>query().lambda().in(Status::getId, idList));
+		Map<String,String> map = new HashMap<>(16);
+		list.stream().peek(s -> {
+			String key = idList.stream().filter(id -> StringUtil.equals(id, s.getId())).findFirst().get();
+			map.put(key,s.getName());
+		});
+		return R.data(map);
+	}
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/BtmTypeAttributeMapper.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/BtmTypeAttributeMapper.java
index 23db8b1..01bc4e0 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/BtmTypeAttributeMapper.java
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/BtmTypeAttributeMapper.java
@@ -1,5 +1,6 @@
 package com.vci.ubcs.omd.mapper;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.vci.ubcs.omd.entity.BtmTypeAttribute;
 import org.apache.ibatis.annotations.Param;
 import org.springblade.core.mp.mapper.BladeMapper;
@@ -13,7 +14,7 @@
  * @author LiHang
  * @date 2023/4/23
  */
-public interface BtmTypeAttributeMapper extends BladeMapper<BtmTypeAttribute> {
+public interface BtmTypeAttributeMapper extends BaseMapper<BtmTypeAttribute> {
 
     int batchDelete(@Param("records") List<String> records);
 
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/BtmTypeMapper.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/BtmTypeMapper.java
index 7d153eb..a8a804c 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/BtmTypeMapper.java
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/BtmTypeMapper.java
@@ -1,6 +1,7 @@
 package com.vci.ubcs.omd.mapper;
 
 import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.vci.ubcs.omd.entity.BtmTypeAttribute;
 import com.vci.ubcs.omd.entity.BtmType;
 import org.apache.ibatis.annotations.Param;
@@ -10,7 +11,7 @@
 import java.util.Collection;
 import java.util.List;
 
-public interface BtmTypeMapper extends BladeMapper<BtmType> {
+public interface BtmTypeMapper extends BaseMapper<BtmType> {
     /**
      * 鏍规嵁涓婚敭鍒犻櫎瀵硅薄
      * @param oid 鐢熷懡鍛ㄦ湡涓婚敭
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/RevisionRuleMapper.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/RevisionRuleMapper.java
new file mode 100644
index 0000000..29aeb60
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/RevisionRuleMapper.java
@@ -0,0 +1,14 @@
+package com.vci.ubcs.omd.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.vci.ubcs.omd.entity.RevisionRule;
+
+/**
+ * Description: 鐗堟湰瑙勫垯鏁版嵁灞�
+ *
+ * @author LiHang
+ * @date 2023/5/17
+ */
+public interface RevisionRuleMapper extends BaseMapper<RevisionRule> {
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/StatusMapper.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/StatusMapper.java
new file mode 100644
index 0000000..775603a
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/StatusMapper.java
@@ -0,0 +1,13 @@
+package com.vci.ubcs.omd.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.vci.ubcs.omd.entity.Status;
+
+/**
+ * Description: 鐘舵�佹睜鏁版嵁灞�
+ *
+ * @author LiHang
+ * @date 2023/5/23
+ */
+public interface StatusMapper extends BaseMapper<Status> {
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IRevisionRuleService.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IRevisionRuleService.java
new file mode 100644
index 0000000..3310980
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IRevisionRuleService.java
@@ -0,0 +1,191 @@
+package com.vci.ubcs.omd.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.vci.ubcs.omd.dto.RevisionRuleDTO;
+import com.vci.ubcs.omd.entity.RevisionRule;
+import com.vci.ubcs.omd.vo.BtmTypeVO;
+import com.vci.ubcs.omd.vo.RevisionRuleVO;
+import com.vci.ubcs.starter.exception.VciBaseException;
+import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
+import org.springblade.core.mp.support.Query;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Description: 鐗堟湰瑙勫垯鏈嶅姟瀹氫箟
+ *
+ * @author LiHang
+ * @date 2023/5/17
+ */
+public interface IRevisionRuleService extends IService<RevisionRule> {
+	/**
+	 * 鑾峰彇鐗堟湰瑙勫垯鍒楄〃
+	 * @param condition 鏌ヨ鏉′欢
+	 * @param query 鍒嗛〉淇℃伅鍜屾帓搴忎俊鎭紝榛樿浣跨敤id鎺掑簭
+	 * @return 鐗堟湰瑙勫垯瀵硅薄鍒楄〃
+	 * @throws VciBaseException 鏌ヨ鍑洪敊鏃朵細鎶涘嚭寮傚父
+	 */
+	IPage<RevisionRuleVO> listRevisionRule(Map<String, String> condition, Query query) throws VciBaseException;
+
+	/**
+	 * 鏍规嵁涓婚敭鑾峰彇鐗堟湰瑙勫垯
+	 * @param pkRevisionRule 鐗堟湰瑙勫垯涓婚敭
+	 * @return 鐗堟湰瑙勫垯锛屽鏋滀笉瀛樺湪浼氳繑鍥瀗ull
+	 * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欐椂浼氭姏鍑洪敊璇�
+	 */
+	RevisionRuleVO getRevisionRuleByOid(String pkRevisionRule) throws VciBaseException;
+
+	/**
+	 * 鏍规嵁涓婚敭鎵归噺鑾峰彇鐗堟湰瑙勫垯
+	 * @param pkRevisionRules 鐗堟湰瑙勫垯涓婚敭锛岀敤閫楀彿鍒嗛殧
+	 * @return 鐗堟湰瑙勫垯鍒楄〃锛屽鏋滄湁涓嶅瓨鍦ㄧ殑涓嶄細杩斿洖锛屽叏閮ㄤ笉瀛樺湪鐨勫垯杩斿洖绌哄垪琛�
+	 * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欐椂浼氭姏鍑洪敊璇�
+	 */
+	List<RevisionRuleVO> listRevisionRuleByOids(String pkRevisionRules) throws VciBaseException;
+
+	/**
+	 * 鎵归噺鏍规嵁涓婚敭鑾峰彇鐗堟湰瑙勫垯
+	 * @param pkRevisionRuleCollection 鐗堟湰瑙勫垯涓婚敭闆嗗悎
+	 * @return 鐗堟湰瑙勫垯鍒楄〃锛屽鏋滄湁涓嶅瓨鍦ㄧ殑涓嶄細杩斿洖锛屽叏閮ㄤ笉瀛樺湪鐨勫垯杩斿洖绌哄垪琛�
+	 * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欐椂浼氭姏鍑洪敊璇�
+	 */
+	List<RevisionRuleVO> listRevisionRuleByOidCollection(Collection<String> pkRevisionRuleCollection) throws VciBaseException;
+
+	/**
+	 * 鏍规嵁鑻辨枃鍚嶇О鑾峰彇鐗堟湰瑙勫垯
+	 * @param id 鑻辨枃鍚嶇О
+	 * @return 鐗堟湰瑙勫垯锛屽鏋滀笉瀛樺湪浼氳繑鍥瀗ull
+	 * @throws VciBaseException
+	 */
+	RevisionRuleVO getRevisionRuleById(String id) throws VciBaseException;
+
+	/**
+	 * 鏍规嵁鑻辨枃鍚嶇О鎵归噺鑾峰彇鐗堟湰瑙勫垯
+	 * @param ids 鑻辨枃鍚嶇О锛屼娇鐢ㄩ�楀彿鍒嗛殧
+	 * @return  鐗堟湰瑙勫垯鍒楄〃锛屽鏋滄湁涓嶅瓨鍦ㄧ殑涓嶄細杩斿洖锛屽叏閮ㄤ笉瀛樺湪鐨勫垯杩斿洖绌哄垪琛�
+	 * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欐椂浼氭姏鍑洪敊璇�
+	 */
+	List<RevisionRuleVO> listRevisionRuleByIds(String ids) throws VciBaseException;
+
+	/**
+	 * 鏍规嵁鑻辨枃鍚嶇О闆嗗悎鎵归噺鑾峰彇鐗堟湰瑙勫垯
+	 * @param revisionRuleIdCollection 鑻辨枃鍚嶇О闆嗗悎锛屼娇鐢ㄩ�楀彿鍒嗛殧
+	 * @return 鐗堟湰瑙勫垯鍒楄〃锛屽鏋滄湁涓嶅瓨鍦ㄧ殑涓嶄細杩斿洖锛屽叏閮ㄤ笉瀛樺湪鐨勫垯杩斿洖绌哄垪琛�
+	 * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欐椂浼氭姏鍑洪敊璇�
+	 */
+	List<RevisionRuleVO> listRevisionRuleByIdCollection(Collection<String> revisionRuleIdCollection) throws VciBaseException;
+
+	/**
+	 * 鏍规嵁鐗堟湰瑙勫垯涓婚敭鑾峰彇涓枃鍚嶇О
+	 * @param oid 鐗堟湰瑙勫垯涓婚敭锛屽涓娇鐢ㄩ�楀彿鍒嗛殧
+	 * @return 涓枃鍚嶇О锛屽鏋滀笉瀛樺湪浼氳繑鍥瀗ull;澶氫釜浼氫互閫楀彿鍒嗛殧
+	 * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欐椂浼氭姏鍑洪敊璇�
+	 */
+	String getNameByOid(String oid) throws VciBaseException;
+
+	/**
+	 * 鏍规嵁鐗堟湰瑙勫垯鑻辨枃鍚嶇О鑾峰彇涓枃鍚嶇О
+	 * @param id 鐗堟湰瑙勫垯鑻辨枃鍚嶇О
+	 * @return 涓枃鍚嶇О锛屽鏋滀笉瀛樺湪浼氳繑鍥瀗ull;澶氫釜浼氫互閫楀彿鍒嗛殧
+	 * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欐椂浼氭姏鍑洪敊璇�
+	 */
+	String getNameById(String id) throws VciBaseException;
+	/**
+	 * 娣诲姞鐗堟湰瑙勫垯
+	 * @param revisionRuleDTO 鐗堟湰瑙勫垯鏄剧ず瀵硅薄锛堝拰DTO鍏辩敤锛�
+	 * @return 娣诲姞鍚庣殑鐗堟湰瑙勫垯
+	 * @throws VciBaseException 娣诲姞鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
+	 */
+	RevisionRuleVO addSave(RevisionRuleDTO revisionRuleDTO) throws VciBaseException;
+
+	/**
+	 * 鎵归噺娣诲姞鐗堟湰瑙勫垯
+	 * @param revisionRuleDTOList 鐗堟湰瑙勫垯鏄剧ず瀵硅薄鍒楄〃(鍜孌TO鍏辩敤)
+	 * @return 鎵归噺娣诲姞鍚庣殑鐗堟湰瑙勫垯
+	 * @throws VciBaseException 娣诲姞鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
+	 */
+	List<RevisionRuleVO> batchAddSave(List<RevisionRuleDTO> revisionRuleDTOList) throws VciBaseException;
+
+
+	/**
+	 * 淇敼鐗堟湰瑙勫垯
+	 * @param revisionRuleDTO 鐗堟湰瑙勫垯鏄剧ず瀵硅薄锛堝拰DTO鍏辩敤锛�
+	 * @return 淇敼鍚庣殑鐗堟湰瑙勫垯
+	 * @throws VciBaseException 淇敼鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
+	 */
+	RevisionRuleVO editSave(RevisionRuleDTO revisionRuleDTO) throws VciBaseException;
+
+	/**
+	 * 鎵归噺淇敼鐗堟湰瑙勫垯
+	 * @param revisionRuleDTOList 鐗堟湰瑙勫垯鏄剧ず瀵硅薄鍒楄〃锛堝拰DTO鍏辩敤锛�
+	 * @return 鎵归噺淇敼鍚庣殑鐗堟湰瑙勫垯
+	 * @throws VciBaseException 淇敼鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
+	 */
+	List<RevisionRuleVO> batchEditSave(List<RevisionRuleDTO> revisionRuleDTOList) throws VciBaseException;
+
+	/**
+	 * 鍒犻櫎鐗堟湰瑙勫垯
+	 * @param revisionRuleVO 鐗堟湰瑙勫垯鏄剧ず瀵硅薄
+	 * @throws VciBaseException 濡傛灉鐗堟湰瑙勫垯琚紩鐢紝鎴栬�呭垹闄ゅ嚭閿欐椂浼氭姏鍑哄紓甯�
+	 */
+	void delete(RevisionRuleVO revisionRuleVO) throws VciBaseException;
+
+	/**
+	 * 鎵归噺鍒犻櫎鐗堟湰瑙勫垯
+	 * @param revisionRuleVOList 瑕佸垹闄ょ殑鐗堟湰瑙勫垯鏄剧ず瀵硅薄鍒楄〃
+	 * @throws VciBaseException 濡傛灉鐗堟湰瑙勫垯琚紩鐢紝鎴栬�呭垹闄ゅ嚭閿欐椂浼氭姏鍑哄紓甯�
+	 */
+	void batchDelete(List<RevisionRuleVO> revisionRuleVOList) throws VciBaseException;
+
+	/**
+	 * 鎵归噺鏍¢獙鐗堟湰瑙勫垯鏄惁琚娇鐢�
+	 * @param oidCollection 涓婚敭闆嗗悎
+	 * @return true琛ㄧず琚紩鐢�
+	 */
+	boolean batchCheckRevisionRuleUsed(Collection<String> oidCollection);
+
+	/**
+	 * 鑾峰彇浣跨敤鐗堟湰瑙勫垯鐨勪笟鍔$被鍨�
+	 * @param pkRevisionRule 鐗堟湰瑙勫垯鐨勪富閿�
+	 * @return 寮曠敤鐨勪笟鍔$被鍨�
+	 * @throws VciBaseException 鏌ヨ鍑洪敊鏃朵細鎶涘嚭寮傚父
+	 */
+	List<BtmTypeVO> listRevisionRuleUsedInfo(String pkRevisionRule) throws VciBaseException;
+
+	/**
+	 * 鏍¢獙鐗堟湰瑙勫垯鏄惁琚紩鐢�
+	 * @param pkRevisionRule 鐗堟湰瑙勫垯鐨勪富閿�
+	 * @return true琛ㄧず琚紩鐢紝 false琛ㄧず娌℃湁琚紩鐢�
+	 * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欐椂浼氭姏鍑洪敊璇�
+	 */
+	boolean checkRevisionRuleUsed(String pkRevisionRule) throws VciBaseException;
+
+	/**
+	 * 鍒ゆ柇鐗堟湰瑙勫垯鏄惁瀛樺湪
+	 * @param revisionRuleId 鐗堟湰瑙勫垯鐨勮嫳鏂囧悕绉�
+	 * @return true琛ㄧず閮藉瓨鍦紝false琛ㄧず涓嶅瓨鍦�
+	 * @throws VciBaseException 鍙傛暟閿欒鎴栬�呮煡璇㈠嚭閿欎細鎶涘嚭寮傚父
+	 */
+	boolean checkRevisionRuleExist(String revisionRuleId) throws VciBaseException;
+
+	/**
+	 * 鑾峰彇涓嬩竴涓増鏈殑鍊�
+	 * @param ruleId 鐗堟湰鐨勮鍒�
+	 * @param currentRevisionValue 褰撳墠鐗堟湰鐨勫�硷紝涓虹┖鐨勬椂鍊欙紝璇存槑鏄柊澧�
+	 * @return 涓嬩竴涓増鏈彿
+	 * @throws VciBaseException 鐗堟湰瑙勫垯涓嶅瓨鍦ㄧ殑鏃跺�欎細鎶涘嚭寮傚父
+	 */
+	String getNextRevisionValue(String ruleId, String currentRevisionValue) throws VciBaseException;
+
+	/**
+	 * 鍒嗛〉鏌ヨ
+	 * @param baseQueryObject 鏌ヨ瀵硅薄
+	 * @return 鏌ヨ缁撴灉
+	 * @throws VciBaseException 鏌ヨ鍑洪敊鏃舵姏鍑哄紓甯�
+	 */
+	IPage<RevisionRuleVO> pageQueryVO(BaseQueryObject baseQueryObject) throws VciBaseException;
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IStatusService.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IStatusService.java
new file mode 100644
index 0000000..2ce2f32
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IStatusService.java
@@ -0,0 +1,164 @@
+package com.vci.ubcs.omd.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.vci.ubcs.omd.entity.Status;
+import com.vci.ubcs.omd.vo.StatusVO;
+import com.vci.ubcs.starter.exception.VciBaseException;
+import com.vci.ubcs.starter.web.pagemodel.PageHelper;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Description: 鐘舵�佹睜鐨勬湇鍔�
+ *
+ * @author LiHang
+ * @date 2023/5/23
+ */
+public interface IStatusService extends IService<Status> {
+
+	/**
+	 * 鑾峰彇鐘舵�佸垪琛�
+	 * @param conditionMap 鏌ヨ鏉′欢
+	 * @param pageHelper 鍒嗛〉淇℃伅鍜屾帓搴忎俊鎭紝榛樿浣跨敤id鎺掑簭
+	 * @return 鐘舵�佸璞″垪琛�
+	 * @throws VciBaseException 鏌ヨ鍑洪敊鏃朵細鎶涘嚭寮傚父
+	 */
+	IPage<StatusVO> listStatus(Map<String,String> conditionMap, PageHelper pageHelper) throws VciBaseException;
+
+	/**
+	 * 鑾峰彇鐘舵�佸垪琛�
+	 * @param conditionMap 鏌ヨ鏉′欢
+	 * @return 鐘舵�佸璞″垪琛�
+	 * @throws VciBaseException 鏌ヨ鍑洪敊鏃朵細鎶涘嚭寮傚父
+	 */
+	List<StatusVO> listStatusNoPage(Map<String,String> conditionMap) throws VciBaseException;
+
+	/**
+	 * 鏍规嵁涓婚敭鑾峰彇鐘舵��
+	 * @param pkStatus 鐘舵�佷富閿�
+	 * @return 鐘舵�侊紝濡傛灉涓嶅瓨鍦ㄤ細杩斿洖null
+	 * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欐椂浼氭姏鍑洪敊璇�
+	 */
+	StatusVO getStatusByOid(String pkStatus) throws VciBaseException;
+
+	/**
+	 * 鏍规嵁涓婚敭鎵归噺鑾峰彇鐘舵��
+	 * @param primaryKeys 鐘舵�佷富閿紝鐢ㄩ�楀彿鍒嗛殧
+	 * @return 鐘舵�佸垪琛紝濡傛灉鏈変笉瀛樺湪鐨勪笉浼氳繑鍥烇紝鍏ㄩ儴涓嶅瓨鍦ㄧ殑鍒欒繑鍥炵┖鍒楄〃
+	 * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欐椂浼氭姏鍑洪敊璇�
+	 */
+	List<StatusVO> listStatusByOids(String primaryKeys) throws VciBaseException;
+
+	/**
+	 * 鎵归噺鏍规嵁涓婚敭鑾峰彇鐘舵��
+	 * @param pkStatusCollection 鐘舵�佷富閿泦鍚�
+	 * @return 鐘舵�佸垪琛紝濡傛灉鏈変笉瀛樺湪鐨勪笉浼氳繑鍥烇紝鍏ㄩ儴涓嶅瓨鍦ㄧ殑鍒欒繑鍥炵┖鍒楄〃
+	 * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欐椂浼氭姏鍑洪敊璇�
+	 */
+	List<StatusVO> listStatusByOidCollection(Collection<String> pkStatusCollection) throws VciBaseException;
+
+	/**
+	 * 鏍规嵁鑻辨枃鍚嶇О鑾峰彇鐘舵��
+	 * @param id 鑻辨枃鍚嶇О
+	 * @return 鐘舵�侊紝濡傛灉涓嶅瓨鍦ㄤ細杩斿洖null
+	 * @throws VciBaseException 鏌ヨ鍑洪敊鎶涘嚭寮傚父
+	 */
+	StatusVO getStatusById(String id) throws VciBaseException;
+
+	/**
+	 * 鏍规嵁鑻辨枃鍚嶇О鎵归噺鑾峰彇鐘舵��
+	 * @param ids 鑻辨枃鍚嶇О锛屼娇鐢ㄩ�楀彿鍒嗛殧
+	 * @return  鐘舵�佸垪琛紝濡傛灉鏈変笉瀛樺湪鐨勪笉浼氳繑鍥烇紝鍏ㄩ儴涓嶅瓨鍦ㄧ殑鍒欒繑鍥炵┖鍒楄〃
+	 * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欐椂浼氭姏鍑洪敊璇�
+	 */
+	List<StatusVO> listStatusByIds(String ids) throws VciBaseException;
+
+	/**
+	 * 鏍规嵁鑻辨枃鍚嶇О闆嗗悎鎵归噺鑾峰彇鐘舵��
+	 * @param idCollection 鑻辨枃鍚嶇О闆嗗悎
+	 * @return 鐘舵�佸垪琛紝濡傛灉鏈変笉瀛樺湪鐨勪笉浼氳繑鍥烇紝鍏ㄩ儴涓嶅瓨鍦ㄧ殑鍒欒繑鍥炵┖鍒楄〃
+	 * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欐椂浼氭姏鍑洪敊璇�
+	 */
+	List<StatusVO> listStatusByIdCollection(Collection<String> idCollection) throws VciBaseException;
+
+	/**
+	 * 鏍规嵁鐘舵�佷富閿幏鍙栦腑鏂囧悕绉�
+	 * @param oid 鐘舵�佷富閿紝澶氫釜浣跨敤閫楀彿鍒嗛殧
+	 * @return 涓枃鍚嶇О锛屽鏋滀笉瀛樺湪浼氳繑鍥瀗ull
+	 * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欐椂浼氭姏鍑洪敊璇�
+	 */
+	String getNameByOid(String oid) throws VciBaseException;
+
+	/**
+	 * 鏍规嵁鐘舵�佽嫳鏂囧悕绉拌幏鍙栦腑鏂囧悕绉�
+	 * @param id 鐘舵�佽嫳鏂囧悕绉�
+	 * @return 涓枃鍚嶇О锛屽鏋滀笉瀛樺湪浼氳繑鍥瀗ull
+	 * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欐椂浼氭姏鍑洪敊璇�
+	 */
+	String getNameById(String id) throws VciBaseException;
+	/**
+	 * 娣诲姞鐘舵��
+	 * @param statusVO 鐘舵�佹樉绀哄璞★紙鍜孌TO鍏辩敤锛�
+	 * @return 娣诲姞鍚庣殑鐘舵��
+	 * @throws VciBaseException 娣诲姞鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
+	 */
+	StatusVO addSave(StatusVO statusVO) throws VciBaseException;
+
+	/**
+	 * 鎵归噺娣诲姞鐘舵��
+	 * @param statusVOList 鐘舵�佹樉绀哄璞″垪琛�(鍜孌TO鍏辩敤)
+	 * @return 鎵归噺娣诲姞鍚庣殑鐘舵��
+	 * @throws VciBaseException 娣诲姞鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
+	 */
+	List<StatusVO> batchAddSave(List<StatusVO> statusVOList) throws VciBaseException;
+
+
+	/**
+	 * 淇敼鐘舵��
+	 * @param statusVO 鐘舵�佹樉绀哄璞★紙鍜孌TO鍏辩敤锛�
+	 * @return 淇敼鍚庣殑鐘舵��
+	 * @throws VciBaseException 淇敼鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
+	 */
+	StatusVO editSave(StatusVO statusVO) throws VciBaseException;
+
+	/**
+	 * 鎵归噺淇敼鐘舵��
+	 * @param statusVOList 鐘舵�佹樉绀哄璞″垪琛紙鍜孌TO鍏辩敤锛�
+	 * @return 鎵归噺淇敼鍚庣殑鐘舵��
+	 * @throws VciBaseException 淇敼鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
+	 */
+	List<StatusVO> batchEditSave(List<StatusVO> statusVOList) throws VciBaseException;
+
+	/**
+	 * 鍒犻櫎鐘舵��
+	 * @param statusVO 鐘舵�佹樉绀哄璞�
+	 * @throws VciBaseException 濡傛灉鐘舵�佽寮曠敤锛屾垨鑰呭垹闄ゅ嚭閿欐椂浼氭姏鍑哄紓甯�
+	 */
+	void delete(StatusVO statusVO) throws VciBaseException;
+
+	/**
+	 * 鎵归噺鍒犻櫎鐘舵��
+	 * @param statusVOList 瑕佸垹闄ょ殑鐘舵�佹樉绀哄璞″垪琛�
+	 * @throws VciBaseException 濡傛灉鐘舵�佽寮曠敤锛屾垨鑰呭垹闄ゅ嚭閿欐椂浼氭姏鍑哄紓甯�
+	 */
+	void batchDelete(List<StatusVO> statusVOList) throws VciBaseException;
+
+	/**
+	 * 鎵归噺鏍¢獙鐘舵�佹槸鍚﹁浣跨敤
+	 * @param oidCollection 涓婚敭闆嗗悎
+	 * @return true琛ㄧず琚紩鐢�
+	 */
+	boolean checkStatusUseds(Collection<String> oidCollection);
+
+	/**
+	 * 鏍¢獙鐘舵�佹槸鍚﹁寮曠敤
+	 * @param pkStatus 鐘舵�佺殑涓婚敭
+	 * @return true琛ㄧず琚紩鐢紝 false琛ㄧず娌℃湁琚紩鐢�
+	 * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欐椂浼氭姏鍑洪敊璇�
+	 */
+	boolean checkStatusUsed(String pkStatus) throws VciBaseException;
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java
index c12be50..154d4a0 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java
@@ -11,9 +11,7 @@
 import com.vci.ubcs.omd.dto.BtmAndLinkTypeDdlDTO;
 import com.vci.ubcs.omd.entity.Attribute;
 import com.vci.ubcs.omd.repeater.DomainRepeater;
-import com.vci.ubcs.omd.service.IAttributeService;
-import com.vci.ubcs.omd.service.IBtmTypeAttributeService;
-import com.vci.ubcs.omd.service.IModifyAttributeService;
+import com.vci.ubcs.omd.service.*;
 import com.vci.ubcs.omd.vo.*;
 import com.vci.ubcs.omd.wrapper.BtmTypeWrapper;
 import com.vci.ubcs.omd.wrapper.ModifyAttributeWrapper;
@@ -24,7 +22,6 @@
 import com.vci.ubcs.omd.entity.BtmTypeAttribute;
 import com.vci.ubcs.omd.entity.ModifyAttributeInfo;
 import com.vci.ubcs.omd.mapper.BtmTypeMapper;
-import com.vci.ubcs.omd.service.IBtmTypeService;
 import com.vci.ubcs.starter.exception.VciBaseException;
 import com.vci.ubcs.starter.web.enumpck.BooleanEnum;
 import com.vci.ubcs.starter.web.enumpck.VciFieldTypeEnum;
@@ -75,6 +72,12 @@
 	 */
 	@Autowired
 	private IModifyAttributeService modifyAttributeService;
+
+	/**
+	 * 鐗堟湰瑙勫垯鐨勬湇鍔�
+	 */
+	@Autowired
+	private IRevisionRuleService revisionRuleService;
 
 	/**
 	 * 灞炴�х殑鏈嶅姟
@@ -589,12 +592,12 @@
 		if (btmTypeDTO.isRevisionFlag()){
 			// 闇�瑕佹帶鍒剁増鏈�
 			// 妫�鏌ヤ娇鐢ㄧ殑鐗堟湰瑙勫垯鏄惁瀛樺湪
-//				if (StringUtils.isNotBlank(btmTypeDTO.getRevisionRuleId())) {
-//					if (revisionRuleServiceI.checkRevisionRuleExist(btmTypeDTO.getRevisionRuleId())) {
-//						throw new VciBaseException("鐗堟湰瑙勫垯{0}[{1}]鍦ㄧ郴缁熶腑涓嶅瓨鍦紝璇峰厛鏌ヨ瘉",
-//							new Object[]{btmTypeDTO.getRevisionRuleId(), btmTypeDTO.getRevisionRuleName()});
-//					}
-//				}
+				if (StringUtils.isNotBlank(btmTypeDTO.getRevisionRuleId())) {
+					if (revisionRuleService.checkRevisionRuleExist(btmTypeDTO.getRevisionRuleId())) {
+						throw new VciBaseException("鐗堟湰瑙勫垯{0}[{1}]鍦ㄧ郴缁熶腑涓嶅瓨鍦紝璇峰厛鏌ヨ瘉",
+							new Object[]{btmTypeDTO.getRevisionRuleId(), btmTypeDTO.getRevisionRuleName()});
+					}
+				}
 			btmTypeDTO.setAttributes(addAttributeByFieldMap(btmTypeDTO.getAttributes(),BtmTypeFieldConstant.REVISION_MANAGE_FIELD_MAP));
 		}
 		if (btmTypeDTO.isLifeCycleFlag()){
@@ -798,7 +801,7 @@
 			attributeService.saveBatch(idAttrMap.values());
 		}else {
 			List<Attribute> addList = idAttrMap.values().stream().filter(a -> existAttr.stream().noneMatch(b -> StringUtils.equals(a.getKey(), b.getKey()))).collect(Collectors.toList());
-			if (CollectionUtils.isEmpty(addList)) {
+			if (!CollectionUtils.isEmpty(addList)) {
 				attributeService.saveBatch(addList);
 			}
 		}
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/RevisionRuleServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/RevisionRuleServiceImpl.java
new file mode 100644
index 0000000..01f6cf0
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/RevisionRuleServiceImpl.java
@@ -0,0 +1,563 @@
+package com.vci.ubcs.omd.service.impl;
+
+import com.alibaba.cloud.commons.lang.StringUtils;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.vci.ubcs.omd.dto.RevisionRuleDTO;
+import com.vci.ubcs.omd.entity.BtmType;
+import com.vci.ubcs.omd.entity.RevisionRule;
+import com.vci.ubcs.omd.mapper.BtmTypeMapper;
+import com.vci.ubcs.omd.mapper.RevisionRuleMapper;
+import com.vci.ubcs.omd.service.IRevisionRuleService;
+import com.vci.ubcs.omd.vo.BtmTypeVO;
+import com.vci.ubcs.omd.vo.RevisionRuleVO;
+import com.vci.ubcs.omd.wrapper.BtmTypeWrapper;
+import com.vci.ubcs.omd.wrapper.RevisionRuleWrapper;
+import com.vci.ubcs.starter.exception.VciBaseException;
+import com.vci.ubcs.starter.util.Map2MPJLambdaUtil;
+import com.vci.ubcs.starter.util.MybatisParameterUtil;
+import com.vci.ubcs.starter.web.constant.RegExpConstant;
+import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
+import com.vci.ubcs.starter.web.pagemodel.PageHelper;
+import com.vci.ubcs.starter.web.util.BeanUtil;
+import com.vci.ubcs.starter.web.util.VciBaseUtil;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.StringUtil;
+import org.springframework.cglib.beans.BeanMap;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
+/**
+ * Description: 鐗堟湰瑙勫垯鐨勬湇鍔�
+ *
+ * @author LiHang
+ * @date 2023/5/17
+ */
+@Service
+public class RevisionRuleServiceImpl extends ServiceImpl<RevisionRuleMapper, RevisionRule> implements IRevisionRuleService {
+
+	private final Pattern pattern = Pattern.compile("\\d+");
+
+	@Resource
+	private BtmTypeMapper btmTypeMapper;
+
+	/**
+	 * 鑾峰彇鐗堟湰瑙勫垯鍒楄〃
+	 *
+	 * @param condition 鏌ヨ鏉′欢
+	 * @param query     鍒嗛〉淇℃伅鍜屾帓搴忎俊鎭紝榛樿浣跨敤id鎺掑簭
+	 * @return 鐗堟湰瑙勫垯瀵硅薄鍒楄〃
+	 * @throws VciBaseException 鏌ヨ鍑洪敊鏃朵細鎶涘嚭寮傚父
+	 */
+	@Override
+	public IPage<RevisionRuleVO> listRevisionRule(Map<String, String> condition, Query query) throws VciBaseException {
+		RevisionRule queryConditionObj = new RevisionRule();
+		BeanMap beanMap = BeanMap.create(queryConditionObj);
+		beanMap.putAll(condition);
+		return RevisionRuleWrapper.build().pageVO(baseMapper.selectPage(Condition.getPage(query),Condition.getQueryWrapper(queryConditionObj).lambda().orderByAsc(RevisionRule::getId)));
+	}
+
+	/**
+	 * 鏍规嵁涓婚敭鑾峰彇鐗堟湰瑙勫垯
+	 *
+	 * @param pkRevisionRule 鐗堟湰瑙勫垯涓婚敭
+	 * @return 鐗堟湰瑙勫垯锛屽鏋滀笉瀛樺湪浼氳繑鍥瀗ull
+	 * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欐椂浼氭姏鍑洪敊璇�
+	 */
+	@Override
+	public RevisionRuleVO getRevisionRuleByOid(String pkRevisionRule) throws VciBaseException {
+		VciBaseUtil.alertNotNull(pkRevisionRule,"鐗堟湰瑙勫垯涓婚敭");
+		return RevisionRuleWrapper.build().entityVO(getOne(Wrappers.<RevisionRule>query().lambda().eq(RevisionRule::getOid,pkRevisionRule)));
+	}
+
+	/**
+	 * 鏍规嵁涓婚敭鎵归噺鑾峰彇鐗堟湰瑙勫垯
+	 *
+	 * @param pkRevisionRules 鐗堟湰瑙勫垯涓婚敭锛岀敤閫楀彿鍒嗛殧
+	 * @return 鐗堟湰瑙勫垯鍒楄〃锛屽鏋滄湁涓嶅瓨鍦ㄧ殑涓嶄細杩斿洖锛屽叏閮ㄤ笉瀛樺湪鐨勫垯杩斿洖绌哄垪琛�
+	 * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欐椂浼氭姏鍑洪敊璇�
+	 */
+	@Override
+	public List<RevisionRuleVO> listRevisionRuleByOids(String pkRevisionRules) throws VciBaseException {
+		VciBaseUtil.alertNotNull(pkRevisionRules,"鐗堟湰瑙勫垯涓婚敭");
+		List<String> oidList = Func.toStrList(",", pkRevisionRules);
+		return RevisionRuleWrapper.build().listVO(list(MybatisParameterUtil.cutInParameter(Wrappers.<RevisionRule>query().lambda(),RevisionRule::getOid,oidList)));
+	}
+
+	/**
+	 * 鎵归噺鏍规嵁涓婚敭鑾峰彇鐗堟湰瑙勫垯
+	 *
+	 * @param pkRevisionRuleCollection 鐗堟湰瑙勫垯涓婚敭闆嗗悎
+	 * @return 鐗堟湰瑙勫垯鍒楄〃锛屽鏋滄湁涓嶅瓨鍦ㄧ殑涓嶄細杩斿洖锛屽叏閮ㄤ笉瀛樺湪鐨勫垯杩斿洖绌哄垪琛�
+	 * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欐椂浼氭姏鍑洪敊璇�
+	 */
+	@Override
+	public List<RevisionRuleVO> listRevisionRuleByOidCollection(Collection<String> pkRevisionRuleCollection) throws VciBaseException {
+		VciBaseUtil.alertNotNull(pkRevisionRuleCollection,"鐗堟湰瑙勫垯涓婚敭闆嗗悎");
+		return RevisionRuleWrapper.build().listVO(list(MybatisParameterUtil.cutInParameter(Wrappers.<RevisionRule>query().lambda(),RevisionRule::getOid, Arrays.asList(pkRevisionRuleCollection.toArray()))));
+	}
+
+	/**
+	 * 鏍规嵁鑻辨枃鍚嶇О鑾峰彇鐗堟湰瑙勫垯
+	 *
+	 * @param id 鑻辨枃鍚嶇О
+	 * @return 鐗堟湰瑙勫垯锛屽鏋滀笉瀛樺湪浼氳繑鍥瀗ull
+	 * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欐椂浼氭姏鍑洪敊璇�
+	 */
+	@Override
+	public RevisionRuleVO getRevisionRuleById(String id) throws VciBaseException {
+		VciBaseUtil.alertNotNull(id,"鑻辨枃鍚嶇О");
+		return RevisionRuleWrapper.build().entityVO(getOne(Wrappers.<RevisionRule>query().lambda().eq(RevisionRule::getId,id)));
+	}
+
+	/**
+	 * 鏍规嵁鑻辨枃鍚嶇О鎵归噺鑾峰彇鐗堟湰瑙勫垯
+	 *
+	 * @param ids 鑻辨枃鍚嶇О锛屼娇鐢ㄩ�楀彿鍒嗛殧
+	 * @return 鐗堟湰瑙勫垯鍒楄〃锛屽鏋滄湁涓嶅瓨鍦ㄧ殑涓嶄細杩斿洖锛屽叏閮ㄤ笉瀛樺湪鐨勫垯杩斿洖绌哄垪琛�
+	 * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欐椂浼氭姏鍑洪敊璇�
+	 */
+	@Override
+	public List<RevisionRuleVO> listRevisionRuleByIds(String ids) throws VciBaseException {
+		VciBaseUtil.alertNotNull(ids,"鑻辨枃鍚嶇О");
+		List<String> idList = Func.toStrList(",", ids);
+		return RevisionRuleWrapper.build().listVO(baseMapper.selectList(Wrappers.<RevisionRule>query().lambda().in(RevisionRule::getId,idList)));
+	}
+
+	/**
+	 * 鏍规嵁鑻辨枃鍚嶇О闆嗗悎鎵归噺鑾峰彇鐗堟湰瑙勫垯
+	 *
+	 * @param revisionRuleIdCollection 鑻辨枃鍚嶇О闆嗗悎锛屼娇鐢ㄩ�楀彿鍒嗛殧
+	 * @return 鐗堟湰瑙勫垯鍒楄〃锛屽鏋滄湁涓嶅瓨鍦ㄧ殑涓嶄細杩斿洖锛屽叏閮ㄤ笉瀛樺湪鐨勫垯杩斿洖绌哄垪琛�
+	 * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欐椂浼氭姏鍑洪敊璇�
+	 */
+	@Override
+	public List<RevisionRuleVO> listRevisionRuleByIdCollection(Collection<String> revisionRuleIdCollection) throws VciBaseException {
+		VciBaseUtil.alertNotNull(revisionRuleIdCollection,"鑻辨枃鍚嶇О闆嗗悎");
+//		return RevisionRuleWrapper.build().listVO(list(MybatisParameterUtil.cutInParameter(Wrappers.<RevisionRule>query().lambda(),RevisionRule::getId, Collections.singletonList(revisionRuleIdCollection))));
+		List<RevisionRule> list = baseMapper.selectList(Wrappers.<RevisionRule>query().lambda().in(RevisionRule::getId, revisionRuleIdCollection));
+		return RevisionRuleWrapper.build().listVO(list);
+	}
+
+	/**
+	 * 鏍规嵁鐗堟湰瑙勫垯涓婚敭鑾峰彇涓枃鍚嶇О
+	 *
+	 * @param oid 鐗堟湰瑙勫垯涓婚敭锛屽涓娇鐢ㄩ�楀彿鍒嗛殧
+	 * @return 涓枃鍚嶇О锛屽鏋滀笉瀛樺湪浼氳繑鍥瀗ull;澶氫釜浼氫互閫楀彿鍒嗛殧
+	 * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欐椂浼氭姏鍑洪敊璇�
+	 */
+	@Override
+	public String getNameByOid(String oid) throws VciBaseException {
+		VciBaseUtil.alertNotNull(oid,"鐗堟湰瑙勫垯涓婚敭");
+		return getRevisionRuleByOid(oid).getName();
+	}
+
+	/**
+	 * 鏍规嵁鐗堟湰瑙勫垯鑻辨枃鍚嶇О鑾峰彇涓枃鍚嶇О
+	 *
+	 * @param id 鐗堟湰瑙勫垯鑻辨枃鍚嶇О
+	 * @return 涓枃鍚嶇О锛屽鏋滀笉瀛樺湪浼氳繑鍥瀗ull;澶氫釜浼氫互閫楀彿鍒嗛殧
+	 * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欐椂浼氭姏鍑洪敊璇�
+	 */
+	@Override
+	public String getNameById(String id) throws VciBaseException {
+		VciBaseUtil.alertNotNull(id,"鐗堟湰瑙勫垯鑻辨枃鍚嶇О");
+		return getRevisionRuleById(id).getName();
+	}
+
+	/**
+	 * 娣诲姞鐗堟湰瑙勫垯
+	 *
+	 * @param revisionRuleVO 鐗堟湰瑙勫垯鏄剧ず瀵硅薄锛堝拰DTO鍏辩敤锛�
+	 * @return 娣诲姞鍚庣殑鐗堟湰瑙勫垯
+	 * @throws VciBaseException 娣诲姞鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
+	 */
+	@Override
+	public RevisionRuleVO addSave(RevisionRuleDTO revisionRuleVO) throws VciBaseException {
+		VciBaseUtil.alertNotNull(revisionRuleVO,"瑕佹坊鍔犵殑鐗堟湰瑙勫垯",revisionRuleVO.getId(),"鐗堟湰瑙勫垯鑻辨枃鍚嶇О",revisionRuleVO.getName(),"鐗堟湰瑙勫垯涓枃鍚嶇О");
+		List<RevisionRuleVO> voList = batchAddSave(Collections.singletonList(revisionRuleVO));
+		if (!CollectionUtils.isEmpty(voList)){
+			return voList.get(0);
+		}
+		return null;
+	}
+
+	/**
+	 * 鎵归噺娣诲姞鐗堟湰瑙勫垯
+	 *
+	 * @param revisionRuleDTOList 鐗堟湰瑙勫垯鏄剧ず瀵硅薄鍒楄〃
+	 * @return 鎵归噺娣诲姞鍚庣殑鐗堟湰瑙勫垯
+	 * @throws VciBaseException 娣诲姞鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
+	 */
+	@Override
+	public List<RevisionRuleVO> batchAddSave(List<RevisionRuleDTO> revisionRuleDTOList) throws VciBaseException {
+		if(CollectionUtils.isEmpty(revisionRuleDTOList)){
+			throw new VciBaseException("瑕佹坊鍔犵殑鐗堟湰瑙勫垯瀵硅薄涓嶈兘涓虹┖");
+		}
+		//1. 鍒ゆ柇鍚勪釜灞炴�ф槸鍚﹀繀杈撻」閮借緭鍏ヤ簡
+		//2. 鍒ゆ柇鐨勮嫳鏂囧悕绉版槸鍚﹂噸澶�
+		Set<String> idSet = new HashSet<>();
+		String creator = AuthUtil.getUserAccount();
+		Date now = new Date();
+		String btmName = "revision-rule";
+		List<RevisionRule> revisionRuleList = new ArrayList<>();
+		revisionRuleDTOList.forEach(s -> {
+			//鍒ゆ柇涓虹┖
+			VciBaseUtil.alertNotNull(s.getId(),"鐗堟湰瑙勫垯鑻辨枃鍚嶇О",s.getName(),"鐗堟湰瑙勫垯涓枃鍚嶇О",s.getStartCode(),"璧峰瀛楃",s.getSerialStep(),"姝ラ暱");
+			//鍒ゆ柇鏈鏄惁瀛樺湪
+			if(idSet.contains(s.getId().toLowerCase().trim())){
+				throw new VciBaseException("鑻辨枃鍚嶇О涓簕0}鐨勭姸鎬佸凡缁忓瓨鍦�",new Object[]{s.getId()});
+			}else{
+				idSet.add(s.getId().toLowerCase().trim());
+			}
+			RevisionRule ruleDO = org.springblade.core.tool.utils.BeanUtil.copy(s, RevisionRule.class);
+			if(StringUtils.isBlank(ruleDO.getOid())){
+				ruleDO.setOid(VciBaseUtil.getPk());
+			}
+			//鍒ゆ柇灞炴�ф槸鍚︾鍚堣姹�
+			ruleDO.setCreator(creator);
+			ruleDO.setCreateTime(now);
+			ruleDO.setOwner(creator);
+			ruleDO.setBtmName(btmName);
+			ruleDO.setTs(now);
+			ruleDO.setLastModifier(creator);
+			ruleDO.setLastModifyTime(now);
+			ruleDO.setTs(now);
+			revisionRuleList.add(ruleDO);
+		});
+		//鍒ゆ柇鏄惁瀛樺湪
+		List<RevisionRuleVO> checkExistList = listRevisionRuleByIdCollection(idSet);
+		if(!CollectionUtils.isEmpty(checkExistList)){
+			String existIds = checkExistList.stream().map(RevisionRuleVO::getId).collect(Collectors.joining(","));
+			throw new VciBaseException("鑻辨枃鍚嶇О涓簕0}鐨勭増鏈鍒欑殑宸茬粡鍦ㄧ郴缁熶腑瀛樺湪锛堜笉鍖哄垎澶у皬鍐欙級锛屼笉鑳芥坊鍔�",new Object[]{existIds});
+		}
+		VciBaseUtil.switchCollectionForOracleIn(revisionRuleList,1000).forEach(this::saveOrUpdateBatch);
+		return RevisionRuleWrapper.build().listEntityVO(revisionRuleList);
+	}
+
+	/**
+	 * 淇敼鐗堟湰瑙勫垯
+	 *
+	 * @param revisionRuleDTO 鐗堟湰瑙勫垯鏄剧ず瀵硅薄锛堝拰DTO鍏辩敤锛�
+	 * @return 淇敼鍚庣殑鐗堟湰瑙勫垯
+	 * @throws VciBaseException 淇敼鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
+	 */
+	@Override
+	public RevisionRuleVO editSave(RevisionRuleDTO revisionRuleDTO) throws VciBaseException {
+		VciBaseUtil.alertNotNull(revisionRuleDTO,"瑕佷慨鏀圭殑鐗堟湰瑙勫垯瀵硅薄",revisionRuleDTO.getOid(),"瑕佷慨鏀圭殑鐗堟湰瑙勫垯瀵硅薄鐨勪富閿�");
+		List<RevisionRuleVO> voList = batchEditSave(Collections.singletonList(revisionRuleDTO));
+		if (!CollectionUtils.isEmpty(voList)){
+			return voList.get(0);
+		}
+		return null;
+	}
+
+	/**
+	 * 鎵归噺淇敼鐗堟湰瑙勫垯
+	 *
+	 * @param revisionRuleDTOList 鐗堟湰瑙勫垯鏄剧ず瀵硅薄鍒楄〃锛堝拰DTO鍏辩敤锛�
+	 * @return 鎵归噺淇敼鍚庣殑鐗堟湰瑙勫垯
+	 * @throws VciBaseException 淇敼鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
+	 */
+	@Override
+	public List<RevisionRuleVO> batchEditSave(List<RevisionRuleDTO> revisionRuleDTOList) throws VciBaseException {
+		if(CollectionUtils.isEmpty(revisionRuleDTOList)){
+			throw new VciBaseException("瑕佷慨鏀圭殑鐗堟湰瑙勫垯瀵硅薄涓嶈兘涓虹┖");
+		}
+		//1. 鍒ゆ柇鍚勪釜灞炴�ф槸鍚﹀繀杈撻」閮借緭鍏ヤ簡
+		//2. 鍒ゆ柇鐨勮嫳鏂囧悕绉版槸鍚﹂噸澶�
+		Set<String> idSet = new HashSet<>();
+		Map<String,RevisionRuleDTO> oidObjectMap = new HashMap<>(16);
+		String creator = AuthUtil.getUserAccount();
+		Date now = new Date();
+		List<RevisionRule> revisionRuleList = new ArrayList<>();
+		revisionRuleDTOList.forEach(s -> {
+			//鍒ゆ柇涓虹┖
+			VciBaseUtil.alertNotNull(s.getOid(),"鐗堟湰瑙勫垯涓婚敭",s.getId(),"鐗堟湰瑙勫垯鑻辨枃鍚嶇О",s.getName(),"鐗堟湰瑙勫垯涓枃鍚嶇О",s.getStartCode(),"璧峰瀛楃",s.getSerialStep(),"姝ラ暱");
+			//鍒ゆ柇鏈鏄惁瀛樺湪
+			if(idSet.contains(s.getId().toLowerCase().trim())){
+				throw new VciBaseException("鑻辨枃鍚嶇О涓簕0}鐨勭増鏈鍒欏凡缁忓瓨鍦紙涓嶅尯鍒嗗ぇ灏忓啓锛�",new Object[]{s.getId()});
+			}else{
+				idSet.add(s.getId().toLowerCase().trim());
+			}
+			oidObjectMap.put(s.getOid(),s);
+			RevisionRule ruleDO = org.springblade.core.tool.utils.BeanUtil.copy(s, RevisionRule.class);
+			ruleDO.setLastModifier(creator);
+			ruleDO.setLastModifyTime(now);
+			ruleDO.setTs(now);
+			revisionRuleList.add(ruleDO);
+		});
+		//鍒ゆ柇鏄惁瀛樺湪
+		List<RevisionRuleVO> checkExistList = listRevisionRuleByOidCollection(oidObjectMap.keySet());
+		if(CollectionUtils.isEmpty(checkExistList)){
+			throw new VciBaseException("杩欎簺鐗堟湰瑙勫垯鍦ㄧ郴缁熶腑鍧囦笉瀛樺湪",new Object[]{});
+		}
+		//鍒ゆ柇灞炴�у悕绉版槸鍚︿慨鏀�
+		Set<String> oidInDbSet = new HashSet<>();
+		checkExistList.forEach(s -> {
+			RevisionRuleDTO revisionRuleDTO =  oidObjectMap.get(s.getOid());
+			if(!revisionRuleDTO.getId().equalsIgnoreCase(s.getId())){
+				throw new VciBaseException("鐗堟湰瑙勫垯[{0}]鐨勮嫳鏂囧悕绉颁笉鍏佽淇敼锛屽師鍚嶇О{1},鏂板悕绉皗2}",new Object[]{s.getName(),s.getId(),revisionRuleDTO.getId()});
+			}
+			BeanUtil.convert(revisionRuleDTO,s);
+			oidInDbSet.add(s.getOid());
+		});
+		//鐪嬬湅鏄惁鏈変笉鍦ㄧ郴缁熶腑瀛樺湪鐨�
+		oidObjectMap.forEach( (k,v) ->{
+			if(!oidInDbSet.contains(k)){
+				throw new VciBaseException("鐗堟湰瑙勫垯{0}[{1}]鍦ㄧ郴缁熶腑涓嶅瓨鍦�",new Object[]{v.getId(),v.getName()});
+			}
+		});
+		VciBaseUtil.switchCollectionForOracleIn(revisionRuleList,1000).forEach(this::saveOrUpdateBatch);
+		return RevisionRuleWrapper.build().listEntityVO(revisionRuleList);
+	}
+
+	/**
+	 * 鍒犻櫎鐗堟湰瑙勫垯
+	 *
+	 * @param revisionRuleVO 鐗堟湰瑙勫垯鏄剧ず瀵硅薄
+	 * @throws VciBaseException 濡傛灉鐗堟湰瑙勫垯琚紩鐢紝鎴栬�呭垹闄ゅ嚭閿欐椂浼氭姏鍑哄紓甯�
+	 */
+	@Override
+	public void delete(RevisionRuleVO revisionRuleVO) throws VciBaseException {
+		VciBaseUtil.alertNotNull(revisionRuleVO,"瑕佸垹闄ょ殑鐗堟湰瀵硅薄",revisionRuleVO.getOid(),"瑕佸垹闄ょ殑鐗堟湰瀵硅薄鐨勪富閿�");
+		batchDelete(Collections.singletonList(revisionRuleVO));
+	}
+
+	/**
+	 * 鎵归噺鍒犻櫎鐗堟湰瑙勫垯
+	 *
+	 * @param revisionRuleVOList 瑕佸垹闄ょ殑鐗堟湰瑙勫垯鏄剧ず瀵硅薄鍒楄〃
+	 * @throws VciBaseException 濡傛灉鐗堟湰瑙勫垯琚紩鐢紝鎴栬�呭垹闄ゅ嚭閿欐椂浼氭姏鍑哄紓甯�
+	 */
+	@Override
+	@Transactional(rollbackFor = VciBaseException.class)
+	public void batchDelete(List<RevisionRuleVO> revisionRuleVOList) throws VciBaseException {
+		VciBaseUtil.alertNotNull(revisionRuleVOList,"鐗堟湰瑙勫垯");
+		Set<String> oidSet = revisionRuleVOList.stream().map(RevisionRuleVO::getOid).peek(s -> VciBaseUtil.alertNotNull(StringUtil.isBlank(s))).collect(Collectors.toSet());
+		List<RevisionRuleVO> revisionRuleList = listRevisionRuleByOidCollection(oidSet);
+		if(CollectionUtils.isEmpty(revisionRuleList)){
+			throw new VciBaseException("瑕佸垹闄ょ殑鐗堟湰瑙勫垯鍦ㄧ郴缁熶腑涓嶅瓨鍦�,鍙兘鎮ㄩ渶瑕佸埛鏂板悗鍐嶈瘯");
+		}
+		Set<String> oidInDbSet = revisionRuleList.stream().map(RevisionRuleVO::getOid).collect(Collectors.toSet());
+		oidSet.forEach( s -> {
+			if(!oidInDbSet.contains(s)){
+				throw new VciBaseException("瑕佸垹闄ょ殑鐗堟湰瑙勫垯鍦ㄧ郴缁熶腑涓嶅瓨鍦�,鍙兘鎮ㄩ渶瑕佸埛鏂板悗鍐嶈瘯");
+			}
+		});
+		//妫�鏌ュ睘鎬ф槸鍚﹁寮曠敤
+		if(batchCheckRevisionRuleUsed(oidSet)){
+			throw new VciBaseException("瑕佸垹闄ょ殑鐗堟湰瑙勫垯鍦ㄤ笟鍔$被鍨嬩腑琚娇鐢紝鏃犳硶鍒犻櫎");
+		}
+		//鎵ц鎵归噺鍒犻櫎
+		Collection<Collection<String>> oidCollections = VciBaseUtil.switchCollectionForOracleIn(oidInDbSet);
+		for(Collection<String> oidCollection : oidCollections){
+			baseMapper.delete(Wrappers.<RevisionRule>query().lambda().in(RevisionRule::getOid,oidCollection));
+		}
+
+	}
+
+	/**
+	 * 鎵归噺鏍¢獙鐗堟湰瑙勫垯鏄惁琚娇鐢�
+	 *
+	 * @param oidCollection 涓婚敭闆嗗悎
+	 * @return true琛ㄧず琚紩鐢�
+	 */
+	@Override
+	public boolean batchCheckRevisionRuleUsed(Collection<String> oidCollection) {
+		VciBaseUtil.alertNotNull("鏍¢獙鏄惁寮曠敤鐨勭増鏈鍒欑殑涓婚敭",oidCollection);
+		//妫�鏌ヤ笟鍔$被鍨�
+		Collection<Collection<String>> oidCollections = VciBaseUtil.switchCollectionForOracleIn(oidCollection);
+		for(Collection<String> oids : oidCollections) {
+			MPJLambdaWrapper<BtmType> join = Map2MPJLambdaUtil.getMPJLambdaWrapper(new BtmType())
+				.join("join", RevisionRule.class, RevisionRule::getId, BtmType::getRevisionRuleId)
+				.in(RevisionRule::getOid, oids);
+			Long count = btmTypeMapper.selectCount(join);
+			if(count>0){
+				return true;
+			}
+		}
+		return false;
+	}
+
+	/**
+	 * 鑾峰彇浣跨敤鐗堟湰瑙勫垯鐨勪笟鍔$被鍨�
+	 *
+	 * @param pkRevisionRule 鐗堟湰瑙勫垯鐨勪富閿�
+	 * @return 寮曠敤鐨勪笟鍔$被鍨�
+	 * @throws VciBaseException 鏌ヨ鍑洪敊鏃朵細鎶涘嚭寮傚父
+	 */
+	@Override
+	public List<BtmTypeVO> listRevisionRuleUsedInfo(String pkRevisionRule) throws VciBaseException {
+		VciBaseUtil.alertNotNull(pkRevisionRule,"鐗堟湰瑙勫垯瀵硅薄鐨勪富閿�");
+		List<BtmType> result = btmTypeMapper.selectList(
+			Map2MPJLambdaUtil.getMPJLambdaWrapper(new BtmType())
+				.join("join", RevisionRule.class, RevisionRule::getId, BtmType::getRevisionRuleId)
+				.eq(RevisionRule::getOid, pkRevisionRule));
+		return BtmTypeWrapper.build().listEntityVO(result);
+	}
+
+	/**
+	 * 鏍¢獙鐗堟湰瑙勫垯鏄惁琚紩鐢�
+	 *
+	 * @param pkRevisionRule 鐗堟湰瑙勫垯鐨勪富閿�
+	 * @return true琛ㄧず琚紩鐢紝 false琛ㄧず娌℃湁琚紩鐢�
+	 * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欐椂浼氭姏鍑洪敊璇�
+	 */
+	@Override
+	public boolean checkRevisionRuleUsed(String pkRevisionRule) throws VciBaseException {
+		VciBaseUtil.alertNotNull(pkRevisionRule,"瑕佹牎楠屾槸鍚﹀紩鐢ㄧ殑鐗堟湰瑙勫垯瀵硅薄鐨勪富閿�");
+		return batchCheckRevisionRuleUsed(Func.toStrList(",",pkRevisionRule));
+	}
+
+	/**
+	 * 鍒ゆ柇鐗堟湰瑙勫垯鏄惁瀛樺湪
+	 *
+	 * @param revisionRuleId 鐗堟湰瑙勫垯鐨勮嫳鏂囧悕绉�
+	 * @return true琛ㄧず閮藉瓨鍦紝false琛ㄧず涓嶅瓨鍦�
+	 * @throws VciBaseException 鍙傛暟閿欒鎴栬�呮煡璇㈠嚭閿欎細鎶涘嚭寮傚父
+	 */
+	@Override
+	public boolean checkRevisionRuleExist(String revisionRuleId) throws VciBaseException {
+		VciBaseUtil.alertNotNull(revisionRuleId,"鐗堟湰瑙勫垯鐨勮嫳鏂囧悕绉�");
+		List<String> idList = Func.toStrList(",",revisionRuleId.toLowerCase(Locale.ROOT));
+		List<RevisionRuleVO> revisionRuleDOList = listRevisionRuleByIdCollection(idList);
+		if(CollectionUtils.isEmpty(revisionRuleDOList)){
+			return false;
+		}else{
+			Set<String> existIdList = revisionRuleDOList.stream().map(RevisionRuleVO::getId)
+				.collect(Collectors.toList()).stream()
+				.map(String::toLowerCase).collect(Collectors.toSet());
+			//涓婃柟宸茬粡杞崲涓轰簡灏忓啓
+			return idList.stream().allMatch(s -> existIdList.contains(s.toLowerCase().trim()));
+		}
+	}
+
+	/**
+	 * 鑾峰彇涓嬩竴涓増鏈殑鍊�
+	 *
+	 * @param ruleId               鐗堟湰鐨勮鍒�
+	 * @param currentRevisionValue 褰撳墠鐗堟湰鐨勫�硷紝涓虹┖鐨勬椂鍊欙紝璇存槑鏄柊澧�
+	 * @return 涓嬩竴涓増鏈彿
+	 * @throws VciBaseException 鐗堟湰瑙勫垯涓嶅瓨鍦ㄧ殑鏃跺�欎細鎶涘嚭寮傚父
+	 */
+	@Override
+	public String getNextRevisionValue(String ruleId, String currentRevisionValue) throws VciBaseException {
+		VciBaseUtil.alertNotNull(ruleId,"瑙勫垯鐨勮嫳鏂囧悕绉�");
+		boolean isFirstRevision = StringUtils.isBlank(currentRevisionValue);
+		RevisionRuleVO revisionRuleVO = getRevisionRuleByOid(ruleId);
+		String ruleValue;
+		if(isFirstRevision){
+			//鍓嶇紑+ 璧峰 + 鍚庣紑
+			return (StringUtils.isBlank(revisionRuleVO.getPrefixCode())?"":revisionRuleVO.getPrefixCode().trim()) + revisionRuleVO.getStartCode() +
+				(StringUtils.isBlank(revisionRuleVO.getSuffixCode())?"":revisionRuleVO.getSuffixCode().trim());
+		}else{
+			ruleValue = replacePrefixAndSubfix(currentRevisionValue, revisionRuleVO.getPrefixCode(), revisionRuleVO.getSuffixCode());
+			String lastChar = ruleValue.substring(ruleValue.length()-1);
+			String unHasLastCharRule = ruleValue.substring(0,ruleValue.length()-1);
+			Integer step = revisionRuleVO.getSerialStep();
+			if(step == null){
+				step = 1;
+			}
+			if(lastChar.matches(RegExpConstant.LETTER)){
+				//鏄瓧姣嶇殑锛屽姞杩囧幓鍚庡鏋滆秴杩囦簡Z锛岄偅灏卞緱鍔犱竴浣�
+				//鐢╝scii鐮佹潵娣诲姞
+				int ascInt = lastChar.toCharArray()[0];
+				int ascForZ = "Z".toCharArray()[0];
+				int ascForA = "A".toCharArray()[0];
+				int newValueAsc;
+
+				if((ascInt + step) > ascForZ){
+					newValueAsc = (ascInt + step) - ascForZ  + ascForA;
+					ruleValue = unHasLastCharRule + "A" + (char)newValueAsc;
+				}else {
+					ruleValue = unHasLastCharRule + (char)(ascInt + step);
+				}
+			}else{
+				//鏄暟瀛�
+				String lastNumberInString  = getNumbers(ruleValue);
+				String nextNumber = String.valueOf(Integer.parseInt(lastNumberInString) + step);
+				if(ruleValue.length() > lastNumberInString.length()){
+					ruleValue = ruleValue.substring(0,ruleValue.length() - lastNumberInString.length()-1) + nextNumber;
+				}else{
+					ruleValue = nextNumber;
+				}
+			}
+		}
+		return ruleValue;
+	}
+
+	/**
+	 * 鑾峰彇瀛楃涓蹭腑鐨勬暟瀛楅儴鍒�
+	 * @param content 瀛楃涓插唴瀹�
+	 * @return 鏁板瓧鐨勯儴鍒�,鏈�鍚庣殑閭i儴鍒�
+	 */
+	private String getNumbers(String content) {
+		Matcher matcher = pattern.matcher(content);
+		while (matcher.find()) {
+			return matcher.group(matcher.groupCount()-1);
+		}
+		return "";
+	}
+
+
+	/**
+	 * 鏇挎崲鍓嶇紑鍜屽悗缂�
+	 * @param ruleValue 褰撳墠鐗堟湰鐨勫��
+	 * @param prefix 鍓嶇紑
+	 * @param subfix 鍚庣紑
+	 * @return 鍘婚櫎鍓嶇紑鍜屽悗缂�鐨勭増鏈鍒�
+	 */
+	private String replacePrefixAndSubfix(String ruleValue, String prefix, String subfix){
+		if(prefix==null){
+			prefix = "";
+		}
+		if(subfix == null){
+			subfix = "";
+		}
+		if(StringUtils.isNotBlank(prefix) && ruleValue.startsWith(prefix)){
+			ruleValue = ruleValue.substring(prefix.length());
+		}
+		if(StringUtils.isNotBlank(subfix) && ruleValue.endsWith(subfix)){
+			ruleValue = ruleValue.substring(0,ruleValue.length()-subfix.length()-1);
+		}
+		return ruleValue;
+	}
+
+	/**
+	 * 鍒嗛〉鏌ヨ
+	 *
+	 * @param baseQueryObject 鏌ヨ瀵硅薄
+	 * @return 鏌ヨ缁撴灉
+	 * @throws VciBaseException 鏌ヨ鍑洪敊鏃舵姏鍑哄紓甯�
+	 */
+	@Override
+	public IPage<RevisionRuleVO> pageQueryVO(BaseQueryObject baseQueryObject) throws VciBaseException {
+		Map<String, String> conditionMap = baseQueryObject.getConditionMap();
+		if (conditionMap == null){
+			conditionMap = new HashMap<>();
+		}
+		PageHelper pageHelper = baseQueryObject.getPageHelper();
+		Query query = new Query();
+		query.setCurrent(pageHelper.getPage());
+		query.setSize(pageHelper.getLimit());
+		query.setAscs(pageHelper.getSort());
+		RevisionRule queryConditionObj = new RevisionRule();
+		BeanMap beanMap = BeanMap.create(queryConditionObj);
+		beanMap.putAll(conditionMap);
+		return RevisionRuleWrapper.build().pageVO(baseMapper.selectPage(Condition.getPage(query),Condition.getQueryWrapper(queryConditionObj).lambda().orderByAsc(RevisionRule::getId)));
+	}
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/StatusServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/StatusServiceImpl.java
new file mode 100644
index 0000000..460ec37
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/StatusServiceImpl.java
@@ -0,0 +1,459 @@
+package com.vci.ubcs.omd.service.impl;
+
+import com.alibaba.cloud.commons.lang.StringUtils;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.omd.entity.Status;
+import com.vci.ubcs.omd.mapper.StatusMapper;
+import com.vci.ubcs.omd.service.IStatusService;
+import com.vci.ubcs.omd.vo.StatusVO;
+import com.vci.ubcs.omd.wrapper.StatusWrapper;
+import com.vci.ubcs.starter.exception.VciBaseException;
+import com.vci.ubcs.starter.web.pagemodel.PageHelper;
+import com.vci.ubcs.starter.web.util.BeanUtil;
+import com.vci.ubcs.starter.web.util.VciBaseUtil;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.cglib.beans.BeanMap;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.*;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
+/**
+ * Description: 鐘舵�佹睜鐨勫疄鐜扮被
+ *
+ * @author LiHang
+ * @date 2023/5/23
+ */
+@Service
+public class StatusServiceImpl extends ServiceImpl<StatusMapper, Status> implements IStatusService {
+
+	private final String REGEXP = "^[A-Za-z]+$";
+
+	/**
+	 * 鑾峰彇鐘舵�佸垪琛�
+	 *
+	 * @param conditionMap 鏌ヨ鏉′欢
+	 * @param pageHelper   鍒嗛〉淇℃伅鍜屾帓搴忎俊鎭紝榛樿浣跨敤id鎺掑簭
+	 * @return 鐘舵�佸璞″垪琛�
+	 * @throws VciBaseException 鏌ヨ鍑洪敊鏃朵細鎶涘嚭寮傚父
+	 */
+	@Override
+	public IPage<StatusVO> listStatus(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException {
+		Query query = new Query();
+		query.setCurrent(pageHelper.getPage());
+		query.setSize(pageHelper.getLimit());
+		query.setAscs("id");
+		Status queryVO = new Status();
+		BeanMap.create(queryVO).putAll(conditionMap);
+		return StatusWrapper.build().pageVO(baseMapper.selectPage(Condition.getPage(query), Condition.getQueryWrapper(queryVO).lambda().orderByAsc(Status::getId)));
+	}
+
+	/**
+	 * 鑾峰彇鐘舵�佸垪琛�
+	 *
+	 * @param conditionMap 鏌ヨ鏉′欢
+	 * @return 鐘舵�佸璞″垪琛�
+	 * @throws VciBaseException 鏌ヨ鍑洪敊鏃朵細鎶涘嚭寮傚父
+	 */
+	@Override
+	public List<StatusVO> listStatusNoPage(Map<String, String> conditionMap) throws VciBaseException {
+		Status queryVO = new Status();
+		BeanMap.create(queryVO).putAll(conditionMap);
+		return StatusWrapper.build().listEntityVO(baseMapper.selectList(Condition.getQueryWrapper(queryVO).lambda().orderByAsc(Status::getId)));
+	}
+
+	/**
+	 * 鏍规嵁涓婚敭鑾峰彇鐘舵��
+	 *
+	 * @param pkStatus 鐘舵�佷富閿�
+	 * @return 鐘舵�侊紝濡傛灉涓嶅瓨鍦ㄤ細杩斿洖null
+	 * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欐椂浼氭姏鍑洪敊璇�
+	 */
+	@Override
+	public StatusVO getStatusByOid(String pkStatus) throws VciBaseException {
+		List<StatusVO> statusVOList = listStatusByOids(pkStatus);
+		if (!CollectionUtils.isEmpty(statusVOList)){
+			return statusVOList.get(0);
+		}
+		return null;
+	}
+
+	/**
+	 * 鏍规嵁涓婚敭鎵归噺鑾峰彇鐘舵��
+	 *
+	 * @param primaryKeys 鐘舵�佷富閿紝鐢ㄩ�楀彿鍒嗛殧
+	 * @return 鐘舵�佸垪琛紝濡傛灉鏈変笉瀛樺湪鐨勪笉浼氳繑鍥烇紝鍏ㄩ儴涓嶅瓨鍦ㄧ殑鍒欒繑鍥炵┖鍒楄〃
+	 * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欐椂浼氭姏鍑洪敊璇�
+	 */
+	@Override
+	public List<StatusVO> listStatusByOids(String primaryKeys) throws VciBaseException {
+		VciBaseUtil.alertNotNull(primaryKeys,"鐘舵�佺殑涓婚敭");
+		List<String> pkList = Func.toStrList(",", primaryKeys);
+		return listStatusByOidCollection(pkList);
+	}
+
+	/**
+	 * 鎵归噺鏍规嵁涓婚敭鑾峰彇鐘舵��
+	 *
+	 * @param pkStatusCollection 鐘舵�佷富閿泦鍚�
+	 * @return 鐘舵�佸垪琛紝濡傛灉鏈変笉瀛樺湪鐨勪笉浼氳繑鍥烇紝鍏ㄩ儴涓嶅瓨鍦ㄧ殑鍒欒繑鍥炵┖鍒楄〃
+	 * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欐椂浼氭姏鍑洪敊璇�
+	 */
+	@Override
+	public List<StatusVO> listStatusByOidCollection(Collection<String> pkStatusCollection) throws VciBaseException {
+		if(!CollectionUtils.isEmpty(pkStatusCollection)){
+			List<Status> statusDOList = listStatusByOidCollectionDO(pkStatusCollection);
+			if(!CollectionUtils.isEmpty(statusDOList)) {
+				return StatusWrapper.build().listEntityVO(statusDOList);
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * 鏍规嵁涓婚敭闆嗗悎鑾峰彇鏁版嵁瀵硅薄
+	 * @param oidCollection 涓婚敭闆嗗悎
+	 * @return 鏌ヨ鍑烘潵鐨勬暟鎹璞�
+	 * @throws VciBaseException mybatis鎵ц鍑洪敊鏃朵細鎶涘嚭寮傚父
+	 */
+	private List<Status> listStatusByOidCollectionDO(Collection<String> oidCollection) throws VciBaseException{
+		if(!CollectionUtils.isEmpty(oidCollection)){
+			List<Status> statusDOList = new ArrayList<>();
+			Collection<Collection<String>> pksCollections = VciBaseUtil.switchCollectionForOracleIn(oidCollection);
+			if(!CollectionUtils.isEmpty(pksCollections)) {
+				pksCollections.forEach(s -> {
+					List<Status> queryResult = baseMapper.selectList(Wrappers.<Status>query().lambda().in(Status::getOid,s));
+					if(!CollectionUtils.isEmpty(queryResult)){
+						statusDOList.addAll(queryResult);
+					}
+				});
+			}
+			return statusDOList;
+		}
+		return null;
+	}
+
+	/**
+	 * 鏍规嵁鑻辨枃鍚嶇О鑾峰彇鐘舵��
+	 *
+	 * @param id 鑻辨枃鍚嶇О
+	 * @return 鐘舵�侊紝濡傛灉涓嶅瓨鍦ㄤ細杩斿洖null
+	 * @throws VciBaseException 鏌ヨ鍑洪敊鎶涘嚭寮傚父
+	 */
+	@Override
+	public StatusVO getStatusById(String id) throws VciBaseException {
+		List<StatusVO> statusVOList = listStatusByIds(id);
+		if(!CollectionUtils.isEmpty(statusVOList)){
+			return statusVOList.get(0);
+		}
+		return null;
+	}
+
+	/**
+	 * 鏍规嵁鑻辨枃鍚嶇О鎵归噺鑾峰彇鐘舵��
+	 *
+	 * @param ids 鑻辨枃鍚嶇О锛屼娇鐢ㄩ�楀彿鍒嗛殧
+	 * @return 鐘舵�佸垪琛紝濡傛灉鏈変笉瀛樺湪鐨勪笉浼氳繑鍥烇紝鍏ㄩ儴涓嶅瓨鍦ㄧ殑鍒欒繑鍥炵┖鍒楄〃
+	 * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欐椂浼氭姏鍑洪敊璇�
+	 */
+	@Override
+	public List<StatusVO> listStatusByIds(String ids) throws VciBaseException {
+		VciBaseUtil.alertNotNull(ids,"鐘舵�佺殑鑻辨枃鍚嶇О");
+		List<String> idList = Func.toStrList(",", ids);
+		return listStatusByIdCollection(idList);
+	}
+
+	/**
+	 * 鏍规嵁鑻辨枃鍚嶇О闆嗗悎鎵归噺鑾峰彇鐘舵��
+	 *
+	 * @param idCollection 鑻辨枃鍚嶇О闆嗗悎
+	 * @return 鐘舵�佸垪琛紝濡傛灉鏈変笉瀛樺湪鐨勪笉浼氳繑鍥烇紝鍏ㄩ儴涓嶅瓨鍦ㄧ殑鍒欒繑鍥炵┖鍒楄〃
+	 * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欐椂浼氭姏鍑洪敊璇�
+	 */
+	@Override
+	public List<StatusVO> listStatusByIdCollection(Collection<String> idCollection) throws VciBaseException {
+		if(!CollectionUtils.isEmpty(idCollection)){
+			List<Status> statusDOList = listStatusByIdCollectionDO(idCollection);
+			if(!CollectionUtils.isEmpty(statusDOList)) {
+				return StatusWrapper.build().listEntityVO(statusDOList);
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * 鏍规嵁鑻辨枃鍚嶇О闆嗗悎鑾峰彇鏁版嵁瀵硅薄
+	 * @param idCollection 鑻辨枃鍚嶇О闆嗗悎
+	 * @return 鏁版嵁瀵硅薄鍒楄〃锛屽鏋滄湁涓嶅瓨鍦ㄧ殑涓嶄細杩斿洖锛屽叏閮ㄤ笉瀛樺湪鐨勫垯杩斿洖绌哄垪琛�
+	 * @throws VciBaseException mybatis鏌ヨ鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
+	 */
+	private List<Status> listStatusByIdCollectionDO(Collection<String> idCollection) throws VciBaseException {
+		if(CollectionUtils.isEmpty(idCollection)) {
+			return null;
+		}
+		List<Status> statusDOList = new ArrayList<>();
+		Collection<Collection<String>> idCollections = VciBaseUtil.switchCollectionForOracleIn(idCollection);
+		if(!CollectionUtils.isEmpty(idCollections)) {
+			idCollections.forEach(s -> {
+				List<Status> queryResult = baseMapper.selectList(Wrappers.<Status>query().lambda().in(Status::getId,s));
+				if(!CollectionUtils.isEmpty(queryResult)){
+					statusDOList.addAll(queryResult);
+				}
+			});
+		}
+		return statusDOList;
+	}
+
+	/**
+	 * 鏍规嵁鐘舵�佷富閿幏鍙栦腑鏂囧悕绉�
+	 *
+	 * @param oid 鐘舵�佷富閿紝澶氫釜浣跨敤閫楀彿鍒嗛殧
+	 * @return 涓枃鍚嶇О锛屽鏋滀笉瀛樺湪浼氳繑鍥瀗ull
+	 * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欐椂浼氭姏鍑洪敊璇�
+	 */
+	@Override
+	public String getNameByOid(String oid) throws VciBaseException {
+		VciBaseUtil.alertNotNull(oid,"鐘舵�佸璞′富閿�");
+		return Optional.ofNullable(getStatusByOid(oid)).orElseGet(StatusVO::new).getName();
+	}
+
+	/**
+	 * 鏍规嵁鐘舵�佽嫳鏂囧悕绉拌幏鍙栦腑鏂囧悕绉�
+	 *
+	 * @param id 鐘舵�佽嫳鏂囧悕绉�
+	 * @return 涓枃鍚嶇О锛屽鏋滀笉瀛樺湪浼氳繑鍥瀗ull
+	 * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欐椂浼氭姏鍑洪敊璇�
+	 */
+	@Override
+	public String getNameById(String id) throws VciBaseException {
+		VciBaseUtil.alertNotNull(id,"鐘舵�佸璞′富閿�");
+		return Optional.ofNullable(getStatusById(id)).orElseGet(StatusVO::new).getName();
+	}
+
+	/**
+	 * 娣诲姞鐘舵��
+	 *
+	 * @param statusVO 鐘舵�佹樉绀哄璞★紙鍜孌TO鍏辩敤锛�
+	 * @return 娣诲姞鍚庣殑鐘舵��
+	 * @throws VciBaseException 娣诲姞鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
+	 */
+	@Override
+	public StatusVO addSave(StatusVO statusVO) throws VciBaseException {
+		VciBaseUtil.alertNotNull(statusVO,"瑕佹坊鍔犵殑鐘舵��",statusVO.getId(),"鐘舵�佽嫳鏂囧悕绉�",statusVO.getName(),"鐘舵�佷腑鏂囧悕绉�");
+		List<StatusVO> statusVOS = new ArrayList<>();
+		statusVOS.add(statusVO);
+		List<StatusVO> statusVOList = batchAddSave(statusVOS);
+		if(CollectionUtils.isEmpty(statusVOList)){
+			return null;
+		}
+		return statusVOList.get(0);
+	}
+
+	/**
+	 * 鎵归噺娣诲姞鐘舵��
+	 *
+	 * @param statusVOList 鐘舵�佹樉绀哄璞″垪琛�(鍜孌TO鍏辩敤)
+	 * @return 鎵归噺娣诲姞鍚庣殑鐘舵��
+	 * @throws VciBaseException 娣诲姞鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
+	 */
+	@Override
+	public List<StatusVO> batchAddSave(List<StatusVO> statusVOList) throws VciBaseException {
+		if(CollectionUtils.isEmpty(statusVOList)){
+			throw new VciBaseException("瑕佹坊鍔犵殑鐘舵�佸璞′笉鑳戒负绌�");
+		}
+		//1. 鍒ゆ柇鍚勪釜灞炴�ф槸鍚﹀繀杈撻」閮借緭鍏ヤ簡
+		//2. 鍒ゆ柇鑻辨枃鍚嶇О鏄惁閲嶅
+		Set<String> idSet = new HashSet<>();
+		String creator = AuthUtil.getUserAccount();
+		Date now = new Date();
+		String btmName = "status";
+		Pattern pattern = Pattern.compile(REGEXP);
+		statusVOList.forEach(s -> {
+			if (!pattern.matcher(s.getId()).matches()){
+				throw new VciBaseException("鑻辨枃鍚嶇О{0}鍙兘鏄嫳鏂囧瓧姣�",new Object[]{s.getId()});
+			}
+			VciBaseUtil.alertNotNull(s.getId(),"鐘舵�佽嫳鏂囧悕绉�",s.getName(),"鐘舵�佷腑鏂囧悕绉�");
+			if(idSet.contains(s.getId().toLowerCase().trim())){
+				throw new VciBaseException("鑻辨枃鍚嶇О涓簕0}鐨勭姸鎬佸凡缁忓瓨鍦紙涓嶅尯鍒嗗ぇ灏忓啓锛�",new Object[]{s.getId()});
+			}else{
+				idSet.add(s.getId().toLowerCase().trim());
+			}
+			if(StringUtils.isBlank(s.getOid())){
+				s.setOid(VciBaseUtil.getPk());
+			}
+			s.setBtmName(btmName);
+			s.setOwner(creator);
+			s.setCreator(creator);
+			s.setCreateTime(now);
+			s.setLastModifier(creator);
+			s.setLastModifyTime(now);
+			s.setTs(now);
+		});
+		//鍒ゆ柇鏄惁瀛樺湪
+		List<Status> checkExistStatusDOList = listStatusByIdCollectionDO(idSet);
+		if(!CollectionUtils.isEmpty(checkExistStatusDOList)){
+			String existIds = checkExistStatusDOList.stream().map(Status::getId).collect(Collectors.joining(","));
+			throw new VciBaseException("鑻辨枃鍚嶇О涓簕0}鐨勭姸鎬佺殑宸茬粡鍦ㄧ郴缁熶腑瀛樺湪锛堜笉鍖哄垎澶у皬鍐欙級锛屼笉鑳芥坊鍔�",new Object[]{existIds});
+		}
+		List<Status> statusDOList = StatusWrapper.build().batchCopyVO2DO(statusVOList);
+		VciBaseUtil.switchCollectionForOracleIn(statusDOList,1000).forEach(this::saveBatch);
+		return statusVOList;
+	}
+
+	/**
+	 * 淇敼鐘舵��
+	 *
+	 * @param statusVO 鐘舵�佹樉绀哄璞★紙鍜孌TO鍏辩敤锛�
+	 * @return 淇敼鍚庣殑鐘舵��
+	 * @throws VciBaseException 淇敼鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
+	 */
+	@Override
+	public StatusVO editSave(StatusVO statusVO) throws VciBaseException {
+		VciBaseUtil.alertNotNull(statusVO,"瑕佷慨鏀圭殑鐘舵�佸璞�",statusVO.getOid(),"瑕佷慨鏀圭殑鐘舵�佸璞$殑涓婚敭");
+		List<StatusVO> needEditVOList = new ArrayList<>();
+		needEditVOList.add(statusVO);
+		List<StatusVO> statusVOList = batchEditSave(needEditVOList);
+		if(!CollectionUtils.isEmpty(statusVOList)){
+			return statusVOList.get(0);
+		}
+		return null;
+	}
+
+	/**
+	 * 鎵归噺淇敼鐘舵��
+	 *
+	 * @param statusVOList 鐘舵�佹樉绀哄璞″垪琛紙鍜孌TO鍏辩敤锛�
+	 * @return 鎵归噺淇敼鍚庣殑鐘舵��
+	 * @throws VciBaseException 淇敼鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
+	 */
+	@Override
+	public List<StatusVO> batchEditSave(List<StatusVO> statusVOList) throws VciBaseException {
+		if(CollectionUtils.isEmpty(statusVOList)){
+			throw new VciBaseException("瑕佷慨鏀圭殑鐘舵�佸璞′笉鑳戒负绌�");
+		}
+		//1. 鍒ゆ柇鍚勪釜灞炴�ф槸鍚﹀繀杈撻」閮借緭鍏ヤ簡
+		//2. 鍒ゆ柇鐘舵�佺殑鑻辨枃鍚嶇О鏄惁閲嶅
+		Set<String> idSet = new HashSet<>();
+		Map<String,StatusVO> oidObjectMap = new HashMap<>();
+		String creator = AuthUtil.getUserAccount();
+		Date now = new Date();
+		statusVOList.forEach(s -> {
+			//鍒ゆ柇涓虹┖
+			VciBaseUtil.alertNotNull(s.getOid(),"鐘舵�佷富閿�",s.getId(),"鐘舵�佽嫳鏂囧悕绉�",s.getName(),"鐘舵�佷腑鏂囧悕绉�");
+			//鍒ゆ柇鏈鏄惁瀛樺湪
+			if(idSet.contains(s.getId().toLowerCase().trim())){
+				throw new VciBaseException("鑻辨枃鍚嶇О涓簕0}鐨勭姸鎬佸凡缁忓瓨鍦紙涓嶅尯鍒嗗ぇ灏忓啓锛�",new Object[]{s.getId()});
+			}else{
+				idSet.add(s.getId().toLowerCase().trim());
+			}
+			oidObjectMap.put(s.getOid(),s);
+			s.setLastModifier(creator);
+			s.setLastModifyTime(now);
+			s.setTs(now);
+		});
+		//鍒ゆ柇鏄惁瀛樺湪
+		List<Status> statusDOList = listStatusByOidCollectionDO(oidObjectMap.keySet());
+		if(CollectionUtils.isEmpty(statusDOList)){
+			throw new VciBaseException("杩欎簺鐘舵�佸湪绯荤粺涓潎涓嶅瓨鍦�",new Object[]{});
+		}
+		//鍒ゆ柇灞炴�у悕绉版槸鍚︿慨鏀�
+		Set<String> oidInDbSet = new HashSet<>();
+		statusDOList.forEach(s -> {
+			StatusVO statusVO =  oidObjectMap.get(s.getOid());
+			if(!statusVO.getId().equalsIgnoreCase(s.getId())){
+				throw new VciBaseException("鐘舵�乕{0}]鐨勮嫳鏂囧悕绉颁笉鍏佽淇敼锛屽師鍚嶇О{1},鏂板悕绉皗2}",new Object[]{s.getName(),s.getId(),statusVO.getId()});
+			}
+			BeanUtil.convert(statusVO,s);
+			oidInDbSet.add(s.getOid());
+		});
+		oidObjectMap.forEach( (k,v) ->{
+			if(!oidInDbSet.contains(k)){
+				throw new VciBaseException("鐘舵�亄0}[{1}]鍦ㄧ郴缁熶腑涓嶅瓨鍦�",new Object[]{v.getId(),v.getName()});
+			}
+		});
+		//鐪嬬湅鏄惁鏈変笉鍦ㄧ郴缁熶腑瀛樺湪鐨�
+		VciBaseUtil.switchCollectionForOracleIn(statusDOList).forEach(this::saveOrUpdateBatch);
+		return statusVOList;
+	}
+
+	/**
+	 * 鍒犻櫎鐘舵��
+	 *
+	 * @param statusVO 鐘舵�佹樉绀哄璞�
+	 * @throws VciBaseException 濡傛灉鐘舵�佽寮曠敤锛屾垨鑰呭垹闄ゅ嚭閿欐椂浼氭姏鍑哄紓甯�
+	 */
+	@Override
+	public void delete(StatusVO statusVO) throws VciBaseException {
+		VciBaseUtil.alertNotNull(statusVO,"瑕佸垹闄ょ殑鐘舵�佸璞�",statusVO.getOid(),"瑕佸垹闄ょ殑鐘舵�佸璞$殑涓婚敭");
+		List<StatusVO> needDeleteVOList = new ArrayList<>();
+		needDeleteVOList.add(statusVO);
+		batchDelete(needDeleteVOList);
+	}
+
+	/**
+	 * 鎵归噺鍒犻櫎鐘舵��
+	 *
+	 * @param statusVOList 瑕佸垹闄ょ殑鐘舵�佹樉绀哄璞″垪琛�
+	 * @throws VciBaseException 濡傛灉鐘舵�佽寮曠敤锛屾垨鑰呭垹闄ゅ嚭閿欐椂浼氭姏鍑哄紓甯�
+	 */
+	@Override
+	public void batchDelete(List<StatusVO> statusVOList) throws VciBaseException {
+		if(CollectionUtils.isEmpty(statusVOList)){
+			throw new VciBaseException("瑕佸垹闄ょ殑鐘舵�佸璞′笉鑳戒负绌�");
+		}
+		Set<String> oidSet= new HashSet<>();
+		statusVOList.stream().forEach( s -> {
+			VciBaseUtil.alertNotNull(s.getOid(),"瑕佸垹闄ょ殑鐘舵�佸璞$殑涓婚敭");
+			oidSet.add(s.getOid());
+		});
+		//鏌ヨ
+		List<Status> statusDOList = listStatusByOidCollectionDO(oidSet);
+		if(CollectionUtils.isEmpty(statusDOList)){
+			throw new VciBaseException("瑕佸垹闄ょ殑鐘舵�佸湪绯荤粺涓笉瀛樺湪,鍙兘鎮ㄩ渶瑕佸埛鏂板悗鍐嶈瘯");
+		}
+		Set<String> oidInDbSet = statusDOList.stream().map(Status::getOid).collect(Collectors.toSet());
+		oidSet.forEach( s -> {
+			if(!oidInDbSet.contains(s)){
+				throw new VciBaseException("瑕佸垹闄ょ殑鐘舵�佸湪绯荤粺涓笉瀛樺湪,鍙兘鎮ㄩ渶瑕佸埛鏂板悗鍐嶈瘯");
+			}
+		});
+		//妫�鏌ュ睘鎬ф槸鍚﹁寮曠敤
+		if(checkStatusUseds(oidSet)){
+			throw new VciBaseException("瑕佸垹闄ょ殑鐘舵�佸湪鐢熷懡鍛ㄦ湡瀵硅薄涓浣跨敤锛屾棤娉曞垹闄�");
+		}
+		Collection<Collection<String>> oidCollections = VciBaseUtil.switchCollectionForOracleIn(oidInDbSet);
+		for(Collection<String> oidCollection : oidCollections){
+			baseMapper.delete(Wrappers.<Status>query().lambda().in(Status::getOid,oidCollection));
+		}
+	}
+
+	/**
+	 * 鎵归噺鏍¢獙鐘舵�佹槸鍚﹁浣跨敤
+	 *
+	 * @param oidCollection 涓婚敭闆嗗悎
+	 * @return true琛ㄧず琚紩鐢�
+	 */
+	@Override
+	public boolean checkStatusUseds(Collection<String> oidCollection) {
+		return false;
+	}
+
+	/**
+	 * 鏍¢獙鐘舵�佹槸鍚﹁寮曠敤
+	 *
+	 * @param pkStatus 鐘舵�佺殑涓婚敭
+	 * @return true琛ㄧず琚紩鐢紝 false琛ㄧず娌℃湁琚紩鐢�
+	 * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欐椂浼氭姏鍑洪敊璇�
+	 */
+	@Override
+	public boolean checkStatusUsed(String pkStatus) throws VciBaseException {
+		return false;
+	}
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/RevisionRuleWrapper.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/RevisionRuleWrapper.java
new file mode 100644
index 0000000..407f696
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/RevisionRuleWrapper.java
@@ -0,0 +1,46 @@
+package com.vci.ubcs.omd.wrapper;
+
+import com.vci.ubcs.omd.dto.RevisionRuleDTO;
+import com.vci.ubcs.omd.entity.RevisionRule;
+import com.vci.ubcs.omd.vo.RevisionRuleVO;
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.utils.BeanUtil;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * Description: 鐗堟湰瑙勫垯鐨勫寘瑁呯被
+ *
+ * @author LiHang
+ * @date 2023/5/17
+ */
+public class RevisionRuleWrapper  extends BaseEntityWrapper<RevisionRule, RevisionRuleVO> {
+
+	public static RevisionRuleWrapper build() {
+		return new RevisionRuleWrapper();
+	}
+
+	@Override
+	public RevisionRuleVO entityVO(RevisionRule entity) {
+		Objects.requireNonNull(entity);
+		RevisionRuleVO vo = BeanUtil.copy(entity, RevisionRuleVO.class);
+		// 鍦ㄨ繖閲屽鐞嗘灇涓惧�肩浉鍏崇殑鏄犲皠
+		return vo;
+	}
+
+	public List<RevisionRuleVO> listEntityVO(List<RevisionRule> entityList){
+		return entityList.stream().map(this::entityVO).collect(Collectors.toList());
+	}
+
+	public List<RevisionRule> batchCopyDTO2DO(List<RevisionRuleDTO> revisionRuleVOList) {
+		return revisionRuleVOList.stream().map(this::copyDTO2DO).collect(Collectors.toList());
+	}
+
+	public RevisionRule copyDTO2DO(RevisionRuleDTO vo){
+		Objects.requireNonNull(vo);
+		RevisionRule rule = BeanUtil.copy(vo, RevisionRule.class);
+		return rule;
+	}
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/StatusWrapper.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/StatusWrapper.java
new file mode 100644
index 0000000..0377794
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/StatusWrapper.java
@@ -0,0 +1,46 @@
+package com.vci.ubcs.omd.wrapper;
+
+import com.vci.ubcs.omd.entity.Status;
+import com.vci.ubcs.omd.vo.StatusVO;
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.utils.BeanUtil;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+/**
+ * Description:鐘舵�佹睜鐨勫寘瑁呯被
+ *
+ * @author LiHang
+ * @date 2023/5/23
+ */
+public class StatusWrapper extends BaseEntityWrapper<Status, StatusVO> {
+
+	public static StatusWrapper build() {
+		return new StatusWrapper();
+	}
+
+	@Override
+	public StatusVO entityVO(Status entity) {
+		StatusVO vo = BeanUtil.copy(entity, StatusVO.class);
+		//杩欓噷澶勭悊鏋氫妇鐩稿叧鐨�
+		return vo;
+	}
+
+	public List<StatusVO> listEntityVO(List<Status> statusList){
+		return Optional.ofNullable(statusList).orElseGet(ArrayList::new).stream().map(this::entityVO).collect(Collectors.toList());
+	}
+
+	public List<Status> batchCopyVO2DO(List<StatusVO> statusVOList) {
+		return Optional.ofNullable(statusVOList).orElseGet(ArrayList::new).stream().map(this::copyVO2DO).collect(Collectors.toList());
+	}
+
+	private Status copyVO2DO(StatusVO statusVO) {
+		Status status = BeanUtil.copy(statusVO, Status.class);
+		return status;
+	}
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/RevisionRuleMapper.xml b/Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/RevisionRuleMapper.xml
new file mode 100644
index 0000000..e129aa4
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/RevisionRuleMapper.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.omd.mapper.RevisionRuleMapper">
+    <resultMap id="BaseResultMap" type="com.vci.ubcs.omd.entity.RevisionRule">
+        <id column="oid" jdbcType="VARCHAR" property="oid" />
+        <result column="id" jdbcType="VARCHAR" property="id" />
+        <result column="name" jdbcType="VARCHAR" property="name" />
+        <result column="description" jdbcType="VARCHAR" property="description" />
+        <result column="skip_code" jdbcType="VARCHAR" property="skipCode" />
+        <result column="start_code" jdbcType="VARCHAR" property="startCode" />
+        <result column="serial_step" jdbcType="DECIMAL" property="serialStep" />
+        <result column="prefix_code" jdbcType="VARCHAR" property="prefixCode" />
+        <result column="suffix_code" jdbcType="VARCHAR" property="suffixCode" />
+        <result column="btm_name" property="btmName" jdbcType="VARCHAR" />
+        <result column="owner" property="owner" jdbcType="VARCHAR" />
+        <result column="creator" jdbcType="VARCHAR" property="creator" />
+        <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
+        <result column="last_modifier" jdbcType="VARCHAR" property="lastModifier" />
+        <result column="last_modify_time" jdbcType="TIMESTAMP" property="lastModifyTime" />
+        <result column="ts" jdbcType="TIMESTAMP" property="ts" />
+    </resultMap>
+
+    <sql id="base_query_column">
+        oid, id, name, description, skip_code, start_code, serial_step, prefix_code, suffix_code,
+        btm_name, owner, creator, create_time, last_modifier, last_modify_time, ts
+    </sql>
+
+    <sql id="tableName">
+        pl_omd_revision_rule
+    </sql>
+
+</mapper>
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/StatusMapper.xml b/Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/StatusMapper.xml
new file mode 100644
index 0000000..ab1a809
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/StatusMapper.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.omd.mapper.StatusMapper">
+    <resultMap id="BaseResultMap" type="com.vci.ubcs.omd.entity.Status">
+        <id column="oid" jdbcType="VARCHAR" property="oid" />
+        <result column="id" jdbcType="VARCHAR" property="id" />
+        <result column="name" jdbcType="VARCHAR" property="name" />
+        <result column="description" jdbcType="VARCHAR" property="description" />
+        <result column="btm_name" property="btmname" jdbcType="VARCHAR" />
+        <result column="owner" property="owner" jdbcType="VARCHAR" />
+        <result column="creator" jdbcType="VARCHAR" property="creator" />
+        <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
+        <result column="last_modifier" jdbcType="VARCHAR" property="lastModifier" />
+        <result column="last_modify_time" jdbcType="TIMESTAMP" property="lastModifyTime" />
+        <result column="ts" jdbcType="TIMESTAMP" property="ts" />
+    </resultMap>
+
+    <sql id="base_query_column">
+        oid, id, name, description, btm_name, owner, creator, create_time, last_modifier, last_modify_time,ts
+    </sql>
+
+    <sql id="tableName">
+        pl_omd_status
+    </sql>
+
+</mapper>

--
Gitblit v1.9.3