From 6732cd7a4e0fd7ea083d4ae11254bde35adb1ee4 Mon Sep 17 00:00:00 2001
From: xiejun <xj@2023>
Date: 星期五, 17 十一月 2023 01:39:20 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/UBCS-WEB/src/components/MasterCrud/VciMasterCrud.vue                                                               |   43 ++
 Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/revision/model/BaseModel.java               |    2 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java               |    2 
 Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/util/WebUtil.java                       |    2 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyVO.java               |    5 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeKeyAttrRepeatController.java            |   59 +---
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClassify.java                       |    5 
 Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/pagemodel/Tree.java                     |    3 
 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeBasicSecMapper.xml                                       |    4 
 Source/UBCS-WEB/src/components/Theme/ThemeAttrCrud.vue                                                                    |   21 
 Source/UBCS-WEB/src/views/code/code.vue                                                                                   |   14 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeKeyAttrRepeatService.java                 |   22 +
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java                     |   22 +
 Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/DefaultAttrAssimtUtil.java             |    1 
 Source/UBCS-WEB/src/components/Theme/ThemeClassifyTreeform.vue                                                            |   17 +
 Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/revision/service/RevisionModelUtil.java     |    2 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeRule.java                           |    1 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/MdmEngineConstant.java                        |  146 +++++++++
 Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue                                                              |  141 +++++----
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/object/ubcscode/config/CodeRule.java |    3 
 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeCLassifyMapper.xml                                       |   59 +++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java              |   50 +++
 Source/UBCS-WEB/src/components/FormTemplate/index.vue                                                                     |   14 +
 Source/UBCS-WEB/src/components/Master/MasterTransfer.vue                                                                  |    2 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java                 |    4 
 Source/UBCS-WEB/src/components/Theme/ThemeClassifyTrees.vue                                                               |   33 ++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeKeyAttrRepeatServiceImpl.java         |   70 ++++
 Source/UBCS-WEB/src/components/BatchImport/index.vue                                                                      |    6 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java                    |    4 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyService.java                      |   12 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyDTO.java                       |   13 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyMapper.java                         |   21 +
 32 files changed, 608 insertions(+), 195 deletions(-)

diff --git a/Source/UBCS-WEB/src/components/BatchImport/index.vue b/Source/UBCS-WEB/src/components/BatchImport/index.vue
index 1f156fe..0f7ca74 100644
--- a/Source/UBCS-WEB/src/components/BatchImport/index.vue
+++ b/Source/UBCS-WEB/src/components/BatchImport/index.vue
@@ -182,7 +182,7 @@
           tipList: [
             "1.鏍囬甯︿簲瑙掓槦鐨勮〃绀哄叧閿睘鎬э紝甯︽槦鍙疯〃绀哄繀杈撻」",
             "2.浼佷笟缂栫爜锛岄泦鍥㈢爜鍜岀姸鎬侀兘闇�瑕佸鍏�",
-            "3.姣忔浠呰兘鏈�澶氬鍏�10000鏉℃暟鎹紝濡傛灉鍑洪敊浼氳繑鍥為敊璇殑鏁版嵁鍜屽師鍥狅紝浣嗘槸姝g‘鐨勬暟鎹細淇濆瓨",
+            "3.姣忔浠呰兘鏈�澶氬鍏�5000鏉℃暟鎹�(鍙�氳繃nacos杩涜閰嶇疆锛屾帹鑽�5000/娆″鍏�)锛屽鏋滃嚭閿欎細杩斿洖閿欒鐨勬暟鎹拰鍘熷洜锛屼絾鏄纭暟鎹彲浠ョ户缁繚瀛�",
             "4.鍒嗙被鐨勮矾寰勯渶瑕佺敤#鍒嗛殧銆備粎濉啓褰撳墠閫夌殑鍒嗙被鏍戜笂鐨勪笅绾у垎绫荤殑璺緞锛屽鏋滃綋鍓嶅垎绫诲凡缁忔槸鍙跺瓙鑺傜偣锛屽垯涓嶅~鍐�",
           ],
           action: "/api/ubcs-code/mdmEngineController/batchImportHistoryData",
@@ -290,12 +290,12 @@
     },
     onError(err) {
       this.pageLoading.close();
-      console.log('onError')
+      //console.log('onError')
     },
     uploadChange(file) {
       if (file.status === "success" || file.status === "error") {
         this.pageLoading.close();
-        console.log('uploadChange')
+        //console.log('uploadChange')
       }
     },
   },
diff --git a/Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue b/Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue
index ea31d7c..dff9401 100644
--- a/Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue
+++ b/Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue
@@ -3,37 +3,37 @@
 <template>
   <div>
     <avue-form
-      v-model="form"
-      :option="option"
-      v-loading="loading"
-      ref="form"
-      :style="{ minHeight: loading ? '300px' : '' }"
       :key="updateIndex"
+      ref="form"
+      v-model="form"
+      v-loading="loading"
+      :option="option"
+      :style="{ minHeight: loading ? '300px' : '' }"
     >
-      <template :slot="item.prop + 'Label'" v-for="item in slotColumnList">
+      <template v-for="item in slotColumnList" :slot="item.prop + 'Label'">
         <span>
           <span>{{ item.label }} </span>
           <el-tooltip
             v-if="item.keyAttr"
             class="item"
-            effect="dark"
             content="璇ュ睘鎬т负鍏抽敭灞炴��"
+            effect="dark"
             placement="top-start"
           >
             <i class="el-icon-star-on key_attr_icon"></i>
           </el-tooltip>
         </span>
       </template>
-      <template :slot="item.prop + ''" v-for="item in slotColumnList">
+      <template v-for="item in slotColumnList" :slot="item.prop + ''">
         <vciWebRefer
-          :key="item.dataKey" :data-key="item.dataKey"
-          v-if="item.type == 'refer'"
-          :referConfig="item.referConfig || {}"
-          :value="form[item.referConfig.field] || item.value"
-          :text="form[item.referConfig.showField]"
+          v-if="item.type == 'refer'" :key="item.dataKey"
+          :data-key="item.dataKey"
           :disabled="item.disabled"
           :display="item.display"
+          :referConfig="item.referConfig || {}"
           :reloadData="item.referConfig.reloadData || false"
+          :text="form[item.referConfig.showField]"
+          :value="form[item.referConfig.field] || item.value"
           @setReferValue="setReferValue"
         ></vciWebRefer>
       </template>
@@ -42,12 +42,13 @@
 </template>
 
 <script>
-import { getFormDetail } from "@/api/formTemplate";
-import { getEnumDictionary } from "../../api/system/dict";
+import {getFormDetail} from "@/api/formTemplate";
+import {getEnumDictionary} from "../../api/system/dict";
 import vciWebRefer from "../refer/vciWebRefer.vue";
