From e9a590e862148092027510b15d33cdd32691a6f5 Mon Sep 17 00:00:00 2001
From: xiejun <xj@2023>
Date: 星期三, 06 十二月 2023 09:43:11 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/UBCS-WEB/src/api/statistic/chart.js                                                                     |   11 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmProductCodeService.java          |    3 
 Source/UBCS-WEB/src/components/MasterCrud/VciMasterCrud.vue                                                    |   93 +++--
 Source/UBCS-WEB/src/components/StatisticsComponent/ColumnarChart.vue                                           |    9 
 Source/UBCS-WEB/src/api/GetItem.js                                                                             |   10 
 Source/UBCS-WEB/src/views/system/user.vue                                                                      |    8 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java    |    6 
 Source/UBCS-WEB/src/views/statistic/statisticPage.vue                                                          |  165 +++-----
 Source/UBCS-WEB/src/styles/sidebar.scss                                                                        |    8 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java |   14 
 Source/UBCS-WEB/src/config/website.js                                                                          |    4 
 Source/UBCS-WEB/src/views/modeling/cycle.vue                                                                   |    2 
 Source/UBCS-WEB/src/page/index/sidebar/sidebarItem.vue                                                         |  220 ++++++------
 Source/UBCS-WEB/src/components/Theme/ThemeAttrCrud.vue                                                         |    2 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java          |   75 ++--
 Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/DefaultAttrAssimtUtil.java  |  163 ++++++++
 Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue                                                   |   18 +
 Source/UBCS-WEB/src/page/index/sidebar/index.vue                                                               |    1 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java               |    6 
 Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue                                                             |   10 
 Source/UBCS-WEB/src/components/FormTemplate/index.vue                                                          |   17 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java      |   89 +++++
 Source/UBCS-WEB/src/components/Theme/ThemeClassifyTrees.vue                                                    |    4 
 Source/UBCS-WEB/src/components/StatisticsComponent/mixCart.vue                                                 |    2 
 Source/UBCS-WEB/src/components/BatchImport/index.vue                                                           |   50 +-
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java         |   11 
 26 files changed, 642 insertions(+), 359 deletions(-)

diff --git a/Source/UBCS-WEB/src/api/GetItem.js b/Source/UBCS-WEB/src/api/GetItem.js
index f8c50ce..a0cc5fa 100644
--- a/Source/UBCS-WEB/src/api/GetItem.js
+++ b/Source/UBCS-WEB/src/api/GetItem.js
@@ -126,3 +126,13 @@
     }
   })
 }
+
+//闆嗗洟鐮佹ā鏉夸笅杞�
+export const exportGroupCodeExcel = (params) => {
+  return request({
+    url: '/api/ubcs-code/mdmEngineController/exportGroupCodeExcel',
+    method: 'get',
+    params,
+    responseType: 'blob'
+  })
+}
diff --git a/Source/UBCS-WEB/src/api/statistic/chart.js b/Source/UBCS-WEB/src/api/statistic/chart.js
new file mode 100644
index 0000000..9806a7e
--- /dev/null
+++ b/Source/UBCS-WEB/src/api/statistic/chart.js
@@ -0,0 +1,11 @@
+
+import request from '@/router/axios';
+
+//缁熻鍒嗘瀽鏁版嵁
+export const getStatisticAnalysis = (params) => {
+  return request({
+    url: '/api/ubcs-code/mdmEngineController/getStatisticAnalysis',
+    method: 'get',
+    params
+  })
+}
diff --git a/Source/UBCS-WEB/src/components/BatchImport/index.vue b/Source/UBCS-WEB/src/components/BatchImport/index.vue
index 45efd2b..29cfe88 100644
--- a/Source/UBCS-WEB/src/components/BatchImport/index.vue
+++ b/Source/UBCS-WEB/src/components/BatchImport/index.vue
@@ -13,7 +13,7 @@
       </li>
     </ul>
     <div
-      v-show="currentTypeObj[type]['upParams'] === 'classifyAttr' && this.type !== 'bulkEdit'"
+      v-show="currentTypeObj[type]['upParams'] === 'classifyAttr' && this.type !== 'bulkEdit'&& this.type !== 'groupCode'"
       class="radio_box"
     >
       <span>鍒嗙被鐨勮矾寰勪娇鐢ㄧ殑灞炴��:</span>
@@ -61,21 +61,23 @@
       >
     </el-upload>
     <template #footer>
-      <el-button
-        v-if="type !== 'bulkEdit'"
-        :loading="downloadLoading"
-        size="small"
-        type="primary"
-        @click="downloadTemplateFun"
-      >涓嬭浇瀵煎叆妯℃澘
-      </el-button>
-      <el-button v-if="type === 'bulkEdit'"
-                 :loading="downloadLoading"
-                 size="small"
-                 type="primary"
-                 @click="downloadTemplateFun"
-      >涓嬭浇缂栬緫妯℃澘
-      </el-button>
+      <div v-if="type !== 'groupCode'">
+        <el-button
+          v-if="type !== 'bulkEdit' "
+          :loading="downloadLoading"
+          size="small"
+          type="primary"
+          @click="downloadTemplateFun"
+        >涓嬭浇瀵煎叆妯℃澘
+        </el-button>
+        <el-button v-if="type === 'bulkEdit'"
+                   :loading="downloadLoading"
+                   size="small"
+                   type="primary"
+                   @click="downloadTemplateFun"
+        >涓嬭浇缂栬緫妯℃澘
+        </el-button>
+      </div>
       <el-button size="small" @click="dialogVisible = false">鍏抽棴</el-button>
     </template>
     <ShowImportData
@@ -248,6 +250,15 @@
           downloadTemplateFun: downloadBatchApplyCodeTemplate,
           upParams: "classifyAttr",
         },
+        groupCode: {
+          title: "闆嗗洟鐮佸鍏�",
+          tipList: [
+            "1.鏍囬甯︿簲瑙掓槦鐨勮〃绀哄叧閿睘鎬э紝甯︽槦鍙疯〃绀哄繀杈撻」",
+            "2.姣忔浠呰兘鏈�澶氬鍏�5000鏉℃暟鎹�(鍙�氳繃nacos杩涜閰嶇疆锛屾帹鑽�5000/娆″鍏�)锛屽鏋滃嚭閿欎細杩斿洖閿欒鐨勬暟鎹拰鍘熷洜锛屼絾鏄纭暟鎹彲浠ョ户缁繚瀛�",
+            "3.Excel绗竴琛屽拰绗簩琛屼緷娆′负浼佷笟缂栫爜鍜岄泦鍥㈢紪鐮侊紙蹇呭~锛�"
+          ],
+          action: "/api/ubcs-code/mdmEngineController/importGroupCode"
+        }
       },
       secDTOList: [],
     };
@@ -291,16 +302,9 @@
         return;
       }
       if (this.type === 'bulkEdit') {
-        this.tableHeadFindData.map(item => item.prop)
-          .forEach((prop, index) => {
-            this.exportArrTwo[`attrIdIndexMap[${index}]`] = prop;
-          });
         downloadExcelBatchEdit({
           codeClassifyOid: this.codeClassifyOid,
-          'conditionMap[oid]': this.ids, ...this.exportArrTwo,
-          limit: -1
         }).then(res => {
-          // console.log('res',res)
           if (res) {
             func.downloadFileByBlobHandler(res);
             this.$message.success('涓嬭浇鎴愬姛锛岃鏌ョ湅锛�')
diff --git a/Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue b/Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue
index e75483c..d583d02 100644
--- a/Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue
+++ b/Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue
@@ -103,9 +103,14 @@
       type: String,
       default: "",
     },
+    selectRow:{
+      type:Array,
+      default:[]
+    }
   },
   data() {
     return {
+      selectValue:"",
       //骞翠唬鍙�
       dataYearCode: {
         type: "",
@@ -206,6 +211,15 @@
       handler(newV) {
         this.$emit("dataYearCode", newV)
       }
+    },
+    selectRow:{
+      handler(newval){
+        console.log(newval);
+        let ids = newval.map(item => item.id);
+        this.selectValue= ids.join(",");
+      },
+      deep:true,
+      immediate:true
     }
   },
   methods: {
@@ -320,7 +334,9 @@
           value:formItem.defaultValue || (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 == "codeattrsec" ? this.add : null) || (this.status === "apply" && formItem.field === "codeStandardEditType" ? "1" : null) ||
-            (this.status === "amend" && formItem.field === "codeStandardEditType" ? "2" : null),
+            (this.status === "amend" && formItem.field === "codeStandardEditType" ? "2" : null) ||
+            //鐖剁粍浠跺鏋滄槸鍙傜収鏁版嵁浼氬皢selectRow缃┖,selectRow涓嶄负绌哄氨璇存槑涓嶆槸鍙傜収瑕佸洖濉簮鏍囧噯鍙锋暟鎹�
+          (this.status === "amend" ? (this.selectRow && (formItem.field === "oldcode" ? this.selectValue : null)) : null),
           placeholder: formItem.inputTip,
           comboxKey: formItem.comboxKey,
           tip: formItem.tooltips,
diff --git a/Source/UBCS-WEB/src/components/FormTemplate/index.vue b/Source/UBCS-WEB/src/components/FormTemplate/index.vue
index 561cb91..6d01849 100644
--- a/Source/UBCS-WEB/src/components/FormTemplate/index.vue
+++ b/Source/UBCS-WEB/src/components/FormTemplate/index.vue
@@ -14,6 +14,7 @@
       v-if="dialogVisible" key="masterForm"
       ref="FormTemplate"
       v-bind="$attrs"
+      :selectRow="selectRow"
       :TreeValue="TreeValue"
       :eventList="eventList"
       :rowOid="rowOid"
@@ -41,6 +42,8 @@
             :selfColumnConfig="selfColumnConfig"
             :selfColumnType="selfColumnType"
             :type="type"
+            :status="status"
+            :selectRow="selectRow"
             data-key="codeApplyForm"
             secDTOListv-bind="$attrs"
             @attrList="attrListForm"
@@ -139,6 +142,10 @@
       type: Object,
       default: () => ({}),
     },
+    selectRow:{
+      type:Array,
+      default:[]
+    }
   },
   data() {
     return {
@@ -242,15 +249,11 @@
     },
   },
   watch: {
-    codeApplyForm: {
-      handler(newval, oldval) {
-        // console.log('newval',newval)
-      }
-    }
+
   },
   methods: {
     openDialog() {
-      //鏂板鍜屼慨鏀瑰叡鍚岃皟鐢�
+      //鏂板鍜屼慨鏀瑰叡鍚岃皟鐢�(鏈夋敼鍔� 涓嶉渶瑕佸湪浣跨敤edit锛屾柟娉曟病浠�涔堝奖鍝�)
       this.getFormTemplate();
       if (this.type === "add" || (this.type !== "add" && this.status === "amend")) {
         this.getCodeRule();
@@ -473,7 +476,7 @@
             secValue: this.codeApplyForm[item.oid],
           };
         });
-        //鏍囧噯鐗瑰畾
+        //鏍囧噯鐗瑰畾瀛楁鏄犲皠
         const mappings = {
           codeStandardEditType: 'operationType',
           reviseSeries: 'series',
diff --git a/Source/UBCS-WEB/src/components/MasterCrud/VciMasterCrud.vue b/Source/UBCS-WEB/src/components/MasterCrud/VciMasterCrud.vue
index df6a0b6..a2b1391 100644
--- a/Source/UBCS-WEB/src/components/MasterCrud/VciMasterCrud.vue
+++ b/Source/UBCS-WEB/src/components/MasterCrud/VciMasterCrud.vue
@@ -99,9 +99,9 @@
           </FormTemplateDialog>
           <!--          淇-->
           <FormTemplateDialog :codeClassifyOid="this.codeClassifyOid" :codeRuleOid="this.codeRuleOid"
-                              :disabledProp="disabledProp" :rowOid="rowOid" :templateOid="templateOid" :title="'淇敼缂栫爜淇℃伅'"
-                              :visible.sync="amendvisible" status="amend"
-                              type="edit" @submit="amendSumbit"></FormTemplateDialog>
+                              :disabledProp="disabledProp" :templateOid="templateOid" :title="'鏁版嵁淇'"
+                              :visible.sync="amendvisible" status="amend" :selectRow="selectRow"
+                              type="add" @submit="amendSumbit"></FormTemplateDialog>
           <!--          鏂板-->
           <FormTemplateDialog :TreeValue="TreeValue" :codeClassifyOid="this.codeClassifyOid"
                               :codeRuleOid="this.codeRuleOid" :disabledProp="disabledProp" :templateOid="templateOid"
@@ -113,7 +113,7 @@
           <FormTemplateDialog :codeClassifyOid="this.codeClassifyOid" :codeRuleOid="this.codeRuleOid"
                               :disabledProp="disabledProp" :templateOid="templateOid" :title="'淇敼缂栫爜淇℃伅'"
                               :visible.sync="editvisible"
-                              rowOid="rowOid"
+                              :rowOid="rowOid"
                               type="edit" @submit="EditSumbit"></FormTemplateDialog>
           <!--          鎵归噺缂栬緫-->
           <!--          <MasterEditBulk :visible.sync="bulkeditvisible" ></MasterEditBulk>-->
@@ -187,7 +187,8 @@
   upSaveCode,
   applyGroupCode,
   receiveEditApply,
-  applySaveCode
+  applySaveCode,
+  exportGroupCodeExcel
 } from "@/api/GetItem";
 import {processTS, changeStatus} from "@/api/template/setPersonnel"
 import {listCodeAttributeByClassId} from "@/api/integration/integration.js";
@@ -432,14 +433,13 @@
           }
         })
         this.tableHeadFindDatas = newval;
