From 85250c4f06947d81ff54b554e026353095850b86 Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期一, 11 九月 2023 16:33:56 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeFixedValue.java             |    1 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeBasicSecService.java              |   13 
 Source/UBCS-WEB/src/views/code/code.vue                                                                           |  326 +-------------------------
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeFixedValueService.java            |    9 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyValueServiceImpl.java |   27 ++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeRuleController.java             |    3 
 Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/DefaultAttrAssimtUtil.java     |    2 
 Source/UBCS-WEB/src/components/refer/vciWebReferDefalut.vue                                                       |   36 ++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeFixedValueServiceImpl.java    |   20 +
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClassifyValue.java          |    2 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyValueService.java         |    7 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeBasicSecDTO.java               |    5 
 Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/revision/model/BaseModel.java       |    2 
 Source/UBCS-WEB/src/components/refer/vciWebReferTable.vue                                                         |   23 +
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeFixedValueVO.java     |    2 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java      |  111 +++++++-
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeRuleService.java                  |    3 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeBasicSecController.java         |    3 
 Source/UBCS-WEB/src/const/code/cloneCodeRuleDialogOption.js                                                       |   10 
 Source/UBCS-WEB/src/main.js                                                                                       |    4 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java          |   81 +++++-
 Source/UBCS-WEB/src/components/refer/vciWebReferTree.vue                                                          |   26 +
 22 files changed, 343 insertions(+), 373 deletions(-)

diff --git a/Source/UBCS-WEB/src/components/refer/vciWebReferDefalut.vue b/Source/UBCS-WEB/src/components/refer/vciWebReferDefalut.vue
index 727d79a..8422b43 100644
--- a/Source/UBCS-WEB/src/components/refer/vciWebReferDefalut.vue
+++ b/Source/UBCS-WEB/src/components/refer/vciWebReferDefalut.vue
@@ -158,22 +158,34 @@
           label: '鑻辨枃鍚嶇О',
           sortable: true,
           width: 150,