+
 export default {
   name: "FormTemplate",
-  components: { vciWebRefer },
+  components: {vciWebRefer},
   props: {
     // 榛樿绂佺敤鍏冪礌
     disabledProp: {
@@ -62,9 +63,9 @@
       type: String,
       default: "",
     },
-    LoadingStatus:{
+    LoadingStatus: {
       type: String,
-      default : "code"
+      default: "code"
     },
     // 鍒楄〃鏁版嵁oid
     rowOid: {
@@ -91,21 +92,22 @@
       type: Number,
       default: 8,
     },
-    TreeValue:{
+    TreeValue: {
       type: String,
       default: "",
     },
-    eventList:{
-      type:Array
+    eventList: {
+      type: Array
     }
   },
   data() {
     return {
-      add:'',
-      codeattrsecValue:'',
-      ValidataValue:false,
-      eventFlag:{},
-      TreeValueForm:'',
+      attrList: [],
+      add: '',
+      codeattrsecValue: '',
+      ValidataValue: false,
+      eventFlag: {},
+      TreeValueForm: '',
       updateIndex: 0,
       form: {},
       option: {
@@ -160,24 +162,33 @@
       immediate: true,
       handler(newV) {
         this.$emit("getFormData", newV);
-        // console.log("getFormData", newV)
       },
     },
-    TreeValue:{
-      handler(newval,oldval){
-        if(newval){
-          this.TreeValueForm=newval;
+
+    attrList: {
+      deep: true,
+      immediate: true,
+      handler(newVal, oldVal) {
+        if (newVal) {
+          this.$emit("attrList", newVal)
+        }
+      }
+    },
+    TreeValue: {
+      handler(newval, oldval) {
+        if (newval) {
+          this.TreeValueForm = newval;
         }
       },
-      deep:true,
-      immediate:true
+      deep: true,
+      immediate: true
     },
   },
   methods: {
     // 娓叉煋琛ㄥ崟妯℃澘
-    templateRender(formItemList,TreeValue) {
+    templateRender(formItemList, TreeValue) {
       if (this.eventList) {
-        this.eventFlag= this.eventList.some(item => {
+        this.eventFlag = this.eventList.some(item => {
           if (item.classifyInvokeEditFlag === 'true') {
             this.eventObject = item;
             return true;
@@ -192,9 +203,9 @@
       formItemList.forEach((formItem) => {
         // console.log('formItem',formItem)
         formItem = this.resetFormConfig(formItem);
-        // if(formItem.type === "datetime"){
-        //   return;
-        // }
+        if (formItem.secType === "codeattrsec") {
+          this.attrList.push(formItem);
+        }
         if (formItem.type === "line") {
           group.push({
             label: formItem.text,
@@ -210,7 +221,7 @@
           (!Array.isArray(formItem.dicData) || formItem.dicData.length === 0) &&
           (!Array.isArray(formItem.data) || formItem.data.length === 0)
         ) {
-          dictKeys.push({ dictKey: formItem.comboxKey, field: formItem.field });
+          dictKeys.push({dictKey: formItem.comboxKey, field: formItem.field});
         }
         // 绂佺敤閮ㄥ垎灞炴�э紙澶栭儴浼犲�肩鐢ㄥ拰鍙傜収绂佺敤锛�
         if (this.disabledProp.includes(formItem.field)) {
@@ -227,23 +238,23 @@
           message = "璇疯緭鍏�";
           trigger = "blur";
         }
-        let fieldMapKey=''
-        if( formItem.type == "refer" && !formItem.fieldMap){
-          fieldMapKey=formItem.field+'Id'
-          formItem.fieldMap={}
-          formItem.fieldMap[fieldMapKey]='id'
-          formItem.fieldMap[formItem.field+'id']='id'
+        let fieldMapKey = ''
+        if (formItem.type == "refer" && !formItem.fieldMap) {
+          fieldMapKey = formItem.field + 'Id'
+          formItem.fieldMap = {}
+          formItem.fieldMap[fieldMapKey] = 'id'
+          formItem.fieldMap[formItem.field + 'id'] = 'id'
         }
 
 
         let columnItem = {
-          change:(val)=>{
-            if(val.column.field === "drawingno"){
-              this.codeattrsecValue=val.value;
+          change: (val) => {
+            if (val.column.field === "drawingno") {
+              this.codeattrsecValue = val.value;
             }
             // console.log(this.codeattrsecValue)
           },
-          dataKey:formItem.dataKey || formItem.field,
+          dataKey: formItem.dataKey || formItem.field,
           label: formItem.text,
           labelslot: true,
           prop: this.$utilFunc.isValuableObj(formItem.referConfig)
@@ -252,16 +263,16 @@
           field: formItem.field,
           type: this.columnType[formItem.type],
           dicData: this.getDataList(formItem.type, formItem.data),
-          disabled: this.type === "detail" ? true : formItem.readOnly || (formItem.codeValueApplyStatus && formItem.codeValueApplyStatus == 2 ?true : false) ,
+          disabled: this.type === "detail" ? true : formItem.readOnly || (formItem.codeValueApplyStatus && formItem.codeValueApplyStatus == 2 ? true : false),
           prepend: this.preOrSufFixShow("text", formItem.prefix),
           append: this.preOrSufFixShow("text", formItem.suffix),
           prefixIcon: this.preOrSufFixShow("icon", formItem.prefix),
           suffixIcon: this.preOrSufFixShow("icon", formItem.suffix),
-          valueFormat:formItem.dateFormate || "yyyy-MM-dd HH:mm:ss",
+          valueFormat: formItem.dateFormate || "yyyy-MM-dd HH:mm:ss",
           format: formItem.dateFormate,
           keyAttr: formItem.keyAttr,
           value: (formItem.dicData && formItem.dicData.length > 0 && formItem.secType == "codefixedsec" ? formItem.dicData[0].id : null) ||
-            (formItem.secType == "codedatesec" ? formItem.codeDateValue: null) || ( TreeValue && formItem.secType == "codelevelsec" ? TreeValue : null) ||
+            (formItem.secType == "codedatesec" ? formItem.codeDateValue : null) || (TreeValue && formItem.secType == "codelevelsec" ? TreeValue : null) ||
             (formItem.secType == "codeattrsec" ? this.add : null),
           placeholder: formItem.inputTip,
           comboxKey: formItem.comboxKey,
@@ -277,7 +288,7 @@
                 title: formItem.text,
                 showField: formItem.showField || formItem.field,
                 field: formItem.field,
-                fieldMap:formItem.fieldMap || {},
+                fieldMap: formItem.fieldMap || {},
                 placeholder: formItem.inputTip,
                 options: formItem.referConfig
               }
@@ -326,10 +337,10 @@
       this.getFormDetail();
     },
     //淇敼绾ц仈椤�
-    changeChildItem(items,TreeValue) {
+    changeChildItem(items, TreeValue) {
       let column = this.option.column;
       let group = this.option.group;
-      let that=this;
+      let that = this;
       items.forEach((item) => {
         let formItem = this.resetFormConfig(item);
 
@@ -352,8 +363,8 @@
           formItem.fieldMap[formItem.field + 'id'] = 'id'
         }
         let columnItem = {
-          change:(val)=>{
-            console.log('1',val)
+          change: (val) => {
+            console.log('1', val)
           },
           label: formItem.text,
           labelslot: true,
@@ -417,7 +428,7 @@
         };
 
         if (group.length === 0) {
-          that.slotColumnList.forEach((colItem,index) => {
+          that.slotColumnList.forEach((colItem, index) => {
             if (colItem.field == columnItem.field) {
               that.slotColumnList[index] = columnItem;
               column[index] = columnItem;
@@ -425,14 +436,14 @@
             }
           })
         } else {
-          that.slotColumnList.forEach((colItem,index) => {
+          that.slotColumnList.forEach((colItem, index) => {
             if (colItem.field == columnItem.field) {
               that.slotColumnList[index] = columnItem;
               return;
             }
           })
-          group.forEach((groupItem,index) => {
-            groupItem.column.forEach((colItem,colIndex) => {
+          group.forEach((groupItem, index) => {
+            groupItem.column.forEach((colItem, colIndex) => {
               if (colItem.field == columnItem.field) {
                 group[index].column[colIndex] = columnItem;
                 return;
@@ -511,7 +522,7 @@
     // 寮傛鑾峰彇瀛楀吀鏁版嵁
     geDictData(dictKeys) {
       dictKeys.forEach((dictObj) => {
-        getEnumDictionary({ code: dictObj.dictKey }).then((res) => {
+        getEnumDictionary({code: dictObj.dictKey}).then((res) => {
           if (res.data && res.data.code === 200) {
             this.option.column = this.option.column.map((item) => {
               if (item.field === dictObj.field) {
@@ -535,7 +546,7 @@
           if (valid) {
             done();
             resolve(true);
-            this.ValidataValue=true;
+            this.ValidataValue = true;
           } else {
             resolve(false);
           }
@@ -545,7 +556,7 @@
     // 鑾峰彇琛ㄥ崟璇︽儏鏁版嵁
     getFormDetail() {
       if (this.type === "add") return;
-      getFormDetail({ templateOid: this.templateOid, oid: this.rowOid }).then(
+      getFormDetail({templateOid: this.templateOid, oid: this.rowOid}).then(
         (res) => {
           this.form = Object.assign(this.form, res.data.data[0]);
           this.loading = false;
@@ -574,7 +585,7 @@
                 if (mapField.indexOf("attribute.") > -1) {
                   temp = _item['attributes'][mapField.subString("attribute.".length)] || _item['attributes']['data'][mapField.subString("attribute.".length)];
                 } else {
-                  temp = _item['attributes'][mapField] ||_item['attributes']['data'][mapField] || _item[mapField];
+                  temp = _item['attributes'][mapField] || _item['attributes']['data'][mapField] || _item[mapField];
                 }
               } else {
                 //鏈夊涓�
diff --git a/Source/UBCS-WEB/src/components/FormTemplate/index.vue b/Source/UBCS-WEB/src/components/FormTemplate/index.vue
index d129e12..fb3a61b 100644
--- a/Source/UBCS-WEB/src/components/FormTemplate/index.vue
+++ b/Source/UBCS-WEB/src/components/FormTemplate/index.vue
@@ -41,6 +41,7 @@
             :selfColumnConfig="selfColumnConfig"
             ref="CodeApply"
             @getFormData="getCodeApplyFormData"
+            @attrList="attrListForm"
             @referConfigDataUpdate="referConfigDataUpdate"
           ></FormTemplate>
         </el-tab-pane>
@@ -131,6 +132,7 @@
   },
   data() {
     return {
+      attrList:[],
       eventList:[],
       //鐮佸�肩殑绗簩绉嶅彧璇婚殣钘忔儏鍐�
       codeValueApplyStatus:'',
@@ -318,6 +320,18 @@
     },
     getFormData(form) {
       this.form = form;
+      //灞炴�х爜娈佃祴鍊�
+      if (this.attrList) {
+        this.attrList.forEach(item => {
+          if (this.form.hasOwnProperty(item.referAttributeId)) {
+            this.codeApplyForm[item.oid] = this.form[item.referAttributeId];
+          }
+        })
+      }
+    },
+    //灞炴�х爜娈佃祴鍊�
+    attrListForm(attrListForm){
+      this.attrList=attrListForm;
     },
     getCodeApplyFormData(codeApplyForm) {
       this.codeApplyForm = codeApplyForm;
diff --git a/Source/UBCS-WEB/src/components/Master/MasterTransfer.vue b/Source/UBCS-WEB/src/components/Master/MasterTransfer.vue
index b7da7aa..8d3d9df 100644
--- a/Source/UBCS-WEB/src/components/Master/MasterTransfer.vue
+++ b/Source/UBCS-WEB/src/components/Master/MasterTransfer.vue
@@ -112,7 +112,7 @@
     },
     value: {
       handler(newval, oldval) {
-        console.log('value', newval)
+        //console.log('value', newval)
       }
     }
   },
diff --git a/Source/UBCS-WEB/src/components/MasterCrud/VciMasterCrud.vue b/Source/UBCS-WEB/src/components/MasterCrud/VciMasterCrud.vue
index 77ae0da..0277de9 100644
--- a/Source/UBCS-WEB/src/components/MasterCrud/VciMasterCrud.vue
+++ b/Source/UBCS-WEB/src/components/MasterCrud/VciMasterCrud.vue
@@ -75,6 +75,18 @@
               </el-table>
             </div>
           </el-row>
+          <!--          鐢宠-->
+          <FormTemplateDialog :TreeValue="TreeValue" :codeClassifyOid="this.codeClassifyOid"
+                              :codeRuleOid="this.codeRuleOid" :disabledProp="disabledProp" :templateOid="templateOid"
+                              :visible.sync="applyvisible"
+                              type="add"
+                              @submit="applySumbit">
+          </FormTemplateDialog>
+          <!--          淇-->
+          <FormTemplateDialog :codeClassifyOid="this.codeClassifyOid" :codeRuleOid="this.codeRuleOid"
+                              :disabledProp="disabledProp" :rowOid="rowOid" :templateOid="templateOid" :title="'淇敼缂栫爜淇℃伅'"
+                              :visible.sync="amendvisible"
+                              type="edit" @submit="amendSumbit"></FormTemplateDialog>
           <!--          鏂板-->
           <FormTemplateDialog :TreeValue="TreeValue" :codeClassifyOid="this.codeClassifyOid"
                               :codeRuleOid="this.codeRuleOid" :disabledProp="disabledProp" :templateOid="templateOid"
@@ -273,6 +285,8 @@
         label: "name",
       },
       tableHeadFindDatas: [],
+      applyvisible:false,
+      amendvisible:false,
       addvisible: false,
       editvisible: false,
       findvisible: false,
@@ -505,11 +519,26 @@
     },
     //鏍囧噯鐢宠
     codeApplyHandler(){
-      console.log('1')
+      this.$nextTick(() => {
+        this.applyvisible = true;
+      });
+    },
+    applySumbit(){
+
+    },
+    amendSumbit(){
+
     },
     //鏍囧噯淇
     codeAMENDHandler(){
-      console.log('2')
+      if (this.selectRow.length !== 1) {
+        this.$message.warning("璇烽�夋嫨涓�鏉℃暟鎹�");
+      } else if (this.selectRow[0].lcstatus !== "Editing") {
+        this.$message.warning("缂栫爜鐘舵�佷笉鏄�滅紪杈戜腑鈥濓紝涓嶅彲缂栬緫");
+      } else {
+        this.amendvisible = true;
+        this.rowOid = this.selectRow[0].oid;
+      }
     },
     addSaveHandler(){
       this.$nextTick(() => {
@@ -825,15 +854,13 @@
     },
     //缂栬緫
     editHandler() {
-      if (this.selectRow.length <= 0) {
+      if (this.selectRow.length !== 1) {
         this.$message.warning("璇烽�夋嫨涓�鏉℃暟鎹�");
-      } else if (this.selectRow.length > 1) {
-        this.$message.warning("鍙兘閫夋嫨涓�鏉℃暟鎹�");
-      } else if (this.selectRow[0].lcstatus != "Editing") {
-        this.$message.warning("缂栫爜鐘舵�佷笉鏄�滅紪杈戜腑鈥�,涓嶅彲缂栬緫");
+      } else if (this.selectRow[0].lcstatus !== "Editing") {
+        this.$message.warning("缂栫爜鐘舵�佷笉鏄�滅紪杈戜腑鈥濓紝涓嶅彲缂栬緫");
       } else {
         this.editvisible = true;
-        this.rowOid = this.selectRow[0]['oid']
+        this.rowOid = this.selectRow[0].oid;
       }
     },
     //楂樼骇鏌ヨ鎸夐挳
diff --git a/Source/UBCS-WEB/src/components/Theme/ThemeAttrCrud.vue b/Source/UBCS-WEB/src/components/Theme/ThemeAttrCrud.vue
index a4aab94..5e44b6a 100644
--- a/Source/UBCS-WEB/src/components/Theme/ThemeAttrCrud.vue
+++ b/Source/UBCS-WEB/src/components/Theme/ThemeAttrCrud.vue
@@ -358,13 +358,14 @@
               @blur="saveRows(row)"
             ></el-input>
             <el-input-number v-if="editingRows === row && editShows== item.prop && item.edit == 'number'"
+                             v-show="!AddCellFlag"
                              v-model="row[item.prop]"
                              :style="{width:(item.width-10)+'px'}"
                              controls-position="right"
                              size="small" @blur="saveRows"></el-input-number>
-            <el-select v-if="editingRows === row && editShows== item.prop && item.edit == 'select' " slot="prepend"
+            <el-select v-if="editingRows === row && editShows== item.prop && item.edit == 'select' " slot="prepend" :clearable="true"
                        v-model="row[item.prop]" allow-create default-first-option
-                       filterable
+                       filterable v-show="!AddCellFlag"
                        @blur="selectChangeHandler(item.editConfig,index)">
               <el-option
                 v-for="optionItem in item.data"
@@ -374,7 +375,7 @@
               </el-option>
             </el-select>
             <el-switch
-              v-if="item.edit === 'switch'" v-model="row[item.prop]" :disabled="!editOpenFlag" active-value="true"
+              v-if="item.edit === 'switch'" v-model="row[item.prop]" :disabled="!editOpenFlag" active-value="true" v-show="!AddCellFlag"
               inactive-value="false">
             </el-switch>
             <span v-else>{{ row[item.prop] }}</span>
@@ -1850,8 +1851,8 @@
       // 鏂板嚱鏁扮敤浜庢墽琛宐atchAddSave鏂规硶
       const executeBatchAddSave = () => {
         batchAddSave(JSON.parse(JSON.stringify(this.ProData))).then(res => {
-          this.$message.success('淇濆瓨鎴愬姛')
           this.editOpenFlag = false;
+          this.$message.success('淇濆瓨鎴愬姛')
           // 璋冪敤鐖剁粍浠朵慨鏀规寜閽姸鎬�
           this.$emit('editCloseChildren')
           this.AddCellFlag = true;
@@ -2104,15 +2105,17 @@
       } else {
         this.injectOption.classifyNumber = 0;
       }
+      // console.log(this.ProData)
       this.injectVisible = false;
     },
     //鍒嗙被娉ㄥ叆娓呯┖
     injectHandleReset() {
-      this.$set(this.CurrentCell, 'classifyInvokeText', '')
-      this.$set(this.CurrentCell, 'classifyInvokeAttr:', '')
-      this.$set(this.CurrentCell, 'classitwInvokeAttrName', '')
-      this.$set(this.CurrentCell, 'classifyInvokeEditFlag', 'false')
-      this.$set(this.CurrentCell, 'classifyInvokeLevel', 'none')
+      this.CurrentCell.classifyInvokeText = null;
+      this.CurrentCell.classifyInvokeAttr = '';
+      this.CurrentCell.classifyInvokeAttrName = '';
+      this.CurrentCell.classifyInvokeEditFlag = '';
+      this.CurrentCell.classifyInvokeLevel = null;
+      // console.log(this.ProData)
       this.injectVisible = false;
     },
     // 鍒嗙被娉ㄥ叆鍙栨秷
diff --git a/Source/UBCS-WEB/src/components/Theme/ThemeClassifyTreeform.vue b/Source/UBCS-WEB/src/components/Theme/ThemeClassifyTreeform.vue
index 4ea4530..f21526d 100644
--- a/Source/UBCS-WEB/src/components/Theme/ThemeClassifyTreeform.vue
+++ b/Source/UBCS-WEB/src/components/Theme/ThemeClassifyTreeform.vue
@@ -392,7 +392,22 @@
               focus: this.simFouce,
               readonly: true,
             },
-
+            {
+              label: '鏄惁鍙備笌鍏抽敭灞炴�ф牎楠�',
+              prop: 'isParticipateCheck',
+              type: 'switch',
+              activeColor: "#13ce66",
+              inactiveColor: "#ff4949",
+              labelWidth:160,
+              dicData: [{
+                label: '鍚�',
+                value: 0
+              }, {
+                label: '鏄�',
+                value: 1
+              }
+              ]
+            }
           ]
 
       }
diff --git a/Source/UBCS-WEB/src/components/Theme/ThemeClassifyTrees.vue b/Source/UBCS-WEB/src/components/Theme/ThemeClassifyTrees.vue
index ae3a1ef..69351e6 100644
--- a/Source/UBCS-WEB/src/components/Theme/ThemeClassifyTrees.vue
+++ b/Source/UBCS-WEB/src/components/Theme/ThemeClassifyTrees.vue
@@ -63,6 +63,16 @@
                 <el-input v-model="TreeAddform.codeKeyAttrRepeatOidName" autocomplete="off" style="width: 585px"
                           @focus="Keyfouce"></el-input>
               </el-form-item>
+              <el-form-item label="鏄惁鍙備笌鍏抽敭灞炴�ф牎楠岋細" label-width="170px">
+                <el-switch
+                  v-model="TreeAddform.codeKeyAttrValue"
+                  active-text="鏄�"
+                  inactive-text="鍚�"
+                  active-color="#13ce66"
+                  inactive-color="#ff4949"
+                  @change="switchChange">
+                </el-switch>
+              </el-form-item>
               <el-form-item label="鐩镐技鏌ヨ瑙勫垯锛�" label-width="150px">
                 <el-input v-model="TreeAddform.codeResembleRuleOidName" autocomplete="off" style="width: 585px"
                           @focus="simFouce"></el-input>
@@ -586,7 +596,9 @@
         //缂栫爜瑙勫垯
         codeRuleOidName: "",
         //瀛樺偍鐨勪笟鍔$被鍨�
-        btmTypeName: ""
+        btmTypeName: "",
+        codeKeyAttrValue:true,
+        isParticipateCheck:1
       },
       rules: {
         id: [
@@ -853,6 +865,11 @@
   created() {
   },
   methods: {
+    // switch
+    switchChange(){
+      this.TreeAddform.isParticipateCheck = this.TreeAddform.codeKeyAttrValue === true ? 1 : 0;
+      // console.log(this.TreeAddform.isParticipateCheck)
+    },
     //瀛樺偍鐨勪笟鍔$被鍨嬪叧闂�
     BtmEscHandler() {
       this.SelectFInd = '';
@@ -1137,7 +1154,13 @@
     },
     //鏍戣妭鐐瑰彇娑堜簨浠�
     TreeEscHandler() {
-      this.TreeAddform = {};
+      for (let key in this.TreeAddform) {
+        if (key !== 'codeKeyAttrValue' && key !== 'isParticipateCheck') {
+          this.TreeAddform[key] = "";
+        }
+      }
+      this.TreeAddform.codeKeyAttrValue = true;
+      this.TreeAddform.isParticipateCheck = 1;
       this.TreeAddFormVisible = false;
       // 鍏抽棴寮圭獥娓呯┖鏍¢獙
       this.$refs.myForm.clearValidate();
@@ -1157,6 +1180,8 @@
             });
             Object.keys(this.TreeAddform).forEach(key => {
               this.TreeAddform[key] = "";
+              this.TreeAddform.codeKeyAttrValue = true;
+              this.TreeAddform.isParticipateCheck = 1;
             });
             this.getAttr();
             this.TreeAddFormVisible = false;
@@ -1350,6 +1375,10 @@
           this.crudOid = ''
         }
         this.TreeList = res3.data.data;
+        if(this.TreeList.isParticipateCheck === null || this.TreeList.isParticipateCheck === undefined ||this.TreeList.isParticipateCheck === ""){
+          this.$set(this.TreeList,"isParticipateCheck",1)
+          return
+        }
       } catch (error) {
         this.$message.error(error);
       }
diff --git a/Source/UBCS-WEB/src/views/code/code.vue b/Source/UBCS-WEB/src/views/code/code.vue
index 05af43c..023dbcb 100644
--- a/Source/UBCS-WEB/src/views/code/code.vue
+++ b/Source/UBCS-WEB/src/views/code/code.vue
@@ -886,7 +886,7 @@
                         :referConfig="this.referConfig || {}"
                         :display="true"
                         :value="form.customCodeSerialClass"
-                        :text="form.customCodeSerialClassText"
+                        :text="form.customCodeSerialClass"
                         @setReferValue="setReferValue"
                       ></vciWebRefer>
 <!--                                    <el-input-->
@@ -1718,6 +1718,10 @@
     //鑷畾涔夋祦姘村け鐒�
     setReferValue(data){
       console.log(data)
+      if(data.field){
+        this.form[data.field] = data.value || "";
+        // this.form[data.showField] = data.text || "";
+      }
     },
     /** 杞Щ瑙勫垯鎵�鏈夎�呭璇濇 */
     escapeOwner() {
@@ -1777,7 +1781,7 @@
       //杞崲鎴怞SON瀛楃涓茶繘琛岀埗缁勪欢鍥炴樉
       let submitFormJson = JSON.stringify(content);
       this.form.referConfig = submitFormJson || "";
-      debugger;
+      // debugger;
     },
     /** 寮曠敤鐮佹涓恒�愬弬鐓у紩鐢ㄧ殑涓氬姟绫诲瀷銆戦�夊彇鍊间箣鍚庣殑鍐呭鍥炴樉鏃惰皟鐢� */
     echoReferBtmType(content) {
@@ -2522,8 +2526,7 @@
                 this.releadDisabled = false;
               });
             }
-          })
-          .catch((error) => {
+          }).catch((error) => {
             this.releadDisabled = false;
           });
         this.releadDisabled = false;
@@ -2798,6 +2801,7 @@
                 type: "success",
                 message: "鎿嶄綔鎴愬姛!",
               });
+              console.log(this.form)
               // 鍏抽棴瀵硅瘽妗�
               this.addBasicCodeSettingBox = false;
               // 鐐瑰嚮鏂板鍩虹鐮佹,鍏抽棴绐楀彛涔嬪悗瑙﹀彂閲嶆柊鍔犺浇
@@ -3284,6 +3288,7 @@
     },
     /** 鐮佹绫诲瀷鏀瑰彉鏃讹紝澧炲姞瀵瑰簲鐨刦orm琛ㄥ崟涓殑灞炴��*/
     changeSectypeFormItems(row) {
+      console.log(row)
       if (
         func.isEmpty(this.enumParam.secTypeList) ||
         this.enumParam.secTypeList.length == 0
@@ -3304,6 +3309,7 @@
         pkCodeRule: row != null ? row.pkCodeRule : this.form.pkCodeRule, //鎵�灞炵紪鐮佽鍒�
         prefixCode: row != null ? row.prefixCode : this.form.prefixCode, //鍓嶇紑
         suffixCode: row != null ? row.suffixCode : this.form.suffixCode, //鍚庣紑
+        // customCodeSerialClass: row != null ? row.customCodeSerialClass : this.form.customCodeSerialClass
       };
       if (this.form.secType === "codefixedsec") {
         //鍥哄畾鐮佹
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/object/ubcscode/config/CodeRule.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/object/ubcscode/config/CodeRule.java
index 31cf74e..aa84465 100644
--- a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/object/ubcscode/config/CodeRule.java
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/rmip/code/client/codeapply/Apply410/object/ubcscode/config/CodeRule.java
@@ -96,6 +96,5 @@
 	public void setBasicSecTypes(String basicSecTypes) {
 		this.basicSecTypes = basicSecTypes;
 	}
-	
-	
+
 }
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyDTO.java
index 641a037..3390a5d 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyDTO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClassifyDTO.java
@@ -69,6 +69,11 @@
 	 */
 	private String codeResembleRuleOidName;
 
+	/**
+	 * 鏄惁鍙備笌鏍¢獙锛�0:涓嶅弬涓�;1:鍙備笌
+	 */
+	private Integer isParticipateCheck;
+
 	public boolean getAblechildren() {
 		return ablechildren;
 	}
@@ -207,6 +212,14 @@
 		this.codeResembleRuleOidName = codeResembleRuleOidName;
 	}
 
+	public Integer getIsParticipateCheck() {
+		return isParticipateCheck;
+	}
+
+	public void setIsParticipateCheck(Integer isParticipateCheck) {
+		this.isParticipateCheck = isParticipateCheck;
+	}
+
 	@Override
 	public String toString() {
 		return "CodeClassifyDTO{" +
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClassify.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClassify.java
index 9ae7955..f882c6a 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClassify.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClassify.java
@@ -89,6 +89,11 @@
 	private String codeResembleRuleOid;
 
 	/**
+	 * 鏄惁鍙備笌鏍¢獙锛�0:涓嶅弬涓�;1:鍙備笌
+	 */
+	private Integer isParticipateCheck;
+
+	/**
 	 * 鐩镐技椤规煡璇㈣鍒欏悕绉�
 	 */
 	@Transient(referColumn = "codeResembleRuleOid.name")
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeRule.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeRule.java
index da6fbfe..9099f3d 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeRule.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeRule.java
@@ -16,7 +16,6 @@
  */
 package com.vci.ubcs.code.entity;
 
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.vci.ubcs.starter.constant.CodeTableNameConstant;
 import com.vci.ubcs.starter.revision.model.BaseModel;
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyVO.java
index fe274b5..e872c29 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyVO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeClassifyVO.java
@@ -63,6 +63,11 @@
 	private Integer dataLevel;
 
 	/**
+	 * 鏄惁鍙備笌鏍¢獙锛�0:涓嶅弬涓�;1:鍙備笌
+	 */
+	private Integer isParticipateCheck;
+
+	/**
 	 * 灞傜骇鐨勮矾寰�
 	 */
 	private String path;
diff --git a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/revision/model/BaseModel.java b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/revision/model/BaseModel.java
index 36562a7..e8923b1 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/revision/model/BaseModel.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/revision/model/BaseModel.java
@@ -53,6 +53,7 @@
 	private String firstV;
 
 	private String creator;
+
 	@DateTimeFormat(
 		pattern = "yyyy-MM-dd HH:mm:ss"
 	)
@@ -62,6 +63,7 @@
 	private Date createTime;
 
 	private String lastModifier;
+
 	@DateTimeFormat(
 		pattern = "yyyy-MM-dd HH:mm:ss"
 	)
diff --git a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/revision/service/RevisionModelUtil.java b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/revision/service/RevisionModelUtil.java
index 18c0cc2..e5bf696 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/revision/service/RevisionModelUtil.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/revision/service/RevisionModelUtil.java
@@ -58,7 +58,9 @@
 					});
 					tree.setOid((String)oidValues.stream().collect(Collectors.joining(wrapperOptions.getOidValueSep())));
 					tree.setName((String) VciBaseUtil.getValueFromField("name", doObject));
+					// TODO:涓氬姟鏁版嵁鎬绘暟缁熻鏆傛椂娌″畬鍠�
 					String total = (String) VciBaseUtil.getValueFromField("total", doObject);
+					Integer isParticipateCheck = (Integer) VciBaseUtil.getValueFromField("isParticipateCheck", doObject);
 					if(Func.isNotEmpty(total)){
 						tree.setCount("銆�"+total+"銆�");
 					}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/DefaultAttrAssimtUtil.java b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/DefaultAttrAssimtUtil.java
index ab54355..4e0bb26 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/DefaultAttrAssimtUtil.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/DefaultAttrAssimtUtil.java
@@ -51,6 +51,7 @@
 			baseModel.setLastR("1");
 			baseModel.setLastV("1");
 			baseModel.setRevisionSeq(1);
+			// TODO:鐩墠鍙湁缂栫爜瑙勫垯涓湁鐢ㄥ埌锛屽悗鏈熼渶瑕佸幓鎺夎繖娈典唬鐮佺殑璇濓紝灏辨妸浠栧姞鍦ㄧ紪鐮佽鍒欐柊澧炰腑鍘�
 			if(Func.isBlank(baseModel.getOwner())){
 				// 璁剧疆鎵�鏈夎��
 				baseModel.setOwner(AuthUtil.getUserId().toString());
diff --git a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/pagemodel/Tree.java b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/pagemodel/Tree.java
index 892c52d..abaeb25 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/pagemodel/Tree.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/pagemodel/Tree.java
@@ -30,6 +30,8 @@
 	private String index;
 	private Map<String, String> attributes = new HashMap();
 
+
+
 	public Tree() {
 	}
 
@@ -243,6 +245,7 @@
 		}
 
 	}
+
 	@Override
 	public String toString() {
 		return "Tree{oid='" + this.oid + '\'' + ", text='" + this.text + '\'' + ", leaf=" + this.leaf + ", showCheckbox=" + this.showCheckbox + ", checked=" + this.checked + ", children=" + this.children + ", icon='" + this.icon + '\'' + ", iconCls='" + this.iconCls + '\'' + ", parentId='" + this.parentId + '\'' + ", parentName='" + this.parentName + '\'' + ", parentBtmName='" + this.parentBtmName + '\'' + ", expanded=" + this.expanded + ", href='" + this.href + '\'' + ", index='" + this.index + '\'' + ", attributes=" + this.attributes + '}';
diff --git a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/util/WebUtil.java b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/util/WebUtil.java
index b26ae59..87456e4 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/util/WebUtil.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/util/WebUtil.java
@@ -724,6 +724,7 @@
 		}
 		return listHasList;
 	}
+
 	/**
 	 * 鏄惁榛樿鐨勫睘鎬�
 	 * @param fieldNames 灞炴�х殑鍚嶅瓧
@@ -736,6 +737,5 @@
 		}
 		return false;
 	}
-
 
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/MdmEngineConstant.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/MdmEngineConstant.java
index da07ebe..ae75383 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/MdmEngineConstant.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/constant/MdmEngineConstant.java
@@ -48,38 +48,162 @@
      * 瀵嗙骇鐨勫瓧娈�
      */
     public static final String SECRET_FIELD = "secretgrade";
+
     /**
      * 鍒涘缓鑰呭瓧娈�
      */
     public static final String CODE_CREATOR = "creator";
+
     /**
      * 鏇存敼鑰呭瓧娈�
      */
     public static final String CODE_EDITOR = "lastmodifier";
+
+	/**
+	 * 淇敼鏃堕棿
+	 */
+	public static final String CODE_EDITOR_TIME = "lastmodifytime";
+
+	/**
+	 * 鐗堟湰瑙勫垯
+	 */
+	public static final String CODE_REVISION_RULE = "revisionrule";
+
+	/**
+	 * 鐗堟湰姝ラ暱
+	 */
+	public static final String CODE_REVISION_SEQ = "revisionseq";
+
+	/**
+	 * 鐗堟湰瑙勫垯
+	 */
+	public static final String CODE_VISION_RULE  = "versionrule";
+
+	public static final String CODE_VISION_SEQ = "versionseq";
+
+	public static final String CODE_VISION_VLUE = "versionvalue";
+
+	public static final String CODE_LASTR = "lastr";
+
+	public static final String CODE_FIRSTR = "firstr";
+
+	public static final String CODE_LASTV = "lastv";
+
+	public static final String CODE_FIRSTV = "firstv";
+
+	/**
+	 * 鐗堟湰瑙勫垯oid
+	 */
+	public static final String CODE_REVISION_OID = "revisionoid";
+
+	/**
+	 * 绉熸埛
+	 */
+	public static final String CODE_TENANTID = "tenantid";
+
+	/**
+	 * nameoid
+	 */
+	public static final String CODE_NAME_OID = "nameOid";
+
+	/**
+	 * 涓氬姟绫诲瀷鍚嶇О
+	 */
+	public static final String CODE_BTMNAME = "btmname";
+
+	/**
+	 * 鍒涘缓鏃堕棿
+	 */
+	public static final String CODE_CREATE_TIME = "createtime";
+
+	/**
+	 * 鏃堕棿鎴�
+	 */
+	public static final String CODE_TS = "ts";
+
+	/**
+	 * 鎵�鏈夎��
+	 */
+	public static final String CODE_OWNER = "owner";
+
+	/**
+	 * 鍗囩増
+	 */
+	public static final String CODE_COPYFORMVERSION = "copyfromversion";
+
+	/**
+	 * 涓婚敭
+	 */
+	public static final String CODE_OID = "oid";
+
     /**
      * 榛樿鐨勫睘鎬у垪琛�
      */
     public static final List DEFAULT_ATTR_LIST = new ArrayList(){{
         add(CODE_FIELD);
-        add(CODE_STATUS_FILED);
-        add(CODE_GROUP_FIELD);
-        add(CODE_CLASSIFY_OID_FIELD);
+		add(CODE_STATUS_FILED);
+		add(CODE_GROUP_FIELD);
+		add(CODE_CLASSIFY_OID_FIELD);
         add(CODE_TEMPLATE_OID_FIELD);
         add(CODE_FULL_PATH_FILED);
+		add(SECRET_FIELD);
+		add(CODE_CREATOR);
+		add(CODE_EDITOR);
+		add(CODE_EDITOR_TIME);
+		add(CODE_REVISION_RULE);
+		add(CODE_REVISION_SEQ);
+		add(CODE_REVISION_RULE);
+		add(CODE_VISION_RULE);
+		add(CODE_VISION_SEQ);
+		add(CODE_LASTR);
+		add(CODE_FIRSTR);
+		add(CODE_LASTV);
+		add(CODE_FIRSTV);
+		add(CODE_REVISION_OID);
+		add(CODE_TENANTID);
+		add(CODE_NAME_OID);
+		add(CODE_BTMNAME);
+		add(CODE_CREATE_TIME);
+		add(CODE_TS);
+		add(CODE_OWNER);
+		add(CODE_COPYFORMVERSION);
+		add(CODE_OID);
+		add(CODE_VISION_VLUE);
     }};
 
     /**
      * 榛樿鐨勫睘鎬у垪琛�
      */
     public static final List DEFAULT_SYNC_ATTR_LIST = new ArrayList(){{
-        add(CODE_FIELD);
-        add(CODE_STATUS_FILED);
-        add(CODE_GROUP_FIELD);
-        add(CODE_CLASSIFY_OID_FIELD);
-        add(CODE_TEMPLATE_OID_FIELD);
-        add(CODE_FULL_PATH_FILED);
-        add(CODE_EDITOR);
-        add(CODE_CREATOR);
+		add(CODE_FIELD);
+		add(CODE_STATUS_FILED);
+		add(CODE_GROUP_FIELD);
+		add(CODE_CLASSIFY_OID_FIELD);
+		add(CODE_TEMPLATE_OID_FIELD);
+		add(CODE_FULL_PATH_FILED);
+		add(SECRET_FIELD);
+		add(CODE_CREATOR);
+		add(CODE_EDITOR);
+		add(CODE_EDITOR_TIME);
+		add(CODE_REVISION_RULE);
+		add(CODE_REVISION_SEQ);
+		add(CODE_REVISION_RULE);
+		add(CODE_VISION_RULE);
+		add(CODE_VISION_SEQ);
+		add(CODE_LASTR);
+		add(CODE_FIRSTR);
+		add(CODE_LASTV);
+		add(CODE_FIRSTV);
+		add(CODE_REVISION_OID);
+		add(CODE_TENANTID);
+		add(CODE_NAME_OID);
+		add(CODE_BTMNAME);
+		add(CODE_CREATE_TIME);
+		add(CODE_TS);
+		add(CODE_OWNER);
+		add(CODE_COPYFORMVERSION);
+		add(CODE_OID);
+		add(CODE_VISION_VLUE);
     }};
 
     /**
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeKeyAttrRepeatController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeKeyAttrRepeatController.java
index c675937..fc6cc7b 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeKeyAttrRepeatController.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeKeyAttrRepeatController.java
@@ -49,7 +49,7 @@
 @Api(value = "鍏抽敭灞炴�ф煡閲嶈鍒�", tags = "鍏抽敭灞炴�ф煡閲嶈鍒欐帴鍙�")
 public class CodeKeyAttrRepeatController extends BladeController {
 
-	private final ICodeKeyAttrRepeatService plCodeKeyattrrepeatService;
+	private final ICodeKeyAttrRepeatService codeKeyattrrepeatService;
 
 	CodeKeyAttrRepeatMapper codeKeyattrrepeatMapper;
 
@@ -59,73 +59,47 @@
 	@GetMapping("/detail")
 	@ApiOperationSupport(order = 1)
 	@ApiOperation(value = "璇︽儏", notes = "浼犲叆plCodeKeyattrrepeat")
-	public R<CodeKeyAttrRepeatVO> detail(CodeKeyAttrRepeat plCodeKeyattrrepeat) {
-		CodeKeyAttrRepeat detail = codeKeyattrrepeatMapper.selectOne(Condition.getQueryWrapper(plCodeKeyattrrepeat));
+	public R<CodeKeyAttrRepeatVO> detail(CodeKeyAttrRepeat codeKeyattrrepeat) {
+		CodeKeyAttrRepeat detail = codeKeyattrrepeatMapper.selectOne(Condition.getQueryWrapper(codeKeyattrrepeat));
 		return R.data(CodeKeyAttrRepeatWrapper.build().entityVO(detail));
 	}
+
 	/**
 	 * 鍏抽敭灞炴�ф煡閲嶈鍒� 鍒嗛〉
 	 */
 	@GetMapping("/list")
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "鍒嗛〉", notes = "浼犲叆plCodeKeyattrrepeat")
-	public R<IPage<CodeKeyAttrRepeatVO>> list(CodeKeyAttrRepeat plCodeKeyattrrepeat, Query query) {
-		IPage<CodeKeyAttrRepeat> pages = codeKeyattrrepeatMapper.selectPage(Condition.getPage(query), Condition.getQueryWrapper(plCodeKeyattrrepeat));
+	public R<IPage<CodeKeyAttrRepeatVO>> list(CodeKeyAttrRepeat codeKeyAttrRepeat, Query query) {
+		IPage<CodeKeyAttrRepeat> pages = codeKeyattrrepeatMapper.selectPage(Condition.getPage(query), Condition.getQueryWrapper(codeKeyAttrRepeat));
 		return R.data(CodeKeyAttrRepeatWrapper.build().pageVO(pages));
 	}
 
 	/**
-	 * 鍏抽敭灞炴�ф煡閲嶈鍒� 鑷畾涔夊垎椤�
-	 */
-	@GetMapping("/page")
-	@ApiOperationSupport(order = 3)
-	@ApiOperation(value = "鍒嗛〉", notes = "浼犲叆plCodeKeyattrrepeat")
-	public R<IPage<CodeKeyAttrRepeatVO>> page(CodeKeyAttrRepeatVO plCodeKeyattrrepeat, Query query) {
-		IPage<CodeKeyAttrRepeatVO> pages = plCodeKeyattrrepeatService.selectPlCodeKeyattrrepeatPage(Condition.getPage(query), plCodeKeyattrrepeat);
-		return R.data(pages);
-	}
-
-	/**
-	 * 鍏抽敭灞炴�ф煡閲嶈鍒� 鏂板
-	 */
-	@PostMapping("/save")
-	@ApiOperationSupport(order = 4)
-	@ApiOperation(value = "鏂板", notes = "浼犲叆plCodeKeyattrrepeat")
-	public R save(@Valid @RequestBody CodeKeyAttrRepeat plCodeKeyattrrepeat) {
-		return R.status(SqlHelper.retBool(codeKeyattrrepeatMapper.insert(plCodeKeyattrrepeat)));
-	}
-
-	/**
-	 * 鍏抽敭灞炴�ф煡閲嶈鍒� 淇敼
-	 */
-	@PostMapping("/update")
-	@ApiOperationSupport(order = 5)
-	@ApiOperation(value = "淇敼", notes = "浼犲叆plCodeKeyattrrepeat")
-	public R update(@Valid @RequestBody CodeKeyAttrRepeat plCodeKeyattrrepeat) {
-		return R.status(SqlHelper.retBool(codeKeyattrrepeatMapper.updateById(plCodeKeyattrrepeat)));
-	}
-
-	/**
 	 * 鍏抽敭灞炴�ф煡閲嶈鍒� 鏂板鎴栦慨鏀�
+	 * @param codeKeyAttrRepeat
+	 * @return
 	 */
 	@PostMapping("/submit")
 	@ApiOperationSupport(order = 6)
-	@ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆plCodeKeyattrrepeat")
-	public R submit(@Valid @RequestBody CodeKeyAttrRepeat plCodeKeyattrrepeat) {
-		if(plCodeKeyattrrepeat.getOid() != null){
-			return R.status(SqlHelper.retBool(codeKeyattrrepeatMapper.updateById(plCodeKeyattrrepeat)));
+	@ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆codeKeyattrrepeat")
+	public R submit(@Valid @RequestBody CodeKeyAttrRepeat codeKeyAttrRepeat) {
+		if(codeKeyAttrRepeat.getOid() != null){
+			return R.status(codeKeyattrrepeatService.update(codeKeyAttrRepeat));
 		}
-		return R.status(SqlHelper.retBool(codeKeyattrrepeatMapper.insert(plCodeKeyattrrepeat)));
+		return R.status(codeKeyattrrepeatService.addSave(codeKeyAttrRepeat));
 	}
 
 	/**
 	 * 鍏抽敭灞炴�ф煡閲嶈鍒� 鍒犻櫎
+	 * @param ids
+	 * @return
 	 */
 	@PostMapping("/remove")
 	@ApiOperationSupport(order = 7)
 	@ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
 	public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
-		return R.status(SqlHelper.retBool(codeKeyattrrepeatMapper.deleteBatchIds(Func.toLongList(ids))));
+		return R.status(codeKeyattrrepeatService.deleteByOids(ids));
 	}
 
 	/**
@@ -139,6 +113,5 @@
 	public R listCodeKeyAttrRepeatRuleByOids(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String oids) {
 		return R.data(codeKeyattrrepeatMapper.selectBatchIds(Func.toLongList(oids)));
 	}
-
 
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java
index 1cc49df..37533a7 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java
@@ -35,6 +35,7 @@
 import java.io.File;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
+import java.rmi.ServerException;
 import java.util.*;
 
 @RestController
@@ -297,7 +298,6 @@
 		return R.success("鎿嶄綔鎴愬姛锛�");
 	}
 
-
 	/**
 	 * 鐢宠缂栫爜淇濆瓨
 	 * @param orderDTO 缂栫爜鐢宠鐩稿叧鐨勪俊鎭紝闇�瑕佹湁灞炴�у拰鐮佹鐩稿叧鐨勪俊鎭�
@@ -308,7 +308,6 @@
 	public R addSaveCode(@RequestBody CodeOrderDTO orderDTO) throws Exception {
 		return R.success(engineService.addSaveCode(orderDTO));
 	}
-
 
 	/**
 	 * 浣跨敤妯℃澘鐨勪富閿幏鍙栬〃鍗曠殑瀹氫箟
@@ -390,7 +389,6 @@
 		//TODO鍚庣画鍙互瀹氫箟鏌ヨ妯℃澘鏉ユ煡璇�
 		return engineService.gridTableDataByClassifyOid(codeClassifyOid,templateOid,queryObject.getConditionMap(),queryObject.getPageHelper());
 	}
-
 
 	/***
 	 * 鑾峰彇鍒嗙被瀵硅薄
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyMapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyMapper.java
index 8b842c9..d0b93e0 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyMapper.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyMapper.java
@@ -90,8 +90,7 @@
 	 * @param oid 鍒嗙被鐨勪富閿�
 	 * @return 鏁版嵁闆嗗悎
 	 */
-	List<CodeClassify> selectAllLevelChildHasPath(@Param("oid") String oid,@Param("fieldInPath")String fieldInPath);
-
+	List<CodeClassify> selectAllLevelChildHasPath(@Param("oid") String oid,@Param("fieldInPath")String fieldInPath,@Param("tenantId")String tenantId);
 
 	@MapKey("OID")
 	List<Map<String,Object>> selectAllLevelParentByOid(@Param("oid") String oid);
@@ -99,10 +98,8 @@
 	@MapKey("OID")
 	List<Map<String,Object>> selectAllLevelParents(@Param("oid") String oid);
 
-
 	@MapKey("OID")
 	List<Map<String,Object>> selectByFieldPath(@Param("fieldPath") String fieldPath);
-
 
 	/**
 	 * 鏌ユ牴鎹甶d灞傜骇鑾峰彇瀵硅薄
@@ -114,7 +111,6 @@
 	List<CodeClassify> selectByFieldNamePath(@Param("fieldPath") String fieldPath,@Param("fieldName") String fieldName);
 
 	public List<CodeClassify> getIdPathToNamePathByParentId(@Param("parentId")String parentId);
-
 
 	CodeClassify selectByIdRel(@Param("oid") String oid);
 	/**
@@ -133,10 +129,12 @@
 	 * @return
 	 */
 	List<CodeClassify> getRMLibByName(List<String> libNames,@Param("lcstatus")String lcstatus,@Param("tenantId") String tenantId);
+
 	/***
 	 * 鏍规嵁鍒嗙被鎻忚堪澶囨敞鍜屽簱鑺傜偣鏌ヨ鍒嗙被淇℃伅
 	 * @param desc
-	 * @param codeLibName
+	 * @param lcstatus
+	 * @param tenantId
 	 * @return
 	 */
 	List<CodeClassify> getRMTypeByDesc(@Param("desc")String desc,@Param("lcstatus")String lcstatus,@Param("tenantId") String tenantId);
@@ -175,5 +173,14 @@
 	 * @param oid
 	 * @return
 	 */
-	List<CodeClassify> selectAllClassifyByOid(@Param("oid") String oid,@Param("tenantId") String tenantId);
+	List<CodeClassify> selectAllClassifyByOid(@Param("oid") String oid,@Param("fieldInPath")String fieldInPath,@Param("tenantId") String tenantId);
+
+	/**
+	 * 鏍规嵁椤跺眰鑺傜偣oid鏌ヨ鎵�鏈夐櫎褰撳墠鑺傜偣浠ュ鎵�鏈変笉鍙備笌鏍¢獙鐨勫垎绫籵id
+	 * @param topOid
+	 * @param currentOid
+	 * @return
+	 */
+	List<CodeClassify> selectLeafByParentClassifyOid(@Param("topOid") String topOid,@Param("currentOid")String currentOid);
+
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyService.java
index 1b0a786..54cc68f 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyService.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyService.java
@@ -11,6 +11,7 @@
 import com.vci.ubcs.starter.revision.model.TreeQueryObject;
 import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
 import com.vci.ubcs.starter.web.pagemodel.DataGrid;import com.vci.ubcs.starter.web.pagemodel.Tree;
+import org.apache.ibatis.annotations.Param;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.tool.api.R;
 import java.io.File;
@@ -291,8 +292,17 @@
 	/**
 	 * 鏍规嵁鍒嗙被鎻忚堪澶囨敞鍜屽簱鑺傜偣鏌ヨ鍒嗙被淇℃伅
 	 * @param oid
+	 * @param fieldInPath
 	 * @return
 	 */
-	List<CodeClassifyVO> selectAllClassifyByOid(String oid);
+	List<CodeClassifyVO> selectAllClassifyByOid(String oid, String fieldInPath);
+
+	/**
+	 * 鏍规嵁椤跺眰鑺傜偣oid鏌ヨ鎵�鏈夐櫎褰撳墠鑺傜偣浠ュ鎵�鏈変笉鍙備笌鏍¢獙鐨勫垎绫籵id
+	 * @param topOid
+	 * @param currentOid
+	 * @return
+	 */
+	String selectLeafByParentClassifyOid(String topOid, String currentOid);
 
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeKeyAttrRepeatService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeKeyAttrRepeatService.java
index c950e5a..340268e 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeKeyAttrRepeatService.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeKeyAttrRepeatService.java
@@ -77,4 +77,26 @@
 	 * @return 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鏄剧ず瀵硅薄
 	 */
 	CodeKeyAttrRepeatRuleVO getObjectByOid(String oid);
+
+	/**
+	 * 淇敼鍏抽敭灞炴�ф煡閲嶈鍒�
+	 * @param codeKeyattrrepeat
+	 * @return
+	 */
+	boolean addSave(CodeKeyAttrRepeat codeKeyattrrepeat);
+
+	/**
+	 * 鏂板鍏抽敭灞炴�ф煡閲嶈鍒�
+	 * @param codeKeyattrrepeat
+	 * @return
+	 */
+	boolean update(CodeKeyAttrRepeat codeKeyattrrepeat);
+
+	/**
+	 * 鍒犻櫎鍏抽敭灞炴�ф煡閲嶈鍒�
+	 * @param oids
+	 * @return
+	 */
+	boolean deleteByOids(String oids);
+
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
index 5cdc488..ae01ddd 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -61,6 +62,7 @@
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
@@ -179,6 +181,7 @@
 	 * @return 鎵ц缁撴灉
 	 */
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public R editSave(CodeClassify codeClassifyEntity) {
 		if(codeClassifyEntity == null || codeClassifyEntity.getOid() == null){
 			return R.fail("浼犲叆鏁版嵁涓嶈兘涓虹┖锛�");
@@ -196,15 +199,28 @@
 		codeClassifyEntity.setLastModifier(String.valueOf(AuthUtil.getUser().getAccount()));
 		codeClassifyEntity.setLastModifyTime(new Date());
 		codeClassifyEntity.setTs(new Date());
-		int insertNumber = codeClassifyMapper.updateById(codeClassifyEntity);
+		int updateEntity = codeClassifyMapper.updateById(codeClassifyEntity);
+		// 濡傛灉涓嶆槸鍙跺瓙缁撶偣锛屽垯闇�瑕佷慨鏀瑰叾涓嬫墍鏈夌殑瀛愬垎绫伙紝鏄惁鍙備笌鍏抽敭灞炴�ф牎楠岀殑鍊�
+		String oid = codeClassifyEntity.getOid();
+		List<CodeClassify> codeClassifies = codeClassifyMapper.selectStartWithCurrentOid(oid);
+		int updateAttr = 0;
+		// 涓嶄负绌哄氨闇�瑕佽褰撳墠鍒嗙被涓嬫墍鏈夊瓙鍒嗙被鐨刬sParticipateCheck
+		if(!codeClassifies.isEmpty()){
+			List<String> oids = codeClassifies.stream().map(CodeClassify::getOid).collect(Collectors.toList());
+			updateAttr = codeClassifyMapper.update(
+				null,
+				Wrappers.<CodeClassify>update()
+					.lambda().in(CodeClassify::getOid, oids)
+					.set(CodeClassify::getIsParticipateCheck, codeClassifyEntity.getIsParticipateCheck())
+			);
+		}
 
 //         //澶勭悊鏁版嵁闆嗘垚閫昏緫,鎴愬姛鍚庢墽琛岄泦鎴愮涓�姝�,鍒嗙被鏁版嵁鐗规畩澶勭悊銆傚彧鏈夊惎鐢ㄧ姸鎬佺殑鍒嗙被鎵嶆帹閫�
 //         if(FRAMEWORK_DATA_ENABLED.equals(codeClassifyDO.getLcStatus()));
 //         {
 //             codeDuckingServiceI.insertCache1(CACHE_TYPE_CLASSIFY_EDIT,FRAMEWORK_DATA_ENABLED,DOCKING_DEFAULT_CLASSIFY, DOCKING_DEFAULT_CLASSIFYOID, codeClassifyDO.getOid(), codeClassifyDTO.getTs());
 //         }
-		return R.status(SqlHelper.retBool(insertNumber));
-//		return BaseResult.success(codeClassifyDO2VO(codeClassifyDO));
+		return R.status(SqlHelper.retBool(updateAttr) & SqlHelper.retBool(updateEntity));
 	}
 
 	/**
@@ -639,12 +655,29 @@
 	 * @param oid
 	 * @return
 	 */
-	public List<CodeClassifyVO> selectAllClassifyByOid(String oid){
-		List<CodeClassify>  codeClassifyList=codeClassifyMapper.selectAllClassifyByOid(oid,AuthUtil.getTenantId());
+	public List<CodeClassifyVO> selectAllClassifyByOid(String oid, String fieldInPath){
+		List<CodeClassify>  codeClassifyList=codeClassifyMapper.selectAllClassifyByOid(oid,AuthUtil.getTenantId(),fieldInPath);
 		List<CodeClassifyVO> voList = codeClassifyDO2VOs(codeClassifyList);
 		return voList;
 
 	}
+
+	/**
+	 * 鏍规嵁椤跺眰鑺傜偣oid鏌ヨ鎵�鏈夐櫎褰撳墠鑺傜偣浠ュ鎵�鏈変笉鍙備笌鏍¢獙鐨勫垎绫籵id
+	 * @param topOid
+	 * @param currentOid
+	 * @return
+	 */
+	@Override
+	public String selectLeafByParentClassifyOid(String topOid, String currentOid) {
+		List<CodeClassify> codeClassifies = codeClassifyMapper.selectLeafByParentClassifyOid(topOid, currentOid);
+		if(codeClassifies.isEmpty()){
+			return "";
+		}
+		String oids = codeClassifies.stream().map(CodeClassify::getOid).collect(Collectors.joining(","));
+		return oids;
+	}
+
 	/***
 	 * 鏍规嵁鍒嗙被鎻忚堪澶囨敞鍜屽簱鑺傜偣鏌ヨ鍒嗙被淇℃伅
 	 * @param desc
@@ -807,9 +840,8 @@
 	@Override
 	public List<CodeClassifyVO> listChildrenClassify(String codeClassifyOid, boolean allLevel, String fieldInPath, boolean enable) {
 		if(allLevel){
-			List<CodeClassify> classifyDOS = codeClassifyMapper.selectAllLevelChildHasPath(codeClassifyOid,fieldInPath);
+			List<CodeClassify> classifyDOS = codeClassifyMapper.selectAllLevelChildHasPath(codeClassifyOid,fieldInPath,AuthUtil.getTenantId());
 			if(!CollectionUtils.isEmpty(classifyDOS)){
-				// 杩欏効鐢╯tream鏈夌偣鎱�
 				classifyDOS = classifyDOS.parallelStream().filter(s->FRAMEWORK_DATA_ENABLED.equalsIgnoreCase(s.getLcStatus())).collect(Collectors.toList());
 			}
 			return codeClassifyDO2VOs(classifyDOS);
@@ -928,7 +960,7 @@
 		Map<String/**璺緞**/,String/**涓婚敭**/> oidPathMap = new HashMap<>();
 
 		//鎴戜滑闇�瑕佹煡璇㈡墍鏈夊凡缁忓瓨鍦ㄧ殑鍒嗙被锛屼富瑕佹槸璺緞锛岀敤鏉ュ垽鏂垎绫荤殑鏁版嵁
-		List<CodeClassify> existClassifyDOs = codeClassifyMapper.selectAllLevelChildHasPath("",null);
+		List<CodeClassify> existClassifyDOs = codeClassifyMapper.selectAllLevelChildHasPath("",null,AuthUtil.getTenantId());
 		Map<String/**璺緞**/, CodeClassify/**宸茬粡瀛樺湪鐨勬暟鎹�**/> pathDOMap = Optional.ofNullable(existClassifyDOs).orElse(new ArrayList<>()).stream().collect(Collectors.toMap(s -> {
 			String path = s.getPath();
 			if(StringUtils.isNotBlank(path) && path.startsWith("#")){
@@ -1357,4 +1389,6 @@
 		return codeClassifyMapper.selectCount(wrapper).intValue();
 	}
 
+
+
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeKeyAttrRepeatServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeKeyAttrRepeatServiceImpl.java
index 760a3e1..6ea1ff0 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeKeyAttrRepeatServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeKeyAttrRepeatServiceImpl.java
@@ -17,6 +17,7 @@
 package com.vci.ubcs.code.service.impl;
 
 import com.alibaba.nacos.common.utils.StringUtils;
+import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
 import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
 import com.vci.ubcs.code.entity.CodeKeyAttrRepeat;
 import com.vci.ubcs.code.enumpack.FrameworkDataLCStatus;
@@ -26,16 +27,22 @@
 import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
 import com.vci.ubcs.code.vo.pagemodel.CodeKeyAttrRepeatRuleVO;
 import com.vci.ubcs.starter.exception.VciBaseException;
+import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
+import com.vci.ubcs.starter.util.MdmBtmTypeConstant;
 import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
 import com.vci.ubcs.starter.web.util.VciBaseUtil;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.utils.Func;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springframework.util.CollectionUtils;
 
+import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -50,12 +57,12 @@
 @Service
 public class CodeKeyAttrRepeatServiceImpl implements ICodeKeyAttrRepeatService {
 
-	@Autowired
-    CodeKeyAttrRepeatMapper codeKeyattrrepeatMapper;
+	@Resource
+    CodeKeyAttrRepeatMapper codeKeyAttrRepeatMapper;
 
 	@Override
 	public IPage<CodeKeyAttrRepeatVO> selectPlCodeKeyattrrepeatPage(IPage<CodeKeyAttrRepeatVO> page, CodeKeyAttrRepeatVO plCodeKeyattrrepeat) {
-		return page.setRecords(codeKeyattrrepeatMapper.selectPlCodeKeyattrrepeatPage(page, plCodeKeyattrrepeat));
+		return page.setRecords(codeKeyAttrRepeatMapper.selectPlCodeKeyattrrepeatPage(page, plCodeKeyattrrepeat));
 	}
 
 	/**
@@ -100,7 +107,7 @@
 		if(!CollectionUtils.isEmpty(oidCollections)){
 			Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
 			for(Collection<String> oids: oidCollectionsList){
-				List<CodeKeyAttrRepeat> tempDOList =  codeKeyattrrepeatMapper.selectBatchIds(oids);
+				List<CodeKeyAttrRepeat> tempDOList =  codeKeyAttrRepeatMapper.selectBatchIds(oids);
 				if(!CollectionUtils.isEmpty(tempDOList)){
 					codeKeyAttrRepeatRuleDOList.addAll(tempDOList);
 				}
@@ -173,6 +180,58 @@
 		BeanUtils.copyProperties(codeKeyAttrRepeatRuleVO,codeKeyattrrepeatVO);
 		return codeKeyAttrRepeatRuleVO;
 	}
+
+	/**
+	 * 淇敼鍏抽敭灞炴�ф煡閲嶈鍒�
+	 * @param codeKeyattrrepeat
+	 * @return
+	 */
+	@Override
+	public boolean addSave(CodeKeyAttrRepeat codeKeyattrrepeat) {
+		// 璁剧疆榛樿鍊�
+		codeKeyattrrepeat.setCreator(AuthUtil.getUserAccount());
+		codeKeyattrrepeat.setCreatetime(new Date());
+		codeKeyattrrepeat.setLastmodifier(AuthUtil.getUserAccount());
+		codeKeyattrrepeat.setLastmodifytime(new Date());
+		codeKeyattrrepeat.setBtmname(MdmBtmTypeConstant.CODE_KEY_ATTR_REPEAT_RULE);
+		codeKeyattrrepeat.setFirstr("1");
+		codeKeyattrrepeat.setFirstv("1");
+		codeKeyattrrepeat.setLastr("1");
+		codeKeyattrrepeat.setLastv("1");
+		codeKeyattrrepeat.setLcstatus("Enabled");
+		codeKeyattrrepeat.setRevisionseq(1);
+		codeKeyattrrepeat.setRevisionoid(VciBaseUtil.getPk());
+		codeKeyattrrepeat.setRevisionvalue("1");
+		codeKeyattrrepeat.setRevisionrule("1");
+		codeKeyattrrepeat.setVersionseq(1);
+		codeKeyattrrepeat.setVersionrule("0");
+		codeKeyattrrepeat.setVersionvalue("1");
+		return SqlHelper.retBool(codeKeyAttrRepeatMapper.insert(codeKeyattrrepeat));
+	}
+
+	/**
+	 * 鏂板鍏抽敭灞炴�ф煡閲嶈鍒�
+	 * @param codeKeyattrrepeat
+	 * @return
+	 */
+	@Override
+	public boolean update(CodeKeyAttrRepeat codeKeyattrrepeat) {
+		// 璁剧疆榛樿鍊�
+		codeKeyattrrepeat.setLastmodifier(AuthUtil.getUserAccount());
+		codeKeyattrrepeat.setLastmodifytime(new Date());
+		return SqlHelper.retBool(codeKeyAttrRepeatMapper.updateById(codeKeyattrrepeat));
+	}
+
+	/**
+	 * 鍒犻櫎鍏抽敭灞炴�ф煡閲嶈鍒�
+	 * @param oids
+	 * @return
+	 */
+	@Override
+	public boolean deleteByOids(String oids) {
+		return SqlHelper.retBool(codeKeyAttrRepeatMapper.deleteById(oids));
+	}
+
 	/**
 	 * 涓婚敭鏌ヨ鏁版嵁瀵硅薄
 	 * @param oid 涓婚敭
@@ -182,11 +241,12 @@
 	private CodeKeyAttrRepeat selectByOid(String oid) {
 		VciBaseUtil.alertNotNull(oid,"涓婚敭");
 
-		CodeKeyAttrRepeat codeKeyAttrRepeatRuleDO = codeKeyattrrepeatMapper.selectById(oid.trim());
+		CodeKeyAttrRepeat codeKeyAttrRepeatRuleDO = codeKeyAttrRepeatMapper.selectById(oid.trim());
 //			.selectByPrimaryKey(oid.trim());
 		if(codeKeyAttrRepeatRuleDO == null || StringUtils.isBlank(codeKeyAttrRepeatRuleDO.getOid())){
 			throw new VciBaseException(DATA_OID_NOT_EXIST);
 		}
 		return codeKeyAttrRepeatRuleDO;
 	}
+
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
index 6db0334..f8946ea 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
@@ -995,7 +995,6 @@
         }
     }
 
-
     /**
      * 鍒濆鍖栦笟鍔$被鍨�
      * --鍒涘缓浜洪粯璁や负褰撳墠鐢ㄦ埛锛屽鏋滈渶瑕佷慨鏀癸紝鍙互鍦ㄨ幏鍙栧悗鑷澶勭悊
@@ -2774,6 +2773,7 @@
         cbo.setName(orderDTO.getName());
         //鏁版嵁鐨勬椂鍊欙紝缂栫爜鏄笉鍙樼殑
         cbo.setCreateTime(cbo.getCreateTime());
+		cbo.setCreator(cbo.getCreator());
         cbo.setLastModifyTime(cbo.getLastModifyTime());
 		cbo.setTenantId(AuthUtil.getTenantId());
 		oldCbo.setLastV("0");
@@ -4191,7 +4191,7 @@
         toBo.setLastV(String.valueOf(1));
 		// 鏁版嵁鍗囩増涓嶉渶瑕侀噸鏂拌缃垱寤轰汉锛屽彧瀵规渶鍚庝慨鏀逛汉鍋氭洿鏂板氨鍙互浜�
         //toBo.setCreator(String.valueOf(AuthUtil.getUser().getUserId()));
-        toBo.setCreateTime(new Date());
+        toBo.setCreateTime(fromBo.getCreateTime());
         // toBo.setLastModifier(String.valueOf(AuthUtil.getUser().getUserId()));
 		toBo.setLastModifier(String.valueOf(AuthUtil.getUser().getAccount()));
         toBo.setLastModifyTime(new Date());
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
index 57d9c79..0f6dfd2 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
@@ -856,7 +856,7 @@
 			String idFieldName = attrVOS.stream().filter(s -> VciQueryWrapperForDO.ID_FIELD.equalsIgnoreCase(s.getId())).findFirst().orElseGet(() -> new CodeClassifyTemplateAttrVO()).getName();
 			getFieldIndexMap(titleRowData, attrNameIdMap, fieldIndexMap);
 			//鍏堜笉鐢ㄧ灞炴�ф槸鍚﹂兘瀛樺湪锛屽厛杞崲涓�涓嬫暟鎹�
-			List<ClientBusinessObject> cboList = new ArrayList<>();
+			List<ClientBusinessObject> cboList = new CopyOnWriteArrayList<>();
 			String fullPath = getFullPath(classifyFullInfo);
 			//鎴戜滑闇�瑕佽幏鍙栧埌鎵�鏈夌殑涓嬬骇鍒嗙被鐨刼id鐨勮矾寰勶紝鍥犱负鍚庨潰闇�瑕�
 			Map<String/**涓婚敭**/, String/**璺緞**/> childOidPathMap = getChildClassifyPathMap(classifyFullInfo, fullPath);
@@ -942,7 +942,7 @@
 			if (CollectionUtils.isEmpty(ruleOidMap.values())) {
 				throw new VciBaseException("瀵煎叆鐨勬暟鎹墍閫夋嫨鐨勫垎绫婚兘娌℃湁璁剧疆缂栫爜瑙勫垯");
 			}
-			// TODO: 鏀圭敤oid鏌ヨ瑙勫垯鐨勶紝鍒敤id
+			// TODO: 璇ョ敤oid鏌ヨ瑙勫垯鐨勶紝鍒敤id
 			Map<String, CodeRuleVO> ruleVOMap = ruleService.listCodeRuleByOids(ruleOidMap.values()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
 			//鏍¢獙缂栫爜瑙勫垯鍜岀爜娈垫槸鍚︽纭�
 			Map<String, List<String>> ruleRowIndexMap = new ConcurrentHashMap<>();
@@ -1538,7 +1538,6 @@
 				total += commonsMapper.queryCountBySql(countSql);
 			}
 		}else{
-
 			total = commonsMapper.queryCountBySql(countSql);
 		}
 		List<String> selectFieldList = new ArrayList<>();
@@ -1966,7 +1965,6 @@
 
 		//閮借浆鎹㈠畬浜嗐�傞渶瑕佹壒閲忔鏌�
 		//濡傛灉鍑洪敊浜嗭紝鎴戜滑渚濈劧鎵ц鏈夋晥鐨勬暟鎹紝鏃犳晥鐨勬暟鎹啓鍥炲埌excel涓�
-
 
 		Map<String,String> errorKeyMap=new HashMap<>();
 		//1.鍒嗙被娉ㄥ叆
@@ -3149,6 +3147,7 @@
 		});
 
 	}
+
 	/**
 	 * excel杞崲涓篶bo鐨勫璞�
 	 * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭�
@@ -3166,7 +3165,7 @@
 			ClientBusinessObject cbo=new ClientBusinessObject();
 			DefaultAttrAssimtUtil.addDefaultAttrAssimt(cbo, classifyFullInfo.getTopClassifyVO().getBtmTypeId());
 			rowData.getData().forEach((index,value)->{
-				String field = fieldIndexMap.get(index);
+					String field = fieldIndexMap.get(index);
 				if (StringUtils.isBlank(field)) {
 					throw new VciBaseException("绗�" + (index + 1) + "鍒楃殑鏍囬鍦ㄧ郴缁熶腑涓嶅瓨鍦�");
 				}
@@ -3523,6 +3522,7 @@
 			});
 		}
 	}
+
 	/***
 	 * 鏍¢獙鍒嗙被瀵瑰簲鐨勬ā鏉夸俊鎭�
 	 * @param titleRowData
@@ -3606,6 +3606,7 @@
 		}
 		return codeClassifyTemplateVOList ;
 	}
+
 	/**
 	 * 浠庡睘鎬т笂鑾峰彇鍙傜収鐨勫唴瀹�
 	 * @param attrVO 灞炴�х殑淇℃伅
@@ -3728,6 +3729,7 @@
 			}
 		}
 	}
+
 	/**
 	 * 澶勭悊鍒嗙被娉ㄥ叆
 	 * @param attrVOS 妯℃澘灞炴��
@@ -3818,6 +3820,8 @@
 		//鍥犱负鏁版嵁閲忓緢澶э紝鎵�浠ュ緱鎯冲姙娉曞苟琛�
 		//SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
 		Map<String,List<BaseModel>> indexTODataMap=new ConcurrentHashMap<>();
+		// 鏌ヨ涓嶉渶瑕佸弬涓庡叧閿睘鎬ф牎楠岀殑闄よ嚜宸变互澶栫殑鎵�鏈夊垎绫籵id
+		String isParticipateCheckOids = classifyService.selectLeafByParentClassifyOid(classifyFullInfo.getTopClassifyVO().getOid(), classifyFullInfo.getCurrentClassifyVO().getOid());
 		List<ClientBusinessObject> repeatDataMap = cboList.parallelStream().filter(cbo -> {
 			//姣忚閮藉緱鏌ヨ.濡傛灉鍏朵腑鍑虹幇浜嗛敊璇紝鎴戜滑灏辩洿鎺ユ姏鍑哄紓甯革紝鍏朵綑鐨勬樉绀�
 			//VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
@@ -3831,6 +3835,10 @@
 				engineService.wrapperKeyAttrConditionMap(value, keyRuleVO, attrId, trim, ignoreCase, ignoreWidth, trimAll, conditionMap);
 			});
 			if (!CollectionUtils.isEmpty(ketAttrMap)) {
+				// 娣诲姞涓嶅弬涓庡叧閿睘鎬ф牎楠岀殑鍒嗙被oid鍒ゆ柇
+				if(Func.isNotBlank(isParticipateCheckOids)){
+					conditionMap.put("t.codeclsfid",QueryOptionConstant.NOTIN+isParticipateCheckOids);
+				}
 				CodeTemplateAttrSqlBO sqlBO = engineService.getSqlByTemplateVO(classifyFullInfo.getTopClassifyVO().getBtmTypeId(), templateVO, conditionMap, null);
 				boolean isKeyCheck= commonsMapper.queryCountBySql(sqlBO.getSqlCount()) > 0;
 				if(isKeyCheck){
@@ -3874,7 +3882,7 @@
 			if(StringUtils.isBlank(classifyPath)){
 				classifyPath = "#current#";
 			}
-			if ( !pathMap.containsKey(classifyPath)) {
+			if (!pathMap.containsKey(classifyPath)) {
 				String row_index = cbo.getAttributeValue(IMPORT_ROW_INDEX);
 				errorMap.put(row_index,errorMap.getOrDefault(row_index,"") + ";鍒嗙被璺緞涓嶅瓨鍦�");
 			} else {
@@ -4014,7 +4022,7 @@
 					List<String>newOidList=new ArrayList<>();
 					newOidList.add(oid);
 					if(keyAttrOkOidTORepeatOidMap.containsKey(okOid)){
-						List<String> oldOidList=	keyAttrOkOidTORepeatOidMap.get(okOid);
+						List<String> oldOidList = keyAttrOkOidTORepeatOidMap.get(okOid);
 						newOidList.addAll(oldOidList);
 
 					}
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 7c4d378..e468dc1 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
@@ -1381,7 +1381,7 @@
 					TreeQueryObject treeQueryObject=new TreeQueryObject();
 					treeQueryObject.setParentOid(oid);
 					treeQueryObject.setQueryAllLevel(true);
-					dataCodeClassifyVOList=classifyService.selectAllClassifyByOid(oid);//.selectCodeClassifyDOByTree(treeQueryObject);
+					dataCodeClassifyVOList=classifyService.selectAllClassifyByOid(oid,"oid");//.selectCodeClassifyDOByTree(treeQueryObject);
 					//dataCodeClassifyVOList.add(CodeClassifyWrapper.build().entityVO(currentCodeClassify[0]));
 					Map<String, CodeClassifyVO> oidCodeclassifyDOMap = dataCodeClassifyVOList.stream().filter(systeDataObject -> systeDataObject != null && StringUtils.isNotBlank(systeDataObject.getOid())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
 
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeBasicSecMapper.xml b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeBasicSecMapper.xml
index 97c678e..9ab3d4d 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeBasicSecMapper.xml
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeBasicSecMapper.xml
@@ -70,6 +70,8 @@
         <result property="referBtmName" column="REFERBTMNAME" jdbcType="VARCHAR"/>
         <result property="referBtmId" column="REFERBTMID" jdbcType="VARCHAR"/>
         <result property="referCodeClassifyOidName" column="c__name" jdbcType="VARCHAR"/>
+        <result property="prefixCode" column="PREFIXCODE" jdbcType="VARCHAR"/>
+        <result property="suffixCode" column="SUFFIXCODE" jdbcType="VARCHAR"/>
     </resultMap>
 
     <select id="selectCodeBasicSecPage" resultMap="CodeBasicsecMap">
@@ -136,6 +138,8 @@
             PL_CODE_BASICSEC.serialdependorder,
             PL_CODE_BASICSEC.nullableflag,
             PL_CODE_BASICSEC.codefilllimit,
+            PL_CODE_BASICSEC.prefixcode,
+            PL_CODE_BASICSEC.suffixcode,
             btm_codebasicsec_1.name as b__name,
             platformbtm_codeclassify.name as c__name,
             COUNT(*) OVER () "##VCI_COUNT_VCI##"
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeCLassifyMapper.xml b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeCLassifyMapper.xml
index 229b39f..dd22b32 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeCLassifyMapper.xml
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeCLassifyMapper.xml
@@ -37,6 +37,7 @@
         <result column="CODERULEOID" property="codeRuleOid"/>
         <result column="CODEKEYATTRREPEATOID" property="codeKeyAttrRepeatOid"/>
         <result column="CODERESEMBLERULEOID" property="codeResembleRuleOid"/>
+        <result column="ISPARTICIPATECHECK" property="isParticipateCheck"/>
         <result column="TENANT_ID" property="tenantId"/>
         <result column="TOTAL" property="total"/>
     </resultMap>
@@ -88,7 +89,8 @@
                codeclassify0.TENANT_ID             as tenantId ,
                coderuleoid.name                    as codeRuleOidName,
                codekeyattrrepeatoid.name           as codeKeyAttrRepeatOidName,
-               coderesembleruleoid.name            as codeResembleRuleOidName
+               coderesembleruleoid.name            as codeResembleRuleOidName,
+               codeclassify0.ISPARTICIPATECHECK   as isParticipateCheck
         from pl_code_classify codeclassify0
              left join pl_code_rule coderuleoid
                        on codeclassify0.codeRuleOid = coderuleoid.oid
@@ -131,6 +133,7 @@
                codeclassify0.CODERESEMBLERULEOID as coderesembleruleoid,
                codeclassify0.LCSTATUS as lcstatus,
                codeclassify0.TS as ts,
+               codeclassify0.ISPARTICIPATECHECK   as isParticipateCheck,
                coderuleoid.name as codeRuleOidName,
                codekeyattrrepeatoid.name as codeKeyAttrRepeatOidName,
                coderesembleruleoid.name as codeResembleRuleOidName,
@@ -155,10 +158,13 @@
                            on codeclassify0.codeResembleRuleOid = coderesembleruleoid.oid
             START WITH
             <if test="oid != null ">
-                codeclassify0.parentCodeClassifyOid = '${oid}'
+                codeclassify0.parentCodeClassifyOid = #{oid}
             </if>
             <if test="oid == null ">
                 codeclassify0.parentCodeClassifyOid is null
+            </if>
+            <if test="tenantId != null and tenantId != ''">
+                and  codeclassify0.tenant_id = #{tenantId}
             </if>
         CONNECT BY PRIOR codeclassify0.OID = codeclassify0.parentCodeClassifyOid
     </select>
@@ -209,8 +215,9 @@
         codeclassify0.CODERESEMBLERULEOID   as coderesembleruleoid,
         codeclassify0.LCSTATUS              as lcstatus,
         codeclassify0.TS                    as ts,
-        codeclassify0.namePath                 as namepath,
-        codeclassify0.idPath                 as idpath
+        codeclassify0.namePath              as namepath,
+        codeclassify0.idPath                as idpath,
+        codeclassify0.ISPARTICIPATECHECK   as isParticipateCheck
         from (select plcodeclassify.*,
                 SYS_CONNECT_BY_PATH(name, '#')   as namePath,
                 SYS_CONNECT_BY_PATH(id, '#')   as idPath
@@ -239,7 +246,8 @@
                codeclassify0.CODERESEMBLERULEOID   as coderesembleruleoid,
                codeclassify0.LCSTATUS              as lcstatus,
                codeclassify0.TS                    as ts,
-               codeclassify0.paths                 as paths
+               codeclassify0.paths                 as paths,
+               codeclassify0.ISPARTICIPATECHECK   as isParticipateCheck
         from (select plcodeclassify.*,
                 <choose>
                      <when test='fieldName=="name"'>
@@ -292,7 +300,8 @@
         codeclassify0.CODERESEMBLERULEOID   as coderesembleruleoid,
         codeclassify0.LCSTATUS              as lcstatus,
         codeclassify0.TS                    as ts,
-        codeclassify0.TENANT_ID             as tenantId ,
+        codeclassify0.TENANT_ID             as tenantId,
+        codeclassify0.ISPARTICIPATECHECK   as isParticipateCheck,
         coderuleoid.name                    as codeRuleOidName,
         codekeyattrrepeatoid.name           as codeKeyAttrRepeatOidName,
         coderesembleruleoid.name            as codeResembleRuleOidName
@@ -355,7 +364,8 @@
         codeclassify0.TENANT_ID             as tenantId ,
         coderuleoid.name                    as codeRuleOidName,
         codekeyattrrepeatoid.name           as codeKeyAttrRepeatOidName,
-        coderesembleruleoid.name            as codeResembleRuleOidName
+        coderesembleruleoid.name            as codeResembleRuleOidName,
+        codeclassify0.ISPARTICIPATECHECK   as isParticipateCheck
         from pl_code_classify codeclassify0
         left join pl_code_rule coderuleoid
         on codeclassify0.codeRuleOid = coderuleoid.oid
@@ -377,7 +387,7 @@
     </select>
 
     <select id="getRMLibByName" resultMap="plCodeClassifyResultMap">
-        select codeclassify0.OWNER                 as owner,
+        select codeclassify0.OWNER          as owner,
         codeclassify0.BTMTYPEID             as btmtypeid,
         codeclassify0.CREATOR               as creator,
         codeclassify0.CREATETIME            as createtime,
@@ -397,6 +407,7 @@
         codeclassify0.LCSTATUS              as lcstatus,
         codeclassify0.TS                    as ts,
         codeclassify0.TENANT_ID             as tenantId ,
+        codeclassify0.ISPARTICIPATECHECK   as isParticipateCheck,
         coderuleoid.name                    as codeRuleOidName,
         codekeyattrrepeatoid.name           as codeKeyAttrRepeatOidName,
         coderesembleruleoid.name            as codeResembleRuleOidName
@@ -442,6 +453,7 @@
         codeclassify0.LCSTATUS              as lcstatus,
         codeclassify0.TS                    as ts,
         codeclassify0.TENANT_ID             as tenantId ,
+        codeclassify0.ISPARTICIPATECHECK   as isParticipateCheck,
         coderuleoid.name                    as codeRuleOidName,
         codekeyattrrepeatoid.name           as codeKeyAttrRepeatOidName,
         coderesembleruleoid.name            as codeResembleRuleOidName
@@ -461,9 +473,10 @@
         </if>
         order by id asc
     </select>
+
     <!--鑾峰彇鎵�鏈変笅绾ц妭鐐�,涓嶈鍔ㄨ繖涓柟娉晄ql-->
     <select id="selectAllClassifyByOid" resultMap="plCodeClassifyResultMap">
-        select codeclassify0.OWNER                 as owner,
+        select codeclassify0.OWNER          as owner,
         codeclassify0.BTMTYPEID             as btmtypeid,
         codeclassify0.CREATOR               as creator,
         codeclassify0.CREATETIME            as createtime,
@@ -483,6 +496,7 @@
         codeclassify0.LCSTATUS              as lcstatus,
         codeclassify0.TS                    as ts,
         codeclassify0.TENANT_ID             as tenantId ,
+        codeclassify0.ISPARTICIPATECHECK   as isParticipateCheck,
         coderuleoid.name                    as codeRuleOidName,
         codekeyattrrepeatoid.name           as codeKeyAttrRepeatOidName,
         coderesembleruleoid.name            as codeResembleRuleOidName
@@ -526,7 +540,8 @@
         codeclassify0.CODERESEMBLERULEOID   as coderesembleruleoid,
         codeclassify0.LCSTATUS              as lcstatus,
         codeclassify0.TS                    as ts,
-        codeclassify0.TENANT_ID             as tenantId ,
+        codeclassify0.TENANT_ID             as tenantId,
+        codeclassify0.ISPARTICIPATECHECK   as isParticipateCheck,
         coderuleoid.name                    as codeRuleOidName,
         codekeyattrrepeatoid.name           as codeKeyAttrRepeatOidName,
         coderesembleruleoid.name            as codeResembleRuleOidName
@@ -569,4 +584,28 @@
         connect by p.oid = prior p.PARENTCODECLASSIFYOID
     </select>
 
+    <select id="selectLeafByParentClassifyOid" resultType="com.vci.ubcs.code.entity.CodeClassify">
+        select *
+            from (
+                select
+                    oid,
+                    name,
+                    id,
+                    level lvl,
+                    isparticipatecheck,
+                    nvl((select 'N'
+                        from PL_CODE_CLASSIFY pcc1
+                        where pcc.oid = pcc1.PARENTCODECLASSIFYOID
+                            and rownum &lt; 2),'Y') is_leaf
+                from PL_CODE_CLASSIFY pcc
+                start with pcc.PARENTCODECLASSIFYOID = #{topOid}
+                connect by pcc.PARENTCODECLASSIFYOID = prior oid
+            ) plcls
+        where
+        is_leaf = 'Y'
+        and isparticipatecheck = 0
+        and oid != #{currentOid}
+    </select>
+
+
 </mapper>

--
Gitblit v1.9.3