-        // console.log('new',newval)
         if (!this.isCodeArrayPushed) {
           if (newval.find(item => item.prop === 'id')) {
             this.CodeArray.push(newval.find(item => item.prop === 'id'));
           } else {
-            this.CodeArray.push([]);
+            // this.CodeArray.push([]);
+            this.CodeArray = [];
           }
-          // console.log('CodeArray', this.CodeArray);
           this.isCodeArrayPushed = true;
         }
         if (!this.islcstatusPushed) {
@@ -485,8 +485,7 @@
       this.LinkObject = row;
       this.LinkVisible = true;
       this.LinkList = Object.keys(row).map(property => property)
-      // console.log(result);
-      // console.log(this.LinkObject)
+
     },
     //鐘舵�佹悳绱�
     cellSelectHandler(row) {
@@ -554,7 +553,34 @@
         if (uniqueFlag === 'CODEAMEND') return this.codeAMENDHandler()
         //鎵归噺缂栬緫
         if (uniqueFlag === 'bulkEdit') return this.bulkEditHandler("bulkEdit")
+        //闆嗗洟鐮佸鍑�
+        if (uniqueFlag === 'excelGroupCode') return this.excelGroupCode()
+        //闆嗗洟鐮佸鍏�
+        if (uniqueFlag === 'importGroupCode') return this.importGroupCode("groupCode")
       });
