From 36d3d9da36c71e65081e38cf9cfbd5e0ff6bfeed Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期五, 14 七月 2023 21:15:42 +0800
Subject: [PATCH] Merge branch 'master' of http://dev.vci-tech.com:1065/r/ubcs

---
 Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/dto/ProcessStageAttrDTO.java              |   32 +
 Source/UBCS-WEB/src/api/GetItem.js                                                                                    |    4 
 Source/UBCS/ubcs-ops/ubcs-report/src/main/java/com/vci/ubcs/report/config/BladeReportConfiguration.java               |   16 
 Source/UBCS-WEB/vue.config.js                                                                                         |    6 
 Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowTaskUserController.java          |    2 
 Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/FlowTaskUserServiceImpl.java       |    3 
 Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/ProcessStageAttrServiceImpl.java   |    6 
 Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/VICFlowService.java                     |    2 
 Source/UBCS-WEB/src/views/integration/integrationTransfer.vue                                                         |    4 
 Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeUserDetails.java                                   |   17 
 Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/feign/IMDMFlowAttrClientFallback.java     |   41 ++
 Source/UBCS-WEB/public/public/index.html                                                                              |    2 
 Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/entity/ProcessStageAttr.java              |    2 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClstemplateServiceImpl.java       |    2 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DokingSysManaentServiceImpl.java      |   15 
 Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/FlowEngineService.java                  |    2 
 Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/vo/FlowTaskUserVO.java                    |   22 
 Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/constant/VciSystemVarConstants.java |   37 
 Source/UBCS/ubcs-service/ubcs-code/pom.xml                                                                            |    6 
 Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/vo/FlowTaskVO.java                        |   10 
 Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/VCIFlowserviceImpl.java            |    2 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/ILifeCycleService.java                       |    5 
 Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/dto/FlowTaskUserDTO.java                  |   32 +
 Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/entity/User.java                    |    5 
 Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowModelController.java             |    1 
 Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/vo/ProcessStageAttrVO.java                |   20 
 Source/UBCS-WEB/src/components/Crud/VciMasterCrud.vue                                                                 |   84 ++-
 Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/mapper/FlowTaskUserMapper.java                  |    2 
 Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/feign/MDMFlowAttrClient.java                  |   67 +++
 Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/mapper/ProcessStageAttrMapper.java              |    2 
 Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/entity/FlowTaskUser.java                  |    3 
 Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/ProcessTemplateService.java             |    2 
 Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/support/BladeJwtTokenEnhancer.java                              |    4 
 Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/VCIFlowController.java               |    2 
 Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/feign/IMDMIFlowAttrClient.java            |   55 ++
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/LifeCycleController.java                  |   24 
 Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/entity/ProcessTemplate.java               |    3 
 Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowProcessTSController.java         |    9 
 Source/UBCS/ubcs-service-api/ubcs-code-api/pom.xml                                                                    |    6 
 Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/dto/FlowTaskDTO.java                      |    9 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/LifeCycleServiceImpl.java               |   20 
 Source/UBCS-WEB/src/components/Master/MasterTree.vue                                                                  |   19 
 Source/UBCS-WEB/src/components/work/BusinessWork.vue                                                                  |   63 ++-
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java        |    9 
 Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/utils/TokenUtil.java                                            |    4 
 Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/ProcessStageAttrService.java            |    4 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingSystemConfigServiceImpl.java   |   12 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeDuckingSyncServiceImpl.java       |    6 
 Source/BladeX-Tool/blade-starter-auth/src/main/java/org/springblade/core/secure/utils/AuthUtil.java                   |    8 
 Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/endpoint/OssEndpoint.java                      |    4 
 Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeUserDetailsServiceImpl.java                        |    2 
 Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/ProcessTemplateServiceImpl.java    |    2 
 Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/vo/ProcessTemplateVO.java                 |   18 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/MdmUIInfoVO.java              |    3 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java                      |    8 
 Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserServiceImpl.java           |    1 
 /dev/null                                                                                                             |  249 ------------
 Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/mapper/ProcessTemplateMapper.java               |    3 
 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             |   82 ++++
 Source/UBCS-WEB/src/components/file/main.vue                                                                          |    5 
 Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/FlowEngineServiceImpl.java         |    2 
 Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/FlowTaskUserService.java                |    4 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java                |   13 
 Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/dto/ProcessTemplateDTO.java               |   33 +
 Source/UBCS-WEB/src/components/Tree/attrCrud.vue                                                                      |    2 
 66 files changed, 687 insertions(+), 474 deletions(-)

diff --git a/Source/BladeX-Tool/blade-starter-auth/src/main/java/org/springblade/core/secure/utils/AuthUtil.java b/Source/BladeX-Tool/blade-starter-auth/src/main/java/org/springblade/core/secure/utils/AuthUtil.java
index 04187c4..58d9a9b 100644
--- a/Source/BladeX-Tool/blade-starter-auth/src/main/java/org/springblade/core/secure/utils/AuthUtil.java
+++ b/Source/BladeX-Tool/blade-starter-auth/src/main/java/org/springblade/core/secure/utils/AuthUtil.java
@@ -110,6 +110,10 @@
 		String roleName = Func.toStr(claims.get(AuthUtil.ROLE_NAME));
 		String userName = Func.toStr(claims.get(AuthUtil.USER_NAME));
 		String nickName = Func.toStr(claims.get(AuthUtil.NICK_NAME));
+		String tenantName = Func.toStr(claims.get("tenantName"));
+		String email = Func.toStr(claims.get("email"));
+		String deptName = Func.toStr(claims.get("deptName"));
+		String secretGrade = Func.toStr(claims.get("secretGrade"));
 		Kv detail = Kv.create().setAll((Map<? extends String, ?>) claims.get(AuthUtil.DETAIL));
 		BladeUser bladeUser = new BladeUser();
 		bladeUser.setClientId(clientId);
@@ -123,6 +127,10 @@
 		bladeUser.setRoleName(roleName);
 		bladeUser.setUserName(userName);
 		bladeUser.setNickName(nickName);
+		detail.put("tenantName",tenantName);
+		detail.put("deptName",deptName);
+		detail.put("email",email);
+		detail.put("secretGrade",secretGrade);
 		bladeUser.setDetail(detail);
 		return bladeUser;
 	}
diff --git a/Source/UBCS-WEB/public/public/index.html b/Source/UBCS-WEB/public/public/index.html
index 97e0df0..a43a165 100644
--- a/Source/UBCS-WEB/public/public/index.html
+++ b/Source/UBCS-WEB/public/public/index.html
@@ -19,6 +19,8 @@
   <script src="<%= BASE_URL %>cdn/xlsx/FileSaver.min.js"></script>
   <script src="<%= BASE_URL %>cdn/xlsx/xlsx.full.min.js"></script>
   <link rel="icon" href="<%= BASE_URL %>favicon.png">
+  <script src="https://cdn.staticfile.org/FileSaver.js/2014-11-29/FileSaver.min.js"></script>
+  <script src="https://cdn.staticfile.org/xlsx/0.18.2/xlsx.full.min.js"></script>
   <title>ubcs浼佷笟骞冲彴</title>
   <style>
     html,
diff --git a/Source/UBCS-WEB/src/api/GetItem.js b/Source/UBCS-WEB/src/api/GetItem.js
index 9281bd4..f19df54 100644
--- a/Source/UBCS-WEB/src/api/GetItem.js
+++ b/Source/UBCS-WEB/src/api/GetItem.js
@@ -51,6 +51,8 @@
   return request({
     url: 'api/ubcs-code/mdmEngineController/getFlowdUIInfoByClassifyOid',
     method: 'get',
-    data
+    params:{
+      ...data
+    }
   })
 }
diff --git a/Source/UBCS-WEB/src/components/Crud/VciMasterCrud.vue b/Source/UBCS-WEB/src/components/Crud/VciMasterCrud.vue
index 9e419a2..26286f1 100644
--- a/Source/UBCS-WEB/src/components/Crud/VciMasterCrud.vue
+++ b/Source/UBCS-WEB/src/components/Crud/VciMasterCrud.vue
@@ -2,7 +2,7 @@
   <basic-container>
     <div class="main">
       <div class="top">
-        <div class="testbox">
+        <div class="testbox" style="">
           <div>
             <!-- <el-button plain size="small" type="primary" @click="addvisible = true">澧炲姞
             </el-button>
@@ -27,9 +27,10 @@
               style="width: 180px; margin-left: 5px; margin-top: 10px"></el-input> -->
 
           </div>
-          <el-row style="height: 700px; width: 100%">
+          <el-row style="width: 100%;margin-bottom: 20px">
             <div>
-              <el-button v-for="(item, index) in masterVrBtnList" :key="index" plain size="small" type="primary" v-if="!['PREVIEW', 'DELETEFILE', 'revisefile', 'DOWNLOADFILE', 'UPLOADFILE'].includes(item.uniqueFlag)"
+              <el-button v-for="(item, index) in masterVrBtnList" :key="index" plain size="small" type="primary"
+                         v-if="!['PREVIEW', 'DELETEFILE', 'revisefile', 'DOWNLOADFILE', 'UPLOADFILE'].includes(item.uniqueFlag)"
                          @click="handelBtnClick(item)">{{
                   item.name
                 }}
@@ -37,8 +38,8 @@
               <el-input v-model="WupinFindValue" placeholder="璇疯緭鍏ュ叧閿瓧鎸夊洖杞︽煡璇�"
                         size="small" style="width: 180px; margin-left: 5px; margin-top: 10px"></el-input>
             </div>
-            <el-table v-if="tableData.length != 0" v-loading="isLoading" :data="tableData" max-height="700" style=""
-                      @cell-click="handleCellClick" @selection-change="handleSelectionChange" @sort-change="sortChange">
+            <el-table v-if="tableData.length != 0" v-loading="isLoading" :data="tableData" :height="tableHeight" ref="dataTable"
+                      @cell-click="handleCellClick" @row-click="handleRowClick" @select="handleSelection" @select-all="handleSelectionAll" @selection-change="handleSelectionChange" @sort-change="sortChange">
               <el-table-column fixed type="selection" width="55"></el-table-column>
               <el-table-column fixed label="搴忓彿" type="index" width="55">
               </el-table-column>
@@ -50,25 +51,31 @@
               </el-table-column>
             </el-table>
           </el-row>
+<!--          鏂板-->
           <FormTemplateDialog :codeClassifyOid="this.codeClassifyOid" :codeRuleOid="this.codeRuleOid"
                               :disabledProp="disabledProp" :templateOid="templateOid" :visible.sync="addvisible" type="add"
                               @submit="AddSumbit">
           </FormTemplateDialog>
+<!--          淇敼-->
           <FormTemplateDialog :codeClassifyOid="this.codeClassifyOid" :codeRuleOid="this.codeRuleOid"
                               :disabledProp="disabledProp" :rowOid="rowOid" :templateOid="templateOid" :title="'淇敼缂栫爜淇℃伅'"
                               :visible.sync="editvisible"
                               type="edit" @submit="EditSumbit"></FormTemplateDialog>
+<!--          宸插彂甯冩暟鎹慨鏀�-->
           <FormTemplateDialog :codeClassifyOid="this.codeClassifyOid" :codeRuleOid="this.codeRuleOid"
                               :disabledProp="disabledProp" :rowOid="rowOid" :templateOid="templateOid" :title="'宸插彂甯冩暟鎹洿鏀�'"
                               :type="edit"
                               :visible.sync="DataVisible"></FormTemplateDialog>
+<!--          鍙戝竷-->
           <set-personnel :parameter="this.parameter" :visible.sync="visibleFlow"></set-personnel>
+<!--          楂樼骇鏌ヨ-->
           <advanced-query :options="this.options" :visible.sync="findvisible" @echoContion="echoContion"></advanced-query>
+
           <integration-transfer :data="transferData" :props="transferProps" :visible.sync="dialogPush"
                                 @save="handelTransferSave"></integration-transfer>
           <ResembleQueryDialog :codeClassifyOid="codeClassifyOid" :codeRuleOid="this.codeRuleOid" :rowOid="rowOid"
                                :templateOid="templateOid" :visible.sync="similarVisible"></ResembleQueryDialog>
-        </div>
+
         <div class="block" style="display: flex; justify-content: flex-end">
           <el-pagination :current-page="page.currentPage" :page-size="page.pageSizes" :page-sizes="page.pageSizes"
                          :total="page.total" layout="total, sizes, prev, pager, next, jumper"
@@ -76,11 +83,12 @@
                          @current-change="handleCurrentChange">
           </el-pagination>
         </div>
+      </div>
         <BatchImport v-if="batchImportData.visible" v-bind="batchImportData" :visible.sync="batchImportData.visible">
         </BatchImport>
       </div>
       <div class="bottom">
-        <el-collapse v-model="visibleNames">
+        <el-collapse v-model="visibleNames" @change="handleCollapse">
           <el-collapse-item title="闄勪欢鍒楄〃" name="1">
             <fileInHtml :options="fileOptions"></fileInHtml>
           </el-collapse-item>