-          search: true
+          search: true,
+          formatter:function (d){
+            return d.id || d.data.id
+          }
         }, {
           prop: 'name',
           label: '涓枃鍚嶇О',
           sortable: true,
           width: 150,
-          search: true
+          search: true,
+          formatter:function (d){
+            return d.name || d.data.name
+          }
         }, {
           prop: 'description',
           label: '鎻忚堪',
-          width: 250
+          width: 250,
+          formatter:function (d){
+            return d.description || d.data.description
+          }
         }, {
           prop: 'secretGradeText',
           label: '瀵嗙骇',
           width: 60,
-          hidden: (!this.controllerSecret)
+          hidden: (!this.controllerSecret),
+          formatter:function (d){
+            return d.secretGradeText || d.data.secretGradeText
+          }
         }];
       } else {
         this.option.column = this.options.tableConfig.cols.map(item => {
@@ -181,6 +193,16 @@
             let formatter=item.template || item.templet;
             if(typeof formatter == "string" && formatter !=''){
               formatter=eval("(" + formatter + ")")
+            }else{
+              formatter=function (d){
+                if(d[item.field]!=undefined){
+                  return d[item.field]
+                }else if(d.data[item.field] !=undefined){
+                  return d.data[item.field]
+                }else {
+                  return ''
+                }
+              }
             }
             return {
               ...item,
@@ -295,6 +317,12 @@
             this.data = res.data.data.records;
             this.page.total=res.data.data.total;
           }
+          this.data=this.data.map(item => {
+            item.data=item.data || {}
+            return {
+              ...item
+            }
+          })
           this.loading = false;
           this.selectionClear();
         }).catch(error=>{
diff --git a/Source/UBCS-WEB/src/components/refer/vciWebReferTable.vue b/Source/UBCS-WEB/src/components/refer/vciWebReferTable.vue
index 93ed5ef..522df5b 100644
--- a/Source/UBCS-WEB/src/components/refer/vciWebReferTable.vue
+++ b/Source/UBCS-WEB/src/components/refer/vciWebReferTable.vue
@@ -202,10 +202,9 @@
                     message: "璇疯緭鍏�" + item.field,
                     trigger: "blur"
                   }];
-                  /*item.formatter=function(d,thisItem){
-                    var vciWebComboxStore = layui.vciWebComboxStore;
-                    return vciWebComboxStore.getComboxText(thisItem.enumCode,d[thisItem.field]);
-                  };*/
+                  item.formatter=function(d){
+                    return d.field || d.data.field
+                  };
                 }
                 return {
                   ...item,
@@ -252,6 +251,16 @@
               let formatter=item.template || item.templet;
               if(typeof formatter == "string" && formatter !=''){
                 formatter=eval("(" + formatter + ")")
+              }else{
+                formatter=function (d){
+                  if(d[item.field]!=undefined){
+                    return d[item.field]
+                  }else if(d.data[item.field] !=undefined){
+                    return d.data[item.field]
+                  }else {
+                    return ''
+                  }
+                }
               }
               return {
                 ...item,
@@ -362,6 +371,12 @@
             this.data = res.data.data.records;
             this.page.total=res.data.data.total;
           }
+          this.data=this.data.map(item => {
+            item.data=item.data || {}
+            return {
+              ...item
+            }
+          })
           this.loading = false;
           this.selectionClear();
         }).catch(error=>{
diff --git a/Source/UBCS-WEB/src/components/refer/vciWebReferTree.vue b/Source/UBCS-WEB/src/components/refer/vciWebReferTree.vue
index 3000eba..16756d9 100644
--- a/Source/UBCS-WEB/src/components/refer/vciWebReferTree.vue
+++ b/Source/UBCS-WEB/src/components/refer/vciWebReferTree.vue
@@ -123,10 +123,23 @@
       this.params=queryParams;
 
     },
-    getTree(){
-      getTree(this.params,this.treeUrl).then(res => {
-          this.treeData=res.data
+    getTree() {
+      getTree(this.params, this.treeUrl).then(res => {
+        res.data.map(item => {
+          if (!item.attribute) {
+            item.attribute = {
+              data: {}
+            }
+          } else {
+            item.attribute.data = item.attribute.data || {}
+          }
+          return {
+            ...item,
+            leaf: !item.hasChildren
+          }
         })
+        this.treeData = res.data
+      })
     },
     treeLoad: function (treeNode, resolve) {
       const parentOid = (treeNode.level === 0) ? 0 : treeNode.data.oid;
@@ -142,6 +155,13 @@
       }
       getLazyTree(this.params,this.treeUrl).then(res => {
         resolve(res.data.data.map(item => {
+          if(!item.attribute){
+            item.attribute={
+              data:{}
+            }
+          }else{
+            item.attribute.data=item.attribute.data || {}
+          }
           return {
             ...item,
             leaf: !item.hasChildren
diff --git a/Source/UBCS-WEB/src/const/code/cloneCodeRuleDialogOption.js b/Source/UBCS-WEB/src/const/code/cloneCodeRuleDialogOption.js
index 8b4fedf..990ff22 100644
--- a/Source/UBCS-WEB/src/const/code/cloneCodeRuleDialogOption.js
+++ b/Source/UBCS-WEB/src/const/code/cloneCodeRuleDialogOption.js
@@ -11,15 +11,23 @@
     border: true,
     index: true,
     viewBtn: false,
-    selection: true,
+    selection: false,
     menu: false,
     refreshBtn: false,
     columnBtn: false,
     dialogClickModal: false,
     highlightCurrentRow: true, //琛岄�変腑鏃堕珮浜�
     rowKey: "oid", //琛屾暟鎹殑 Key锛岀敤鏉ヤ紭鍖� Table 鐨勬覆鏌�
+    align: 'center',
+    menuAlign: 'center',
     column: [
       {
+        label: '',
+        prop: 'radio',
+        width: 60,
+        hide: false
+      },
+      {
         label: "缂栧彿",
         prop: "id",
         search: true,
diff --git a/Source/UBCS-WEB/src/main.js b/Source/UBCS-WEB/src/main.js
index 9f5eb67..32083d0 100644
--- a/Source/UBCS-WEB/src/main.js
+++ b/Source/UBCS-WEB/src/main.js
@@ -41,6 +41,8 @@
 import referConfigDialog from "@/components/code-dialog-page/referConfigDialog"
 import referBtmTypeCrudDialog from "@/components/code-dialog-page/referBtmTypeCrudDialog"
 import referSelectBtmAttrDialog from "@/components/code-dialog-page/referSelectBtmAttrDialog"
+import cloneRuleDialog from "@/components/code-dialog-page/cloneRuleDialog"
+import cloneOtherBasicSecDialog from "@/components/code-dialog-page/cloneOtherBasicSecDialog"
 import advancedQuery from "@/components/advanced-query/advancedQuery"
 import businessAdd from "@/views/modeling/BusinessAdd"
 import VciMasterCrud from "@/components/MasterCrud/VciMasterCrud"
@@ -99,6 +101,8 @@
 Vue.component('originalAdd',originalAdd)
 Vue.component('referBtmTypeCrudDialog',referBtmTypeCrudDialog)
 Vue.component('referSelectBtmAttrDialog',referSelectBtmAttrDialog)
+Vue.component('cloneOtherBasicSecDialog',cloneOtherBasicSecDialog)
+Vue.component('cloneRuleDialog',cloneRuleDialog)
 Vue.component('FormTemplateDialog',FormTemplateDialog)
 Vue.component('LinkTypeAdd',linkTypeAdd)
 Vue.component('MasterTree',MasterTree)
diff --git a/Source/UBCS-WEB/src/views/code/code.vue b/Source/UBCS-WEB/src/views/code/code.vue
index 65295a7..59f6ec1 100644
--- a/Source/UBCS-WEB/src/views/code/code.vue
+++ b/Source/UBCS-WEB/src/views/code/code.vue
@@ -156,7 +156,7 @@
     >
     </advanced-query>
 
-    <!-- 缂栫爜瑙勫垯鐩稿叧瀵硅瘽妗� -->
+    <!-- 浠ヤ笅鏄紪鐮佽鍒欑浉鍏冲璇濇 -->
     <el-dialog
       :visible.sync="codeRangeSettingBox"
       append-to-body
@@ -177,150 +177,18 @@
     </el-dialog>
 
     <!-- 缂栫爜瑙勫垯,鍏嬮殕瀵硅瘽妗� -->
-    <el-dialog
+    <clone-rule-dialog
       :visible.sync="cloneSettingBox"
-      append-to-body
-      class="avue-dialog avue-dialog--top"
-      style="height: 100vh"
-      title="鍏嬮殕缂栫爜瑙勫垯"
-      top="-3%"
-      width="800px"
-    >
-      <div>
-        <el-row>
-          <el-form ref="form" :inline="true" :model="form" label-width="80px">
-            <el-form-item label="缂栧彿" required>
-              <el-input v-model="cloneCodeRuleForm.id"></el-input>
-            </el-form-item>
-            <el-form-item label="鍚嶇О" required>
-              <el-input v-model="cloneCodeRuleForm.name"></el-input>
-            </el-form-item>
-            <el-form-item class="clone-input-textarea" label="鎻忚堪">
-              <el-input
-                v-model="cloneCodeRuleForm.description"
-                :autosize="{ minRows: 3, maxRows: 5 }"
-                type="textarea"
-              ></el-input>
-            </el-form-item>
-          </el-form>
-        </el-row>
-        <el-row>
-          <p
-            style="
-              margin: 0 0px 16px 50%;
-              font-weight: 500;
-              font-size: 20px;
-              color: #000;
-            "
-          >
-            鐮佹绠$悊
-          </p>
-          <avue-crud
-            :data="cloneData"
-            :option="cloneOption"
-            :table-loading="cloneTableLoading"
-            class="clone-avue-crud"
-            @on-load="cloneDataOnLoad"
-          >
-            <template slot="menu" slot-scope="scope">
-              <el-button
-                v-show="scope.row.orderNum > 1"
-                icon="el-icon-arrow-up"
-                plain
-                size="small"
-                type="text"
-                @click="upOrderNum(scope.row)"
-                >涓婄Щ
-              </el-button>
-              <el-button
-                icon="el-icon-arrow-down"
-                plain
-                size="small"
-                type="text"
-                @click="downOrderNum(scope.row)"
-                >涓嬬Щ
-              </el-button>
-            </template>
-          </avue-crud>
-        </el-row>
-      </div>
-      <div slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="saveCloneCodeRule">淇� 瀛�</el-button>
-        <el-button @click="cloneSettingBox = false">鍙� 娑�</el-button>
-      </div>
-    </el-dialog>
+      :ruleData="selectionList[0]"
+      @refreshRuleTable="onLoad">
+    </clone-rule-dialog>
 
     <!-- 缂栫爜瑙勫垯,浠庡叾浠栬鍒欏厠闅嗗璇濇 -->
-    <el-dialog
+    <clone-other-basic-sec-dialog
       :visible.sync="cloneOtherCodeRuleSettingBox"
-      append-to-body
-      class="avue-dialog avue-dialog--top"
-      destroy-on-close
-      style="height: 100vh"
-      title="鍏嬮殕缂栫爜瑙勫垯鐨勫熀纭�淇℃伅"
-      top="-3%"
-      width="800px"
-    >
-      <div>
-        <el-row>
-          <p
-            style="
-              margin-top: -20px;
-              margin-bottom: 4px;
-              font-weight: 570;
-              font-size: 19px;
-              color: #0e2d5f;
-            "
-          >
-            缂栫爜瑙勫垯
-          </p>
-          <avue-crud
-            ref="crudCloneCodeRuleOther"
-            :data="data"
-            :option="cloneCodeRuleOption"
-            :page.sync="page"
-            :table-loading="loading"
-            class="other-clone-coderule-crud"
-            @row-click="codeOtherCloneRuleRowClick"
-            @size-change="sizeChange"
-            @selection-change="selectionOtherCloneCodeRuleChange"
-            @search-change="searchOtherCloneChange"
-            @search-reset="searchOtherCloneReset"
-            @on-load="onLoad"
-          >
-          </avue-crud>
-        </el-row>
-        <el-row style="margin-top: 10px; border-top: 1px solid #ebeef5">
-          <p
-            style="
-              margin-top: 10px;
-              margin-bottom: 4px;
-              font-weight: 570;
-              font-size: 19px;
-              color: #0e2d5f;
-            "
-          >
-            鐮佹淇℃伅
-          </p>
-          <avue-crud
-            ref="crudCloneCodeBasicOther"
-            :data="basicData"
-            :option="cloneBasicOption"
-            :table-loading="loadingBasic"
-            class="other-clone-codebasic-crud"
-            @row-click="codeOtherCloneBasicRowClick"
-            @selection-change="selectionOtherCloneCodeBasicChange"
-          >
-          </avue-crud>
-        </el-row>
-      </div>
-      <div slot="footer" class="dialog-footer" style="height: 50px">
-        <el-button type="primary" @click="saveOtherCodeBasic">淇� 瀛�</el-button>
-        <el-button @click="cloneOtherCodeRuleSettingBox = false"
-          >鍙� 娑�</el-button
-        >
-      </div>
-    </el-dialog>
+      :quiltCloneCodeRule="selectionList[0]"
+      @refreshRuleTable="onLoad">
+    </clone-other-basic-sec-dialog>
 
     <!-- 缂栫爜瑙勫垯,杞Щ鎵�鏈夎�呭璇濇 -->
     <el-dialog
@@ -485,9 +353,8 @@
               style="height: 60vh; margin-bottom: -40px"
             >
               <basic-container>
-                <div class="abox" v-for="item in classifyValueTreeData">
+                <div class="abox">
                   <avue-tree
-                    :node-key="item.oid"
                     :data="classifyValueTreeData"
                     :option="classisyValueTreeOption"
                     style="height: calc(60vh - 100px);"
@@ -1415,7 +1282,6 @@
   remove,
   listUseRange,
   updateStatus,
-  clone,
   clearAllCode,
   checkLikeCodeRule,
 } from "@/api/code/mdmrule";
@@ -1425,7 +1291,6 @@
   upOrderNum,
   deleteData,
   editSave,
-  cloneCodeBasic,
   addSave,
   refDataGridClassifySec,
 } from "@/api/code/codebasic";
@@ -1446,9 +1311,6 @@
 } from "@/api/code/codeClassifyValue";
 import { getDictionary } from "@/api/omd/enum";
 import optionBasic from "@/const/code/codebasic";
-import cloneOption from "@/const/code/cloneOption";
-import cloneBasicOption from "@/const/code/cloneBasicDialogOption";
-import cloneCodeRuleOption from "@/const/code/cloneCodeRuleDialogOption";
 import optionRule from "@/const/code/mdmrule";
 import attrOption from "@/const/code/selectAttrOptionDialog";
 import treeOption from "@/const/code/classifyTreeOptionDialog";
@@ -1462,7 +1324,6 @@
 export default {
   data() {
     return {
-      nodeKey:'',
       ruleForm: {},
       query: {},
       loading: true,
@@ -1478,24 +1339,11 @@
       data: [],
       currentRuleLcStatus: "",
 
-      /*鍏嬮殕瀵硅瘽妗嗘帶鍒跺彉閲�*/
+      /*鍏嬮殕缂栫爜瑙勫垯瀵硅瘽妗嗘帶鍒跺彉閲�*/
       cloneSettingBox: false,
-      cloneTableLoading: false,
-      cloneOption: cloneOption,
-      cloneData: [],
-      cloneCodeRuleForm: {
-        id: "",
-        name: "",
-        description: "",
-      },
 
       /*浠庡叾浠栬鍒欏厠闅嗙爜娈�*/
       cloneOtherCodeRuleSettingBox: false,
-      cloneBasicOption: cloneBasicOption,
-      cloneCodeRuleOption: cloneCodeRuleOption,
-      selectionOtherCloneCodeBasicList: [], // 姝ょ晫闈㈠唴褰撳墠閫変腑鐨勫熀纭�鐮佹
-      selectionOtherCloneCodeRuleList: [], // 姝ょ晫闈㈠唴褰撳墠閫変腑鐨勭紪鐮佽鍒�
-      otherCloneQuery: {}, // 鏌ヨ鏉′欢瀵硅薄
 
       /** 杞Щ鎵�鏈夎�呭璇濇 */
       escapeOwnerVisible: false,
@@ -1551,7 +1399,7 @@
       loadingBasic: false,
       selectionBasicList: [],
       addBasicCodeSettingBox: false,
-      showbtn: false, //鍩虹鐮佹鏂板鏄惁鏄剧ず鍩虹鐮佹
+      showbtn: false, //鍩虹鐮佹鏂板鎸夐挳鏄惁绂佺敤
       isLoadingSecCodeAddBtn: false,
       basicSecDialogTitle: "", //鍩虹鐮佹绗竴灞傚璇濇鏍囬
       basicSecOnlyRead: false, //鏂板鍩虹鐮佹琛ㄥ崟鏄惁鍙
@@ -2402,7 +2250,6 @@
         "conditionMap[codeclassifysecoid]": row.oid,
       };
       treeCodeClassifyValue(condtionData).then((res) => {
-        // console.log('res',res)
         this.classifyValueTreeData = res.data;
         //console.log(res.data);
       });
@@ -2578,46 +2425,6 @@
         return;
       }
       this.cloneSettingBox = true;
-      this.cloneCodeRuleForm.id = this.selectionList[0].id;
-      this.cloneCodeRuleForm.name = this.selectionList[0].name;
-      this.cloneCodeRuleForm.description = this.selectionList[0].description;
-      this.loadBasic({ oid: this.selectionList[0].oid });
-    },
-    /** 鍏嬮殕缂栫爜瑙勫垯淇濆瓨鍔熻兘*/
-    saveCloneCodeRule() {
-      let form = this.cloneCodeRuleForm;
-      if (form.id.trim() == "") {
-        this.$message.warning("缂栧彿涓嶈兘涓虹┖!");
-        return;
-      }
-      if (form.name.trim() == "") {
-        this.$message.warning("鐮佸�间笉鑳戒负绌�!");
-        return;
-      }
-      this.selectionList[0].oid = "";
-      this.selectionList[0].id = form.id;
-      this.selectionList[0].name = form.name;
-      this.selectionList[0].description = form.description;
-      this.selectionList[0].createTime = new Date().getTime();
-      this.selectionList[0].ts = new Date(this.selectionList[0].ts).getTime();
-      this.selectionList[0].lcStatus = "Editing";
-      let data = Object.assign({}, this.selectionList[0], {
-        elements: this.cloneData,
-      });
-      clone(data).then(
-        () => {
-          this.cloneSettingBox = false;
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "鎿嶄綔鎴愬姛!",
-          });
-        },
-        (error) => {
-          window.console.log(error);
-        }
-      );
-      //console.log(data);
     },
 
     /** 鎵撳紑浠庡叾浠栫紪鐮佽鍒欎腑鍏嬮殕鐮佹瀵硅瘽妗�*/
@@ -2630,99 +2437,6 @@
         return;
       }
       this.cloneOtherCodeRuleSettingBox = true;
-    },
-    /** 浠庡叾浠栫紪鐮佽鍒欎腑鍏嬮殕鐮佹瀵硅瘽妗�-鍗曞嚮缂栫爜瑙勫垯瀹炵幇琛岄�夋嫨*/
-    codeOtherCloneRuleRowClick(row) {
-      this.$refs.crudCloneCodeRuleOther.toggleSelection();
-      this.selectionOtherCloneCodeRuleList = row;
-      this.$refs.crudCloneCodeRuleOther.setCurrentRow(row);
-      this.$refs.crudCloneCodeRuleOther.toggleRowSelection(row); //閫変腑褰撳墠琛�
-      this.loadBasic(row);
-    },
-    /** 浠庡叾浠栫紪鐮佽鍒欎腑鍏嬮殕鐮佹瀵硅瘽妗�-鍗曞嚮鍩虹鐮佹瀹炵幇琛岄�夋嫨*/
-    codeOtherCloneBasicRowClick(row) {
-      this.$refs.crudCloneCodeBasicOther.toggleSelection();
-      this.selectionOtherCloneCodeBasicList = row;
-      this.$refs.crudCloneCodeBasicOther.setCurrentRow(row);
-      this.$refs.crudCloneCodeBasicOther.toggleRowSelection(row); //閫変腑褰撳墠琛�
-    },
-    /** 浠庡叾浠栬鍒欏厠闅嗙爜娈电晫闈腑缂栫爜瑙勫垯褰撳墠閫変腑琛屽彉鍖栫殑鏃跺�欒Е鍙�*/
-    selectionOtherCloneCodeRuleChange(list) {
-      //console.log(list);
-      this.selectionOtherCloneCodeRuleList = list;
-      this.$refs.crudBasic.setCurrentRow(
-        this.selectionBasicList[list.length - 1]
-      );
-      if (list == "") {
-        this.basicData = [];
-      }
-      if (this.selectionOtherCloneCodeRuleList.length > 0) {
-        this.loadBasic(this.selectionOtherCloneCodeRuleList[list.length - 1]);
-      }
-    },
-    selectionOtherCloneCodeBasicChange(list) {
-      this.selectionOtherCloneCodeBasicList = list;
-      this.$refs.crudCloneCodeBasicOther.setCurrentRow(
-        this.selectionOtherCloneCodeBasicList[list.length - 1]
-      );
-    },
-    /** 浠庡叾浠栬鍒欏厠闅嗙爜娈电晫闈㈤噸缃悳绱㈠姛鑳� */
-    searchOtherCloneReset() {
-      this.otherCloneQuery = {};
-      this.onLoad(this.page);
-    },
-    /** 浠庡叾浠栬鍒欏厠闅嗙爜娈电晫闈㈡悳绱㈠姛鑳�*/
-    searchOtherCloneChange(params, done) {
-      this.page.currentPage = 1;
-      // 澶氫釜conditionMap杩欐牱浼犲弬锛屽揩閫熸煡璇㈤粯璁ら噰鐢ㄦā绯婃煡璇�
-      let requestData = {};
-      if (params) {
-        Object.keys(params).forEach((key) => {
-          requestData["conditionMap" + "[" + key + "_like]"] =
-            params[key].trim();
-        });
-      }
-      this.otherCloneQuery = requestData;
-      this.onLoad(this.page,requestData);
-      done();
-    },
-    /** 淇濆瓨浠庡叾浠栫紪鐮佽鍒欎腑鍏嬮殕鐮佹淇℃伅*/
-    saveOtherCodeBasic() {
-      let oid = this.selectionList[0].oid;
-      let fromDialogPkCodebasic = this.selectionOtherCloneCodeBasicList;
-      if (fromDialogPkCodebasic.length <= 0) {
-        this.$message.warning("璇烽�夋嫨鐮佹鏁版嵁!");
-        return;
-      }
-      let res = fromDialogPkCodebasic.filter((item) => {
-        return item.pkCodeRule == oid;
-      });
-      if (res != "") {
-        this.$message.warning("闇�瑕佸厠闅嗙殑缂栫爜瑙勫垯涓庤鍏嬮殕鐨勭紪鐮佽鍒欑浉鍚�!");
-        return;
-      }
-      let oidArr = [];
-      fromDialogPkCodebasic.forEach((ele) => {
-        oidArr.push(ele.oid);
-      });
-      let data = {
-        pkCodeRule: oid,
-        oidArr: oidArr.join(","),
-      };
-      //console.log(data);
-      cloneCodeBasic(data).then(
-        () => {
-          this.cloneOtherCodeRuleSettingBox = false;
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "鎿嶄綔鎴愬姛!",
-          });
-        },
-        (error) => {
-          window.console.log(error);
-        }
-      );
     },
 
     /** 娓呯┖鐮佸��*/
@@ -3238,11 +2952,7 @@
     },
     /** 鐐瑰嚮瑙﹀彂鍔犺浇鍩虹鐮佹淇℃伅*/
     loadBasic(row) {
-      if (this.cloneSettingBox) {
-        this.cloneTableLoading = true;
-      } else {
-        this.loadingBasic = true;
-      }
+      this.loadingBasic = true;
       // console.log(row.oid);
       if (row != "" || row != null) {
         //瀛樺偍褰撳墠鍏宠仈鐨勭紪鐮佽鍒欑浉鍏充俊鎭�
@@ -3275,14 +2985,8 @@
       gridCodeBasicSec(1, -1, isAdancedQuery ? condition : conditionMaps).then(
         (res) => {
           const data = res.data.data;
-          if (this.cloneSettingBox) {
-            this.cloneData = data.records;
-            this.cloneTableLoading = false;
-          } else {
-            this.basicData = data.records;
-            // console.log(this.basicData);
-            this.loadingBasic = false;
-          }
+          this.basicData = data.records;
+          this.loadingBasic = false;
         }
       );
     },
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeBasicSecDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeBasicSecDTO.java
index 95b8e8f..dc7c752 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeBasicSecDTO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeBasicSecDTO.java
@@ -82,7 +82,6 @@
 	 */
 	private String codeSecLength;
 
-
 	/**
 	 * 灞傜骇绫诲瀷
 	 */
@@ -148,7 +147,6 @@
 	 */
 	private String filterSql ;
 
-
 	/**
 	 * 娴佹按鍙疯捣濮嬪��
 	 */
@@ -158,7 +156,6 @@
 	 * 娴佹按鐨勬闀�
 	 */
 	private Integer serialStep;
-
 
 	/**
 	 * 缂栫爜琛ヤ綅鏂瑰紡
@@ -210,7 +207,6 @@
 	 */
 	private String parentClassifySecText;
 
-
 	/**
 	 * 鏄惁鍙互涓虹┖
 	 */
@@ -240,6 +236,7 @@
 	 * 閫夋嫨鐮佹淇℃伅鐨勪富閿泦鍚�
 	 */
 	private String oidArr;
+
 	/**
 	 * 鑾峰彇 鐮佹绫诲瀷
 	 */
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClassifyValue.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClassifyValue.java
index 171542c..7f627a8 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClassifyValue.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClassifyValue.java
@@ -19,11 +19,11 @@
 @EqualsAndHashCode(callSuper = true)
 public class CodeClassifyValue extends BaseModel {
 
-
 	/**
 	 * 搴忓垪鍖�
 	 */
 	private static final long serialVersionUID = 5238387322464830032L;
+
 	/**
 	 * 鍒嗙被鐮佹涓婚敭
 	 */
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeFixedValue.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeFixedValue.java
index a286bae..eca4ff3 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeFixedValue.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeFixedValue.java
@@ -23,6 +23,7 @@
 	 * 搴忓垪鍖�
 	 */
 	private static final long serialVersionUID = 3392365440606832597L;
+
 	/**
 	 * 鍥哄畾鐮佹涓婚敭
 	 */
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeFixedValueVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeFixedValueVO.java
index ac8e6ee..e4e2355 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeFixedValueVO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeFixedValueVO.java
@@ -30,8 +30,6 @@
 	*/
 	private Integer orderNum;
 
-
-
 	/**
 	 * 鑾峰彇 鍥哄畾鐮佹涓婚敭
 	 */
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 9bb7b6f..4647cee 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
@@ -21,7 +21,7 @@
 		using = ToStringSerializer.class
 	)
 	@ApiModelProperty("涓婚敭id")
-	@TableId(value = "OID",type = IdType.ASSIGN_UUID)
+	@TableId(value = "OID",type = IdType.ASSIGN_ID)
 	private String oid;
 
 	@TableField(value = "id")
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 106b325..a004b76 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
@@ -36,7 +36,7 @@
 	public static <T extends BaseModel> T addDefaultAttrAssimt(T object,String btmName) throws VciBaseException {
 		BaseModel baseModel = object;
 		try {
-			baseModel.setOid(VciBaseUtil.getPk().toUpperCase());
+			baseModel.setOid(VciBaseUtil.getPk());
 			baseModel.setCreateTime(new Date());
 			baseModel.setNameOid(VciBaseUtil.getPk());
 			baseModel.setLastModifyTime(new Date());
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeBasicSecController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeBasicSecController.java
index 5aaed90..5f81558 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeBasicSecController.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeBasicSecController.java
@@ -23,6 +23,7 @@
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
+import java.rmi.ServerException;
 import java.util.Collection;
 import java.util.List;
 
@@ -162,7 +163,7 @@
     @PostMapping("/clone")
 	@ApiOperationSupport(order = 10)
 	@ApiOperation(value = "鍏嬮殕鐮佹淇℃伅", notes = "codeBasicSecDTO")
-    public R cloneCodeBasicSec(@RequestBody CodeBasicSecDTO codeBasicSecDTO){
+    public R cloneCodeBasicSec(@RequestBody CodeBasicSecDTO codeBasicSecDTO) throws ServerException {
         VciBaseUtil.alertNotNull(codeBasicSecDTO.getOidArr(),"閫夋嫨鐮佹涓婚敭");
         List<String> oidArr = VciBaseUtil.str2List(codeBasicSecDTO.getOidArr());
         if (CollectionUtils.isEmpty(oidArr)){
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeRuleController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeRuleController.java
index e49b382..34039f6 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeRuleController.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeRuleController.java
@@ -48,6 +48,7 @@
 import javax.validation.Valid;
 import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
+import java.rmi.ServerException;
 import java.util.Collection;
 import java.util.Map;
 
@@ -200,7 +201,7 @@
 	@PostMapping("/clone")
 	@ApiOperationSupport(order = 13)
 	@ApiOperation(value = "鍏嬮殕缂栫爜瑙勫垯", notes = "浼犲叆codeRuleDTO")
-	public R cloneCodeRule(@RequestBody CodeRuleDTO codeRuleDTO){
+	public R cloneCodeRule(@RequestBody CodeRuleDTO codeRuleDTO) throws ServerException {
 		return codeRuleService.cloneCodeRule(codeRuleDTO);
 	}
 
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeBasicSecService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeBasicSecService.java
index 95bd055..c985b94 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeBasicSecService.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeBasicSecService.java
@@ -17,6 +17,7 @@
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springframework.util.CollectionUtils;
 
+import java.rmi.ServerException;
 import java.util.*;
 
 /**
@@ -41,7 +42,7 @@
 	 * @param codeRuleOid 缂栫爜瑙勫垯涓婚敭
 	 * @return 鎵ц缁撴灉
 	 */
-	boolean batchDeleteSecByCodeRuleOid(String codeRuleOid);
+	boolean batchDeleteSecByCodeRuleOid(String codeRuleOid)throws VciBaseException;
 
 	/**
 	 * 鏍规嵁鐮佹鍒嗙被鐨勭被鍨嬪垽鏂睘鎬ф槸鍚︽槸绌虹殑
@@ -122,7 +123,15 @@
 	 * @param pkCodeRule 鐩爣缂栫爜瑙勫垯
 	 * @return 鍏嬮殕缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
 	 */
-	R cloneCodeBasicSec(List<String> oidList, String pkCodeRule);
+	R cloneCodeBasicSec(List<String> oidList, String pkCodeRule) throws ServerException;
+
+	/**
+	 * 鏀瑰彉鐮佹涓埗鍒嗙被鐮佹鍜屽瓙鍒嗙被鐮佹涔嬮棿鐨勫叧鑱攐id涓烘柊鐨刼id,骞朵笖涓嶇牬鍧忓垎绫荤爜鍊肩殑鍏宠仈鍏崇郴
+	 * @param basicSecs
+	 * @return
+	 * @throws ServerException
+	 */
+	boolean changeParentOidAssnOid(List<CodeBasicSec> basicSecs) throws ServerException;
 
 	/**
 	 * 鏌ヨ鐩爣鍒嗙被鐮佹鎵�鍦ㄧ殑鏍戠粨鏋�
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyValueService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyValueService.java
index 52a5ed5..00d59d5 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyValueService.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyValueService.java
@@ -25,6 +25,13 @@
 public interface ICodeClassifyValueService extends IService<CodeClassifyValue> {
 
 	/**
+	 * 鍏嬮殕鍒嗙被鐮佸��
+	 * @param codeClassifyValues
+	 * @return
+	 */
+	boolean cloneCodeClassifyVaue(List<CodeClassifyValue> codeClassifyValues);
+
+	/**
 	 * 鏌ヨ鍒嗙被鐮佹鐨勭爜鍊� 鏍�
 	 * @param treeQueryObject 鏍戞煡璇㈠璞�
 	 * @return 鍒嗙被鐮佹鐨勭爜鍊� 鏄剧ず鏍�
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeFixedValueService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeFixedValueService.java
index 9dae445..e147304 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeFixedValueService.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeFixedValueService.java
@@ -7,8 +7,6 @@
 import com.vci.ubcs.code.vo.pagemodel.CodeFixedValueVO;
 import com.vci.ubcs.starter.exception.VciBaseException;
 import org.springblade.core.tool.api.R;
-import org.springframework.data.domain.Page;
-
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
@@ -102,4 +100,11 @@
 	 */
 	boolean batchDeleteBySecOid(String codefixedsecoid);
 
+	/**
+	 * 鏍规嵁codeFixedSecOid鏌ヨ鐮佸��
+	 * @param codeFixedSecOids
+	 * @return
+	 */
+	List<CodeFixedValue> listFixedValueByCodeFixedSecOid(List<String> codeFixedSecOids);
+
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeRuleService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeRuleService.java
index e65a4a4..e68c5e7 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeRuleService.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeRuleService.java
@@ -27,6 +27,7 @@
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 
+import java.rmi.ServerException;
 import java.util.Collection;
 import java.util.Map;
 
@@ -144,7 +145,7 @@
 	 * @param codeRuleDTO 涓绘暟鎹紪鐮佽鍒欐暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
 	 * @return 涓绘暟鎹紪鐮佽鍒欐樉绀哄璞�
 	 */
-	R cloneCodeRule(CodeRuleDTO codeRuleDTO) throws VciBaseException;
+	R cloneCodeRule(CodeRuleDTO codeRuleDTO) throws VciBaseException, ServerException;
 
 	/**
 	 * 缂栫爜瑙勫垯娓呯┖鎵�鏈夊凡鐢熸垚鐨勭紪鐮�
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java
index ea4666f..1123541 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java
@@ -52,6 +52,7 @@
 import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
+import java.rmi.ServerException;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -114,7 +115,7 @@
 	/**
 	 * 涓婂眰鍒嗙被鐮佹鐨勫睘鎬у悕绉�
 	 */
-	private static  final String PARENT_FIELD_NAME = "parentclassifysecoid";
+	private static  final String PARENT_FIELD_NAME = "parentClassifySecOid";
 
 	/**
 	 * 涓婄骇鍒嗙被鐮佸�肩殑灞炴�у悕绉�
@@ -170,10 +171,10 @@
 			// 灏嗚浣滀负鍒犻櫎鏉′欢鐨勫�兼斁鍦ㄤ竴涓泦鍚堥噷闈�
 			Set<String> fixedSecOidSet = fixedSecList.stream().map(CodeBasicSec::getOid).collect(Collectors.toSet());
 			// 閫氳繃澶栭敭杩涜鏌ヨ
-			List<CodeFixedValue> fixedValueS = fixedValueMapper.selectList(Wrappers.<CodeFixedValue>query().lambda().in(CodeFixedValue::getCodeFixedSecOid,fixedSecOidSet));
-			if(!fixedValueS.isEmpty()){
+			List<CodeFixedValue> fixedValues = fixedValueMapper.selectList(Wrappers.<CodeFixedValue>query().lambda().in(CodeFixedValue::getCodeFixedSecOid,fixedSecOidSet));
+			if(!fixedValues.isEmpty()){
 				// 鏍规嵁鏌ヨ鍑烘潵鐨刬d鎵ц鍥哄畾鐮佹鎵ц鍒犻櫎
-				deletFlag = fixedValueMapper.deleteBatchIds(fixedValueS.stream().map(CodeFixedValue::getOid).collect(Collectors.toSet()))>0;
+				deletFlag = fixedValueMapper.deleteBatchIds(fixedValues.stream().map(CodeFixedValue::getOid).collect(Collectors.toSet()))>0;
 			}
 		}
 		// 4銆佸啀鍒犻櫎鍒嗙被鐮佹
@@ -184,10 +185,10 @@
 			// 灏嗚浣滀负鍒犻櫎鏉′欢鐨勫�兼斁鍦ㄤ竴涓泦鍚堥噷闈�
 			Set<String> classifySecOidSet = classifySecList.stream().map(CodeBasicSec::getOid).collect(Collectors.toSet());
 			// 閫氳繃澶栭敭杩涜鏌ヨ
-			List<CodeClassifyValue> fixedValueS = codeClassifyValueMapper.selectList(Wrappers.<CodeClassifyValue>query().lambda().in(CodeClassifyValue::getCodeClassifySecOid,classifySecOidSet));
-			if(!fixedValueS.isEmpty()){
+			List<CodeClassifyValue> codeClassifyValues = codeClassifyValueMapper.selectList(Wrappers.<CodeClassifyValue>query().lambda().in(CodeClassifyValue::getCodeClassifySecOid,classifySecOidSet));
+			if(!codeClassifyValues.isEmpty()){
 				// 鏍规嵁鏌ヨ鍑烘潵鐨勪富閿甶d鎵ц鍥哄畾鐮佹鎵ц鍒犻櫎
-				deletFlag = fixedValueMapper.deleteBatchIds(fixedValueS.stream().map(CodeClassifyValue::getOid).collect(Collectors.toSet()))>0;
+				deletFlag = codeClassifyValueMapper.deleteBatchIds(codeClassifyValues.stream().map(CodeClassifyValue::getOid).collect(Collectors.toSet()))>0;
 			}
 		}
 		return deletFlag;
@@ -574,7 +575,7 @@
 	 */
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public R cloneCodeBasicSec(List<String> oidList, String pkCodeRule) throws ServiceException {
+	public R cloneCodeBasicSec(List<String> oidList, String pkCodeRule) throws ServiceException, ServerException {
 		boolean isLinked = checkIsLinked(pkCodeRule,null);
 		if (isLinked) {
 			return R.fail("缂栫爜瑙勫垯宸茶寮曠敤锛屼笉鍏佽缂栬緫鎴栧垹闄�");
@@ -584,20 +585,96 @@
 		if(basicSecDOS.isEmpty()){
 			return R.fail("鍏嬮殕鐨勭爜娈典俊鎭笉瀛樺湪锛�");
 		}
-		basicSecDOS.forEach(sec -> {
+		List<CodeBasicSec> codeClassifySec = new ArrayList<>();
+		Map<String,List<CodeFixedValue>> codeFixedValueMaps = new HashMap<>();
+		for (CodeBasicSec sec : basicSecDOS) {
 			CodeBasicSec newSecDO = new CodeBasicSec();
 			BeanUtilForVCI.copyPropertiesIgnoreCase(sec,newSecDO);
-			newSecDO.setOid(VciBaseUtil.getPk());
-			newSecDO.setNameOid(VciBaseUtil.getPk());
-			newSecDO.setRevisionOid(VciBaseUtil.getPk());
-			newSecDO.setId(newSecDO.getId() + "_copy");
-			newSecDO.setName(newSecDO.getName() + "_copy");
+			String oldBasicOid = newSecDO.getOid();
+			newSecDO.setId(newSecDO.getId());
+			newSecDO.setName(newSecDO.getName());
 			newSecDO.setPkCodeRule(pkCodeRule);
+			// 鍒ゆ柇鏄惁鏄垎绫荤爜娈�,涓氬姟閫昏緫绋嶅井澶嶆潅涓�鐐规墍浠ラ渶瑕佸厛鎻愬嚭鏉ュ崟鐙鐞�
+			if(newSecDO.getSecType().equals(CodeSecTypeEnum.CODE_CLASSIFY_SEC.getValue())){
+				// 瀛樺偍鏃х殑鐮佹oid鍜屾柊鐨勭爜娈电殑oid鐨勫叧鑱斿叧绯�
+				codeClassifySec.add(newSecDO);
+				continue;
+			}
+			// 鏇存敼鍒涘缓鏃堕棿锛屼慨鏀规椂闂寸瓑榛樿鍊�
+			DefaultAttrAssimtUtil.addDefaultAttrAssimt(newSecDO,MdmBtmTypeConstant.CODE_BASIC_SEC);
+			//鍥哄畾鐮佹
+			if(newSecDO.getSecType().equals(CodeSecTypeEnum.CODE_FIXED_SEC.getValue())){
+				// 鍥哄畾鐮佹瀛樺偍濂給id鍜岀爜鍊肩殑鍏宠仈鍏崇郴
+				codeFixedValueMaps.put(newSecDO.getOid(),fixedValueService.list(Wrappers.<CodeFixedValue>query()
+					.lambda().eq(CodeFixedValue::getCodeFixedSecOid, oldBasicOid)
+				));
+			}
 			createList.add(newSecDO);
-		});
+		}
+		// 澶勭悊鍒嗙被鐮佹鐨刼id锛屽洜涓簅id鍏宠仈parentClassifyOid锛屼笌鐮佸�糲odeClassifyOid锛岀爜鍊煎張闇�瑕侀�氳繃鏃х殑鐮佹oid鏉ユ煡璇紝鎵�浠ヤ笉鑳界洿鎺ユ敼鍙榦id
+		boolean resChangeAssn = changeParentOidAssnOid(codeClassifySec);
+		// 灏嗗鐞嗚繃鐨勫垎绫荤爜娈典篃娣诲姞杩涜鍋氭柊澧炲鐞嗙殑鐮佹闆嗗悎涓�
+		createList.addAll(codeClassifySec);
 		boolean resBoolean = saveBatch(createList);
-		//codeBasicSecMapper.insertBatch(createList);
-		return resBoolean ? R.data(resBoolean,"鍏嬮殕鐮佹淇℃伅鎴愬姛"):R.fail("鍏嬮殕鐮佹淇℃伅澶辫触锛�");
+		// 鏈�缁堣瀛樺叆鐮佸�艰〃涓殑锛岀爜鍊煎璞�
+		List<CodeFixedValue> codeFixedDOValues = new ArrayList<>();
+		// 鏋勯�犵爜鍊煎璞★紝涓庣爜娈典富閿叧鑱斿叧绯伙紝浠ュ強鏀瑰彉鍥哄畾鐮佸�肩殑oid
+		codeFixedValueMaps.forEach((key, value) -> {
+			value.stream().forEach(item -> {
+				item.setOid("");
+				item.setCodeFixedSecOid(key);
+				DefaultAttrAssimtUtil.updateDefaultAttrAssimt(item);
+				codeFixedDOValues.add(item);
+			});
+		});
+		// 鍏嬮殕鍥哄畾鐮佸��
+		boolean resFixed = fixedValueService.saveBatch(codeFixedDOValues);
+		return (resBoolean&&resFixed&&resChangeAssn) ? R.data(resBoolean,"鍏嬮殕鐮佹淇℃伅鎴愬姛"):R.fail("鍏嬮殕鐮佹淇℃伅澶辫触锛�");
+	}
+
+	/**
+	 * 鏀瑰彉鐮佹涓埗鍒嗙被鐮佹鍜屽瓙鍒嗙被鐮佹涔嬮棿鐨勫叧鑱攐id涓烘柊鐨刼id,骞朵笖涓嶇牬鍧忓垎绫荤爜鍊肩殑鍏宠仈鍏崇郴
+	 * @param basicSecs
+	 * @return
+	 * @throws ServerException
+	 */
+	@Override
+	public boolean changeParentOidAssnOid(List<CodeBasicSec> basicSecs) throws ServerException {
+		Map<String, List<CodeClassifyValue>> codeClassValues = new HashMap<>();
+		List<CodeClassifyValue> codeClassifyDOValues = new ArrayList<>();
+		HashMap<String, String> oidMap = new HashMap<>();
+		boolean resClone = false;
+		try {
+			// 閬嶅巻瀵硅薄鏁扮粍锛屼负姣忎釜瀵硅薄鐢熸垚鏂扮殑oid锛屽苟灏嗗師濮媜id鍜屾柊oid鐨勬槧灏勫叧绯诲瓨鍌ㄥ埌Map涓�
+			for (CodeBasicSec obj : basicSecs) {
+				String originalOid = obj.getOid();
+				String newOid = VciBaseUtil.getPk();
+				oidMap.put(originalOid, newOid);
+			}
+			// 閬嶅巻瀵硅薄鏁扮粍锛屾洿鏂版瘡涓璞$殑oid鍜宑odeClassifySecOid灞炴�у��
+			for (CodeBasicSec obj : basicSecs) {
+				String originalOid = obj.getOid();
+				String newOid = oidMap.get(originalOid);
+				// 鏂扮殑oid鍏宠仈瑕佸厠闅嗙爜鍊�
+				codeClassValues.put(newOid,codeClassifyValueService.list(Wrappers.<CodeClassifyValue>query()
+					.lambda().eq(CodeClassifyValue::getCodeClassifySecOid, originalOid)));
+				obj.setOid(newOid);
+				String originalParentClassifyValueOid = obj.getParentClassifySecOid();
+				String newParentClassifyValueOid = oidMap.get(originalParentClassifyValueOid);
+				obj.setParentClassifySecOid(newParentClassifyValueOid);
+			}
+			codeClassValues.forEach((key, value) -> {
+				value.stream().forEach(item -> {
+					DefaultAttrAssimtUtil.updateDefaultAttrAssimt(item);
+					item.setCodeClassifySecOid(key);
+					codeClassifyDOValues.add(item);
+				});
+			});
+			resClone = codeClassifyValueService.cloneCodeClassifyVaue(codeClassifyDOValues);
+		}catch (Exception e){
+			throw new ServerException("鐖跺垎绫荤爜娈靛拰瀛愬垎绫荤爜娈礳lone杞崲oid鏃跺嚭閿欙細"+e.getCause());
+		}
+		return resClone;
 	}
 
 	/**
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyValueServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyValueServiceImpl.java
index 132ea09..88770ac 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyValueServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyValueServiceImpl.java
@@ -61,6 +61,33 @@
 	private static final String PARENT_FIELD_NAME = "parentClassifyValueOid";
 
 	/**
+	 * 鍏嬮殕鍒嗙被鐮佸��
+	 * @param codeClassifyValues
+	 * @return
+	 */
+	@Override
+	public boolean cloneCodeClassifyVaue(List<CodeClassifyValue> codeClassifyValues) {
+		// 鍒涘缓Map瀵硅薄锛岀敤浜庡瓨鍌ㄥ師濮媜id鍜屾柊oid鐨勬槧灏勫叧绯�
+		Map<String, String> oidMap = new HashMap<>();
+		// 閬嶅巻瀵硅薄鏁扮粍锛屼负姣忎釜瀵硅薄鐢熸垚鏂扮殑oid锛屽苟灏嗗師濮媜id鍜屾柊oid鐨勬槧灏勫叧绯诲瓨鍌ㄥ埌Map涓�
+		for (CodeClassifyValue obj : codeClassifyValues) {
+			String originalOid = obj.getOid();
+			String newOid = VciBaseUtil.getPk();
+			oidMap.put(originalOid, newOid);
+		}
+		// 閬嶅巻瀵硅薄鏁扮粍锛屾洿鏂版瘡涓璞$殑oid鍜宑odeClassifySecOid灞炴�у��
+		for (CodeClassifyValue obj : codeClassifyValues) {
+			String originalOid = obj.getOid();
+			String newOid = oidMap.get(originalOid);
+			obj.setOid(newOid);
+			String originalParentClassifyValueOid = obj.getParentClassifyValueOid();
+			String newParentClassifyValueOid = oidMap.get(originalParentClassifyValueOid);
+			obj.setParentClassifyValueOid(newParentClassifyValueOid);
+		}
+		return this.saveBatch(codeClassifyValues);
+	}
+
+	/**
 	 * 鏌ヨ鍒嗙被鐮佹鐨勭爜鍊� 鏍�
 	 * @param treeQueryObject 鏍戞煡璇㈠璞�
 	 * @return 鍒嗙被鐮佹鐨勭爜鍊� 鏄剧ず鏍�
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeFixedValueServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeFixedValueServiceImpl.java
index 97fc88d..47d537f 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeFixedValueServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeFixedValueServiceImpl.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 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.vci.ubcs.code.dto.CodeFixedValueDTO;
@@ -24,7 +25,6 @@
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Page;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
@@ -74,6 +74,24 @@
 	}
 
 	/**
+	 * 鏍规嵁codeFixedSecOid鏌ヨ鐮佸��
+	 * @param codeFixedSecOids
+	 * @return
+	 */
+	@Override
+	public List<CodeFixedValue> listFixedValueByCodeFixedSecOid(List<String> codeFixedSecOids){
+		if(codeFixedSecOids.isEmpty()){
+			return new ArrayList<CodeFixedValue>();
+		}
+		/*List<CodeFixedValue> codeFixedValues = codeFixedValueMapper.selectList(
+			Wrappers.<CodeFixedValue>query().lambda()
+				.in(CodeFixedValue::getCodeFixedSecOid, codeFixedSecOids)
+		);*/
+		List<CodeFixedValue> codeFixedValues = codeFixedValueMapper.selectByPageByCodeFixedSecOid(codeFixedSecOids, new Page<>(1, -1));
+		return codeFixedValues;
+	}
+
+	/**
 	 * 澧炲姞鍥哄畾鐮佹鐨勭爜鍊�
 	 * @param codeFixedValueDTO 鍥哄畾鐮佹鐨勭爜鍊兼暟鎹紶杈撳璞�
 	 * @return 鎵ц缁撴灉
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java
index be398aa..5d8bd08 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java
@@ -17,6 +17,7 @@
 package com.vci.ubcs.code.service.impl;
 
 import com.alibaba.cloud.commons.lang.StringUtils;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -48,6 +49,7 @@
 import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
 import com.vci.ubcs.starter.web.util.VciBaseUtil;
 import com.vci.ubcs.starter.web.util.WebUtil;
+import com.vci.ubcs.system.cache.NacosConfigCache;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.utils.AuthUtil;
@@ -64,6 +66,7 @@
 import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
+import java.rmi.ServerException;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
@@ -110,10 +113,14 @@
 	@Resource
 	private RevisionModelUtil revisionModelUtil;
 
-	@Value("${user-info.tenant-id}")
-	private String tenantId;
-	@Value("${user-info.id}")
-	private String userId;
+	@Resource
+	private NacosConfigCache nacosConfigCache;
+
+	@Resource
+	private ICodeFixedValueService codeFixedValueService;
+
+	@Resource
+	private ICodeClassifyValueService codeClassifyValueService;
 
 	/**
 	 * 鍒嗛〉鏌ヨ
@@ -124,7 +131,9 @@
 	@Override
 	public IPage<CodeRuleVO> gridCodeRule(Query query, Map<String,Object> conidtionMap) {
 		//濡傛灉绛変簬鑷繁閰嶇疆鐨勭鐞嗙粍绉熸埛id鍜岀鐞嗙粍瓒呯璐﹀彿锛屽氨涓嶉渶瑕佹寜鐓ц鍒欐墍鏈夎�呮潵杩涜鏌ヨ
-		if(!(AuthUtil.getTenantId().equals(this.tenantId) && AuthUtil.getUserId().toString().equals(this.userId))){
+		if(!(AuthUtil.getTenantId().equals(nacosConfigCache.getAdminUserInfo().getTenantId())
+			&& AuthUtil.getUserId().toString().equals(nacosConfigCache.getAdminUserInfo().getUserId().toString()))
+		){
 			// 鎸夌収瑙勫垯鎵�鏈夎�呮潵鏌ヨ
 			conidtionMap.put("owner",AuthUtil.getUserId());
 		}
@@ -162,14 +171,17 @@
 	 */
 	@Override
 	public boolean checkCodeRuleRepeat(CodeRuleDTO codeRuleDTO){
+		LambdaQueryWrapper<CodeRule> wrapper = Wrappers.<CodeRule>query()
+			.lambda().eq(CodeRule::getId, codeRuleDTO.getId());
+		if(AuthUtil.getTenantId().equals(nacosConfigCache.getAdminUserInfo().getTenantId())){
+			wrapper.eq(CodeRule::getTenantId,codeRuleDTO.getTenantId());
+		}
 		// 鏍规嵁瑙勫垯id鏌ヨ缂栧彿
-		List<CodeRule> codeRulesList = this.codeRuleMapper.selectList(Wrappers.<CodeRule>query()
-			.lambda().eq(CodeRule::getId, codeRuleDTO.getId())
-			.eq(CodeRule::getTenantId,AuthUtil.getTenantId().equals(this.tenantId) ? "":codeRuleDTO.getTenantId()));
+		List<CodeRule> codeRulesList = this.codeRuleMapper.selectList(wrapper);
 		if(!codeRulesList.isEmpty()){
 			return codeRulesList.parallelStream().anyMatch(codeRule -> {
 				if(StringUtils.isNotBlank(codeRuleDTO.getOid())){
-					// 浠h〃鏄慨鏀癸紝涓嶆槸灏嗙紪鍙蜂慨鏀圭浉鍚岀殑缂栧彿
+					// 浠h〃鏄慨鏀硅鍒欙紝涓嶆槸灏嗙紪鍙蜂慨鏀逛负宸插瓨鍦ㄧ殑鐨勭紪鍙�
 					return !codeRule.getOid().equals(codeRuleDTO.getOid());
 				}else {
 					return true;
@@ -465,14 +477,21 @@
 	 */
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public R cloneCodeRule(CodeRuleDTO codeRuleDTO) {
+	public R cloneCodeRule(CodeRuleDTO codeRuleDTO) throws ServerException {
+		if(checkCodeRuleRepeat(codeRuleDTO)){
+			return R.fail("瑙勫垯缂栧彿宸插瓨鍦紒");
+		}
 		VciBaseUtil.alertNotNull(codeRuleDTO, "闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄");
 		CodeRule codeRuleDO = new CodeRule();
+		DefaultAttrAssimtUtil.addDefaultAttrAssimt(codeRuleDO,MdmBtmTypeConstant.CODE_RULE);
 		BeanUtilForVCI.copyPropertiesIgnoreCase(codeRuleDTO, codeRuleDO);
 		boolean exFlag = codeRuleMapper.insert(codeRuleDO)>0;
 		List<CodeBasicSecDTO> secList = codeRuleDTO.getElements();
 		List<CodeBasicSec> codeBasicSecs = new ArrayList<>();
-		secList.forEach(codeBasicSecDTO -> {
+		List<CodeBasicSec> codeClassifySec = new ArrayList<>();
+		// 鍥哄畾鐮佸�兼槧灏勫叧绯�
+		Map<String,List<CodeFixedValue>> codeFixedValueMaps = new HashMap<>();
+		for (CodeBasicSecDTO codeBasicSecDTO : secList) {
 			codeBasicSecDTO.setPkCodeRule(codeRuleDO.getOid());
 			KeyValue attrKv = codeBasicSecService.checkAttrNullableBySecType(codeBasicSecDTO);
 			if (!"success".equals(attrKv.getKey())) {
@@ -480,13 +499,43 @@
 			}
 			CodeBasicSec codeBasicSecDO = new CodeBasicSec();
 			BeanUtilForVCI.copyPropertiesIgnoreCase(codeBasicSecDTO, codeBasicSecDO);
-			codeBasicSecDO.setOid("");
-			codeBasicSecDO.setRevisionOid("");
-			codeBasicSecDO.setNameOid("");
+			String oldBasicOid = codeBasicSecDO.getOid(); //琚厠闅嗙殑鐮佹鐨刼id
+			// 鍒ゆ柇鏄惁鏄垎绫荤爜娈�
+			if(codeBasicSecDO.getSecType().equals(CodeSecTypeEnum.CODE_CLASSIFY_SEC.getValue())){
+				// 瀛樺偍鏃х殑鐮佹oid鍜屾柊鐨勭爜娈电殑oid鐨勫叧鑱斿叧绯�
+				codeClassifySec.add(codeBasicSecDO);
+				continue;
+			}
+			// 鏇存敼鍒涘缓鏃堕棿锛屼慨鏀规椂闂寸瓑榛樿鍊�
+			DefaultAttrAssimtUtil.addDefaultAttrAssimt(codeBasicSecDO,MdmBtmTypeConstant.CODE_BASIC_SEC);
+			// 鍥哄畾鐮佹
+			if(codeBasicSecDO.getSecType().equals(CodeSecTypeEnum.CODE_FIXED_SEC.getValue())){
+				// 鍥哄畾鐮佹瀛樺偍濂給id鍜岀爜鍊肩殑鍏宠仈鍏崇郴
+				codeFixedValueMaps.put(codeBasicSecDO.getOid(),codeFixedValueService.list(Wrappers.<CodeFixedValue>query()
+					.lambda().eq(CodeFixedValue::getCodeFixedSecOid, oldBasicOid)
+				));
+			}
 			codeBasicSecs.add(codeBasicSecDO);
-		});
+		}
+		// 澶勭悊鍒嗙被鐮佹鐨刼id锛屽洜涓簅id鍏宠仈parentClassifyOid锛屼笌鐮佸�糲odeClassifyOid锛岀爜鍊煎張闇�瑕侀�氳繃鏃х殑鐮佹oid鏉ユ煡璇紝鎵�浠ヤ笉鑳界洿鎺ユ敼鍙榦id
+		boolean resChangeAssn = codeBasicSecService.changeParentOidAssnOid(codeClassifySec);
+		// 灏嗗鐞嗚繃鐨勫垎绫荤爜娈典篃娣诲姞杩涜鍋氭柊澧炲鐞嗙殑鐮佹闆嗗悎涓�
+		codeBasicSecs.addAll(codeClassifySec);
+		// 鏂板鐮佹
 		boolean exFlag1 = this.codeBasicSecService.saveBatch(codeBasicSecs);
-		return R.data(exFlag&&exFlag1);
+		// 鏈�缁堣瀛樺叆鐮佸�艰〃涓殑锛岀爜鍊煎璞�
+		List<CodeFixedValue> codeFixedDOValues = new ArrayList<>();
+		// 鏋勯�犵爜鍊煎璞★紝涓庣爜娈典富閿叧鑱斿叧绯伙紝浠ュ強鏀瑰彉鐮佸�肩殑oid
+		codeFixedValueMaps.forEach((key, value) -> {
+			value.stream().forEach(item -> {
+				item.setOid("");
+				item.setCodeFixedSecOid(key);
+				DefaultAttrAssimtUtil.updateDefaultAttrAssimt(item);
+				codeFixedDOValues.add(item);
+			});
+		});
+		boolean exFlag2 = codeFixedValueService.saveBatch(codeFixedDOValues) && resChangeAssn;
+		return R.data(exFlag&&exFlag1&&exFlag2);
 	}
 
 	/**

--
Gitblit v1.9.3