+    },
+    importGroupCode(type){
+      this.batchImportData.visible = true
+      this.batchImportData.type = type
+      this.batchImportData.codeClassifyOid = this.codeClassifyOid
+    },
+    //闆嗗洟鐮佸鍑�
+    excelGroupCode(){
+      debugger
+      this.isLoading = true;
+      exportGroupCodeExcel({
+        codeClassifyOid: this.codeClassifyOid,
+      }).then(res => {
+        console.log(res.data)
+        if (res) {
+          func.downloadFileByBlobHandler(res);
+          this.$message.success('涓嬭浇鎴愬姛锛岃鏌ョ湅锛�');
+          this.isLoading = false;
+        }
+      }).catch(error=>{
+        this.$message.error(error);
+        this.isLoading = false;
+      })
     },
     //鏍囧噯鐢宠
     codeApplyHandler() {
@@ -589,45 +615,49 @@
     //鏍囧噯淇
     codeAMENDHandler() {
       let foundItem = false;
-
       this.tableHeadFindData.forEach(item => {
         if (item.field === "oldcode" && Object.keys(item.referConfig).length >= 1) {
           foundItem = true;
         }
       });
-
       if (foundItem) {
-        this.amendvisible = true;
-        this.rowOid = this.selectRow[0].oid;
+        if(this.selectRow.length >= 1){
+          this.$confirm('宸叉湁鍙傜収鏄惁鍙栨秷鍕鹃�夌户缁墽琛岋紵', '鎻愮ず', {
+            confirmButtonText: '纭畾',
+            cancelButtonText: '鍙栨秷',
+            type: 'warning'
+          }).then(() => {
+            this.selectRow = [];
+            //鍙栨秷鍕鹃�夌姸鎬�
+            this.$refs.dataTable.clearSelection();
+            this.amendvisible = true;
+          }).catch(() => {
+            this.$message({
+              type: 'info',
+              message: '宸插彇娑堝綋鍓嶆搷浣�'
+            });
+          });
+        }else {
+          this.amendvisible = true;
+        }
       } else {
-        if (this.selectRow.length !== 1) {
-          this.$message.warning("璇烽�夋嫨涓�鏉℃暟鎹�");
+        if (this.selectRow.length <= 0) {
+          this.$message.warning("璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹�");
         } else {
           this.amendvisible = true;
-          this.rowOid = this.selectRow[0].oid;
+
         }
       }
     },
     //鎵归噺缂栬緫
     bulkEditHandler(type) {
-      // console.log(this.nodeClickList)
       if (this.nodeClickList.children.length >= 1) {
         this.$message.warning('褰撳墠閫夋嫨鐨勫垎绫讳笉鏄彾瀛愯妭鐐癸紝涓嶅厑璁告壒閲忕紪杈戯紒')
         return;
       }
-      if (this.selectRow.length <= 0) {
-        this.$message.warning('璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹紒')
-        return;
-      }
-      const Editing = this.selectRow.every(item => item.lcstatus === 'Editing');
-
-      if (Editing) {
         this.batchImportData.visible = true
         this.batchImportData.type = type
         this.batchImportData.codeClassifyOid = this.codeClassifyOid
-      } else {
-        this.$message.warning('閫夋嫨鐨勬暟鎹腑鏈夌紪鐮佺姸鎬佷笉鏄�滅紪杈戜腑鈥濓紝涓嶅彲缂栬緫锛�');
-      }
     },
     addSaveHandler() {
       this.$nextTick(() => {
@@ -639,10 +669,6 @@
       if (this.selectRow.length <= 0) {
         this.$message.warning('璇烽�夋嫨涓�鏉℃暟鎹ā鏉匡紒')
       } else {
-        // const requestData = this.selectRow.forEach(item => {
-        //   return { oids: item.oid, btmName: item.btmname };
-        // });
-
         const oids = this.selectRow.map(item => item.oid).join(',');
         applyGroupCode({oids, btmName: this.selectRow[0].btmname}).then(res => {
           if (res.data.code == 200) {
@@ -657,9 +683,6 @@
       if (this.selectRow.length <= 0) {
         this.$message.warning('璇烽�夋嫨涓�鏉℃暟鎹ā鏉匡紒')
       } else {
-        // const requestData = this.selectRow.forEach(item => {
-        //   return { oids: item.oid, btmName: item.btmname };
-        // });
         const oids = this.selectRow.map(item => item.oid).join(',');
         receiveEditApply({oids, btmName: this.selectRow[0].btmname}).then(res => {
           if (res.data.code == 200) {
diff --git a/Source/UBCS-WEB/src/components/StatisticsComponent/ColumnarChart.vue b/Source/UBCS-WEB/src/components/StatisticsComponent/ColumnarChart.vue
index 065c234..050e580 100644
--- a/Source/UBCS-WEB/src/components/StatisticsComponent/ColumnarChart.vue
+++ b/Source/UBCS-WEB/src/components/StatisticsComponent/ColumnarChart.vue
@@ -36,7 +36,7 @@
             );
           });
 
-          let colors = ["#91CC75", "#5470C6"];
+          let colors = ['#2eadd6', '#FFA500'];
 
           const seriesData = [];
           for (let i = 0; i < newval.length; i++) {
@@ -50,7 +50,7 @@
                 value: newval[i][j],
                 itemStyle: {
                   normal: {
-                    barBorderRadius: borderRadius,  // 璁剧疆鍦嗚
+                    // barBorderRadius: borderRadius,  // 璁剧疆鍦嗚
                     color: colors[i],
                   }
                 },
@@ -65,7 +65,10 @@
               data: curSeriesData,
               label: {
                 show: true,
-                position: 'top'
+                position: 'top',
+                formatter: function (params) {
+                  return params.value === 0 ? '' : params.value; // 鍊间负 0 涓嶆樉绀猴紝鍏朵粬鎯呭喌鏄剧ず
+                }
               },
               emphasis: {
                 focus: "series",
diff --git a/Source/UBCS-WEB/src/components/StatisticsComponent/mixCart.vue b/Source/UBCS-WEB/src/components/StatisticsComponent/mixCart.vue
index c9c5034..600df00 100644
--- a/Source/UBCS-WEB/src/components/StatisticsComponent/mixCart.vue
+++ b/Source/UBCS-WEB/src/components/StatisticsComponent/mixCart.vue
@@ -79,7 +79,7 @@
       immediate: true,
       handler(newval, oldval) {
         if (newval) {
-          const colors = ["#8fef5b", "#db3c3c"];
+          const colors = ["#2eadd6", "#db3c3c"];
 
           const seriesData = newval.map((data, index) => ({
             name: index === 0 ? "鎬婚噺" : "鏂板",
diff --git a/Source/UBCS-WEB/src/components/Theme/ThemeAttrCrud.vue b/Source/UBCS-WEB/src/components/Theme/ThemeAttrCrud.vue
index 3ee51de..0f83ebf 100644
--- a/Source/UBCS-WEB/src/components/Theme/ThemeAttrCrud.vue
+++ b/Source/UBCS-WEB/src/components/Theme/ThemeAttrCrud.vue
@@ -376,7 +376,7 @@
               </el-option>
             </el-select>
             <el-switch
-              v-if="item.edit === 'switch'" v-model="row[item.prop]" :disabled="!editOpenFlag" active-value="true" v-show="!AddCellFlag"
+              v-if="item.edit === 'switch'" v-model="row[item.prop]" :disabled="!editOpenFlag" active-value="true"
               inactive-value="false">
             </el-switch>
             <span v-else>{{ row[item.prop] }}</span>
diff --git a/Source/UBCS-WEB/src/components/Theme/ThemeClassifyTrees.vue b/Source/UBCS-WEB/src/components/Theme/ThemeClassifyTrees.vue
index 306e91f..72f90ae 100644
--- a/Source/UBCS-WEB/src/components/Theme/ThemeClassifyTrees.vue
+++ b/Source/UBCS-WEB/src/components/Theme/ThemeClassifyTrees.vue
@@ -40,12 +40,12 @@
             </div>
           </div>
           <!--          宸︿晶鏍�-->
-          <div style="height: calc(100vh - 230px);overflow: auto">
+          <div style="height: calc(100vh - 230px);overflow: auto;">
             <avue-tree ref="tree" v-model="CloneTreeAvueform" v-loading="loading" :data="CloneTreedata"
                        :defaultExpandAll="false"
                        :option="Treeoption"
                        class="classifyTree"
-                       style="height: calc(100vh - 280px)"
+                       style="height: calc(100vh - 280px);"
                        @node-click="nodeClick"
             >
             </avue-tree>
diff --git a/Source/UBCS-WEB/src/config/website.js b/Source/UBCS-WEB/src/config/website.js
index b4ecaac..9c6c3db 100644
--- a/Source/UBCS-WEB/src/config/website.js
+++ b/Source/UBCS-WEB/src/config/website.js
@@ -38,7 +38,7 @@
       label: 'name',
       path: 'path',
       icon: 'source',
-      children: 'children'
+      children: 'children',
     }
   },
   // 绗笁鏂圭郴缁熸巿鏉冨湴鍧�
@@ -49,4 +49,4 @@
   ssoUrl:'http://localhost:37000/ubcs-auth/oauth/authorize?client_id=sword&response_type=111&redirect_uri=',
   // 鍗曠偣鐧诲綍鍥炶皟鍦板潃(Saber鏈嶅姟鐨勫湴鍧�)
   redirectUri: 'http://localhost:38000',
-}
\ No newline at end of file
+}
diff --git a/Source/UBCS-WEB/src/page/index/sidebar/index.vue b/Source/UBCS-WEB/src/page/index/sidebar/index.vue
index 476af59..587d39a 100644
--- a/Source/UBCS-WEB/src/page/index/sidebar/index.vue
+++ b/Source/UBCS-WEB/src/page/index/sidebar/index.vue
@@ -51,6 +51,5 @@
 .title{
   color: red;
 }
-
 </style>
 
diff --git a/Source/UBCS-WEB/src/page/index/sidebar/sidebarItem.vue b/Source/UBCS-WEB/src/page/index/sidebar/sidebarItem.vue
index 2693e31..5914522 100644
--- a/Source/UBCS-WEB/src/page/index/sidebar/sidebarItem.vue
+++ b/Source/UBCS-WEB/src/page/index/sidebar/sidebarItem.vue
@@ -2,145 +2,151 @@
   <div class="menu-wrapper">
     <template v-for="item in menu">
       <el-menu-item v-if="validatenull(item[childrenKey]) && vaildRoles(item)"
-                    :index="item[pathKey]"
-                    @click="open(item)"
                     :key="item[labelKey]"
-                    :class="{'is-active':vaildActive(item)}">
+                    :class="{'is-active':vaildActive(item)}"
+                    :index="item[pathKey]"
+                    @click="open(item)">
         <i :class="item[iconKey]"></i>
         <span slot="title"
-              :alt="item[pathKey]">{{generateTitle(item)}}</span>
+              :alt="item[pathKey]">{{ generateTitle(item) }}</span>
       </el-menu-item>
       <el-submenu v-else-if="!validatenull(item[childrenKey])&&vaildRoles(item)"
-                  :index="item[pathKey]"
-                  :key="item[labelKey]">
+                  :key="item[labelKey]"
+                  :index="item[pathKey]">
         <template slot="title">
           <i :class="item[iconKey]"></i>
           <span slot="title"
-                :class="{'el-menu--display':collapse && first}">{{generateTitle(item)}}</span>
+                :class="{'el-menu--display':collapse && first}">{{ generateTitle(item) }}</span>
         </template>
         <template v-for="(child,cindex) in item[childrenKey]">
-          <el-menu-item :index="child[pathKey],cindex"
-                        @click="open(child)"
+          <el-menu-item v-if="validatenull(child[childrenKey])"
+                        :key="child[labelKey]"
                         :class="{'is-active':vaildActive(child)}"
-                        v-if="validatenull(child[childrenKey])"
-                        :key="child[labelKey]">
+                        :index="child[pathKey],cindex"
+                        @click="open(child)">
             <i :class="child[iconKey]"></i>
-            <span slot="title">{{generateTitle(child)}}</span>
+            <span slot="title">{{ generateTitle(child) }}</span>
           </el-menu-item>
           <sidebar-item v-else
-                        :menu="[child]"
                         :key="cindex"
+                        :collapse="collapse"
+                        :menu="[child]"
                         :props="props"
-                        :screen="screen"
-                        :collapse="collapse"></sidebar-item>
+                        :screen="screen"></sidebar-item>
         </template>
       </el-submenu>
     </template>
   </div>
 </template>
 <script>
-  import {mapGetters} from "vuex";
-  import {isURL, validatenull} from "@/util/validate";
-  import config from "./config.js";
+import {mapGetters} from "vuex";
+import {isURL, validatenull} from "@/util/validate";
+import config from "./config.js";
 
-  export default {
-    name: "sidebarItem",
-    data() {
-      return {
-        config: config
-      };
+export default {
+  name: "sidebarItem",
+  data() {
+    return {
+      config: config
+    };
+  },
+  props: {
+    menu: {
+      type: Array
+    },
+    screen: {
+      type: Number
+    },
+    first: {
+      type: Boolean,
+      default: false
     },
     props: {
-      menu: {
-        type: Array
-      },
-      screen: {
-        type: Number
-      },
-      first: {
-        type: Boolean,
-        default: false
-      },
-      props: {
-        type: Object,
-        default: () => {
-          return {};
-        }
-      },
-      collapse: {
-        type: Boolean
+      type: Object,
+      default: () => {
+        return {};
       }
     },
-    created() {
+    collapse: {
+      type: Boolean
+    }
+  },
+  created() {
+  },
+  mounted() {
+  },
+  computed: {
+    ...mapGetters(["roles"]),
+    labelKey() {
+      return this.props.label || this.config.propsDefault.label;
     },
-    mounted() {
+    pathKey() {
+      return this.props.path || this.config.propsDefault.path;
     },
-    computed: {
-      ...mapGetters(["roles"]),
-      labelKey() {
-        return this.props.label || this.config.propsDefault.label;
-      },
-      pathKey() {
-        return this.props.path || this.config.propsDefault.path;
-      },
-      iconKey() {
-        return this.props.icon || this.config.propsDefault.icon;
-      },
-      childrenKey() {
-        return this.props.children || this.config.propsDefault.children;
-      },
-      isOpenKey() {
-        return this.props.isOpen || this.config.propsDefault.isOpen;
-      },
-      nowTagValue() {
-        return this.$router.$avueRouter.getValue(this.$route);
+    iconKey() {
+      return this.props.icon || this.config.propsDefault.icon;
+    },
+    childrenKey() {
+      return this.props.children || this.config.propsDefault.children;
+    },
+    isOpenKey() {
+      return this.props.isOpen || this.config.propsDefault.isOpen;
+    },
+    nowTagValue() {
+      return this.$router.$avueRouter.getValue(this.$route);
+    }
+  },
+  methods: {
+    generateTitle(item) {
+      return this.$router.$avueRouter.generateTitle(
+        item[this.labelKey],
+        (item.meta || {}).i18n
+      );
+    },
+    vaildActive(item) {
+      if (this.validIsOpen(item)) {
+        return false;
+      }
+      const groupFlag = (item["group"] || []).some(ele =>
+        this.$route.path.includes(ele)
+      );
+      return this.nowTagValue === item[this.pathKey] || groupFlag;
+    },
+    vaildRoles(item) {
+      item.meta = item.meta || {};
+      return item.meta.roles ? item.meta.roles.includes(this.roles) : true;
+    },
+    validatenull(val) {
+      return validatenull(val);
+    },
+    validIsOpen(item) {
+      if (item[this.isOpenKey] === 2 && isURL(item[this.pathKey])) {
+        return true;
       }
     },
-    methods: {
-      generateTitle(item) {
-        return this.$router.$avueRouter.generateTitle(
-          item[this.labelKey],
-          (item.meta || {}).i18n
-        );
-      },
-      vaildActive(item) {
-        if (this.validIsOpen(item)) {
-          return false;
-        }
-        const groupFlag = (item["group"] || []).some(ele =>
-          this.$route.path.includes(ele)
-        );
-        return this.nowTagValue === item[this.pathKey] || groupFlag;
-      },
-      vaildRoles(item) {
-        item.meta = item.meta || {};
-        return item.meta.roles ? item.meta.roles.includes(this.roles) : true;
-      },
-      validatenull(val) {
-        return validatenull(val);
-      },
-      validIsOpen(item) {
-        if (item[this.isOpenKey] === 2 && isURL(item[this.pathKey])) {
-          return true;
-        }
-      },
-      open(item) {
-        if (this.screen <= 1) this.$store.commit("SET_COLLAPSE");
-        if (this.validIsOpen(item)) {
-          window.open(item[this.pathKey]);
-        } else {
-          this.$router.$avueRouter.group = item.group;
-          this.$router.$avueRouter.meta = item.meta;
-          this.$router.push({
-            path: this.$router.$avueRouter.getPath({
-              name: item[this.labelKey],
-              src: item[this.pathKey]
-            }, item.meta),
-            query: item.query
-          });
-        }
+    open(item) {
+      if (this.screen <= 1) this.$store.commit("SET_COLLAPSE");
+      if (this.validIsOpen(item)) {
+        window.open(item[this.pathKey]);
+      } else {
+        this.$router.$avueRouter.group = item.group;
+        this.$router.$avueRouter.meta = item.meta;
+        this.$router.push({
+          path: this.$router.$avueRouter.getPath({
+            name: item[this.labelKey],
+            src: item[this.pathKey]
+          }, item.meta),
+          query: item.query
+        });
       }
     }
-  };
+  }
+};
 </script>
+<style lang="scss" scoped>
+.el-menu-item:focus, .el-menu-item:hover {
+  outline: 0;
+  background-color: #060708;
+}
+</style>
 
diff --git a/Source/UBCS-WEB/src/styles/sidebar.scss b/Source/UBCS-WEB/src/styles/sidebar.scss
index f4995d7..3ceec84 100644
--- a/Source/UBCS-WEB/src/styles/sidebar.scss
+++ b/Source/UBCS-WEB/src/styles/sidebar.scss
@@ -27,10 +27,10 @@
             }
         }
     }
-    
+
 }
 .avue-sidebar {
-    user-select: none; 
+    user-select: none;
     position: relative;
     padding-top: 60px;
     height: 100%;
@@ -87,5 +87,5 @@
             }
         }
     }
-    
-}
\ No newline at end of file
+
+}
diff --git a/Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue b/Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue
index b5cc7aa..5cb22bb 100644
--- a/Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue
+++ b/Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue
@@ -1,4 +1,4 @@
-<template>
+  <template>
   <el-dialog
     title="涓氬姟绫诲瀷"
     :visible.sync="showSubmitDialog"
@@ -11,7 +11,7 @@
     <el-form ref="form" :model="btmType" show-message="true" inline size="medium" label-suffix=":" class="btmTypeForm"
              :rules="rules" @resetFields="resetForm" status-icon="true">
       <el-form-item label="鑻辨枃鍚嶇О" label-width="100px" required="true" prop="id">
-        <el-input v-model="btmType.id" :prefix-icon="icons.key"></el-input>
+        <el-input v-model="btmType.id" :prefix-icon="icons.key" :disabled="true"></el-input>
       </el-form-item>
       <el-form-item label="涓枃鍚嶇О" label-width="100px">
         <el-input v-model="btmType.name" :prefix-icon="icons.name"></el-input>
@@ -232,7 +232,8 @@
           {
             label: '鑻辨枃鍚嶇О',
             prop: 'id',
-            align: 'center'
+            align: 'center',
+            disabled:true
           }, {
             label: '涓枃鍚嶇О',
             prop: 'name',
@@ -284,6 +285,7 @@
               prop: 'id',
               align: 'left',
               search: true,
+              disabled:true,
               width: 230
             }, {
               label: '涓枃鍚嶇О',
@@ -356,6 +358,7 @@
             {
               label: '鑻辨枃鍚嶇О',
               prop: 'id',
+              disabled:true,
               search: true
             },
             {
@@ -420,6 +423,7 @@
             {
               label: '鑻辨枃鍚嶇О',
               prop: 'id',
+              disabled:true,
               search: true
             },
             {
diff --git a/Source/UBCS-WEB/src/views/modeling/cycle.vue b/Source/UBCS-WEB/src/views/modeling/cycle.vue
index 0fc23e9..6f00942 100644
--- a/Source/UBCS-WEB/src/views/modeling/cycle.vue
+++ b/Source/UBCS-WEB/src/views/modeling/cycle.vue
@@ -229,6 +229,8 @@
           const nodes = res.data.data.nodes.map((item) => {
             item.label = item.id;
             item.index = item.indexNum;
+            item.x = Number(item.x);
+            item.y = Number(item.y);
             return item;
           });
           const edges = res.data.data.edges.map((item) => {
diff --git a/Source/UBCS-WEB/src/views/statistic/statisticPage.vue b/Source/UBCS-WEB/src/views/statistic/statisticPage.vue
index 316ba94..9403436 100644
--- a/Source/UBCS-WEB/src/views/statistic/statisticPage.vue
+++ b/Source/UBCS-WEB/src/views/statistic/statisticPage.vue
@@ -13,6 +13,7 @@
       top="-50px"
     >
       <el-table
+        ref="table"
         :data="tableData"
         border
         style="width: 100%"
@@ -65,6 +66,8 @@
 import pieChart from "../../components/StatisticsComponent/pieChart"
 import ColumnarChart from "../../components/StatisticsComponent/ColumnarChart"
 import mixCart from "../../components/StatisticsComponent/mixCart"
+import {getStatisticAnalysis} from "@/api/statistic/chart"
+import {getList} from "@/api/system/statistic";
 
 export default {
   components: {
@@ -76,6 +79,8 @@
   name: "statisticPage",
   data() {
     return {
+      menuList:[],
+      dataKeyList: [],
       addVisible: false,
       chartName: "",
       lineList: [],
@@ -83,99 +88,19 @@
       columnarList: [],
       mixList: [],
       selectData: [],
-      tableData: [
-        {
-          menuName: "宸ヨ壓鏂囦欢",
-          codeType: "1",
-          menuData: [
-            [222, 232, 301, 334, 290, 330, 410, 330, 212, 322, 200, 234],
-            [120, 132, 101, 134, 90, 230, 210, 130, 10, 122, 100, 80],
-          ]
-        },
-        {
-          menuName: "娴嬭瘯sc",
-          codeType: null,
-          menuData: [
-            [220, 232, 301, 334, 290, 330, 410, 330, 212, 322, 200, 234],
-            [120, 132, 101, 134, 90, 230, 210, 130, 10, 122, 100, 80],
-          ]
-        },
-        {
-          menuName: "浜у搧鍨嬪彿",
-          codeType: null,
-          menuData: [
-            [220, 232, 301, 334, 290, 330, 410, 330, 212, 322, 200, 234],
-            [120, 132, 101, 134, 90, 230, 210, 130, 10, 122, 100, 80],
-          ]
-        },
-        {
-          menuName: "鍥哄畾璧勪骇",
-          codeType: null,
-          menuData: [
-            [220, 232, 301, 334, 290, 330, 410, 330, 212, 322, 200, 234],
-            [120, 132, 101, 134, 90, 230, 210, 130, 10, 122, 100, 80],
-          ]
-        },
-        {
-          menuName: "鏉庤埅涓绘暟鎹�",
-          codeType: null,
-          menuData: [
-            [220, 232, 301, 334, 290, 330, 410, 330, 212, 322, 200, 234],
-            [120, 132, 101, 134, 90, 230, 210, 130, 10, 122, 100, 80],
-          ]
-        },
-        {
-          menuName: "Part",
-          codeType: null,
-          menuData: [
-            [220, 232, 301, 334, 290, 330, 410, 330, 212, 322, 200, 234],
-            [120, 132, 101, 134, 90, 230, 210, 130, 10, 122, 100, 80],
-          ]
-        },
-        {
-          menuName: "浜哄憳涓绘暟鎹�",
-          codeType: null,
-          menuData: [
-            [220, 232, 301, 334, 290, 330, 410, 330, 212, 322, 200, 234],
-            [120, 132, 101, 134, 90, 230, 210, 130, 10, 122, 100, 80],
-          ]
-        },
-        {
-          menuName: "浜哄憳",
-          codeType: null,
-          menuData: [
-            [220, 232, 301, 334, 290, 330, 410, 330, 212, 322, 200, 234],
-            [120, 132, 101, 134, 90, 230, 210, 130, 10, 122, 100, 80],
-          ]
-        },
-        {
-          menuName: "鏍囧噯",
-          codeType: null,
-          menuData: [
-            [220, 232, 301, 334, 290, 330, 410, 330, 212, 322, 200, 234],
-            [120, 132, 101, 134, 90, 230, 210, 130, 10, 122, 100, 80],
-          ]
-        },
-        {
-          menuName: "鐗╁搧涓绘暟鎹�",
-          codeType: null,
-          menuData: [
-            [220, 232, 301, 334, 290, 330, 410, 330, 212, 322, 200, 234],
-            [120, 132, 101, 134, 90, 230, 210, 130, 10, 122, 100, 80],
-          ]
-        },
-        {
-          menuName: "鍨嬪彿",
-          codeType: null,
-          menuData: [
-            [220, 232, 301, 334, 290, 330, 410, 330, 212, 322, 200, 234],
-            [120, 132, 101, 134, 90, 230, 210, 130, 10, 122, 100, 80],
-          ]
-        }
-      ]
+      tableData: []
     }
   },
+  created() {
+    this.getMasterList()
+  },
   methods: {
+    getMasterList() {
+      const userId = localStorage.getItem('userId');
+      getList({userId: userId}).then(res => {
+        this.tableData = res.data.data;
+      })
+    },
     //鏂板
     addHandler() {
       this.addVisible = true;
@@ -190,7 +115,50 @@
         this.$message.warning('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹紒');
         return;
       }
+      let codeStatus = this.selectData.every(key => key.codeType)
+      if (!codeStatus) {
+        this.$message.warning("璇锋鏌ュ凡鍕鹃�夋暟鎹被鍨嬫槸鍚︿负绌猴紒");
+        return;
+      }
 
+      this.dataKeyList = this.selectData.map(obj => obj.code)
+      const btmName = this.dataKeyList.join(",");
+      if (btmName) {
+        // this.menuList=[
+        //   {
+        //     menuData: [
+        //       [0, 0, 0, 0, 0, 0, 4, 9, 12, 12, 12, 12],
+        //       [0, 0, 0, 0, 0, 0, 4, 5, 3, 0, 0, 0]
+        //     ],
+        //     code:1
+        //   },
+        //   {
+        //     menuData: [
+        //       [0, 0, 0, 1, 1, 1, 1, 1, 1, 29, 5315, 5315],
+        //       [0, 0, 0, 1, 0, 0, 0, 0, 0, 28, 5286, 0]
+        //     ],
+        //     code:2
+        //   },
+        //   {
+        //     menuData: [
+        //       [0, 58, 60, 61, 75, 84, 145, 162, 166, 177, 186, 186],
+        //       [0, 58, 2, 1, 14, 9, 61, 17, 4, 11, 9, 0]
+        //     ],
+        //     code:3
+        //   }
+        // ]
+        // this.nextSave();
+        // this.$message.success('淇濆瓨鎴愬姛')
+        getStatisticAnalysis({btmNames: btmName}).then(res => {
+          this.menuList = res.data.data;
+          this.nextSave();
+          this.$message.success('淇濆瓨鎴愬姛')
+        });
+      }else {
+        this.$message.warning('璇烽�夋嫨鏁版嵁锛�')
+      }
+    },
+    nextSave() {
       const typeList = {
         "0": "lineList",
         "1": "pieList",
@@ -199,32 +167,29 @@
       };
 
       let hasValidData = false; // 娣诲姞涓�涓爣蹇楁潵璁板綍鏄惁鏈夋湁鏁堢殑閫夋嫨鏁版嵁
-      let codeStatus = this.selectData.every(key => key.codeType)
-      if (!codeStatus) {
-        this.$message.warning("璇锋鏌ュ凡鍕鹃�夋暟鎹被鍨嬫槸鍚︿负绌猴紒");
-        return;
-      }
-      this.selectData.forEach(item => {
+
+      this.selectData.forEach((item, index) => {
+        item.menuData = this.menuList[index].menuData;
         const dataKey = typeList[item.codeType];
         if (dataKey) {
           this[dataKey].push(item);
-          hasValidData = true; // 鏍囪鏈夋湁鏁堟暟鎹娣诲姞
+          hasValidData = true;
         }
       });
 
       if (hasValidData) {
+        // this.$refs.table.clearSelection();
         this.addVisible = false;
       }
     },
     //琛ㄦ牸澶氶��
-    selectChange(selection, row) {
-      // console.log(selection, row)
+    selectChange(selection) {
       this.selectData = selection;
     },
   }
 }
 </script>
 
-<style scoped lang="scss">
+<style lang="scss" scoped>
 
 </style>
diff --git a/Source/UBCS-WEB/src/views/system/user.vue b/Source/UBCS-WEB/src/views/system/user.vue
index 838ec38..02d3363 100644
--- a/Source/UBCS-WEB/src/views/system/user.vue
+++ b/Source/UBCS-WEB/src/views/system/user.vue
@@ -396,6 +396,7 @@
       userflag:true,
       usernumber:0,
       userStatus:false,
+      isUpdateShowInput:false,
     };
   },
   watch: {
@@ -558,6 +559,7 @@
                     message: "璇疯緭鍏ョ櫥褰曡处鍙�",
                     trigger: "blur"
                   }],
+                  disabled: this.isUpdateShowInput,
                 },
                 {
                   label: "鐢ㄦ埛骞冲彴",
@@ -711,7 +713,7 @@
                   multiple: true,
                   type: "tree",
                   dicData: [],
-                  disabled:this.userStatus,
+                  disabled: this.isUpdateShowInput,
                   props: {
                     label: "title"
                   },
@@ -1100,9 +1102,9 @@
     beforeOpen(done, type) {
       // console.log(type)
       if(type === "edit"){
-        this.userStatus = true;
+        this.isUpdateShowInput = true;
       }else {
-        this.userStatus = false;
+        this.isUpdateShowInput = false;
       }
       //console.log(type)
       // console.log('this.tenantId',this.tenantId)
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 b479d79..5e9e678 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
@@ -4,17 +4,13 @@
 import com.vci.ubcs.starter.exception.VciBaseException;
 import com.vci.ubcs.starter.revision.model.BaseModel;
 import com.vci.ubcs.starter.web.util.VciBaseUtil;
-import org.apache.poi.ss.formula.functions.T;
+import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.utils.Func;
-
-import java.lang.reflect.Field;
-import java.math.BigDecimal;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.HashMap;
-import java.util.Locale;
 import java.util.Map;
 
 /**
@@ -33,7 +29,7 @@
 	 * @return
 	 * @throws VciBaseException
 	 */
-	public static <T extends BaseModel> T addDefaultAttrAssimt(T object,String btmName) throws VciBaseException {
+	public static <T extends BaseModel> T addDefaultAttrAssimt(T object, String btmName) throws VciBaseException {
 		BaseModel baseModel = object;
 		try {
 			baseModel.setOid(VciBaseUtil.getPk());
@@ -42,8 +38,6 @@
 			baseModel.setLastModifyTime(new Date());
 			baseModel.setTs(new Date());
 			baseModel.setRevisionOid(VciBaseUtil.getPk());
-			// 鐢ㄦ埛id
-			// String userId = AuthUtil.getUserId().toString();
 			baseModel.setBtmname(btmName);
 			baseModel.setCreator(AuthUtil.getUser().getAccount());
 			baseModel.setFirstR("1");
@@ -72,6 +66,52 @@
 	}
 
 	/**
+	 * 褰撳湪澶氱嚎绋嬫祦涓皟鐢ㄦ椂锛岃幏鍙栦笉鍒拌姹傚ご淇℃伅锛�
+	 * 鎵�浠ュ緱鍦ㄥ绾跨▼娴佸闈㈣幏鍙栧埌request
+	 * @param object 缁ф壙浜咮aseModel鐨勫疄浣撳璞�
+	 * @param <T>   杩斿洖鍊肩殑绫诲瀷
+	 * @param btmName  涓氬姟绫诲瀷
+	 * @return
+	 * @throws VciBaseException
+	 */
+	public static <T extends BaseModel> T addDefaultAttrAssimt(T object, String btmName, BladeUser user) throws VciBaseException {
+		BaseModel baseModel = object;
+		try {
+			baseModel.setOid(VciBaseUtil.getPk());
+			baseModel.setCreateTime(new Date());
+			baseModel.setNameOid(VciBaseUtil.getPk());
+			baseModel.setLastModifyTime(new Date());
+			baseModel.setTs(new Date());
+			baseModel.setRevisionOid(VciBaseUtil.getPk());
+			baseModel.setBtmname(btmName);
+			String account = Func.isNotEmpty(user) ? user.getAccount():AuthUtil.getUser().getAccount();
+			baseModel.setCreator(account);
+			baseModel.setFirstR("1");
+			baseModel.setFirstV("1");
+			baseModel.setLastR("1");
+			baseModel.setLastV("1");
+			baseModel.setRevisionSeq(1);
+			// TODO:鐩墠鍙湁缂栫爜瑙勫垯涓湁鐢ㄥ埌锛屽悗鏈熼渶瑕佸幓鎺夎繖娈典唬鐮佺殑璇濓紝灏辨妸浠栧姞鍦ㄧ紪鐮佽鍒欐柊澧炰腑鍘�
+			if(Func.isBlank(baseModel.getOwner())){
+				// 璁剧疆鎵�鏈夎��
+				baseModel.setOwner(Func.isNotEmpty(user) ? user.getUserId().toString():AuthUtil.getUserId().toString());
+			}
+
+			baseModel.setVersionSeq(1);
+			baseModel.setVersionRule("0");
+			baseModel.setVersionValue("1");
+			baseModel.setRevisionOid(VciBaseUtil.getPk());
+			baseModel.setLastModifier(account);
+			baseModel.setRevisionValue("1");
+			baseModel.setRevisionRule("1");
+			baseModel.setTenantId(Func.isNotEmpty(user) ? user.getTenantId():AuthUtil.getTenantId());
+		}catch (VciBaseException e){
+			e.printStackTrace();
+		}
+		return (T)baseModel;
+	}
+
+	/**
 	 * 淇敼鏃跺~鍏呴粯璁ゅ��
 	 * @param object 缁ф壙浜咮aseModel鐨勫疄浣撳璞�
 	 * @param <T>   杩斿洖鍊肩殑绫诲瀷
@@ -86,8 +126,29 @@
 			// 鐢ㄦ埛id
 			// String userId = AuthUtil.getUserId().toString();
 			// 瑕佹眰鏀规垚璐﹀彿
-			String account = AuthUtil.getUserAccount();
-			baseModel.setLastModifier(account);
+			baseModel.setLastModifier(AuthUtil.getUser().getAccount());
+		}catch (VciBaseException e){
+			e.printStackTrace();
+		}
+		return (T)baseModel;
+	}
+
+	/**
+	 * 淇敼鏃跺~鍏呴粯璁ゅ�硷細澶氱嚎绋嬫祦涓皟鐢�
+	 * @param object 缁ф壙浜咮aseModel鐨勫疄浣撳璞�
+	 * @param <T>   杩斿洖鍊肩殑绫诲瀷
+	 * @return
+	 * @throws VciBaseException
+	 */
+	public static <T extends BaseModel> T updateDefaultAttrAssimt(T object, BladeUser user) throws VciBaseException {
+		BaseModel baseModel = object;
+		try {
+			baseModel.setLastModifyTime(new Date());
+			baseModel.setTs(new Date());
+			// 鐢ㄦ埛id
+			// String userId = AuthUtil.getUserId().toString();
+			// 瑕佹眰鏀规垚璐﹀彿
+			baseModel.setLastModifier(Func.isNotEmpty(user) ? user.getAccount():AuthUtil.getUser().getAccount());
 		}catch (VciBaseException e){
 			e.printStackTrace();
 		}
@@ -113,7 +174,7 @@
 				Object value=dataMap.get(key);
 				newDataMap.put(key.toLowerCase(Locale.ROOT),value);
 			}*/
-		/*	dataMap.forEach((key,value)->{
+			/*	dataMap.forEach((key,value)->{
 				newDataMap.put(key.toLowerCase(Locale.ROOT),value);
 			});*/
 			//baseModel.setData((Map)newDataMap);
@@ -172,6 +233,85 @@
 			}
 		}catch (VciBaseException e){
 			e.printStackTrace();
+			throw e;
+		}
+		return (T)baseModel;
+	}
+
+	/**
+	 * 鏂板鏃跺~鍏呴粯璁ゅ�硷細澶氱嚎绋嬫祦涓皟鐢�
+	 * @param object 缁ф壙浜咮aseModel鐨勫疄浣撳璞�
+	 * @param <T>   杩斿洖鍊肩殑绫诲瀷
+	 * @return
+	 * @throws VciBaseException
+	 */
+	public static <T extends BaseModel> T copplyDefaultAttrAssimt(Map<String,String> dataMap, T object, BladeUser user) throws VciBaseException {
+		BaseModel baseModel = object;
+		try {
+			SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+			baseModel.setOid(dataMap.getOrDefault("OID",""));
+			baseModel.setId(dataMap.getOrDefault("ID",""));
+			Map<String,Object> newDataMap=new HashMap<>();
+			/*for (String key:dataMap.keySet()){
+				Object value=dataMap.get(key);
+				newDataMap.put(key.toLowerCase(Locale.ROOT),value);
+			}*/
+			/*	dataMap.forEach((key,value)->{
+				newDataMap.put(key.toLowerCase(Locale.ROOT),value);
+			});*/
+			//baseModel.setData((Map)newDataMap);
+			Object createTimeObj=dataMap.getOrDefault("CREATETIME","");
+			if(createTimeObj!=null) {
+				String createTime = createTimeObj.toString();
+				baseModel.setCreateTime(chageStringToDate(createTime));
+			}
+			baseModel.setNameOid(dataMap.getOrDefault("NAMEOID",""));
+
+			Object lastModifyTimeObj=dataMap.getOrDefault("LASTMODIFYTIME","");
+			if(lastModifyTimeObj!=null) {
+				String lastModifyTime = lastModifyTimeObj.toString();
+				baseModel.setLastModifyTime(chageStringToDate(lastModifyTime));
+			}
+			Object tsObj=dataMap.getOrDefault("TS","");
+			if(tsObj!=null) {
+				String ts = tsObj.toString();
+				baseModel.setTs(chageStringToDate(ts));
+			}
+			baseModel.setRevisionOid(dataMap.getOrDefault("REVISIONOID",""));
+			//鐢ㄦ埛id ; 瑕佹眰鏀规垚浜嗚处鍙�
+			// String userId = AuthUtil.getUserId().toString();
+			baseModel.setBtmname(dataMap.getOrDefault("BTMNAME",""));
+			baseModel.setCreator(dataMap.getOrDefault("CREATOR",""));
+			baseModel.setFirstR(dataMap.getOrDefault("FIRSTR",""));
+			baseModel.setFirstV(dataMap.getOrDefault("FIRSTV",""));
+			baseModel.setLastR(dataMap.getOrDefault("LASTR",""));
+			baseModel.setLastV(dataMap.getOrDefault("LASTV",""));
+			Object revisionseq =dataMap.getOrDefault("REVISIONSEQ","");
+			if(revisionseq!=null){
+				baseModel.setRevisionSeq(chageStringToInt(revisionseq.toString()));
+			}
+
+			baseModel.setOwner(dataMap.getOrDefault("OWNER",""));
+			Object versionseq =dataMap.getOrDefault("VERSIONSEQ","");
+			if(versionseq!=null){
+				baseModel.setVersionSeq(chageStringToInt(versionseq.toString()));
+			}
+			baseModel.setVersionRule(dataMap.getOrDefault("VERSIONRULE",""));
+			baseModel.setVersionValue(dataMap.getOrDefault("VERSIONVALUE",""));
+			baseModel.setRevisionOid(dataMap.getOrDefault("REVISIONOID",""));
+			baseModel.setLastModifier(Func.isNotEmpty(user) ? user.getAccount():AuthUtil.getUser().getAccount());
+			baseModel.setLcStatus(dataMap.getOrDefault("LCSTATUS",""));
+			baseModel.setName(dataMap.getOrDefault("NAME",""));
+			baseModel.setTenantId(dataMap.getOrDefault("TENADTID",""));
+			baseModel.setDescription(dataMap.getOrDefault("DESCRIOTION",""));
+			baseModel.setCopyFromVersion(dataMap.getOrDefault("COPYFROMVERSION",""));
+			Object secretgrade=dataMap.get("SECRETGRADE");
+			if(secretgrade!=null){
+				baseModel.setSecretGrade(chageStringToInt(secretgrade.toString()));
+			}
+		}catch (VciBaseException e){
+			e.printStackTrace();
+			throw e;
 		}
 		return (T)baseModel;
 	}
@@ -196,4 +336,5 @@
 		}
 		return date;
 	}
+
 }
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 061a6b4..afa4e65 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
@@ -893,4 +893,15 @@
 		}
 
 	}
+
+	/**
+	 * 鑾峰彇缁熻鍒嗘瀽鏁版嵁
+	 * @param btmNames 涓氬姟绫诲瀷
+	 * @return
+	 */
+	@GetMapping("/getStatisticAnalysis")
+	@VciBusinessLog(operateName = "鑾峰彇缁熻鍒嗘瀽鏁版嵁")
+	public R getStatisticAnalysis(String btmNames) {
+		return engineService.getStatisticAnalysis(btmNames);
+	}
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java
index 6e6f7a5..418809c 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java
@@ -513,4 +513,10 @@
 	 * @return 鎵ц缁撴灉
 	 */
 	String addSaveBZCodeNotauthUser(CodeBZApplyDTO codeBZApplyDTO, boolean authUser) throws Exception;
+	/**
+	 * 鑾峰彇缁熻鍒嗘瀽鏁版嵁
+	 * @param btmNames 涓氬姟绫诲瀷
+	 * @return 鏁版嵁闆�
+	 */
+	R getStatisticAnalysis(String btmNames);
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmProductCodeService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmProductCodeService.java
index 42517a8..67b6fde 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmProductCodeService.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmProductCodeService.java
@@ -5,6 +5,7 @@
 import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO;
 import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
 import com.vci.ubcs.starter.revision.model.BaseModel;
+import org.springblade.core.secure.BladeUser;
 
 import java.util.Collection;
 import java.util.List;
@@ -20,7 +21,7 @@
 	 * @param dataCBOList 涓氬姟鏁版嵁
 	 */
 	List<String> productCodeAndSaveData(CodeClassifyFullInfoBO classifyFullInfoBO, CodeClassifyTemplateVO templateVO,
-										CodeRuleVO ruleVO, List<CodeOrderSecDTO> secDTOList, List<BaseModel> dataCBOList) throws Exception;
+										CodeRuleVO ruleVO, List<CodeOrderSecDTO> secDTOList, List<BaseModel> dataCBOList, BladeUser user) throws Exception;
 
 	/**
 		* 鍥炴敹鐮佸��
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 7d06620..e187c23 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
@@ -60,6 +60,7 @@
 import com.vci.ubcs.system.feign.ISysClient;
 import com.vci.ubcs.system.user.entity.User;
 import com.vci.ubcs.system.user.feign.IUserClient;
+import io.swagger.models.auth.In;
 import net.logstash.logback.encoder.org.apache.commons.lang3.StringUtils;
 import oracle.sql.TIMESTAMP;
 import org.slf4j.Logger;
@@ -67,6 +68,7 @@
 import org.springblade.core.cache.utils.CacheUtil;
 import org.springblade.core.log.annotation.OperateLog;
 import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.DateUtil;
@@ -504,6 +506,7 @@
         CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
         CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid());
         CodeRuleVO ruleVO = ruleService.getObjectHasSecByOid(orderDTO.getCodeRuleOid());
+		final BladeUser user = AuthUtil.getUser();
         //1.鍒ゆ柇瑙勫垯涓櫎浜嗘祦姘寸爜娈碉紝鏄惁鏈夊叾浠栫爜娈�
         checkSecValueOnOrder(ruleVO, orderDTO);
         //2.鍒ゆ柇蹇呰緭椤�
@@ -534,13 +537,13 @@
 		//cbo.setCreator(String.valueOf(AuthUtil.getUser().getUserId()));銆�
 		if(authUser) {
 			// 瑕佹眰鏄剧ず璐﹀彿锛屾墍浠ュ仛浜嗘洿鏀�
-			cbo.setCreator(String.valueOf(AuthUtil.getUser().getAccount()));
-			cbo.setLastModifier(String.valueOf(AuthUtil.getUser().getAccount()));
+			cbo.setCreator(String.valueOf(user.getAccount()));
+			cbo.setLastModifier(String.valueOf(user.getAccount()));
 		}else{
 			cbo.setCreator(orderDTO.getCreator());
 			cbo.setLastModifier(orderDTO.getLastModifier());
 		}
-		cbo.setTenantId(AuthUtil.getTenantId());
+		cbo.setTenantId(user.getTenantId());
 		if(StringUtils.isNotBlank(orderDTO.getLcStatus())||StringUtils.isNotBlank(orderDTO.getData().get("lcStatus"))){
 			cbo.setLcStatus(StringUtils.isNotBlank(orderDTO.getLcStatus())?orderDTO.getLcStatus():orderDTO.getData().get("lcStatus"));
 		}
@@ -553,7 +556,7 @@
         cbo.setDescription(orderDTO.getDescription());
         cboList.add(cbo);
 
-        List<String> codeList = productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(), cboList);
+        List<String> codeList = productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(), cboList,user);
 
         batchSaveSelectChar(templateVO, cboList);
         return codeList.size() > 0 ? codeList.get(0) : "";
@@ -1140,6 +1143,75 @@
 	@Override
 	public String addSaveBZCodeNotauthUser(CodeBZApplyDTO codeBZApplyDTO, boolean authUser) throws Exception {
 		return	addSaveBZCode(codeBZApplyDTO,authUser);
+	}
+
+	/**
+	 * 鑾峰彇缁熻鍒嗘瀽鏁版嵁
+	 * @param btmNames 涓氬姟绫诲瀷
+	 * @return 鏁版嵁闆�
+	 */
+	@Override
+	public R getStatisticAnalysis(String btmNames) {
+		//鏌ヨ涓氬姟绫诲瀷瀵瑰簲鐨勬暟鎹簱琛�
+		R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Arrays.asList(btmNames.split(",")));
+		if (!listR.isSuccess() || listR.getData().size() == 0) {
+			throw new ServiceException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒");
+		}
+		List tableData = new ArrayList();
+		for (BtmTypeVO datum : listR.getData()) {
+			String sql = "select count(*) countNum, to_char(CREATETIME, 'mm') countDate\n" +
+							"from "+ datum.getTableName() +"\n" +
+							"where CREATETIME >= to_date(EXTRACT(YEAR FROM SYSDATE) || '-01-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss') AND LASTV = '1'\n" +
+							"group by to_char(CREATETIME, 'mm')\n" +
+							"order by to_char(CREATETIME, 'mm')";
+			//鏌ヨ鍑洪渶瑕佸鐞嗙殑鏁版嵁
+			List<Map> maps = commonsMapper.selectBySql(sql);
+			if(maps.size() == 0){
+				throw new ServiceException("浼犲叆绫诲瀷["+ datum.getName() + ":" +
+					datum.getId() +"]鏈煡鍒扮浉鍏崇粺璁℃暟鎹紝璇风‘璁�!!!!");
+			}
+			//褰撳勾姣忔湀鏈堜唤涔嬪墠涔嬪拰
+			List<Integer> monthCount = new ArrayList<>(12);
+			//褰撳勾姣忔湀鐨勬湀浠芥暟鎹�
+			List<Integer> month = new ArrayList<>();
+			//鑾峰彇褰撳墠鏈堢殑鏁板瓧
+			Calendar instance = Calendar.getInstance();
+			int nowmonth = instance.get(Calendar.MONTH) + 1;
+			//浠�1鍒�12鏈堣繘琛屽鐞�
+			for (Integer i = 1; i <= 12; i++) {
+				//褰撳墠鏈堝悗鎵�鏈夋暟鎹缃负0
+				if(i>nowmonth){
+					monthCount.add(0);
+					month.add(0);
+				}
+				//褰撳墠鏈堜唤涔嬪墠涔嬪拰
+				Integer count = 0;
+				//褰撳墠鏈堜唤鏁版嵁
+				Integer sameMonth = 0;
+				//瀵规暟鎹簱鏌ョ殑鏁版嵁杩涜澶勭悊锛屽褰撳墠鏈堜唤杩涜绱姞
+				for (Map map : maps) {
+					Integer mounDate = Integer.parseInt(String.valueOf(map.get("COUNTDATE")));
+					if(mounDate <= i){
+						count += Integer.parseInt(String.valueOf(map.get("COUNTNUM")));
+					}
+					if (mounDate == i) {
+						sameMonth = Integer.parseInt(String.valueOf(map.get("COUNTNUM")));
+					}
+				}
+				monthCount.add(count);
+				month.add(sameMonth);
+			}
+			//瀵规暟鎹繘琛屾暣鍚�
+			HashMap<String,Object> menuData = new HashMap<>();
+			menuData.put("menuName",datum.getName());
+			menuData.put("codeType",null);
+			ArrayList monthData = new ArrayList();
+			monthData.add(monthCount);
+			monthData.add(month);
+			menuData.put("menuData",monthData);
+			tableData.add(menuData);
+		}
+		return R.data(tableData);
 	}
 
 	/**
@@ -3116,6 +3188,15 @@
 			updateBatchByBaseModel(oldCbo.getBtmname(), Collections.singletonList(oldCbo));
 			// 鎻掑叆鏂扮殑鏁版嵁
             insertBatchByType(cbo.getBtmname(), Collections.singletonList(cbo));
+			//澶勭悊鐮佸�艰〃锛屽鐮佸�艰〃杩涜澶勭悊鏇挎崲鍒涘缓鏁版嵁鐨刼id
+			QueryWrapper<CodeAllCode> wrapper = new QueryWrapper<>();
+			wrapper.eq("CREATECODEOID",orderDTO.getCopyFromVersion());
+			CodeAllCode codeAllCode = codeAllCodeService.getOne(wrapper);
+			codeAllCode.setCreateCodeOid(cbo.getOid());
+			codeAllCode.setLastModifyTime(new Date());
+			codeAllCode.setTs(new Date());
+			codeAllCode.setLastModifier(AuthUtil.getUser().getUserName());
+			codeAllCodeService.updateById(codeAllCode);
 			// 璁板綍鏁版嵁鏇存敼鏃ュ織
 			saveLogUtil.operateLog("鏁版嵁鏇存敼",false, StringUtil.format("{}\n淇敼涓�:\n{}",JSON.toJSONString(Collections.singletonList(oldCbo)),JSON.toJSONString(Collections.singletonList(cbo))));
 		} catch (Exception vciError) {
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 6f0f849..6b79d51 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
@@ -6,13 +6,11 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.google.protobuf.ServiceException;
-import com.vci.ubcs.code.applyjtcodeservice.entity.DockingPreAttrMapping;
 import com.vci.ubcs.code.applyjtcodeservice.feign.IMdmInterJtClient;
 import com.vci.ubcs.code.applyjtcodeservice.vo.DockingPreAttrMappingVO;
 import com.vci.ubcs.code.bo.AttributeValue;
 import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
 import com.vci.ubcs.code.bo.CodeTemplateAttrSqlBO;
-import com.vci.ubcs.code.constant.MdmEngineConstant;
 import com.vci.ubcs.code.dto.*;
 import com.vci.ubcs.code.entity.CodeAllCode;
 import com.vci.ubcs.code.enumpack.CodeDefaultLC;
@@ -62,6 +60,7 @@
 import org.apache.poi.ss.usermodel.Workbook;
 import org.aspectj.apache.bcel.classfile.Code;
 import org.springblade.core.redis.cache.BladeRedis;
+import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
@@ -73,6 +72,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
 import java.beans.BeanInfo;
 import java.beans.Introspector;
 import java.beans.PropertyDescriptor;
@@ -90,7 +90,6 @@
 import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.CopyOnWriteArraySet;
 import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicReference;
 import java.util.stream.Collectors;
 
 import static com.alibaba.druid.util.FnvHash.Constants.LIMIT;
@@ -201,9 +200,9 @@
 	private SaveLogUtil saveLogUtil;
 
 	/**
-	 * 瀵煎嚭鐨勫崄涓囨潯
+	 * 瀹㈡埛鐜板満excel涓鸿�佺増鏈紝瀵煎嚭鐨勬�绘暟闄愬埗涓�65535
 	 */
-	public static final int EXPORT_LIMIT = 100000;
+	public static final int EXPORT_LIMIT = 65535;
 
 	/**
 	 * 鎵归噺鐢宠锛氶�夊彇閫変腑鍒嗙被涓嬬殑鎵�鏈夋ā鏉垮叧閿睘鎬э紝鐩镐技灞炴�э紝蹇呭~灞炴�э紝鍐欏叆execl涓�
@@ -614,6 +613,7 @@
 		ExcelUtil.writeDataToFile(excelName,eo);
 		return excelName;
 	}
+
 	/**
 	 * 鑾峰彇鐮佹瀹藉害
 	 * @param codeClassifyOid
@@ -1209,6 +1209,7 @@
 					//SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
 					List<ClientBusinessObject> finalNeedSaveCboList = needSaveCboList;
 					CodeClassifyTemplateVO finalTemplateVO = templateVO;
+					final BladeUser user = AuthUtil.getUser();
 					ruleRowIndexMap.keySet().parallelStream().forEach(ruleOid -> {
 						//VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
 						List<String> rowIndexList = ruleRowIndexMap.get(ruleOid);
@@ -1225,7 +1226,7 @@
 						if (!CollectionUtils.isEmpty(thisCbos)) {
 							try {
 								// TODO 澶氱嚎绋嬫祦闂
-								productCodeService.productCodeAndSaveData(classifyFullInfo, finalTemplateVO, ruleVOMap.get(ruleOid), null, dataCBOList);
+								productCodeService.productCodeAndSaveData(classifyFullInfo, finalTemplateVO, ruleVOMap.get(ruleOid), null, dataCBOList,user);
 								importCount.add(dataCBOList.size());
 							} catch (Throwable e) {
 								log.error("鎵归噺浜х敓缂栫爜鐨勬椂鍊欏嚭閿欎簡", e);
@@ -1276,6 +1277,7 @@
 			throw e;
 		}
 	}
+
 	/**
 	 * 瀵煎叆鎵归噺缂栬緫鏁版嵁
 	 *
@@ -1284,14 +1286,18 @@
 	 * @param file            excel鏂囦欢鐨勪俊鎭�
 	 * @return 鏈夐敊璇俊鎭殑excel
 	 */
+	@Transactional
 	@Override
 	public CodeImProtRusultVO batchImportEdit(String codeClassifyOid, String classifyAttr,File file) throws  Throwable{
 		VciBaseUtil.alertNotNull(codeClassifyOid,"鍒嗙被鐨勪富閿�");
 		ReadExcelOption reo = new ReadExcelOption();
 		reo.setReadAllSheet(true);
 		List<SheetDataSet> sheetDataSetList = ExcelUtil.readDataObjectFromExcel(file,null,reo);
-		if (sheetDataSetList.size() > LIMIT + 1) {
-			throw new VciBaseException("涓轰簡淇濊瘉绯荤粺鐨勭ǔ瀹氭�э紝璇蜂竴娆′笉瑕佸鍏ヨ秴杩�1涓囨潯鐨勬暟鎹�");
+		if (sheetDataSetList.get(0).getRowData().size() > LIMIT + 1) {
+			throw new ServiceException("涓轰簡淇濊瘉绯荤粺鐨勭ǔ瀹氭�э紝璇蜂竴娆′笉瑕佸鍏ヨ秴杩�1涓囨潯鐨勬暟鎹�");
+		}
+		if (sheetDataSetList.get(0).getRowData().size() == 0) {
+			throw new ServiceException("鏈鍙栧埌excle鐩稿叧鏁版嵁锛岃纭锛侊紒锛�");
 		}
 		boolean isExport=false;
 		Map<String,List<WriteExcelData>> shetNameMap=new HashMap<>();
@@ -1327,7 +1333,7 @@
 				titleRowData.remove(titleRowData.size()-1);
 				templateVO= templateVOList.get(0);
 			}catch (Throwable e){
-				throw  new VciBaseException(e.getMessage());
+				throw new ServiceException(e.getMessage());
 			}
 
 			CodeClassifyTemplateVO finalTemplateVO = templateVO;
@@ -1354,32 +1360,18 @@
 				//鎴戜滑浣跨敤鍜屼笟鍔$被鍨嬬殑鏉ユ煡璇�
 				List<Map> cbosB = commonsMapper.selectBySql(sqlBO.getSqlUnPage());
 				if(cbosB.size() == 0){
-					throw  new ServiceException("缂栫爜锛�"+ sheetRowData.getData().get(0) + ",鏈兘鏌ヨ鍒扮浉鍏虫暟鎹��");
+					throw new ServiceException("缂栫爜锛�"+ sheetRowData.getData().get(0) + ",鏈兘鏌ヨ鍒扮浉鍏虫暟鎹��");
 				}
 				excelToCboEdit(fieldIndexMap, sheetRowData, orderDTO, cbosB.get(0));
 				orderDTO.setCopyFromVersion(orderDTO.getOid());
 				orderDTO.setOid(null);
 				try {
 					mdmEngineService.upSaveCode(orderDTO);
-					List<Map> newCbos = commonsMapper.selectBySql(sqlBO.getSqlUnPage());
-					//瀵圭爜鍊艰〃杩涜澶勭悊鏇挎崲鍒涘缓鏁版嵁鐨刼id
-					QueryWrapper<CodeAllCode> wrapper = new QueryWrapper<>();
-					wrapper.eq("CREATECODEOID",orderDTO.getCopyFromVersion());
-					List<CodeAllCode> codeAllCodes = codeAllCodeService.selectByWrapper(wrapper);
-					codeAllCodes.get(0).setCreateCodeOid(newCbos.get(0).get("OID").toString());
-					codeAllCodes.get(0).setLastModifyTime(new Date());
-					codeAllCodes.get(0).setTs(new Date());
-					codeAllCodes.get(0).setLastModifier(AuthUtil.getUser().getUserName());
-					codeAllCodeService.updateBatchById(codeAllCodes);
 				} catch (Throwable e) {
 					log.error("鎵归噺浜х敓缂栫爜鐨勬椂鍊欏嚭閿欎簡", e);
-//				thisCbos.stream().forEach(cbo -> {
-//					String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
 					errorMap.put(sheetRowData.getRowIndex(), ";绯荤粺閿欒锛屽瓨鍌ㄦ暟鎹殑鏃跺�欏嚭閿欎簡:"+e.getMessage());
-//				});
 				}
 			}
-
 			if (errorMap.size() > 0) {
 				isExport = true;
 			}
@@ -1686,7 +1678,7 @@
 				createRedisDatas(uuid + "-ok",templateVO, rowIndexCboMap, dataSet, fieldIndexMap, newErrorMap,true);
 			}else {
 				uuid="";
-
+				final BladeUser user = AuthUtil.getUser();
 				//瑕佹妸浠ヤ笂鐨勯敊璇殑閮芥姏鍑哄悗锛屽啀缁х画澶勭悊鏃堕棿鍜岀粍鍚堣鍒�
 				needSaveCboList = cboList.stream().filter(cbo -> {
 					String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
@@ -1706,7 +1698,7 @@
 						dataCBOIdList.add(baseModel.getOid());
 					});
 					try {
-						codeList = productCodeService.productCodeAndSaveData(classifyFullInfo,templateVO,ruleVO, orderDTO.getSecDTOList(),dataCBOList);
+						codeList = productCodeService.productCodeAndSaveData(classifyFullInfo,templateVO,ruleVO, orderDTO.getSecDTOList(),dataCBOList,user);
 						//濡傛灉鏄紪鐮佺敓鎴愬け璐ワ紝鍒欑洿鎺ュ氨澶辫触浜嗭紝鍏朵粬鐨勫垽鏂嚭鏉ユ湁閿欒鐨勬垜浠兘缁熶竴杩斿洖鍒癳xcel閲岄潰
 						engineService.batchSaveSelectChar(templateVO, dataCBOList);
 					} catch (Exception e) {
@@ -1839,10 +1831,10 @@
 			tableName = VciBaseUtil.getTableName(btmTypeId);
 		}
 
-		String countSql = "select count(*) from " + tableName +" where 1=1" +
+		String countSql = "select count(*) from (select * FROM " + tableName +" where 1=1" +
 			" and lastr = '1'" +
 			" and lastv='1'" +
-			" and codeclsfpath like '%" + exportAttrDTO.getCodeClassifyOid() + "%'";
+			" and codeclsfpath like '%" + exportAttrDTO.getCodeClassifyOid() + "%' {}";
 
 		//鍏堟煡璇㈡�绘暟
 		int total = 0;
@@ -1856,8 +1848,7 @@
 				thisPage.setSort(exportAttrDTO.getSort());
 				thisPage.setOrder(exportAttrDTO.getOrder());
 				thisPage.addDefaultDesc("createTime");
-
-				total += commonsMapper.queryCountBySql(countSql);
+				total += commonsMapper.queryCountBySql(StringUtil.format(countSql," limit " + exportAttrDTO.getLimit() +" offset "+ i +")subquery;"));
 			}
 		}else{
 			total = commonsMapper.queryCountBySql(countSql);
@@ -2122,7 +2113,9 @@
 				}).collect(Collectors.toList());
 				List<ClientBusinessObject> finalNeedSaveCboList = needSaveCboList;
 				Map<String, CodeRuleVO> finalRuleVOMap = ruleVOMap;
-				ruleRowIndexMap.keySet().parallelStream().forEach(ruleOid -> {
+				// TODO锛� 澶氱嚎绋嬫祦濂楀绾跨▼娴侊紝鏈夊潙锛屾垜鎶婅繖鍎挎敼鎴愬崟绾跨▼浜�
+				final BladeUser user = AuthUtil.getUser();
+				ruleRowIndexMap.keySet().stream().forEach(ruleOid -> {
 					List <BaseModel>dataCBOList=new CopyOnWriteArrayList<>();
 					List<String> rowIndexList = ruleRowIndexMap.get(ruleOid);
 					List<ClientBusinessObject> thisCbos = needSaveCboList.stream().filter(cbo -> rowIndexList.contains(cbo.getAttributeValue(IMPORT_ROW_INDEX)) && !errorMap.containsKey(cbo.getAttributeValue(IMPORT_ROW_INDEX))).collect(Collectors.toList());
@@ -2133,7 +2126,7 @@
 							dataCBOList.add(baseModel);
 						});
 						try {
-							productCodeService.productCodeAndSaveData(classifyFullInfo, codeClassifyTemplateVO, finalRuleVOMap.get(ruleOid), null, dataCBOList);
+							productCodeService.productCodeAndSaveData(classifyFullInfo, codeClassifyTemplateVO, finalRuleVOMap.get(ruleOid), null, dataCBOList, user);
 						} catch (Throwable e) {
 							//success=false;
 							log.error("鎵归噺浜х敓缂栫爜鐨勬椂鍊欏嚭閿欎簡", e);
@@ -2146,6 +2139,7 @@
 					engineService.batchSaveSelectChar(codeClassifyTemplateVO, dataCBOList);
 				});
 			}else {
+				final BladeUser user = AuthUtil.getUser();
 				List<BaseModel> dataCBOList=new ArrayList<>();
 				List<ClientBusinessObject> needSaveCboList = cboList.stream().filter(cbo -> {
 					String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
@@ -2159,7 +2153,7 @@
 						dataCBOList.add(baseModel);
 					});
 					try {
-						productCodeService.productCodeAndSaveData(classifyFullInfo, codeClassifyTemplateVO, ruleVO, orderDTO.getSecDTOList(), dataCBOList);
+						productCodeService.productCodeAndSaveData(classifyFullInfo, codeClassifyTemplateVO, ruleVO, orderDTO.getSecDTOList(), dataCBOList,user);
 					} catch (Exception e) {
 						log.error("鎵归噺浜х敓缂栫爜鐨勬椂鍊欏嚭閿欎簡", e);
 						needSaveCboList.stream().forEach(cbo -> {
@@ -2467,6 +2461,7 @@
 
 			List<String>allNeedSaveCboList=new ArrayList<>();
 			List<BaseModel> dataCBOList=new ArrayList<>();
+			final BladeUser user = AuthUtil.getUser();
 			needSaveCboList.stream().forEach(clientBusinessObject -> {
 				BaseModel baseModel=new BaseModel();
 				BeanUtil.convert(clientBusinessObject,baseModel);
@@ -2476,7 +2471,7 @@
 			});
 			try {
 				List<String>applyGroupCodeIdList=new ArrayList<>();
-				productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(), dataCBOList);
+				productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(), dataCBOList,user);
 				//濡傛灉鏄紪鐮佺敓鎴愬け璐ワ紝鍒欑洿鎺ュ氨澶辫触浜嗭紝鍏朵粬鐨勫垽鏂嚭鏉ユ湁閿欒鐨勬垜浠兘缁熶竴杩斿洖鍒癳xcel閲岄潰
 				engineService.batchSaveSelectChar(templateVO, dataCBOList);
 				// if(!isProcess){
@@ -2504,7 +2499,6 @@
 						resultDataObjectDetailDO.setErrorid("0");
 					}
 					resultDataObjectDetailDO.setId(sourceOid);
-
 					resultDataObjectDetailDO.setMsg(msg);
 					resultDataObjectDetailDOs.add(resultDataObjectDetailDO);
 					//澶勭悊浼犻�佺殑鏁版嵁涓叧閿睘鎬ч噸澶嶇殑锛岀洿鎺ユ嬁鍒板凡缁忕敵璇峰埌缂栫爜鐨勬暟鎹紪鐮佺洿鎺ュ皢璧嬬粰鍏抽敭灞炴�ч噸澶嶇殑鏁版嵁
@@ -3567,7 +3561,7 @@
 				if (StringUtils.isBlank(field)) {
 					throw new VciBaseException("绗�" + (index + 1) + "鍒楃殑鏍囬鍦ㄧ郴缁熶腑涓嶅瓨鍦�");
 				}
-				map.put(field,value);
+				map.put(field.toUpperCase(),value);
 			});
 
 		try {
@@ -4273,6 +4267,7 @@
 		Map<String,List<BaseModel>> indexTODataMap=new ConcurrentHashMap<>();
 		// 鏌ヨ涓嶉渶瑕佸弬涓庡叧閿睘鎬ф牎楠岀殑闄よ嚜宸变互澶栫殑鎵�鏈夊垎绫籵id
 		final String isParticipateCheckOids = classifyService.selectLeafByParentClassifyOid(classifyFullInfo.getTopClassifyVO().getOid(), classifyFullInfo.getCurrentClassifyVO().getOid());
+		final BladeUser user = AuthUtil.getUser();
 		List<ClientBusinessObject> repeatDataMap = cboList.parallelStream().filter(cbo -> {
 			//姣忚閮藉緱鏌ヨ.濡傛灉鍏朵腑鍑虹幇浜嗛敊璇紝鎴戜滑灏辩洿鎺ユ姏鍑哄紓甯革紝鍏朵綑鐨勬樉绀�
 			//VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
@@ -4304,7 +4299,7 @@
 					List<BaseModel> newCboList = new ArrayList<>();
 					newDataList.stream().forEach(stringStringMap -> {
 						BaseModel baseModel=new BaseModel();
-						DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(stringStringMap,baseModel,true);
+						DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(stringStringMap,baseModel,true,user);
 						baseModel.setData(stringStringMap);
 						newCboList.add(baseModel);
 					});
@@ -4530,7 +4525,7 @@
 		List<ClientBusinessObject> clientBusinessObjectList=new ArrayList<>();
 		oldDataMap.stream().forEach(dataMap->{
 			ClientBusinessObject clientBusinessObject=new ClientBusinessObject();
-			DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(dataMap,clientBusinessObject,true);
+			DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(dataMap,clientBusinessObject);
 			for (String key:dataMap.keySet()){
 				Object value= dataMap.getOrDefault(key,"");
 				clientBusinessObject.setAttributeValue(key.toLowerCase(Locale.ROOT),value==null?"":value.toString());
@@ -4993,8 +4988,8 @@
 
 		ExecGroupCodePortDataDTO execGroupCodePortDataDTO=new ExecGroupCodePortDataDTO();
 		createExportGroupCodeMapConfig(templateVO,execGroupCodePortDataDTO);//缁勭粐鏁版嵁
-		if(CollectionUtils.isEmpty(execGroupCodePortDataDTO.getCodeAttrMapGroupAttrDTOS())){
-			throw new VciBaseException("闆嗗洟灞炴�ф槧灏勬湭閰嶇疆");
+		if(!CollectionUtils.isEmpty(execGroupCodePortDataDTO.getCodeAttrMapGroupAttrDTOS())){
+			throw new ServiceException("闆嗗洟灞炴�ф槧灏勬湭閰嶇疆");
 		}
 		fieldList=execGroupCodePortDataDTO.getFieldList();
 		List<Map<String,String>>dataList=new ArrayList<>();
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java
index 42fab2c..24bdc0c 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java
@@ -36,8 +36,10 @@
 import com.vci.ubcs.starter.web.util.VciDateUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.WebUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
@@ -45,6 +47,7 @@
 import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
 import java.lang.reflect.Method;
 import java.util.*;
 import java.util.concurrent.CopyOnWriteArrayList;
@@ -96,7 +99,7 @@
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public List<String> productCodeAndSaveData(CodeClassifyFullInfoBO classifyFullInfoBO, CodeClassifyTemplateVO templateVO, CodeRuleVO ruleVO, List<CodeOrderSecDTO> secDTOList, List<BaseModel> dataCBOList) throws Exception {
+	public List<String> productCodeAndSaveData(CodeClassifyFullInfoBO classifyFullInfoBO, CodeClassifyTemplateVO templateVO, CodeRuleVO ruleVO, List<CodeOrderSecDTO> secDTOList, List<BaseModel> dataCBOList,BladeUser user) throws Exception {
 		dataCBOList = dataCBOList.stream().sorted(((o1, o2) -> o1.getCreateTime().compareTo(o2.getCreateTime()))).collect(Collectors.toList());
 		List<String> codeList = new ArrayList<>();
 		final CodeRuleVO finalRuleVO = ruleVO;
@@ -201,7 +204,7 @@
 					});
 				}
 				CodeAllCode allCodeDO = new CodeAllCode();
-				DefaultAttrAssimtUtil.addDefaultAttrAssimt(allCodeDO, MdmBtmTypeConstant.CODE_ALL_CODE);
+				DefaultAttrAssimtUtil.addDefaultAttrAssimt(allCodeDO, MdmBtmTypeConstant.CODE_ALL_CODE,user);
 				allCodeDO.setCodeClassifyOid(classifyFullInfoBO.getCurrentClassifyVO().getOid());
 				allCodeDO.setCodeRuleOid(finalRuleVO.getOid());
 				allCodeDO.setId(cbo.getId());
@@ -234,13 +237,13 @@
 						log.info("oldmaxSerial--->"+serialValueDO.getMaxSerial()+"---- newmaxSerial---->"+maxSerial);
 						if(VciBaseUtil.getDouble(serialValueDO.getMaxSerial())<VciBaseUtil.getDouble(maxSerial)){
 							serialValueDO.setMaxSerial(String.valueOf(maxSerial));
-							DefaultAttrAssimtUtil.updateDefaultAttrAssimt(serialValueDO);
+							DefaultAttrAssimtUtil.updateDefaultAttrAssimt(serialValueDO,user);
 							editSerialValueList.add(serialValueDO);
 						}
 					}else{
 						//娌℃湁
 						CodeSerialValue serialValueDO = new CodeSerialValue();
-						DefaultAttrAssimtUtil.addDefaultAttrAssimt(serialValueDO, MdmBtmTypeConstant.CODE_SERIAL_VALUE);
+						DefaultAttrAssimtUtil.addDefaultAttrAssimt(serialValueDO, MdmBtmTypeConstant.CODE_SERIAL_VALUE,user);
 						serialValueDO.setCodeRuleOid(finalRuleVO.getOid());
 						serialValueDO.setSerialUnit(serialUnit);
 						serialValueDO.setCodeSecOid(secOid);
@@ -261,7 +264,6 @@
 			}
 			//澶勭悊allCode
 			if(!CollectionUtils.isEmpty(allCodeDOList)){
-				// TODO 鍘嗗彶鏁版嵁瀵煎叆鐨勬椂鍊欒繖鍎垮伓灏斾細瑙﹀彂绌烘寚閽堝紓甯�
 				Map<String,List<CodeAllCode>> ruleGroup = allCodeDOList.stream().collect(Collectors.groupingBy(s -> s.getCodeRuleOid()));
 				Map<String, CodeAllCode> codeDOMap = allCodeDOList.stream().collect(Collectors.toMap(s -> s.getCodeRuleOid() + "${SEP}" + s.getId(), t -> t));
 				List<CodeAllCode> addCodeDOs = new CopyOnWriteArrayList<>();
@@ -417,7 +419,7 @@
 			saveSerialValue( finalRuleVO, lastMaxSerialValueMap, maxSerialValueMap);
 
 			allCodeDOList.stream().forEach(
-				allCode -> {DefaultAttrAssimtUtil.addDefaultAttrAssimt(allCode,"codeallcode");allCode.setLctid("codeAllCodeLC");}
+				allCode -> {DefaultAttrAssimtUtil.addDefaultAttrAssimt(allCode,"codeallcode",user);allCode.setLctid("codeAllCodeLC");}
 			);
 
 
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 edcb828..cd92f0f 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
@@ -281,9 +281,7 @@
 			UserVO userVo = interParameterVO.getData().getUser();
 			//鍏嶅瘑鐧诲綍鐢宠token锛宺equest涓坊鍔犵敤鎴蜂俊鎭�
 
-			//passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest());
 			passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(Locale.ROOT),this.getRequest());
-			AuthUtil.getUser();
 			List<ClassfyVO> classVOList = classfysVO.getClassify();
 			InterParameterVO finalInterParameterVO = interParameterVO;
 			//杩欐槸璐﹀彿淇℃伅
@@ -2322,7 +2320,7 @@
 
 
 	/***
-	 * 鏍规嵁绌垮叆鐨勫弬鏁颁俊鎭牎楠岀爜娈佃鍒�
+	 * 鏍规嵁浼犲叆鐨勫弬鏁颁俊鎭牎楠岀爜娈佃鍒�
 	 */
 	private List<CodeOrderSecDTO> getRuleCodeOrderSecDTOs(List<SectionVO> SectionVOList,CodeRuleVO ruleVO,CodeClassifyFullInfoBO classifyFullInfo) throws Throwable{
 		List<CodeBasicSecVO>  codeBasicSecVOS= ruleVO.getSecVOList();
@@ -2372,7 +2370,7 @@
 					CodeOrderSecDTO.setSecValue(sectypeValue);
 					codeOrderSecDTOList.add(CodeOrderSecDTO);
 				} else {
-					message="浼犲叆鐨勭爜娈佃鍒欑己灏�" + name + "鐮佹";
+					message="浼犲叆鐨勭爜娈佃鍒欑己灏�" + name;
 					errorMap.put("error",errorMap.getOrDefault("error","")+";"+message);
 				}
 			}

--
Gitblit v1.9.3