@@ -196,6 +204,7 @@
         datetime: "datetime",
       },
       tableData: [],
+      tableHeight:'calc(100vh - 330px)',
       DataVisible: false,
       tableHeadData: [],
       items: {},
@@ -210,12 +219,13 @@
       // 涓绘暟鎹寜閽�
       masterVrBtnList: [],
       fileOptions:{
-        ownbizOid:"1",
-        ownbizBtm:"1",
+        ownbizOid:"0",
+        ownbizBtm:"0",
         fileDocClassify:'!=processAuditSuggest',
         fileDocClassifyName:'',
         hasDownload:true,
-        hasUpload:true
+        hasUpload:true,
+        height:100
       }
     };
   },
@@ -273,7 +283,7 @@
     templateOid: {
       handler(newval, oldval) {
         this.parameter.code = newval;
-        this.fileOptions.ownbizOid="1";
+        this.fileOptions.ownbizOid="0";
         this.parameter.vars.templateOid = newval
       },
       deep: true,
@@ -288,6 +298,16 @@
     }
   },
   methods: {
+    //灞曞紑闄勪欢
+    handleCollapse(activeNames) {
+      if (activeNames.length > 0) {
+        this.tableHeight = 'calc(100vh - 630px)';
+        this.$refs.dataTable.doLayout()
+      } else {
+        this.tableHeight = 'calc(100vh - 330px)';
+        this.$refs.dataTable.doLayout()
+      }
+    },
     // 鍙戝竷
     setHandler() {
       if (this.selectRow.length <= 0) {
@@ -325,6 +345,7 @@
       this.getListCodeByClassId();
     },
     async getListCodeByClassId() {
+      this.dialogPush=true;
       this.transferData = [];
       const response = await listCodeAttributeByClassId({
         codeClassifyId: this.codeClassifyOid,
@@ -333,6 +354,9 @@
         const data = response.data.data;
         this.transferData = data;
       }
+    },
+    handelTransferSave(val){
+      console.log('鍙戝竷',val)
     },
     rend() {
       this.tableData = this.tableHeadData;
@@ -359,9 +383,10 @@
       this.editShow = column.property;
       this.rowOid = row.oid;
     },
-    handleRowClick(row,column){
-      this.fileOptions.ownbizOid= row.oid;
-      this.fileOptions.ownbizBtm=row.btmname;
+    handleRowClick(row, column) {
+      this.fileOptions.ownbizOid = row.oid;
+      this.fileOptions.ownbizBtm = row.btmname;
+      this.$refs.dataTable.toggleRowSelection(row);
     },
     //鍒犻櫎
     enumDeleteRow(row) {
@@ -457,9 +482,15 @@
       });
     },
     //閫夋嫨
-    handleSelection(list,row) {
-      this.fileOptions.ownbizOid= row.oid;
-      this.fileOptions.ownbizBtm=row.btmname;
+    handleSelection(list, row) {
+      this.fileOptions.ownbizOid = row.oid;
+      this.fileOptions.ownbizBtm = row.btmname;
+
+    },
+    //閫夋嫨鍏ㄩ儴
+    handleSelectionAll() {
+      this.fileOptions.ownbizOid = '0';
+      this.fileOptions.ownbizBtm = '0';
 
     },
     //缂栬緫
@@ -517,7 +548,7 @@
     AddSumbit(val) {
       this.addvisible = false;
       console.log(val)
-      addSaveCode(val).then(res=>{
+      addSaveCode(val).then(res => {
         console.log(res)
         this.$nextTick(() => {
           this.onLoad()
@@ -527,11 +558,11 @@
     EditSumbit(val) {
       this.editvisible = false;
       console.log(val)
-     editSaveCode(val).then(res=>{
-       console.log(res)
-       this.$nextTick(() => {
-         this.onLoad()
-       })
+      editSaveCode(val).then(res => {
+        console.log(res)
+        this.$nextTick(() => {
+          this.onLoad()
+        })
       })
     },
     openBatchImport(type) {
@@ -539,7 +570,7 @@
       this.batchImportData.type = type
       this.batchImportData.codeClassifyOid = this.codeClassifyOid
     }
-  },
+  }
 };
 </script>
 
@@ -571,7 +602,10 @@
 
 .bottom {
   margin-top: 20px;
-  max-height: 43%;
   overflow-y: scroll;
 }
+
+.el-collapse-item__content{
+  padding-bottom: 0;
+}
 </style>
diff --git a/Source/UBCS-WEB/src/components/FormTemplate/index.vue b/Source/UBCS-WEB/src/components/FormTemplate/index.vue
index bd8484d..68f7141 100644
--- a/Source/UBCS-WEB/src/components/FormTemplate/index.vue
+++ b/Source/UBCS-WEB/src/components/FormTemplate/index.vue
@@ -3,7 +3,8 @@
     :visible.sync="dialogVisible"
     v-if="dialogVisible"
     v-dialogDrag
-    top="5vh"
+    top="-5vh"
+    class="avue-dialog avue-dialog--top"
     :title="title"
     :width="width"
     append-to-body
@@ -313,13 +314,13 @@
       if (!formValidate) return;
       let codeValidate = true;
       // 杩涜鐮佸�肩敵璇锋牎楠�
-      if (this.showCodeApply) {
-        codeValidate = await this.$refs.CodeApply.validate();
-        if (!codeValidate) {
-          this.activeName = "codeApply";
-          return false;
-        }
-      }
+      // if (this.showCodeApply) {
+      //   codeValidate = await this.$refs.CodeApply.validate();
+      //   if (!codeValidate) {
+      //     this.activeName = "codeApply";
+      //     return false;
+      //   }
+      // }
       let resembleQueryList = [];
       if (this.$refs.resembleQueryRef) {
         // 杩涜鐩镐技椤规煡璇�
diff --git a/Source/UBCS-WEB/src/components/Master/MasterTree.vue b/Source/UBCS-WEB/src/components/Master/MasterTree.vue
index 9c1c430..cf5f526 100644
--- a/Source/UBCS-WEB/src/components/Master/MasterTree.vue
+++ b/Source/UBCS-WEB/src/components/Master/MasterTree.vue
@@ -116,13 +116,20 @@
     },
     //琛ㄦ牸澶撮儴
     TableHeadRend() {
-      return new Promise((resolve,reject)=>{
+      return new Promise((resolve, reject) => {
         MasterTable({
           codeClassifyOid: this.nodeClickList.oid,
           functionId: 5,
         }).then(res => {
-          console.log(res.data.buttons)
-          this.masterVrBtnList = res.data.buttons
+          console.log('1-', res.data)
+          console.log('123-', res.data.buttons)
+          const flagsToDeleteBtn = ["CODEIMPORTHISTORY", "CODEBATCHADD", "CODESTARTPROCESS", "CODEEXPORT", "CODEQUERY"];
+          //涓嶅悓鑺傜偣鏄剧ず涓嶅悓鎸夐挳
+          if (!res.data.leaf) {
+            this.masterVrBtnList = res.data.buttons.filter(obj => flagsToDeleteBtn.includes(obj.uniqueFlag));
+          } else {
+            this.masterVrBtnList = res.data.buttons
+          }
           this.tableHeadDataFateher = res.data;
           this.templateOids = res.data.tableDefineVO.oid;
           let List = res.data.tableDefineVO.cols[0];
@@ -134,14 +141,14 @@
               sortable: item.sort,
               width: item.minWidth
             };
-         this.tableHeadFindData.push(columnItem)
+            this.tableHeadFindData.push(Object.assign(item, columnItem))
             // console.log(' this.tableHeadFindData', this.tableHeadFindData)
           })
           this.$emit('tableHeadDataFateher', this.tableHeadDataFateher);
           this.$emit('tableHeadFindData', this.tableHeadFindData);
           this.$emit('tableHeadBttoms', this.masterVrBtnList);
           resolve();
-        }).catch(err=>{
+        }).catch(err => {
           reject(err)
         })
       })
@@ -156,7 +163,7 @@
         this.TableRend(); // TableHeadRend() 鏂规硶瀹屾垚鍚庡啀鎵ц TableRend()
         this.$emit('nodeClick',this.templateOids)
         this.$emit("codeClassifyOid", this.nodeClickList.oid )
-        console.log('鏍�',this.nodeClickList.oid)
+        console.log('鏍�',this.nodeClickList)
       } catch (error) {
         // 澶勭悊閿欒
         this.$message.error(error)
diff --git a/Source/UBCS-WEB/src/components/Tree/attrCrud.vue b/Source/UBCS-WEB/src/components/Tree/attrCrud.vue
index 5e22116..7c68f93 100644
--- a/Source/UBCS-WEB/src/components/Tree/attrCrud.vue
+++ b/Source/UBCS-WEB/src/components/Tree/attrCrud.vue
@@ -374,6 +374,7 @@
       editingRows: null,
       editShows:"",
       attrFlag: false,
+      referObject:{},
       //缂栫爜鐢宠棰勮option
       applicationoption: {
         column: []
@@ -1391,6 +1392,7 @@
     //鍙傜収閰嶇疆瀛愮粍浠�
     echoReferConfig(val){
       console.log('val--',val)
+      this.referObject=val
       this.$set(this.CurrentCell,'referConfig',JSON.stringify(val))
 
     },
diff --git a/Source/UBCS-WEB/src/components/file/main.vue b/Source/UBCS-WEB/src/components/file/main.vue
index 44b5166..2391abf 100644
--- a/Source/UBCS-WEB/src/components/file/main.vue
+++ b/Source/UBCS-WEB/src/components/file/main.vue
@@ -7,7 +7,6 @@
                :before-open="beforeOpen"
                :permission="permissionList"
                v-model="form"
-               :height="options.height || 200"
                ref="crud"
                @row-del="rowDel"
                @search-change="searchChange"
@@ -88,10 +87,10 @@
       hasDel:validatenull(this.options.hasDel) ? true :this.options.hasDel,
       hasDownload:validatenull(this.options.hasDownload) ? true :this.options.hasDownload,
       option: {
-        height:(this.options.tableHeight?this.options.tableHeight:'auto'),
+        height:(this.options.tableHeight?this.options.tableHeight:'200'),
         calcHeight: 30,
         tip: false,
-        searchShow: true,
+        searchShow: false,
         searchMenuSpan: 6,
         border: true,
         index: true,
diff --git a/Source/UBCS-WEB/src/components/template/Stage.vue b/Source/UBCS-WEB/src/components/template/Stage.vue
deleted file mode 100644
index 8fe6216..0000000
--- a/Source/UBCS-WEB/src/components/template/Stage.vue
+++ /dev/null
@@ -1,249 +0,0 @@
-<template>
-    <div>
-        <avue-crud ref="crud" :table-loading="loading" :data="data" :option="option" :page.sync="page"
-            @on-load="getDataList" @size-change="handleSizePage" @current-change="handleCurrentPage"
-            @row-click="handleRowClick">
-            <template slot-scope="{type,size,row,index}" slot="menu">
-                <el-button icon="el-icon-check" :size="size" :type="type"
-                    @click="handleMaintenance(row, index)">缁存姢</el-button>
-            </template>
-        </avue-crud>
-        <el-dialog title="妯℃澘闃舵" width="50%"  append-to-body="true" :visible.sync="dialogNode">
-            <avue-crud ref="crud" :table-loading="loading" :data="stageData" :option="stageOption" @on-load="getStagelist"
-                @row-click="handleRowStageClick">
-                <template slot-scope="{type,size,row,index}" slot="menu">
-                    <el-button icon="el-icon-check" :size="size" :type="type"
-                        @click="handleMaintenanceTransfer(row, index)">缁存姢</el-button>
-                </template>
-            </avue-crud>
-        </el-dialog>
-        <table-transfer v-if="flag" :visible.sync="dialogTransfer" v-model="attributeValue" :dataList="attributeData"
-            :columns="columns" keyName="oid" @save="handleSave" @close="handelClose"></table-transfer>
-    </div>
-</template>
-
-<script>
-import { getFlowpathList, stagelist, attributeListRight, attributeList, attributeSave } from '@/api/template/flowpath.js'
-import TableTransfer from '@/components/template/TableTransfer'
-export default {
-    name: 'Stage',
-    components: {
-        TableTransfer
-    },
-    props: {
-        code: {
-            typeof: String,
-            required: true,
-            default: ""
-        }
-    },
-    watch: {
-
-    },
-    data() {
-        const options = {
-            height: "auto",
-            border: true,
-            addBtn: false,
-            align: 'center',
-            menuAlign: 'center',
-            index: true,
-            searchMenuSpan: 8,
-            searchBtn: false,
-            emptyBtn: false,
-            columnBtn: false,
-            delBtn: false,
-            refreshBtn: false,
-            header: false,
-            editBtn: false,
-        }
-        return {
-            attributeData: [],
-            attributeValue: [],
-            flag: false,
-            dialogTransfer: false,
-            dialogNode: false,
-            visibleTable: false,
-            loading: false,
-            page: {
-                currentPage: 1,
-                pageSize: 10,
-                total: 0
-            },
-            modelKey: '',
-            data: [],
-            stageData: [],
-            saveParam: {},
-            columns: [
-                {
-                    key: "oid",
-                    label: "oid",
-                    visible: false,
-                },
-                {
-                    key: "id",
-                    label: "灞炴�х紪鍙�",
-                    visible: true,
-                },
-                {
-                    key: "name",
-                    label: "灞炴�у悕绉�",
-                    visible: true,
-                },
-                {
-                    key: "attributeGroup",
-                    label: "灞炴�у垎缁�",
-                    visible: true,
-                },
-            ],
-            option: {
-                ...options,
-                column: [
-                    { label: '妯℃澘缂栧彿', prop: 'modelKey' },
-                    { label: '妯℃澘鍚嶇О', prop: 'modelName' },
-                    { label: '鎻忚堪', prop: 'buttonTypeValue' },
-                ]
-            },
-            stageOption: {
-                ...options,
-              height:620,
-                column: [
-                    { label: '闃舵缂栧彿', prop: 'taskId' },
-                    { label: '闃舵鍚嶇О', prop: 'taskName' },
-                ]
-            },
-        }
-    },
-    methods: {
-        setTable(data, list) {
-            return data.map(item => {
-                if (list.length !== 0) {
-                    list.forEach(element => {
-                        if (item.id === element.attrId) item.checked = true
-                    });
-                }
-                return item
-            })
-        },
-        // 鑾峰彇鍒楄〃
-        async getDataList() {
-            this.loading = false
-            const { pageSize, currentPage } = this.page
-            let param = { size: pageSize, current: currentPage }
-            const response = await getFlowpathList({ ...param, ...{ templateId: this.code } })
-            if (response.status === 200) {
-                console.log(response)
-                this.loading = false
-                const data = response.data.data
-                this.data = data.records
-                this.page.total = data.total
-            } else this.loading = false
-        },
-        // 鑾峰彇闃舵鍒楄〃
-        async getStagelist() {
-            this.loading = false
-            console.log(this.modelKey)
-            const response = await stagelist({ modelKey: this.modelKey })
-            if (response.status === 200) {
-                this.loading = false
-                console.log(response.data)
-                this.stageData = response.data.data
-            } else this.loading = false
-        },
-        // 鑾峰彇鍏ㄩ儴灞炴��
-        async getAttributeList() {
-            const response = await attributeList({ 'conditionMap[classifyTemplateOid]': this.code })
-            const responseRight = await attributeListRight({ templateId: this.code, modelKey: this.modelKey, taskId: this.saveParam.taskId })
-            if (response.status === 200 && responseRight.status === 200) {
-                let datas = response.data.data.records
-                let dataRight = responseRight.data.data
-                datas = datas.map(item => {
-                    const { oid, id, name, attributeGroup } = item
-                    item = { oid, id, name, attributeGroup, ...{ checked: false } }
-                    if (dataRight.length !== 0) {
-                        dataRight.forEach(element => { if (item.id === element.attrId) item.checked = true });
-                    }
-                    return item
-                })
-                console.log(datas)
-                let dataValue = datas.map(item => item.checked ? item.oid : undefined)
-                this.attributeValue = dataValue.filter(item => item)
-                this.attributeData = datas
-                this.flag = true
-            }
-        },
-        // 鑾峰彇宸蹭繚瀛樺睘鎬�
-        async getAttributeListRight() {
-            const response = await attributeListRight({ templateId: this.code, modelKey: this.modelKey, taskId: this.saveParam.taskId })
-            if (response.status === 200) {
-                let data = response.data.data
-                data = data.map(item => {
-                    const { attrId, attrName, attrGroup } = item
-                    return { attrId, attrName, attrGroup }
-                })
-                this.listRight = data
-            }
-        },
-        // 缁存姢
-        handleMaintenance(row) {
-            console.log(row)
-            this.dialogNode = true
-            this.modelKey = row.modelKey
-            this.saveParam.modelKey = row.modelKey
-            this.getStagelist()
-        },
-        // 缁存姢
-        handleMaintenanceTransfer(row) {
-            this.saveParam.taskId = row.taskId
-            this.saveParam.taskName = row.taskName
-            this.getAttributeList()
-            this.$nextTick(() => {
-                this.dialogTransfer = true
-            })
-        },
-        handleRowClick(row) {
-            console.log(row)
-            this.modelKey = row.modelKey
-            this.saveParam.modelKey = row.modelKey
-            this.dialogNode = true
-        },
-        handleRowStageClick(row) {
-            this.saveParam.taskId = row.taskId
-            this.saveParam.taskName = row.taskName
-            this.getAttributeList()
-            this.$nextTick(() => {
-                this.dialogTransfer = true
-            })
-        },
-        async handleSave(event) {
-            console.log(event)
-            const data = event.map(item => {
-                const { id, name, attributeGroup } = item
-                return { attrId: id, attrName: name, attrGroup: attributeGroup }
-            })
-            let param = {
-                templateId: this.code,
-                processStageAttr: data,
-                ...this.saveParam
-            }
-            console.log(this.saveParam)
-            console.log(data)
-            const response = await attributeSave(param)
-            if (response.status === 200) {
-                // loading()
-                console.log(response)
-                this.$message({
-                    type: 'success',
-                    message: '鏂板鏁版嵁鎴愬姛锛�'
-                })
-                this.flag = false
-                // done()
-                // this.getDataList()
-            }
-        },
-        handelClose() {
-            this.flag = false
-        }
-    }
-}
-</script>
diff --git a/Source/UBCS-WEB/src/components/work/BusinessWork.vue b/Source/UBCS-WEB/src/components/work/BusinessWork.vue
index 3597bfa..ff955e8 100644
--- a/Source/UBCS-WEB/src/components/work/BusinessWork.vue
+++ b/Source/UBCS-WEB/src/components/work/BusinessWork.vue
@@ -22,17 +22,25 @@
       :show-overflow-tooltip="true"
       align="center"
     >
-      <!-- 缂栬緫鍜屽睍绀洪�昏緫 -->
-      <!--              <template slot-scope="{ row }">-->
-      <!--                <el-input v-if="editingRow === row && editShow== item.prop" v-model="row[item.prop]" @blur="saveRow"></el-input>-->
-      <!--                <span v-else>{{row[item.prop]}}</span>-->
-      <!--                <el-switch-->
-      <!--                  v-if="editShow === 'true'"-->
-      <!--                  v-model="row[item.prop]"-->
-      <!--                  active-color="#13ce66"-->
-      <!--                  inactive-color="#ff4949">-->
-      <!--                </el-switch>-->
-      <!--              </template>-->
+      <template slot-scope="{ row }">
+        <el-input v-if="editingRow === row && editShow== item.prop && item.prop != 'codeDateFormat' && (item.edit == 'text'  ||item.edit == 'refer' )" v-model="row[item.prop]"
+                  @blur="editingRows=null"></el-input>
+        <el-input-number size="small" controls-position="right" v-if="editingRow === row && editShow== item.prop && item.edit == 'number'" v-model="row[item.prop]"
+                         @blur="editingRows=null" :style="{width:(item.width-10)+'px'}"></el-input-number>
+        <el-select v-model="row[item.prop]" filterable  allow-create  default-first-option slot="prepend" v-if="editingRow === row && editShow== item.prop && item.edit == 'select' " @blur="editingRows=null">
+          <el-option
+            v-for="optionItem in item.data"
+            :key="optionItem.dictValue"
+            :label="optionItem.dictValue"
+            :value="optionItem.dictValue">
+          </el-option>
+        </el-select>
+        <el-switch
+          v-if="item.edit === 'switch' || item.edit === 'truefalse'" v-model="row[item.prop]" active-value="true"
+          inactive-value="false">
+        </el-switch>
+        <span v-else>{{ row[item.prop] }}</span>
+      </template>
     </el-table-column>
   </el-table>
 </div>
@@ -53,16 +61,22 @@
       tableData:[],
       editingRow: null,
       editShow: "",
-      editAttr: ""
+      editAttr: "",
+      columnType: {
+        text: "input",
+        combox: "select",
+        truefalse: "switch",
+        number: "number",
+        datetime: "datetime",
+      }
     }
   },
   watch:{
     ids:{
       handler(newval,oldval){
         this.BuinessOids=newval;
+        this.CrudHeaderRend()
         this.BuinseseRend()
-        console.log(newval)
-        console.log(this.BuinessOids)
       },
       deep:true
     }
@@ -78,11 +92,16 @@
     //琛ㄦ牸澶存覆鏌�
     CrudHeaderRend() {
       if (this.codeClassifyOid != "") {
+        var data=new FormData()
+        data.append('templateId', this.templateId)
+        data.append('taskId', this.taskId)
+        data.append('modelKey', this.modelKey)
+        data.append('codeClassifyOid', this.codeClassifyOid)
         FlowTable({
-          templateId: this.templateId,
-          taskId	: this.taskId	,
-          modelKey: this.modelKey,
-          codeClassifyOid: this.codeClassifyOid
+          'templateId': this.templateId,
+          'taskId': this.taskId,
+          'modelKey': this.modelKey,
+          'codeClassifyOid': this.codeClassifyOid
         }).then((res) => {
           this.options = res.data.tableDefineVO.seniorQueryColumns;
           this.List = res.data.tableDefineVO.cols[0];
@@ -106,8 +125,12 @@
                   return row[column.property] == 'true' || row[column.property] == '1' ? '鏄�' : '鍚�'
                 }
               }
+              if (item.edit == 'select') {
+                //闇�瑕佽幏鍙栦笅鎷夋鏁版嵁
+                columnItem.data=[]
+              }
             }
-            this.tableHeadData.push(columnItem)
+            this.tableHeadData.push(Object.assign(item, columnItem))
           });
         });
       }
@@ -122,7 +145,7 @@
       })
     },
     // 鐩戝惉鍗曞厓鏍肩偣鍑讳簨浠跺苟瀛樺偍姝e湪缂栬緫鐨勮
-    handleCellClick(row, column) {
+    handleCellClick(row, column, cell, event) {
       this.editingRow = row;
       this.editShow = column.property;
     },
diff --git a/Source/UBCS-WEB/src/views/integration/integrationTransfer.vue b/Source/UBCS-WEB/src/views/integration/integrationTransfer.vue
index 892bd7a..4bd65f3 100644
--- a/Source/UBCS-WEB/src/views/integration/integrationTransfer.vue
+++ b/Source/UBCS-WEB/src/views/integration/integrationTransfer.vue
@@ -1,5 +1,5 @@
 <template>
-    <el-dialog :title="title" :visible.sync="dialogVisible" append-to-body="true" destroy-on-close width="30%"
+    <el-dialog :title="title" :visible.sync="dialogVisible" append-to-body="true" destroy-on-close width="35%"
         @close="handelClose">
         <el-form :model="form">
             <el-form-item label="鏌ヨ鏉′欢" label-width="70px" size="small">
@@ -138,4 +138,4 @@
     padding: 10px 0;
     color: #F56C6C;
 }
-</style>
\ No newline at end of file
+</style>
diff --git a/Source/UBCS-WEB/vue.config.js b/Source/UBCS-WEB/vue.config.js
index ad43a75..6b13b4e 100644
--- a/Source/UBCS-WEB/vue.config.js
+++ b/Source/UBCS-WEB/vue.config.js
@@ -26,12 +26,12 @@
     proxy: {
       '/api': {
         //鏈湴鏈嶅姟鎺ュ彛鍦板潃
-        target: 'http://localhost:37000',
+        // target: 'http://localhost:37000',
         // target: 'http://192.168.1.51:37000',
-        // target: 'http://192.168.1.46:37000',
+        //target: 'http://192.168.1.46:37000',
         // target: 'http://dev.vci-tech.com:37000',
         // target: 'http://192.168.1.51:37000/',
-        // target: 'http://192.168.1.104:37000',
+         target: 'http://192.168.1.104:37000',
         // target: 'http://192.168.1.63:37000',
         // target: 'http://192.168.3.7:37000',
         // target: 'http://192.168.1.51:37000/',
diff --git a/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeUserDetails.java b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeUserDetails.java
index e3bb798..42e295f 100644
--- a/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeUserDetails.java
+++ b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeUserDetails.java
@@ -40,6 +40,10 @@
 	 */
 	private final String tenantId;
 	/**
+	 * 绉熸埛鍚嶇О
+	 */
+	private String tenantName;
+	/**
 	 * 绗笁鏂硅璇両D
 	 */
 	private final String oauthId;
@@ -59,6 +63,10 @@
 	 * 閮ㄩ棬id
 	 */
 	private final String deptId;
+	/**
+	 * 閮ㄩ棬鍚嶇О
+	 */
+	private String deptName;
 	/**
 	 * 宀椾綅id
 	 */
@@ -84,6 +92,10 @@
 	 * 鐢ㄦ埛瀵嗙骇
 	 */
 	private String secretGrade;
+	/**
+	 * 閭欢
+	 */
+	private String email;
 
 	/**
 	 * 瀵嗙爜绛栫暐淇敼鐘舵��
@@ -91,7 +103,7 @@
 	private Long strategyUpdateStatus;
 
 
-	public BladeUserDetails(Long userId, String tenantId, String oauthId, String name, String realName, String deptId, String postId, String roleId, String roleName, String avatar, String username, String password, Kv detail,String secretGrade, boolean enabled, boolean accountNonExpired, boolean credentialsNonExpired, boolean accountNonLocked, Collection<? extends GrantedAuthority> authorities,Long strategyUpdateStatus) {
+	public BladeUserDetails(Long userId, String tenantId, String oauthId, String name, String realName, String deptId, String postId, String roleId, String roleName, String avatar, String username, String password, Kv detail,String secretGrade, boolean enabled, boolean accountNonExpired, boolean credentialsNonExpired, boolean accountNonLocked, Collection<? extends GrantedAuthority> authorities,Long strategyUpdateStatus,String tenantName,String deptName,String email) {
 		super(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities);
 		this.userId = userId;
 		this.tenantId = tenantId;
@@ -107,6 +119,9 @@
 		this.detail = detail;
 		this.secretGrade = secretGrade;
 		this.strategyUpdateStatus = strategyUpdateStatus;
+		this.tenantName = tenantName;
+		this.deptName = deptName;
+		this.email = email;
 	}
 
 	public BladeUserDetails(Long userId, String tenantId, String oauthId, String name, String realName, String deptId, String postId, String roleId, String roleName, String avatar, String username, String password, Kv detail, boolean enabled, boolean accountNonExpired, boolean credentialsNonExpired, boolean accountNonLocked, Collection<? extends GrantedAuthority> authorities) {
diff --git a/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeUserDetailsServiceImpl.java b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeUserDetailsServiceImpl.java
index c2c2147..11294a7 100644
--- a/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeUserDetailsServiceImpl.java
+++ b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeUserDetailsServiceImpl.java
@@ -221,7 +221,7 @@
 				BladeUserDetails bladeUserDetails = new BladeUserDetails(user.getId(),
 					user.getTenantId(), StringPool.EMPTY, user.getName(), user.getRealName(), user.getDeptId(), user.getPostId(), user.getRoleId(), Func.join(userInfo.getRoles()), Func.toStr(user.getAvatar(), TokenUtil.DEFAULT_AVATAR),
 					username, AuthConstant.ENCRYPT + user.getPassword(), userInfo.getDetail(),user.getSecretGrade(), true, true, true, true,
-					AuthorityUtils.commaSeparatedStringToAuthorityList(Func.join(result.getData().getRoles())),user.getStrategyUpdateStatus());
+					AuthorityUtils.commaSeparatedStringToAuthorityList(Func.join(result.getData().getRoles())),user.getStrategyUpdateStatus(),tenant.getData().getTenantName(),user.getDeptName(),user.getEmail());
 				return bladeUserDetails;
 			} else {
 				throw new UsernameNotFoundException(result.getMsg());
diff --git a/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/support/BladeJwtTokenEnhancer.java b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/support/BladeJwtTokenEnhancer.java
index 9d625aa..4bf7020 100644
--- a/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/support/BladeJwtTokenEnhancer.java
+++ b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/support/BladeJwtTokenEnhancer.java
@@ -65,6 +65,10 @@
 		info.put(TokenUtil.DETAIL, principal.getDetail());
 		info.put(TokenUtil.LICENSE, TokenUtil.LICENSE_NAME);
 		info.put(TokenUtil.STRATEGYUPDATESTATUS, principal.getStrategyUpdateStatus());
+		info.put(TokenUtil.TENANTNAME, principal.getTenantName());
+		info.put(TokenUtil.DEPTNAME, principal.getDeptName());
+		info.put(TokenUtil.EMAIL, principal.getEmail());
+		info.put(TokenUtil.SECRETGRADE, principal.getSecretGrade());
 		((DefaultOAuth2AccessToken) accessToken).setAdditionalInformation(info);
 
 		//token鐘舵�佽缃�
diff --git a/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/utils/TokenUtil.java b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/utils/TokenUtil.java
index 386b7bc..b24bd0b 100644
--- a/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/utils/TokenUtil.java
+++ b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/utils/TokenUtil.java
@@ -54,6 +54,10 @@
 	public final static String LICENSE = TokenConstant.LICENSE;
 	public final static String LICENSE_NAME = TokenConstant.LICENSE_NAME;
 	public final static String STRATEGYUPDATESTATUS = "strategyUpdateStatus";
+	public final static String TENANTNAME = "tenantName";
+	public final static String DEPTNAME = "deptName";
+	public final static String EMAIL = "email";
+	public final static String SECRETGRADE = "secretGrade";
 
 	public final static String DEPT_HEADER_KEY = "Dept-Id";
 	public final static String ROLE_HEADER_KEY = "Role-Id";
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowTaskDTO.java b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/dto/FlowTaskDTO.java
similarity index 90%
rename from Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowTaskDTO.java
rename to Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/dto/FlowTaskDTO.java
index 98200f6..d58617a 100644
--- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowTaskDTO.java
+++ b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/dto/FlowTaskDTO.java
@@ -14,11 +14,12 @@
  *  this software without specific prior written permission.
  *  Author: Chill 搴勯獮 (smallchill@163.com)
  */
-package com.vci.ubcs.flow.engine.entity;
+package com.vci.ubcs.flow.core.dto;
 
+import com.vci.ubcs.flow.core.entity.FlowTaskUser;
+import com.vci.ubcs.flow.core.entity.ProcessStageAttr;
 import lombok.Data;
 
-import java.io.Serializable;
 import java.util.List;
 import java.util.Map;
 
@@ -28,7 +29,7 @@
  * @author wang1
  */
 @Data
-public class FlowTaskDTO implements Serializable {
+public class FlowTaskDTO extends FlowTaskUser{
 
 	private static final long serialVersionUID = 1L;
 
@@ -61,7 +62,7 @@
 	private Map<String, Object> variables;//娴佺▼鍙傛暟
 
 	//娴佺▼闃舵缁戝畾鐨勫睘鎬�
-	private List<ProcessStageAttr> stageAttrs;
+	private List<ProcessStageAttrDTO> stageAttrs;
 
 
 
diff --git a/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/dto/FlowTaskUserDTO.java b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/dto/FlowTaskUserDTO.java
new file mode 100644
index 0000000..f2ae081
--- /dev/null
+++ b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/dto/FlowTaskUserDTO.java
@@ -0,0 +1,32 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.flow.core.dto;
+
+import com.vci.ubcs.flow.core.entity.FlowTaskUser;
+import lombok.Data;
+
+/**
+ * 娴佺▼姣忎竴涓妭鐐瑰鏍镐汉
+ *
+ * @author wang1
+ */
+@Data
+public class FlowTaskUserDTO extends FlowTaskUser {
+
+	private static final long serialVersionUID = 1L;
+
+}
diff --git a/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/dto/ProcessStageAttrDTO.java b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/dto/ProcessStageAttrDTO.java
new file mode 100644
index 0000000..028af03
--- /dev/null
+++ b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/dto/ProcessStageAttrDTO.java
@@ -0,0 +1,32 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.flow.core.dto;
+
+import com.vci.ubcs.flow.core.entity.ProcessStageAttr;
+import lombok.Data;
+
+/**
+ * 娴佺▼闃舵
+ *
+ * @author wang1
+ */
+@Data
+public class ProcessStageAttrDTO extends ProcessStageAttr {
+
+	private static final long serialVersionUID = 1L;
+
+}
diff --git a/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/dto/ProcessTemplateDTO.java b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/dto/ProcessTemplateDTO.java
new file mode 100644
index 0000000..7c71a09
--- /dev/null
+++ b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/dto/ProcessTemplateDTO.java
@@ -0,0 +1,33 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.flow.core.dto;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.vci.ubcs.flow.core.entity.ProcessTemplate;
+import lombok.Data;
+
+/**
+ * 娴佺▼妯℃澘
+ *
+ * @author wang1
+ */
+@Data
+public class ProcessTemplateDTO extends ProcessTemplate {
+
+	private static final long serialVersionUID = 1L;
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowTaskUser.java b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/entity/FlowTaskUser.java
similarity index 94%
rename from Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowTaskUser.java
rename to Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/entity/FlowTaskUser.java
index fbab2e8..f9d39b3 100644
--- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowTaskUser.java
+++ b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/entity/FlowTaskUser.java
@@ -14,10 +14,9 @@
  *  this software without specific prior written permission.
  *  Author: Chill 搴勯獮 (smallchill@163.com)
  */
-package com.vci.ubcs.flow.engine.entity;
+package com.vci.ubcs.flow.core.entity;
 
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.vci.ubcs.flow.core.utils.TaskUtil;
 import lombok.Data;
 
 import java.io.Serializable;
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/ProcessStageAttr.java b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/entity/ProcessStageAttr.java
similarity index 97%
rename from Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/ProcessStageAttr.java
rename to Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/entity/ProcessStageAttr.java
index 04fa1e8..b6e0e03 100644
--- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/ProcessStageAttr.java
+++ b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/entity/ProcessStageAttr.java
@@ -14,7 +14,7 @@
  *  this software without specific prior written permission.
  *  Author: Chill 搴勯獮 (smallchill@163.com)
  */
-package com.vci.ubcs.flow.engine.entity;
+package com.vci.ubcs.flow.core.entity;
 
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/ProcessTemplate.java b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/entity/ProcessTemplate.java
similarity index 95%
rename from Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/ProcessTemplate.java
rename to Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/entity/ProcessTemplate.java
index 1b69fd8..d59f59c 100644
--- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/ProcessTemplate.java
+++ b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/entity/ProcessTemplate.java
@@ -14,14 +14,13 @@
  *  this software without specific prior written permission.
  *  Author: Chill 搴勯獮 (smallchill@163.com)
  */
-package com.vci.ubcs.flow.engine.entity;
+package com.vci.ubcs.flow.core.entity;
 
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
 import java.io.Serializable;
 import java.util.Date;
-import java.util.List;
 
 /**
  * 娴佺▼妯℃澘
diff --git a/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/feign/IMDMFlowAttrClientFallback.java b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/feign/IMDMFlowAttrClientFallback.java
new file mode 100644
index 0000000..ebf1790
--- /dev/null
+++ b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/feign/IMDMFlowAttrClientFallback.java
@@ -0,0 +1,41 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.flow.core.feign;
+
+import com.vci.ubcs.flow.core.entity.BladeFlow;
+import com.vci.ubcs.flow.core.entity.ProcessStageAttr;
+import com.vci.ubcs.flow.core.vo.ProcessStageAttrVO;
+import org.springblade.core.tool.api.R;
+import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 娴佺▼杩滅▼璋冪敤澶辫触澶勭悊绫�
+ *
+ * @author Chill
+ */
+@Component
+public class IMDMFlowAttrClientFallback implements IMDMIFlowAttrClient {
+
+	@Override
+	public R<List<ProcessStageAttrVO>> ssslist(String templateId, String modelKey, String taskId){
+		return R.fail("杩滅▼璋冪敤澶辫触");
+	}
+}
diff --git a/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/feign/IMDMIFlowAttrClient.java b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/feign/IMDMIFlowAttrClient.java
new file mode 100644
index 0000000..3a8518b
--- /dev/null
+++ b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/feign/IMDMIFlowAttrClient.java
@@ -0,0 +1,55 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.flow.core.feign;
+
+import com.vci.ubcs.flow.core.entity.BladeFlow;
+import com.vci.ubcs.flow.core.entity.ProcessStageAttr;
+import com.vci.ubcs.flow.core.vo.ProcessStageAttrVO;
+import org.springblade.core.launch.constant.AppConstant;
+import org.springblade.core.tool.api.R;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 宸ヤ綔娴佽繙绋嬭皟鐢ㄦ帴鍙�.
+ *
+ * @author Chill
+ */
+@FeignClient(
+	value = AppConstant.APPLICATION_FLOW_NAME,
+	fallback = IMDMFlowAttrClientFallback.class
+)
+public interface IMDMIFlowAttrClient {
+
+	String API_PREFIX = "/mdmflowclient";
+	String GET_FLOW_ATTR_BY = API_PREFIX + "/ssslist";
+
+
+	/**
+	 * 寮�鍚祦绋�
+	 *
+	 * @return BladeFlow
+	 */
+	@PostMapping(GET_FLOW_ATTR_BY)
+	R<List<ProcessStageAttrVO>> ssslist(@RequestParam String templateId, @RequestParam String modelKey, @RequestParam String taskId);
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowTaskUser.java b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/vo/FlowTaskUserVO.java
similarity index 63%
copy from Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowTaskUser.java
copy to Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/vo/FlowTaskUserVO.java
index fbab2e8..3aa997a 100644
--- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowTaskUser.java
+++ b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/vo/FlowTaskUserVO.java
@@ -14,10 +14,10 @@
  *  this software without specific prior written permission.
  *  Author: Chill 搴勯獮 (smallchill@163.com)
  */
-package com.vci.ubcs.flow.engine.entity;
+package com.vci.ubcs.flow.core.vo;
 
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.vci.ubcs.flow.core.utils.TaskUtil;
+import com.vci.ubcs.flow.core.entity.FlowTaskUser;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -29,24 +29,8 @@
  * @author wang1
  */
 @Data
-@TableName("ACT_DE_TASK_USER")
-public class FlowTaskUser implements Serializable {
+public class FlowTaskUserVO extends FlowTaskUser {
 
 	private static final long serialVersionUID = 1L;
 
-	private String id;
-	private String name;//淇濆瓨鐨勮繖涓敹钘忓悕绉�
-	private String modelKey;
-	private String modelName;
-	private String classifyId;
-	private String templateId;
-	private String taskId;//娴佺▼taskid
-	private String taskName;
-	private String userId;
-	private String userName;
-	private String description;
-	private Date created;
-	private Date lastUpdated;
-	private String createdBy;
-	private String lastUpdatedBy;
 }
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowTaskDTO.java b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/vo/FlowTaskVO.java
similarity index 87%
copy from Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowTaskDTO.java
copy to Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/vo/FlowTaskVO.java
index 98200f6..d74ef53 100644
--- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowTaskDTO.java
+++ b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/vo/FlowTaskVO.java
@@ -14,8 +14,10 @@
  *  this software without specific prior written permission.
  *  Author: Chill 搴勯獮 (smallchill@163.com)
  */
-package com.vci.ubcs.flow.engine.entity;
+package com.vci.ubcs.flow.core.vo;
 
+import com.vci.ubcs.flow.core.entity.FlowTaskUser;
+import com.vci.ubcs.flow.core.entity.ProcessStageAttr;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -28,7 +30,7 @@
  * @author wang1
  */
 @Data
-public class FlowTaskDTO implements Serializable {
+public class FlowTaskVO extends FlowTaskUser{
 
 	private static final long serialVersionUID = 1L;
 
@@ -57,11 +59,11 @@
 	private String conditionValue;//鍚屾剰銆侀┏鍥炲埌鐨勪笅涓�涓妭鐐圭殑鏉′欢value
 
 	//娴佺▼涓弬鏁�
-	private List<FlowTaskDTO> toTasks;//娴佺▼涓嬩竴姝ユ寜閽�
+	private List<FlowTaskVO> toTasks;//娴佺▼涓嬩竴姝ユ寜閽�
 	private Map<String, Object> variables;//娴佺▼鍙傛暟
 
 	//娴佺▼闃舵缁戝畾鐨勫睘鎬�
-	private List<ProcessStageAttr> stageAttrs;
+	private List<ProcessStageAttrVO> stageAttrs;
 
 
 
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/ProcessTemplate.java b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/vo/ProcessStageAttrVO.java
similarity index 62%
copy from Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/ProcessTemplate.java
copy to Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/vo/ProcessStageAttrVO.java
index 1b69fd8..945c481 100644
--- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/ProcessTemplate.java
+++ b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/vo/ProcessStageAttrVO.java
@@ -14,35 +14,23 @@
  *  this software without specific prior written permission.
  *  Author: Chill 搴勯獮 (smallchill@163.com)
  */
-package com.vci.ubcs.flow.engine.entity;
+package com.vci.ubcs.flow.core.vo;
 
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.vci.ubcs.flow.core.entity.ProcessStageAttr;
 import lombok.Data;
 
 import java.io.Serializable;
 import java.util.Date;
-import java.util.List;
 
 /**
- * 娴佺▼妯℃澘
+ * 娴佺▼闃舵
  *
  * @author wang1
  */
 @Data
-@TableName("ACT_DE_PROCESS_TEMPLATE")
-public class ProcessTemplate implements Serializable {
+public class ProcessStageAttrVO extends ProcessStageAttr {
 
 	private static final long serialVersionUID = 1L;
 
-	private String id;
-	private String templateId;//褰撳墠妯℃澘id
-	private String modelKey;//娴佺▼妯″瀷key,閮ㄧ讲key
-	private String modelName;//閮ㄧ讲娴佺▼鍚嶇О
-	private String buttonTypeKey;//搴旂敤鎸夐挳,ProcessTemplateTypeEnum鐨刱ey
-	private String buttonTypeValue;//搴旂敤鎸夐挳,ProcessTemplateTypeEnum鐨剉alue
-	private String description;
-	private Date created;
-	private Date lastUpdated;
-	private String createdBy;
-	private String lastUpdatedBy;
 }
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/ProcessTemplate.java b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/vo/ProcessTemplateVO.java
similarity index 62%
copy from Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/ProcessTemplate.java
copy to Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/vo/ProcessTemplateVO.java
index 1b69fd8..b5d005a 100644
--- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/ProcessTemplate.java
+++ b/Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/vo/ProcessTemplateVO.java
@@ -14,14 +14,14 @@
  *  this software without specific prior written permission.
  *  Author: Chill 搴勯獮 (smallchill@163.com)
  */
-package com.vci.ubcs.flow.engine.entity;
+package com.vci.ubcs.flow.core.vo;
 
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.vci.ubcs.flow.core.entity.ProcessTemplate;
 import lombok.Data;
 
 import java.io.Serializable;
 import java.util.Date;
-import java.util.List;
 
 /**
  * 娴佺▼妯℃澘
@@ -29,20 +29,8 @@
  * @author wang1
  */
 @Data
-@TableName("ACT_DE_PROCESS_TEMPLATE")
-public class ProcessTemplate implements Serializable {
+public class ProcessTemplateVO extends ProcessTemplate {
 
 	private static final long serialVersionUID = 1L;
 
-	private String id;
-	private String templateId;//褰撳墠妯℃澘id
-	private String modelKey;//娴佺▼妯″瀷key,閮ㄧ讲key
-	private String modelName;//閮ㄧ讲娴佺▼鍚嶇О
-	private String buttonTypeKey;//搴旂敤鎸夐挳,ProcessTemplateTypeEnum鐨刱ey
-	private String buttonTypeValue;//搴旂敤鎸夐挳,ProcessTemplateTypeEnum鐨剉alue
-	private String description;
-	private Date created;
-	private Date lastUpdated;
-	private String createdBy;
-	private String lastUpdatedBy;
 }
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/feign/MDMFlowAttrClient.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/feign/MDMFlowAttrClient.java
new file mode 100644
index 0000000..a947398
--- /dev/null
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/feign/MDMFlowAttrClient.java
@@ -0,0 +1,67 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.flow.business.feign;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.vci.ubcs.flow.core.entity.BladeFlow;
+import com.vci.ubcs.flow.core.entity.ProcessStageAttr;
+import com.vci.ubcs.flow.core.feign.IMDMIFlowAttrClient;
+import com.vci.ubcs.flow.core.utils.TaskUtil;
+import com.vci.ubcs.flow.core.vo.ProcessStageAttrVO;
+import com.vci.ubcs.flow.engine.service.ProcessStageAttrService;
+import lombok.AllArgsConstructor;
+import org.flowable.engine.IdentityService;
+import org.flowable.engine.RuntimeService;
+import org.flowable.engine.TaskService;
+import org.flowable.engine.runtime.ProcessInstance;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.support.Kv;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.StringUtil;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 娴佺▼杩滅▼璋冪敤瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@NonDS
+@RestController
+@AllArgsConstructor
+public class MDMFlowAttrClient implements IMDMIFlowAttrClient {
+
+	private final ProcessStageAttrService processStageAttrService;
+
+	@Override
+	@PostMapping(GET_FLOW_ATTR_BY)
+	public R<List<ProcessStageAttrVO>> ssslist(@RequestParam String templateId, @RequestParam String modelKey, @RequestParam String taskId) {
+		Map<String, Object> m = new HashMap<>();
+		m.put("template_id", templateId);
+		m.put("task_id", taskId);
+		m.put("model_key", modelKey);
+		QueryWrapper q = Condition.getQueryWrapper(m, ProcessStageAttr.class)
+			.select("attr_id attrId,attr_name attrName,attr_group attrGroup");
+		return R.data(processStageAttrService.list(q));
+	}
+
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowModelController.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowModelController.java
index ff98157..2070d62 100644
--- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowModelController.java
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowModelController.java
@@ -20,7 +20,6 @@
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import com.vci.ubcs.flow.core.utils.TaskUtil;
 import com.vci.ubcs.flow.engine.entity.FlowModel;
-import com.vci.ubcs.flow.engine.entity.FlowTaskUser;
 import com.vci.ubcs.flow.engine.service.FlowEngineService;
 import com.vci.ubcs.flow.engine.service.FlowTaskUserService;
 import io.swagger.annotations.ApiImplicitParam;
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowProcessTSController.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowProcessTSController.java
index d617577..77948aa 100644
--- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowProcessTSController.java
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowProcessTSController.java
@@ -2,9 +2,10 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.vci.ubcs.flow.engine.entity.FlowTaskDTO;
-import com.vci.ubcs.flow.engine.entity.ProcessStageAttr;
-import com.vci.ubcs.flow.engine.entity.ProcessTemplate;
+import com.vci.ubcs.flow.core.dto.FlowTaskDTO;
+import com.vci.ubcs.flow.core.entity.ProcessStageAttr;
+import com.vci.ubcs.flow.core.entity.ProcessTemplate;
+import com.vci.ubcs.flow.core.vo.ProcessStageAttrVO;
 import com.vci.ubcs.flow.engine.service.FlowEngineService;
 import com.vci.ubcs.flow.engine.service.ProcessStageAttrService;
 import com.vci.ubcs.flow.engine.service.ProcessTemplateService;
@@ -88,7 +89,7 @@
 	 * 娴佺▼闃舵锛岃繖涓祦绋�,杩欎釜鑺傜偣锛岀粦瀹氱殑灞炴��
 	 */
 	@GetMapping("/ssslist")
-	public R<List<ProcessStageAttr>> ssslist(@RequestParam String templateId,@RequestParam String modelKey,@RequestParam String taskId) {
+	public R<List<ProcessStageAttrVO>> ssslist(@RequestParam String templateId, @RequestParam String modelKey, @RequestParam String taskId) {
 		Map<String, Object> m = new HashMap<>();
 		m.put("template_id", templateId);
 		m.put("task_id", taskId);
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowTaskUserController.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowTaskUserController.java
index 10a6fdd..0b8613b 100644
--- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowTaskUserController.java
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowTaskUserController.java
@@ -1,6 +1,6 @@
 package com.vci.ubcs.flow.engine.controller;
 
-import com.vci.ubcs.flow.engine.entity.FlowTaskDTO;
+import com.vci.ubcs.flow.core.dto.FlowTaskDTO;
 import com.vci.ubcs.flow.engine.service.FlowTaskUserService;
 import lombok.AllArgsConstructor;
 import org.springblade.core.tenant.annotation.NonDS;
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/VCIFlowController.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/VCIFlowController.java
index 5e7dcd9..15d5c5a 100644
--- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/VCIFlowController.java
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/VCIFlowController.java
@@ -1,7 +1,7 @@
 package com.vci.ubcs.flow.engine.controller;
 
+import com.vci.ubcs.flow.core.dto.FlowTaskDTO;
 import com.vci.ubcs.flow.core.entity.BladeFlow;
-import com.vci.ubcs.flow.engine.entity.FlowTaskDTO;
 import com.vci.ubcs.flow.engine.service.VICFlowService;
 import lombok.AllArgsConstructor;
 import org.springblade.core.tenant.annotation.NonDS;
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/mapper/FlowTaskUserMapper.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/mapper/FlowTaskUserMapper.java
index 9ed1e12..0a97581 100644
--- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/mapper/FlowTaskUserMapper.java
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/mapper/FlowTaskUserMapper.java
@@ -18,8 +18,8 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.vci.ubcs.flow.core.entity.FlowTaskUser;
 import com.vci.ubcs.flow.engine.entity.FlowModel;
-import com.vci.ubcs.flow.engine.entity.FlowTaskUser;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/mapper/ProcessStageAttrMapper.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/mapper/ProcessStageAttrMapper.java
index f3cf847..49220dd 100644
--- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/mapper/ProcessStageAttrMapper.java
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/mapper/ProcessStageAttrMapper.java
@@ -17,7 +17,7 @@
 package com.vci.ubcs.flow.engine.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.vci.ubcs.flow.engine.entity.ProcessStageAttr;
+import com.vci.ubcs.flow.core.entity.ProcessStageAttr;
 
 /**
  * 娴佺▼闃舵
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/mapper/ProcessTemplateMapper.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/mapper/ProcessTemplateMapper.java
index 574fd9d..0ab3112 100644
--- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/mapper/ProcessTemplateMapper.java
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/mapper/ProcessTemplateMapper.java
@@ -17,8 +17,7 @@
 package com.vci.ubcs.flow.engine.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.vci.ubcs.flow.engine.entity.FlowTaskUser;
-import com.vci.ubcs.flow.engine.entity.ProcessTemplate;
+import com.vci.ubcs.flow.core.entity.ProcessTemplate;
 
 /**
  * 娴佺▼妯℃澘
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/FlowEngineService.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/FlowEngineService.java
index 1d9ed3e..6739640 100644
--- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/FlowEngineService.java
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/FlowEngineService.java
@@ -18,11 +18,11 @@
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.vci.ubcs.flow.core.dto.FlowTaskDTO;
 import com.vci.ubcs.flow.core.entity.BladeFlow;
 import com.vci.ubcs.flow.engine.entity.FlowExecution;
 import com.vci.ubcs.flow.engine.entity.FlowModel;
 import com.vci.ubcs.flow.engine.entity.FlowProcess;
-import com.vci.ubcs.flow.engine.entity.FlowTaskDTO;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/FlowTaskUserService.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/FlowTaskUserService.java
index 0132fc3..f19149d 100644
--- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/FlowTaskUserService.java
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/FlowTaskUserService.java
@@ -17,6 +17,8 @@
 package com.vci.ubcs.flow.engine.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.vci.ubcs.flow.core.dto.FlowTaskDTO;
+import com.vci.ubcs.flow.core.entity.FlowTaskUser;
 import com.vci.ubcs.flow.engine.entity.*;
 
 import java.util.List;
@@ -54,5 +56,5 @@
 	 * @param modelKey
 	 * @return
 	 */
-	List<FlowTaskUser> getTaskUserByTemplateAndModelKey(String templateId,String modelKey);
+	List<FlowTaskUser> getTaskUserByTemplateAndModelKey(String templateId, String modelKey);
 }
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/ProcessStageAttrService.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/ProcessStageAttrService.java
index e8fd0f3..b1f0035 100644
--- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/ProcessStageAttrService.java
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/ProcessStageAttrService.java
@@ -17,8 +17,8 @@
 package com.vci.ubcs.flow.engine.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.vci.ubcs.flow.engine.entity.FlowTaskDTO;
-import com.vci.ubcs.flow.engine.entity.ProcessStageAttr;
+import com.vci.ubcs.flow.core.dto.FlowTaskDTO;
+import com.vci.ubcs.flow.core.entity.ProcessStageAttr;
 
 /**
  * 娴佺▼闃舵鏈嶅姟
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/ProcessTemplateService.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/ProcessTemplateService.java
index 1d04a9d..87fcfa3 100644
--- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/ProcessTemplateService.java
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/ProcessTemplateService.java
@@ -17,7 +17,7 @@
 package com.vci.ubcs.flow.engine.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.vci.ubcs.flow.engine.entity.ProcessTemplate;
+import com.vci.ubcs.flow.core.entity.ProcessTemplate;
 
 import java.util.List;
 import java.util.Map;
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/VICFlowService.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/VICFlowService.java
index acb2ebd..97bca0d 100644
--- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/VICFlowService.java
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/VICFlowService.java
@@ -16,8 +16,8 @@
  */
 package com.vci.ubcs.flow.engine.service;
 
+import com.vci.ubcs.flow.core.dto.FlowTaskDTO;
 import com.vci.ubcs.flow.core.entity.BladeFlow;
-import com.vci.ubcs.flow.engine.entity.FlowTaskDTO;
 import org.springblade.core.tool.api.R;
 
 /**
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/FlowEngineServiceImpl.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/FlowEngineServiceImpl.java
index add8a1d..f277e82 100644
--- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/FlowEngineServiceImpl.java
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/FlowEngineServiceImpl.java
@@ -20,6 +20,7 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.vci.ubcs.flow.core.dto.FlowTaskDTO;
 import com.vci.ubcs.flow.core.entity.BladeFlow;
 import com.vci.ubcs.flow.core.enums.FlowModeEnum;
 import com.vci.ubcs.flow.core.utils.TaskUtil;
@@ -27,7 +28,6 @@
 import com.vci.ubcs.flow.engine.entity.FlowExecution;
 import com.vci.ubcs.flow.engine.entity.FlowModel;
 import com.vci.ubcs.flow.engine.entity.FlowProcess;
-import com.vci.ubcs.flow.engine.entity.FlowTaskDTO;
 import com.vci.ubcs.flow.engine.mapper.FlowMapper;
 import com.vci.ubcs.flow.engine.service.FlowEngineService;
 import com.vci.ubcs.flow.engine.utils.FlowCache;
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/FlowTaskUserServiceImpl.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/FlowTaskUserServiceImpl.java
index ba21c6d..09aba05 100644
--- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/FlowTaskUserServiceImpl.java
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/FlowTaskUserServiceImpl.java
@@ -18,6 +18,9 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.flow.core.dto.FlowTaskDTO;
+import com.vci.ubcs.flow.core.entity.FlowTaskUser;
+import com.vci.ubcs.flow.core.entity.ProcessTemplate;
 import com.vci.ubcs.flow.core.utils.TaskUtil;
 import com.vci.ubcs.flow.engine.entity.*;
 import com.vci.ubcs.flow.engine.mapper.FlowTaskUserMapper;
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/ProcessStageAttrServiceImpl.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/ProcessStageAttrServiceImpl.java
index 74b6d78..816e64b 100644
--- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/ProcessStageAttrServiceImpl.java
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/ProcessStageAttrServiceImpl.java
@@ -18,9 +18,9 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.vci.ubcs.flow.engine.entity.FlowTaskUser;
-import com.vci.ubcs.flow.engine.entity.FlowTaskDTO;
-import com.vci.ubcs.flow.engine.entity.ProcessStageAttr;
+import com.vci.ubcs.flow.core.dto.FlowTaskDTO;
+import com.vci.ubcs.flow.core.entity.FlowTaskUser;
+import com.vci.ubcs.flow.core.entity.ProcessStageAttr;
 import com.vci.ubcs.flow.engine.mapper.ProcessStageAttrMapper;
 import com.vci.ubcs.flow.engine.service.ProcessStageAttrService;
 import lombok.AllArgsConstructor;
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/ProcessTemplateServiceImpl.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/ProcessTemplateServiceImpl.java
index ec83e35..601c524 100644
--- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/ProcessTemplateServiceImpl.java
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/ProcessTemplateServiceImpl.java
@@ -18,8 +18,8 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.flow.core.entity.ProcessTemplate;
 import com.vci.ubcs.flow.core.utils.TaskUtil;
-import com.vci.ubcs.flow.engine.entity.ProcessTemplate;
 import com.vci.ubcs.flow.engine.mapper.ProcessTemplateMapper;
 import com.vci.ubcs.flow.engine.service.ProcessTemplateService;
 import com.vci.ubcs.starter.web.enumpck.ProcessTemplateTypeEnum;
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/VCIFlowserviceImpl.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/VCIFlowserviceImpl.java
index b01bb9d..4a1ea85 100644
--- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/VCIFlowserviceImpl.java
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/VCIFlowserviceImpl.java
@@ -18,7 +18,9 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.vci.ubcs.flow.core.constant.ProcessConstant;
+import com.vci.ubcs.flow.core.dto.FlowTaskDTO;
 import com.vci.ubcs.flow.core.entity.BladeFlow;
+import com.vci.ubcs.flow.core.entity.FlowTaskUser;
 import com.vci.ubcs.flow.core.utils.TaskUtil;
 import com.vci.ubcs.flow.engine.entity.*;
 import com.vci.ubcs.flow.engine.service.FlowEngineService;
diff --git a/Source/UBCS/ubcs-ops/ubcs-report/src/main/java/com/vci/ubcs/report/config/BladeReportConfiguration.java b/Source/UBCS/ubcs-ops/ubcs-report/src/main/java/com/vci/ubcs/report/config/BladeReportConfiguration.java
index cd043c2..1d08ec8 100644
--- a/Source/UBCS/ubcs-ops/ubcs-report/src/main/java/com/vci/ubcs/report/config/BladeReportConfiguration.java
+++ b/Source/UBCS/ubcs-ops/ubcs-report/src/main/java/com/vci/ubcs/report/config/BladeReportConfiguration.java
@@ -16,7 +16,7 @@
  */
 package com.vci.ubcs.report.config;
 
-import com.vci.ubcs.core.report.datasource.ReportDataSource;
+//import org.springblade.core.report.datasource.ReportDataSource;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
@@ -32,12 +32,12 @@
 @ConditionalOnProperty(value = "report.enabled", havingValue = "true", matchIfMissing = true)
 public class BladeReportConfiguration {
 
-	/**
-	 * 鑷畾涔夋姤琛ㄥ彲閫夋暟鎹簮
-	 */
-	@Bean
-	public ReportDataSource reportDataSource(DataSource dataSource) {
-		return new ReportDataSource(dataSource);
-	}
+//	/**
+//	 * 鑷畾涔夋姤琛ㄥ彲閫夋暟鎹簮
+//	 */
+//	@Bean
+//	public ReportDataSource reportDataSource(DataSource dataSource) {
+//		return new ReportDataSource(dataSource);
+//	}
 
 }
diff --git a/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/endpoint/OssEndpoint.java b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/endpoint/OssEndpoint.java
index dacf234..1bdefc5 100644
--- a/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/endpoint/OssEndpoint.java
+++ b/Source/UBCS/ubcs-ops/ubcs-resource/src/main/java/com/vci/ubcs/resource/endpoint/OssEndpoint.java
@@ -17,10 +17,6 @@
 package com.vci.ubcs.resource.endpoint;
 
 import com.vci.ubcs.resource.entity.Attach;
-import com.vci.ubcs.resource.service.IFileService;
-import com.vci.ubcs.resource.utils.FileDownloadUtil;
-import com.vci.ubcs.starter.web.util.LangBaseUtil;
-import com.vci.ubcs.starter.web.util.VciBaseUtil;
 import io.swagger.annotations.Api;
 import lombok.AllArgsConstructor;
 import lombok.SneakyThrows;
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/pom.xml b/Source/UBCS/ubcs-service-api/ubcs-code-api/pom.xml
index e596a6a..e2c86ea 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/pom.xml
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/pom.xml
@@ -63,6 +63,12 @@
             <scope>compile</scope>
         </dependency>
         <dependency>
+            <groupId>com.vci.ubcs</groupId>
+            <artifactId>ubcs-flow-api</artifactId>
+            <version>3.0.1.RELEASE</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
             <groupId>com.thoughtworks.xstream</groupId>
             <artifactId>xstream</artifactId>
         </dependency>
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/MdmUIInfoVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/MdmUIInfoVO.java
index 16b0235..0d02f10 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/MdmUIInfoVO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/MdmUIInfoVO.java
@@ -1,5 +1,7 @@
 package com.vci.ubcs.code.vo.pagemodel;
 
+import com.vci.ubcs.flow.core.vo.ProcessStageAttrVO;
+
 import java.util.List;
 
 public class MdmUIInfoVO implements java.io.Serializable {
@@ -36,7 +38,6 @@
 	 * 褰撳墠鍒嗙被鏄惁涓哄彾瀛愯妭鐐�
 	 */
 	private boolean leaf;
-
 	public List<SmOperationVO> getButtons() {
 		return buttons;
 	}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/entity/User.java b/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/entity/User.java
index a1df16b..8321e6c 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/entity/User.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-user-api/src/main/java/com/vci/ubcs/system/user/entity/User.java
@@ -89,6 +89,11 @@
 	 */
 	private String deptId;
 	/**
+	 * 閮ㄩ棬鍚嶇О
+	 */
+	@TableField(exist = false)
+	private String deptName;
+	/**
 	 * 瀵嗙爜绛栫暐
 	 */
 	@TableField(exist = false)
diff --git a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/constant/VciSystemVarConstants.java b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/constant/VciSystemVarConstants.java
index 0c049d8..5205ff7 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/constant/VciSystemVarConstants.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/constant/VciSystemVarConstants.java
@@ -4,6 +4,7 @@
 import com.vci.ubcs.starter.web.pagemodel.SessionInfo;
 import com.vci.ubcs.starter.web.util.VciBaseUtil;
 import com.vci.ubcs.starter.web.util.VciDateUtil;
+import org.springblade.core.secure.utils.AuthUtil;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -45,25 +46,23 @@
 
 	public static Map<String, String> getSystemVarValueMap() {
 		Map<String, String> systemVarMap = new HashMap();
-		SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
-		if (sessionInfo != null) {
-			systemVarMap.put("#CURRENTUSER.OID#", sessionInfo.getUserOid());
-			systemVarMap.put("#CURRENTUSER.ID#", sessionInfo.getUserId());
-			systemVarMap.put("#CURRENTUSER_NAME#", sessionInfo.getUserName());
-			systemVarMap.put("#CURRENTDATETIME#", VciDateUtil.getNowString());
-			systemVarMap.put("#CURRENTDATE#", VciDateUtil.getNowString("yyyy-MM-dd"));
-			systemVarMap.put("#CURRENTTIME#", VciDateUtil.getNowString("HH:mm:ss"));
-			systemVarMap.put("#CURRENTUSER.SECRETGRADE#", sessionInfo.getUserSecret());
-			systemVarMap.put("#CURRENTUSER.GROUPNAME#", sessionInfo.getDeptName());
-			systemVarMap.put("#CURRENTUSER.GROUPOID#", sessionInfo.getDeptOid());
-			systemVarMap.put("#CURRENTUSER.EMAIL#", sessionInfo.getEmail());
-			systemVarMap.put("#CURRENTUSER.ROLENAME#", (String) ((Collection) Optional.ofNullable(sessionInfo.getRolesName().values()).orElseGet(() -> {
-				return new ArrayList();
-			})).stream().collect(Collectors.joining(",")));
-			systemVarMap.put("#CURRENTUSER.IPSECRET#", sessionInfo.getIpSecret());
-			systemVarMap.put("#CURRENTUSER.BUSINESSUNIT#", sessionInfo.getOrgsOid());
-			systemVarMap.put("#CURRENTUSER.BUSINESSUNITNAME#", sessionInfo.getOrgsName());
-		}
+//		SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
+//		if (sessionInfo != null) {
+		systemVarMap.put("#CURRENTUSER.OID#", String.valueOf(AuthUtil.getUser().getUserId()));
+		systemVarMap.put("#CURRENTUSER.ID#", AuthUtil.getUser().getAccount());
+		systemVarMap.put("#CURRENTUSER_NAME#", AuthUtil.getUser().getUserName());
+		systemVarMap.put("#CURRENTDATETIME#", VciDateUtil.getNowString());
+		systemVarMap.put("#CURRENTDATE#", VciDateUtil.getNowString("yyyy-MM-dd"));
+		systemVarMap.put("#CURRENTTIME#", VciDateUtil.getNowString("HH:mm:ss"));
+		systemVarMap.put("#CURRENTUSER.SECRETGRADE#", (String) AuthUtil.getUser().getDetail().get("secretGrade"));
+		systemVarMap.put("#CURRENTUSER.GROUPNAME#", (String) AuthUtil.getUser().getDetail().get("deptName"));
+		systemVarMap.put("#CURRENTUSER.GROUPOID#", AuthUtil.getUser().getDeptId());
+		systemVarMap.put("#CURRENTUSER.EMAIL#", (String) AuthUtil.getUser().getDetail().get("email"));
+		systemVarMap.put("#CURRENTUSER.ROLENAME#", AuthUtil.getUser().getRoleName());
+		systemVarMap.put("#CURRENTUSER.IPSECRET#", "");
+		systemVarMap.put("#CURRENTUSER.BUSINESSUNIT#", AuthUtil.getUser().getTenantId());
+		systemVarMap.put("#CURRENTUSER.BUSINESSUNITNAME#", (String) AuthUtil.getUser().getDetail().get("tenantName"));
+//		}
 
 		return systemVarMap;
 	}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/pom.xml b/Source/UBCS/ubcs-service/ubcs-code/pom.xml
index b7db59f..88e3563 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/pom.xml
+++ b/Source/UBCS/ubcs-service/ubcs-code/pom.xml
@@ -137,6 +137,12 @@
                 </exclusion>
             </exclusions>
         </dependency>
+        <dependency>
+            <groupId>com.vci.ubcs</groupId>
+            <artifactId>ubcs-flow-api</artifactId>
+            <version>3.0.1.RELEASE</version>
+            <scope>compile</scope>
+        </dependency>
         <!--axis2 end -->
 
     </dependencies>
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 c1941fd..b17f55e 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
@@ -12,6 +12,7 @@
 import com.vci.ubcs.code.service.MdmEngineService;
 import com.vci.ubcs.code.service.MdmIOService;
 import com.vci.ubcs.code.vo.pagemodel.*;
+import com.vci.ubcs.flow.core.feign.IMDMIFlowAttrClient;
 import com.vci.ubcs.omd.vo.BtmTypeVO;
 import com.vci.ubcs.starter.annotation.VciBusinessLog;
 import com.vci.ubcs.starter.revision.model.BaseModel;
@@ -55,6 +56,7 @@
 	 */
 	@Autowired
 	private MdmIOService mdmIOService;
+
 
 	/**
 	 * 涓嬭浇鎵归噺鐢宠鐨勫鍏ユā鏉�
@@ -627,6 +629,17 @@
 		return engineService.getUIInfoByClassifyOid(codeClassifyOid,functionId);
 	}
 
+	/**
+	 * 浣跨敤鍒嗙被鑾峰彇琛ㄦ牸鐨勫畾涔�
+	 * @param codeClassifyOid 鍒嗙被涓婚敭
+	 * @param functionId 鍔熻兘鐨勭紪鍙�
+	 * @return UI鐩稿叧鐨勪俊鎭紙浠呭寘鍚〃鏍硷級
+	 */
+	@GetMapping("/getFlowdUIInfoByClassifyOid")
+	public MdmUIInfoVO getUIInfoByClassifyOid(String codeClassifyOid,String functionId,String templateId,String taskId,String modelKey){
+		return engineService.getFlowUIInfoByClassifyOid(codeClassifyOid,functionId,templateId,taskId,modelKey);
+	}
+
 
 	@GetMapping("/thisistest")
 	@ResponseBody
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 7ff87cc..4abcfef 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
@@ -372,6 +372,14 @@
 	 * @return UI鐩稿叧鐨勫唴瀹�
 	 */
 	MdmUIInfoVO getUIInfoByClassifyOid(String codeClassifyOid, String functionId);
+	/**
+	 * 浣跨敤鍒嗙被涓婚敭锛屾ā鏉夸富閿紝闃舵鏍囪瘑锛屾祦绋嬫ā鏉縦ek鑾峰彇娴佺▼瀹℃壒涓〉闈㈢殑鍐呭锛屽寘鍚寜閽�
+	 *
+	 * @param codeClassifyOid 涓婚搴撳垎绫讳富閿�
+	 * @param functionId      鍔熻兘鐨勭紪鍙�,榛樿5
+	 * @return UI鐩稿叧鐨勫唴瀹�
+	 */
+	MdmUIInfoVO getFlowUIInfoByClassifyOid(String codeClassifyOid, String functionId,String templateId,String taskId,String modelKey);
 
 	/**
 	 * 浼犲叆涓氬姟绫诲瀷浠ュ強鐩稿叧鏁版嵁杩涜鎵归噺鎻掑叆鎿嶄綔
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClstemplateServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClstemplateServiceImpl.java
index c3a01d8..24fc9ea 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClstemplateServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClstemplateServiceImpl.java
@@ -1088,7 +1088,7 @@
 			//閫掑綊鎵句笂绾х殑妯℃澘
 			CodeClassify classifyDO = codeClassifyMapper.selectById(codeClassifyOid);
 //				codeClassifyDaoI.selectByPrimaryKey(codeClassifyOid);
-			if(StringUtils.isBlank(classifyDO.getParentCodeClassifyOid())){
+			if(classifyDO==null&&StringUtils.isBlank(classifyDO.getParentCodeClassifyOid())){
 				//璇存槑宸茬粡鏄《浜嗭紝涔熸病鎵惧埌鐨勮瘽锛岄偅灏辫繑鍥炰簡
 				return null;
 			}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeDuckingSyncServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeDuckingSyncServiceImpl.java
index 54044fe..f3cc541 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeDuckingSyncServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeDuckingSyncServiceImpl.java
@@ -68,8 +68,8 @@
 	private IDockingLogeService dockingLogeService;
 	@Resource
 	private IDockingDataService dockingDataService;
-	@Resource
-	private IDockingTaskService dockingTaskService;
+//	@Resource
+//	private IDockingTaskService dockingTaskService;
 	@Resource
 	private IDockingSystemConfigService dockingSystemConfigService;
 	@Resource
@@ -243,7 +243,7 @@
 			}
 
 			if(dockingTask_insert.size()!=0) {
-				dockingTaskService.saveBatch(dockingTask_insert);
+//				dockingTaskService.saveBatch(dockingTask_insert);
 			}
 			//dockingTaskDaoI.updateByPrimaryKey鏂规硶鎶ラ敊浜嗭紝鎵�浠ユ墜鍐欎簡杩欎釜
 			boolean u = updateDockingDatasSendFlag(dataoid,SEND_FLAG_TRUE);
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingSystemConfigServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingSystemConfigServiceImpl.java
index de2d4c3..0558c3a 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingSystemConfigServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingSystemConfigServiceImpl.java
@@ -95,11 +95,11 @@
 	 */
 	@Autowired(required = false)
 	private DockingSystemMapper dockingSystemMapper;
-	/***
-	 * 浠诲姟鐢熸垚鏈嶅姟
-	 */
-	@Autowired( required = false)
-	private IDockingTaskService dockingTaskService;
+//	/***
+//	 * 浠诲姟鐢熸垚鏈嶅姟
+//	 */
+//	@Resource
+//	private IDockingTaskService dockingTaskService;
 
 
 	/**
@@ -450,7 +450,7 @@
 					dockingTaskDO_insert.add(dockingTaskDO);
 				});
 			}
-			dockingTaskService.saveBatch(dockingTaskDO_insert);
+//			dockingTaskService.saveBatch(dockingTaskDO_insert);
 		}catch (Throwable e){
 			msg="鏁版嵁鎺ㄩ�佸埌瀹氭椂浠诲姟澶辫触!";
 			log.error("鏁版嵁鎺ㄩ�佸埌瀹氭椂浠诲姟澶辫触!"+e);
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DokingSysManaentServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DokingSysManaentServiceImpl.java
index 299711d..0507011 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DokingSysManaentServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DokingSysManaentServiceImpl.java
@@ -12,15 +12,17 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+
 @Service
 public class DokingSysManaentServiceImpl extends ServiceImpl<DockingSystemConfigMapper, DockingSystemConfig> implements IDokingSysManaentService {
 
 
-	/***
-	 * 浠诲姟鐢熸垚鏈嶅姟
-	 */
-	@Autowired( required = false)
-	private IDockingTaskService dockingTaskService;
+//	/***
+//	 * 浠诲姟鐢熸垚鏈嶅姟
+//	 */
+//	@Resource
+//	private IDockingTaskService dockingTaskService;
 
 
 	/***
@@ -52,7 +54,8 @@
 	 */
 	@Override
 	public IPage<DockingTaskVO> gridDockingTask(DockingTask dockingTask, Query query) {
-		IPage<DockingTask> pages=dockingTaskService.page(Condition.getPage(query), Condition.getQueryWrapper(dockingTask));
+		IPage<DockingTask> pages=null;
+//		IPage<DockingTask> pages=dockingTaskService.page(Condition.getPage(query), Condition.getQueryWrapper(dockingTask));
 		return DockingTaskWrapper.build().pageVO(pages);
 	}
 
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 35e96c2..ecb1dc6 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
@@ -22,6 +22,9 @@
 import com.vci.ubcs.code.vo.pagemodel.UITableFieldVO;
 import com.vci.ubcs.code.vo.pagemodel.UITablePageVO;
 import com.vci.ubcs.code.vo.pagemodel.*;
+import com.vci.ubcs.flow.core.entity.ProcessStageAttr;
+import com.vci.ubcs.flow.core.feign.IMDMIFlowAttrClient;
+import com.vci.ubcs.flow.core.vo.ProcessStageAttrVO;
 import com.vci.ubcs.omd.constant.BtmTypeLcStatusConstant;
 import com.vci.ubcs.omd.cache.EnumCache;
 import com.vci.ubcs.omd.feign.*;
@@ -38,6 +41,7 @@
 import com.vci.ubcs.starter.util.UBCSSqlKeyword;
 import com.vci.ubcs.starter.web.constant.QueryOptionConstant;
 import com.vci.ubcs.starter.web.constant.RegExpConstant;
+import com.vci.ubcs.starter.web.constant.VciSystemVarConstants;
 import com.vci.ubcs.starter.web.enumpck.BooleanEnum;
 import com.vci.ubcs.starter.web.enumpck.UserSecretEnum;
 import com.vci.ubcs.starter.web.enumpck.VciFieldTypeEnum;
@@ -278,6 +282,11 @@
      * 鏇挎崲瀛楃
      */
     public static final String SPECIAL_CHAR = "VCI";
+	/**
+	 * 涓绘暟鎹祦绋嬮樁娈垫湇鍔�
+	 */
+	@Autowired
+	private IMDMIFlowAttrClient imdmiFlowAttrClient;
 //	@Autowired
 //	private CodeOsbtmtypeMapper codeOsbtmtypeMapper;----
 
@@ -391,6 +400,7 @@
     public String addSaveCode(CodeOrderDTO orderDTO) throws Exception {
         VciBaseUtil.alertNotNull(orderDTO, "缂栫爜鐢宠鐩稿叧鐨勫睘鎬у拰鐮佹鐨勫唴瀹归兘涓虹┖", orderDTO.getCodeClassifyOid(), "涓婚搴撳垎绫荤殑涓婚敭",
                 orderDTO.getTemplateOid(), "妯℃澘鐨勪富閿�", orderDTO.getCodeRuleOid(), "缂栫爜瑙勫垯鐨勪富閿�");
+		VciSystemVarConstants.getSystemVarValueMap();
         CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
         CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid());
         CodeRuleVO ruleVO = ruleService.getObjectHasSecByOid(orderDTO.getCodeRuleOid());
@@ -2857,6 +2867,51 @@
         return uiInfoVO;
     }
 
+	/**
+	 * 浣跨敤鍒嗙被鐨勪富閿幏鍙栬〃鏍肩殑瀹氫箟-ubcs鍚庝慨鏀硅幏鍙栨祦绋嬮樁娈电啛鎮夎幏鍙栨柟娉�
+	 * @param codeClassifyOid
+	 * @param templateId
+	 * @param taskId
+	 * @param modelKey
+	 * @return
+	 */
+	public MdmUIInfoVO getTableDefineByClassifyOid_v2(String codeClassifyOid,String templateId,String taskId,String modelKey) {
+		MdmUIInfoVO uiInfoVO = new MdmUIInfoVO();
+		CodeClassifyTemplateVO templateVO = getUsedTemplateByClassifyOid(codeClassifyOid);
+		uiInfoVO.setTemplateVO(templateVO);
+		UITableDefineVO uiTableDefineVO = wrapperTableDefineByTemplate(templateVO, true);
+		R<List<ProcessStageAttrVO>> r = imdmiFlowAttrClient.ssslist(templateId,modelKey,taskId);
+		List<ProcessStageAttrVO> stageAttrVOS = r.getData();
+		List<String> attrList = new ArrayList<>();
+		stageAttrVOS.stream().forEach(attr->{
+			attrList.add(attr.getAttrId());
+		});
+		uiTableDefineVO.getCols().stream().forEach(list -> {
+			List<UITableFieldVO> visiableTableField = new ArrayList<>();
+			visiableTableField = list.stream().filter(col ->
+				attrList.stream().anyMatch(s -> StringUtils.equalsIgnoreCase(col.getField(), s) ||
+					(StringUtils.equalsIgnoreCase(col.getFieldType(), "combox") && StringUtils.equalsIgnoreCase(col.getSortField(), s))
+					|| (StringUtils.equalsIgnoreCase(col.getFieldType(), "refer") && StringUtils.equalsIgnoreCase(col.getQueryField(), s))
+				)).collect(Collectors.toList());
+
+			visiableTableField.stream().forEach(vo -> {
+				uiTableDefineVO.setHasEditor(true);
+				if ("refer".equalsIgnoreCase(vo.getFieldType())) {
+					setReferConfig2EditConfig(vo);
+				} else if ("combox".equalsIgnoreCase(vo.getFieldType())) {
+					setComboxConfig2EditConfig(vo);
+				} else if (StringUtils.isNotBlank(vo.getDateFormate())) {
+					vo.setEdit("date");
+				} else {
+					vo.setEdit(vo.getFieldType());
+				}
+			});
+		});
+		uiInfoVO.setTableDefineVO(uiTableDefineVO);
+		wrapperResemble(templateVO, uiInfoVO);
+		return uiInfoVO;
+	}
+
     /**
      * 妯℃澘灞炴�ц浆鎹负琛ㄦ牸瀹氫箟鐨勪俊鎭�
      *
@@ -3122,6 +3177,33 @@
         }
         return uiInfoVO;
     }
+    @Override
+	public MdmUIInfoVO getFlowUIInfoByClassifyOid(String codeClassifyOid, String functionId,String templateId,String taskId,String modelKey){
+//		MdmUIInfoVO uiInfoVO = getTableDefineByClassifyOid_v2(codeClassifyOid,templateId,taskId,modelKey);
+		MdmUIInfoVO uiInfoVO = getTableDefineByTemplateVO(getUsedTemplateByClassifyOid(codeClassifyOid));
+		R<List<ProcessStageAttrVO>> r = imdmiFlowAttrClient.ssslist(templateId,modelKey,taskId);
+		List<ProcessStageAttrVO> stageAttrVOS = r.getData();
+		Set<String> attrSet = new HashSet<>();
+		stageAttrVOS.stream().forEach(attr->{
+			attrSet.add(attr.getAttrId());
+		});
+
+		try {
+
+			UITableDefineVO tableDefineVO = uiInfoVO.getTableDefineVO();
+			List<List<UITableFieldVO>> tableFieldVOs = tableDefineVO.getCols();
+			List<UITableFieldVO> uiTableFieldVOS = tableFieldVOs.get(0);
+			uiTableFieldVOS.stream().forEach(ui->{
+//				if(!attrSet.contains(ui.getField())){
+//					ui.setEdit(null);
+//					ui.setEditConfig(null);
+//				}
+			});
+		}catch (Exception e){
+			throw new ServiceException("妯℃澘娌℃湁瀹氫箟灞炴�э紝璇诲彇琛ㄥご澶辫触!");
+		}
+		return uiInfoVO;
+	}
 
     /**
      * 浣跨敤鍒嗙被涓婚敭鑾峰彇宸ュ叿鏍忎腑鐨勬寜閽俊鎭�
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 984f76a..95e3f5a 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
@@ -780,8 +780,13 @@
 	 * @param rule 瑙勫垯鐨勫唴瀹�
 	 * @return 杞崲鍚庣殑
 	 */
-	private String getValueByFormulaForCBO(BaseModel cbo,String rule){
-		Map<String, Object> dataMap = BeanUtils.beanToMap(cbo);
+	private String getValueByFormulaForCBO(BaseModel cbo,String rule)  {
+		Map<String, Object> dataMap = null;
+		try{
+			dataMap = VciBaseUtil.convertBean2Map(cbo);
+		}catch(Exception e){
+			throw new VciBaseException("mapToBeanError:"+e);
+		}
 		Map<String, String> map = new HashMap<String, String>();
 		for (String i : dataMap.keySet()) {
 			map.put(i, String.valueOf(dataMap.get(i)));
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/LifeCycleController.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/LifeCycleController.java
index bde6368..847c2c7 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/LifeCycleController.java
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/LifeCycleController.java
@@ -1,5 +1,6 @@
 package com.vci.ubcs.omd.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import com.vci.ubcs.omd.dto.LifeCycleDTO;
@@ -15,12 +16,14 @@
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.HashMap;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 
 /**
@@ -46,12 +49,9 @@
 	@GetMapping("page")
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "鍒嗛〉鏌ヨ鐢熷懡鍛ㄦ湡",notes = "鍒嗛〉鏌ヨ鐢熷懡鍛ㄦ湡")
-	public R<IPage<LifeCycleVO>> page(BladeQueryObject baseQueryObject){
-		Map<String, Object> conditionMap = baseQueryObject.getConditionMap();
-		if (conditionMap == null){
-			conditionMap = new HashMap<>();
-		}
-		return R.data(lifeCycleService.listLife(conditionMap,baseQueryObject.getQuery()));
+	public R<IPage<LifeCycleVO>> page(@RequestParam Map<String, Object> conditionMap, Query query){
+
+		return R.data(lifeCycleService.listLife(conditionMap,query));
 	}
 
 
@@ -147,14 +147,8 @@
 	 */
 	@GetMapping("page-event")
 	@ApiOperationSupport(order = 2)
-	@ApiOperation(value = "鍏ㄩ儴鐨勪簨浠�",notes = "鍒嗛〉鏌ヨ浜嬩欢")
-	public R<IPage<LifeCycleEventVO>> pageEvent(BladeQueryObject baseQueryObject){
-		Map<String, Object> conditionMap = baseQueryObject.getConditionMap();
-		if (conditionMap == null){
-			conditionMap = new HashMap<>();
-		}
-		return R.data(lifeCycleService.listEvent(conditionMap,baseQueryObject.getQuery()));
+	@ApiOperation(value = "鍏ㄩ儴鐨勪簨浠�",notes = "list鏌ヨ浜嬩欢")
+	public R<List<LifeCycleEventVO>> pageEvent(){
+		return R.data(lifeCycleService.listEventNoPage());
 	}
-
-
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/ILifeCycleService.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/ILifeCycleService.java
index 14dbdc4..7263abe 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/ILifeCycleService.java
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/ILifeCycleService.java
@@ -39,6 +39,11 @@
 	IPage<LifeCycleEventVO> listEvent(Map<String, Object> conditionMap, Query query);
 
 	/**
+	 * 鑾峰彇鍏ㄩ儴鐨勪簨浠�
+	 */
+	List<LifeCycleEventVO> listEventNoPage();
+
+	/**
 	 * 娣诲姞淇濆瓨
 	 * @param lifeCycleDTO 鏁版嵁浼犺緭瀵硅薄
 	 * @return 娣诲姞鍚庣殑鏄剧ず瀵硅薄
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/LifeCycleServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/LifeCycleServiceImpl.java
index 7fc3448..ace2a89 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/LifeCycleServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/LifeCycleServiceImpl.java
@@ -106,6 +106,18 @@
 		return LifeCycleEventWrapper.build().pageVO(eventMapper.selectPage(Condition.getPage(query),Condition.getQueryWrapper(conditionMap, LifeCycleEvent.class).lambda().orderByAsc(LifeCycleEvent::getEventFullName)));
 	}
 
+	public List<LifeCycleEventVO> listEventNoPage(){
+		QueryWrapper<LifeCycleEvent> queryWrapper = new QueryWrapper();
+		List<LifeCycleEvent> lifeCycleEvents =  eventMapper.selectList(queryWrapper);
+		List<LifeCycleEventVO> vos = new ArrayList<>();
+		lifeCycleEvents.stream().forEach(lifeCycleEvent -> {
+			LifeCycleEventVO vo = new LifeCycleEventVO();
+			BeanUtil.convert(lifeCycleEvent,vo);
+			vos.add(vo);
+		});
+		return vos;
+	}
+
 	/**
 	 * 娣诲姞淇濆瓨
 	 *
@@ -317,9 +329,7 @@
 		LifeCycleRule rule = selectByOid(lifeCycleDTO.getOid());
 		//鏌ヨ閲嶅
 		QueryWrapper wrapper = new QueryWrapper(LifeCycleRule.class);
-		if(rule.getId().equals(lifeCycleDTO.getId())){
-			throw new VciBaseException("鐢熷懡鍛ㄦ湡缂栧彿涓嶈兘淇敼");
-		}
+
 		wrapper.eq("lower(id)",lifeCycleDTO.getId().toLowerCase(Locale.ROOT));
 		wrapper.ne("oid",lifeCycleDTO.getOid());
 		if(baseMapper.selectCount(wrapper)>0){
@@ -336,7 +346,7 @@
 		String lifeOid = lifeCycleRule.getOid();
 
 		QueryWrapper<LifeCycleNode> nodeWrapper = new QueryWrapper<>();
-		nodeWrapper.eq("lifeCycleOid",lifeOid.toLowerCase(Locale.ROOT));
+		nodeWrapper.eq("life_cycle_oid",lifeOid.toLowerCase(Locale.ROOT));
 		List<LifeCycleNode> nodes = nodeMapper.selectList(nodeWrapper);
 		List<LifeCycleNodeVO> nodeVos = new ArrayList<>();
 		nodes.stream().forEach(doo->{
@@ -347,7 +357,7 @@
 		vo.setNodes(nodeVos);
 
 		QueryWrapper<LifeCycleEdge> edgeWrapper = new QueryWrapper<>();
-		edgeWrapper.eq("lifeCycleOid",lifeOid.toLowerCase(Locale.ROOT));
+		edgeWrapper.eq("life_cycle_oid",lifeOid.toLowerCase(Locale.ROOT));
 		List<LifeCycleEdge> edges = edgeMapper.selectList(edgeWrapper);
 		List<LifeCycleEdgeVO> edgeVos = new ArrayList<>();
 		edges.stream().forEach(doo->{
diff --git a/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserServiceImpl.java
index 6244112..4eceb7b 100644
--- a/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-user/src/main/java/com/vci/ubcs/system/user/service/impl/UserServiceImpl.java
@@ -244,6 +244,7 @@
 		if (ObjectUtil.isEmpty(user)) {
 			return null;
 		}
+		user.setDeptName(Func.join(SysCache.getDeptNames(user.getDeptId())));
 		UserInfo userInfo = new UserInfo();
 		userInfo.setUser(user);
 		if (Func.isNotEmpty(user)) {

--
Gitblit v1.9.3