From 35a36f60cdbd9ef3bf2ab7be9f418f988c93c5eb Mon Sep 17 00:00:00 2001
From: yuxc <653031404@qq.com>
Date: 星期五, 21 四月 2023 17:05:02 +0800
Subject: [PATCH] 1、主题库定义相关代码。 2、枚举定义相关代码移植修改。

---
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/po/CodeClassifyPO.java                           |  249 +-
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeClstempattrVO.java                        |   27 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClsflowtempServiceImpl.java             |   71 
 Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/feign/DictBizClient.java                             |   11 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClsflowtempEntity.java                |   76 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/web/constant/QueryOptionConstant.java |   21 
 Source/UBCS-WEB/src/views/omd/dict.vue                                                                                      |   28 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClstemplateMapper.java                        |   17 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClsflowtempController.java                |  129 +
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClstempattrService.java                     |   65 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeOsbtmtypeClient.java                           |   11 
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/Dict.java                                   |   22 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodePhaseattrServiceImpl.java               |   42 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodePhaseattrWrapper.java                        |   50 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeTempphaseEntity.java                  |   43 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/DictMapper.java                                     |   12 
 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeClstempattrMapper.xml                                      |  166 +
 Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/feign/IDictBizClient.java                      |   12 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClsflowtempDTO.java                      |   27 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeTempphaseWrapper.java                        |   50 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeClsflowtempClient.java                         |   56 
 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeTempphaseMapper.xml                                        |   42 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeTempphaseDTO.java                        |   27 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClstemplateServiceImpl.java             |  537 +++++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyController.java                   |   29 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodePhaseattrClient.java                           |   55 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeTempbuttonClient.java                          |   57 
 Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IDictBizService.java                         |    8 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeTempphaseClient.java                           |   56 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeTempbuttonWrapper.java                       |   50 
 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeClsflowtempMapper.xml                                      |   47 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeClassifyTemplateLC.java                     |  125 +
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/poi/util/ExcelUtil.java               |   45 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodePhaseattrClient.java                          |   49 
 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodePhaseattrMapper.xml                                        |   81 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClstempattrServiceImpl.java             |  114 +
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClstemplateService.java                     |  115 +
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeClstemplateClient.java                         |   12 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeTempbuttonService.java                      |   49 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeTempphaseClient.java                          |   49 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeTempphaseVO.java                          |   28 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyMapper.java                           |   13 
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IDictClient.java                             |   20 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClstempattrDTO.java                      |   78 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IDictService.java                                  |   30 
 Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/feign/IDictBizClientFallback.java              |    5 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeClstempattrClient.java                         |   56 
 Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/DictBizServiceImpl.java                 |   25 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClsflowtempService.java                     |   48 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/DictWrapper.java                                   |   22 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeClstempattrWrapper.java                      |   50 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodePhaseattrEntity.java                  |   51 
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IDictClientFallback.java                     |   10 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeTempbuttonController.java                 |  129 +
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeTempbuttonClient.java                         |   49 
 Source/UBCS/ubcs-service-api/ubcs-code-api/pom.xml                                                                          |   10 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClstempattrEntity.java                |  297 +++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClstemplateController.java                |  145 +
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClstempattrController.java                |  125 +
 Source/UBCS-WEB/src/const/omd/dict.js                                                                                       |  213 ++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeTempbuttonServiceImpl.java              |   69 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeTempbuttonEntity.java                 |   61 
 Source/UBCS-WEB/src/api/omd/dict.js                                                                                         |   18 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClsflowtempMapper.java                        |   45 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodePhaseattrVO.java                          |   28 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/DictController.java                             |   77 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/DictServiceImpl.java                          |  126 +
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodePhaseattrController.java                  |  129 +
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeClsflowtempVO.java                        |   28 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/DictMapper.xml                                                  |   13 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeTempphaseController.java                  |  129 +
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/DictEnum.java                                |    4 
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/DictVO.java                                     |   10 
 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeCLassifyMapper.xml                                         |   13 
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/cache/DictCache.java                               |   32 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java                |   64 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeTempphaseMapper.java                          |   45 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/DictClient.java                                      |   14 
 /dev/null                                                                                                                   |  126 -
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeClstempattrClient.java                        |   49 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClstempattrMapper.java                        |   52 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodePhaseattrService.java                       |   42 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeClsflowtempWrapper.java                      |   50 
 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeTempbuttonMapper.xml                                       |   45 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeTempbuttonDTO.java                       |   27 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodePhaseattrMapper.java                          |   46 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeClstemplateVO.java                        |    7 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeTempbuttonVO.java                         |   28 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeClsflowtempClient.java                        |   49 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeTempphaseServiceImpl.java               |   78 
 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeClstemplateMapper.xml                                      |    7 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeTempphaseService.java                       |   48 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeTempbuttonMapper.java                         |   45 
 93 files changed, 5,003 insertions(+), 737 deletions(-)

diff --git a/Source/UBCS-WEB/src/api/omd/dictbiz.js b/Source/UBCS-WEB/src/api/omd/dict.js
similarity index 74%
rename from Source/UBCS-WEB/src/api/omd/dictbiz.js
rename to Source/UBCS-WEB/src/api/omd/dict.js
index a81fc44..957bc5e 100644
--- a/Source/UBCS-WEB/src/api/omd/dictbiz.js
+++ b/Source/UBCS-WEB/src/api/omd/dict.js
@@ -2,7 +2,7 @@
 
 export const getList = (current, size, params) => {
   return request({
-    url: '/api/ubcs-omd/dict-biz/list',
+    url: '/api/ubcs-omd/dict/list',
     method: 'get',
     params: {
       ...params,
@@ -14,7 +14,7 @@
 
 export const getParentList = (current, size, params) => {
   return request({
-    url: '/api/ubcs-omd/dict-biz/parent-list',
+    url: '/api/ubcs-omd/dict/parent-list',
     method: 'get',
     params: {
       ...params,
@@ -26,7 +26,7 @@
 
 export const getChildList = (current, size, parentId, params) => {
   return request({
-    url: '/api/ubcs-omd/dict-biz/child-list',
+    url: '/api/ubcs-omd/dict/child-list',
     method: 'get',
     params: {
       ...params,
@@ -39,7 +39,7 @@
 
 export const remove = (ids) => {
   return request({
-    url: '/api/ubcs-omd/dict-biz/remove',
+    url: '/api/ubcs-omd/dict/remove',
     method: 'post',
     params: {
       ids,
@@ -49,7 +49,7 @@
 
 export const add = (row) => {
   return request({
-    url: '/api/ubcs-omd/dict-biz/submit',
+    url: '/api/ubcs-omd/dict/submit',
     method: 'post',
     data: row
   })
@@ -57,7 +57,7 @@
 
 export const update = (row) => {
   return request({
-    url: '/api/ubcs-omd/dict-biz/submit',
+    url: '/api/ubcs-omd/dict/submit',
     method: 'post',
     data: row
   })
@@ -66,7 +66,7 @@
 
 export const getDict = (id) => {
   return request({
-    url: '/api/ubcs-omd/dict-biz/detail',
+    url: '/api/ubcs-omd/dict/detail',
     method: 'get',
     params: {
       id,
@@ -75,14 +75,14 @@
 }
 export const getDictTree = () => {
   return request({
-    url: '/api/ubcs-omd/dict-biz/tree?code=DICT',
+    url: '/api/ubcs-omd/dict/tree?code=DICT',
     method: 'get'
   })
 }
 
 export const getDictionary = (params) => {
   return request({
-    url: '/api/ubcs-omd/dict-biz/dictionary',
+    url: '/api/ubcs-omd/dict/dictionary',
     method: 'get',
     params,
   })
diff --git a/Source/UBCS-WEB/src/const/omd/dict.js b/Source/UBCS-WEB/src/const/omd/dict.js
new file mode 100644
index 0000000..e4ef858
--- /dev/null
+++ b/Source/UBCS-WEB/src/const/omd/dict.js
@@ -0,0 +1,213 @@
+export const optionParent = {
+  height: 'auto',
+  calcHeight: 30,
+  tip: false,
+  searchShow: true,
+  searchMenuSpan: 10,
+  border: true,
+  index: true,
+  selection: true,
+  viewBtn: true,
+  menuWidth: 250,
+  dialogWidth: 880,
+  dialogClickModal: false,
+  column: [
+    {
+      label: "浠e彿",
+      prop: "code",
+      search: true,
+      slot: true,
+      span: 24,
+      rules: [
+        {
+          required: true,
+          message: "璇疯緭鍏ヤ唬鍙�",
+          trigger: "blur"
+        }
+      ]
+    },
+    {
+      label: "鍚嶇О",
+      prop: "dictValue",
+      search: true,
+      align: "center",
+      rules: [
+        {
+          required: true,
+          message: "璇疯緭鍏ュ悕绉�",
+          trigger: "blur"
+        }
+      ]
+    },
+    {
+      label: "鏋氫妇鎺掑簭",
+      prop: "sort",
+      type: "number",
+      align: "right",
+      width: 100,
+      hide: true,
+      rules: [
+        {
+          required: true,
+          message: "璇疯緭鍏ユ灇涓炬帓搴�",
+          trigger: "blur"
+        }
+      ]
+    },
+    // {
+    //   label: "灏佸瓨",
+    //   prop: "isSealed",
+    //   type: "switch",
+    //   align: "center",
+    //   width: 100,
+    //   dicData: [
+    //     {
+    //       label: "鍚�",
+    //       value: 0
+    //     },
+    //     {
+    //       label: "鏄�",
+    //       value: 1
+    //     }
+    //   ],
+    //   value: 0,
+    //   slot: true,
+    //   rules: [
+    //     {
+    //       required: true,
+    //       message: "璇烽�夋嫨灏佸瓨",
+    //       trigger: "blur"
+    //     }
+    //   ]
+    // },
+    {
+      label: "鎻忚堪",
+      width: 150,
+      align: "center",
+      prop: "remark",
+      // hide: true
+    }
+  ]
+};
+
+export const optionChild = {
+  height: 'auto',
+  calcHeight: 95,
+  tip: false,
+  searchShow: true,
+  searchMenuSpan: 10,
+  tree: true,
+  border: true,
+  index: true,
+  selection: true,
+  viewBtn: true,
+  menuWidth: 300,
+  dialogWidth: 880,
+  dialogClickModal: false,
+  column: [
+    {
+      label: "浠e彿",
+      prop: "code",
+      addDisabled: true,
+      editDisabled: true,
+      search: true,
+      span: 24,
+      rules: [
+        {
+          required: true,
+          message: "璇疯緭鍏ヤ唬鍙�",
+          trigger: "blur"
+        }
+      ]
+    },
+    {
+      label: "鍚嶇О",
+      prop: "dictValue",
+      search: true,
+      align: "center",
+      rules: [
+        {
+          required: true,
+          message: "璇疯緭鍏ュ悕绉�",
+          trigger: "blur"
+        }
+      ]
+    },
+    {
+      label: "涓婄骇",
+      prop: "parentId",
+      type: "tree",
+      dicData: [],
+      hide: true,
+      props: {
+        label: "title"
+      },
+      addDisabled: true,
+      editDisabled: true,
+      rules: [
+        {
+          required: false,
+          message: "璇烽�夋嫨涓婄骇",
+          trigger: "click"
+        }
+      ]
+    },
+    {
+      label: "鍊�",
+      prop: "dictKey",
+      width: 80,
+      rules: [
+        {
+          required: true,
+          message: "璇疯緭鍏ュ��",
+          trigger: "blur"
+        }
+      ]
+    },
+    {
+      label: "鏋氫妇鎺掑簭",
+      prop: "sort",
+      type: "number",
+      align: "right",
+      hide: true,
+      rules: [
+        {
+          required: true,
+          message: "璇疯緭鍏ユ灇涓炬帓搴�",
+          trigger: "blur"
+        }
+      ]
+    },
+    // {
+    //   label: "灏佸瓨",
+    //   prop: "isSealed",
+    //   type: "switch",
+    //   align: "center",
+    //   width: 80,
+    //   dicData: [
+    //     {
+    //       label: "鍚�",
+    //       value: 0
+    //     },
+    //     {
+    //       label: "鏄�",
+    //       value: 1
+    //     }
+    //   ],
+    //   value: 0,
+    //   slot: true,
+    //   rules: [
+    //     {
+    //       required: true,
+    //       message: "璇烽�夋嫨灏佸瓨",
+    //       trigger: "blur"
+    //     }
+    //   ]
+    // },
+    {
+      label: "鎻忚堪",
+      prop: "remark",
+      // hide: true
+    }
+  ]
+};
diff --git a/Source/UBCS-WEB/src/views/omd/dictbiz.vue b/Source/UBCS-WEB/src/views/omd/dict.vue
similarity index 95%
rename from Source/UBCS-WEB/src/views/omd/dictbiz.vue
rename to Source/UBCS-WEB/src/views/omd/dict.vue
index 0414d86..18aaaf8 100644
--- a/Source/UBCS-WEB/src/views/omd/dictbiz.vue
+++ b/Source/UBCS-WEB/src/views/omd/dict.vue
@@ -39,7 +39,7 @@
           size="small"
           @click.stop="handleRowClick(scope.row)"
           v-if="userInfo.role_name.includes('admin')"
-        >瀛楀吀閰嶇疆
+        >鏋氫妇閰嶇疆
         </el-button>
       </template>
       <template slot-scope="{row}" slot="code">
@@ -49,7 +49,7 @@
         <el-tag>{{ row.isSealed === 0 ? '鍚�' : '鏄�' }}</el-tag>
       </template>
     </avue-crud>
-    <el-dialog :title="`[${dictValue}]瀛楀吀閰嶇疆`"
+    <el-dialog :title="`[${dictValue}]鏋氫妇閰嶇疆`"
                append-to-body
                :visible.sync="box"
                width="1000px">
@@ -84,16 +84,16 @@
           >鍒� 闄�
           </el-button>
         </template>
-        <template slot-scope="scope" slot="menu">
-          <el-button
-            type="text"
-            icon="el-icon-circle-plus-outline"
-            size="small"
-            @click.stop="handleAdd(scope.row,scope.index)"
-            v-if="userInfo.role_name.includes('admin')"
-          >鏂板瀛愰」
-          </el-button>
-        </template>
+<!--        <template slot-scope="scope" slot="menu">-->
+<!--          <el-button-->
+<!--            type="text"-->
+<!--            icon="el-icon-circle-plus-outline"-->
+<!--            size="small"-->
+<!--            @click.stop="handleAdd(scope.row,scope.index)"-->
+<!--            v-if="userInfo.role_name.includes('admin')"-->
+<!--          >鏂板瀛愰」-->
+<!--          </el-button>-->
+<!--        </template>-->
         <template slot-scope="{row}" slot="isSealed">
           <el-tag>{{ row.isSealed === 0 ? '鍚�' : '鏄�' }}</el-tag>
         </template>
@@ -111,8 +111,8 @@
     add,
     getDict,
     getDictTree
-  } from "@/api/omd/dictbiz";
-  import {optionParent, optionChild} from "@/option/system/dictbiz";
+  } from "@/api/omd/dict";
+  import {optionParent, optionChild} from "@/const/omd/dict";
   import {mapGetters} from "vuex";
 
   export default {
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 57b0083..1156ae8 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/pom.xml
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/pom.xml
@@ -62,13 +62,17 @@
         <dependency>
             <groupId>org.apache.poi</groupId>
             <artifactId>poi</artifactId>
-            <version>4.1.0</version>
+            <version>4.1.2</version>
         </dependency>
-
         <dependency>
             <groupId>org.apache.poi</groupId>
             <artifactId>poi-ooxml</artifactId>
-            <version>4.1.0</version>
+            <version>4.1.2</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml-schemas</artifactId>
+            <version>4.1.2</version>
         </dependency>
         <dependency>
             <groupId>com.alibaba</groupId>
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/DictBizEnum.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClsflowtempDTO.java
similarity index 67%
copy from Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/DictBizEnum.java
copy to Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClsflowtempDTO.java
index 8f093c4..6171736 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/DictBizEnum.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClsflowtempDTO.java
@@ -14,26 +14,21 @@
  *  this software without specific prior written permission.
  *  Author: Chill 搴勯獮 (smallchill@163.com)
  */
-package com.vci.ubcs.omd.enums;
+package com.vci.ubcs.code.dto;
 
-import lombok.AllArgsConstructor;
-import lombok.Getter;
+import com.vci.ubcs.code.entity.CodeClsflowtempEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 /**
- * 涓氬姟瀛楀吀鏋氫妇绫�
+ * 缂栫爜搴撳畾涔�-妯℃澘娴佺▼ 鏁版嵁浼犺緭瀵硅薄瀹炰綋绫�
  *
- * @author Chill
+ * @author yuxc
+ * @since 2023-04-20
  */
-@Getter
-@AllArgsConstructor
-public enum DictBizEnum {
-
-	/**
-	 * 娴嬭瘯
-	 */
-	TEST("test"),
-	;
-
-	final String name;
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class CodeClsflowtempDTO extends CodeClsflowtempEntity {
+	private static final long serialVersionUID = 1L;
 
 }
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClstempattrDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClstempattrDTO.java
new file mode 100644
index 0000000..8f8168e
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClstempattrDTO.java
@@ -0,0 +1,78 @@
+/*
+ *      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.code.dto;
+
+import com.vci.ubcs.code.entity.CodeClstempattrEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 缂栫爜搴撳畾涔�-妯℃澘灞炴�� 鏁版嵁浼犺緭瀵硅薄瀹炰綋绫�
+ *
+ * @author yuxc
+ * @since 2023-04-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class CodeClstempattrDTO extends CodeClstempattrEntity {
+	private static final long serialVersionUID = 1L;
+	/**
+	 * 鎵�灞炴ā鏉块樁娈�
+	 */
+	private String codephaseoid;
+
+	/**
+	 * 鎵�灞炴ā鏉块樁娈垫樉绀烘枃鏈�
+	 */
+	private String codephaseoidName;
+
+	/**
+	 * 鑾峰彇 鎵�灞炴ā鏉块樁娈�
+	 */
+	public String getCodephaseoid (){
+		return codephaseoid;
+	}
+
+	/**
+	 * 璁剧疆 鎵�灞炴ā鏉块樁娈�
+	 */
+	public void setCodephaseoid (String codephaseoid){
+		this.codephaseoid = codephaseoid;
+	}
+
+	/**
+	 * 鑾峰彇鎵�灞炴ā鏉块樁娈垫樉绀烘枃鏈�
+	 */
+	public String getCodephaseoidName (){
+		return codephaseoidName;
+	}
+
+	/**
+	 * 璁剧疆鎵�灞炴ā鏉块樁娈垫樉绀烘枃鏈�
+	 */
+	public void setCodephaseoidName (String codephaseoidName){
+		this.codephaseoidName = codephaseoidName;
+	}
+
+	@Override
+	public String toString() {
+		return "CodePhaseAttrDTO{" +
+			"codephaseoid='" + codephaseoid +"',"+
+			"codephaseoidName='" + codephaseoidName +"'," +
+			"}" + super.toString();
+	}
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/DictBizEnum.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeTempbuttonDTO.java
similarity index 67%
copy from Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/DictBizEnum.java
copy to Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeTempbuttonDTO.java
index 8f093c4..2a26918 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/DictBizEnum.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeTempbuttonDTO.java
@@ -14,26 +14,21 @@
  *  this software without specific prior written permission.
  *  Author: Chill 搴勯獮 (smallchill@163.com)
  */
-package com.vci.ubcs.omd.enums;
+package com.vci.ubcs.code.dto;
 
-import lombok.AllArgsConstructor;
-import lombok.Getter;
+import com.vci.ubcs.code.entity.CodeTempbuttonEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 /**
- * 涓氬姟瀛楀吀鏋氫妇绫�
+ * 缂栫爜搴撳畾涔�-妯℃澘鎸夐挳鎵╁睍 鏁版嵁浼犺緭瀵硅薄瀹炰綋绫�
  *
- * @author Chill
+ * @author yuxc
+ * @since 2023-04-20
  */
-@Getter
-@AllArgsConstructor
-public enum DictBizEnum {
-
-	/**
-	 * 娴嬭瘯
-	 */
-	TEST("test"),
-	;
-
-	final String name;
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class CodeTempbuttonDTO extends CodeTempbuttonEntity {
+	private static final long serialVersionUID = 1L;
 
 }
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/DictBizEnum.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeTempphaseDTO.java
similarity index 68%
copy from Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/DictBizEnum.java
copy to Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeTempphaseDTO.java
index 8f093c4..c753d6b 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/DictBizEnum.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeTempphaseDTO.java
@@ -14,26 +14,21 @@
  *  this software without specific prior written permission.
  *  Author: Chill 搴勯獮 (smallchill@163.com)
  */
-package com.vci.ubcs.omd.enums;
+package com.vci.ubcs.code.dto;
 
-import lombok.AllArgsConstructor;
-import lombok.Getter;
+import com.vci.ubcs.code.entity.CodeTempphaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 /**
- * 涓氬姟瀛楀吀鏋氫妇绫�
+ * 缂栫爜搴撳畾涔�-妯℃澘闃舵 鏁版嵁浼犺緭瀵硅薄瀹炰綋绫�
  *
- * @author Chill
+ * @author yuxc
+ * @since 2023-04-20
  */
-@Getter
-@AllArgsConstructor
-public enum DictBizEnum {
-
-	/**
-	 * 娴嬭瘯
-	 */
-	TEST("test"),
-	;
-
-	final String name;
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class CodeTempphaseDTO extends CodeTempphaseEntity {
+	private static final long serialVersionUID = 1L;
 
 }
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClsflowtempEntity.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClsflowtempEntity.java
new file mode 100644
index 0000000..e0edcca
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClsflowtempEntity.java
@@ -0,0 +1,76 @@
+/*
+ *      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.code.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.util.Date;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.tenant.mp.TenantEntity;
+
+/**
+ * 缂栫爜搴撳畾涔�-妯℃澘娴佺▼ 瀹炰綋绫�
+ *
+ * @author yuxc
+ * @since 2023-04-20
+ */
+@Data
+@TableName("PL_CODE_CLSFLOWTEMP")
+@ApiModel(value = "CodeClsflowtemp瀵硅薄", description = "缂栫爜搴撳畾涔�-妯℃澘娴佺▼")
+@EqualsAndHashCode(callSuper = true)
+public class CodeClsflowtempEntity extends BaseModel {
+
+
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String islastr;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String codeclassifyoid;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String classifytemplateoid;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String codeprocessuse;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String processversion;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String codetempattroidarr;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String codetempattroidarrname;
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClstempattrEntity.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClstempattrEntity.java
new file mode 100644
index 0000000..d200636
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClstempattrEntity.java
@@ -0,0 +1,297 @@
+/*
+ *      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.code.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.util.Date;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.tenant.mp.TenantEntity;
+
+/**
+ * 缂栫爜搴撳畾涔�-妯℃澘灞炴�� 瀹炰綋绫�
+ *
+ * @author yuxc
+ * @since 2023-04-19
+ */
+@Data
+@TableName("PL_CODE_CLSTEMPATTR")
+@ApiModel(value = "CodeClstempattr瀵硅薄", description = "缂栫爜搴撳畾涔�-妯℃澘灞炴��")
+@EqualsAndHashCode(callSuper = true)
+public class CodeClstempattrEntity extends BaseModel {
+
+
+
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String classifytemplateoid;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String attributedatatype;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String keyattrflag;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String queryattrflag;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String seniorqueryattrflag;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String samerepeatattrflag;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String sortattrflag;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String qrcodeflag;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String barcodeflag;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String componentrule;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String verifyrule;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String classifyinvokelevel;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String classifyinvokeattr;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String classifyinvokeattrname;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String classifyinvokeeditflag;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private Short ordernum;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String formdisplayflag;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String tabledisplayflag;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String attributegroup;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String enumid;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String enumname;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String enumeditflag;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String referbtmid;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String referbtmname;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String referconfig;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String requireflag;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String readonlyflag;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private Short controllength;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String formdisplaystyle;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String tabledisplaystyle;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String formhref;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String tablehref;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private Short precisionlength;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private Short scalelength;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String valuearea;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String codedateformat;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String tabledisplayjs;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String textareaflag;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String imageflag;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String defaultvalue;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String prefixvalue;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String suffixvalue;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String filtersourceattr;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String filtersourceattrname;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String enumstring;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private Short attrtablewidth;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String explain;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String libraryidentification;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String parentcode;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String parentname;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String parentqueryattr;
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodePhaseattrEntity.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodePhaseattrEntity.java
new file mode 100644
index 0000000..801b91b
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodePhaseattrEntity.java
@@ -0,0 +1,51 @@
+/*
+ *      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.code.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.util.Date;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.tenant.mp.TenantEntity;
+
+/**
+ * 缂栫爜搴撳畾涔�-妯℃澘闃舵-灞炴�� 瀹炰綋绫�
+ *
+ * @author yuxc
+ * @since 2023-04-20
+ */
+@Data
+@TableName("PL_CODE_PHASEATTR")
+@ApiModel(value = "CodePhaseattr瀵硅薄", description = "缂栫爜搴撳畾涔�-妯℃澘闃舵-灞炴��")
+@EqualsAndHashCode(callSuper = true)
+public class CodePhaseattrEntity extends BaseModel {
+
+
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String codephaseoid;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String attributegroup;
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeTempbuttonEntity.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeTempbuttonEntity.java
new file mode 100644
index 0000000..7685da9
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeTempbuttonEntity.java
@@ -0,0 +1,61 @@
+/*
+ *      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.code.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.util.Date;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.tenant.mp.TenantEntity;
+
+/**
+ * 缂栫爜搴撳畾涔�-妯℃澘鎸夐挳鎵╁睍 瀹炰綋绫�
+ *
+ * @author yuxc
+ * @since 2023-04-20
+ */
+@Data
+@TableName("PL_CODE_TEMPBUTTON")
+@ApiModel(value = "CodeTempbutton瀵硅薄", description = "缂栫爜搴撳畾涔�-妯℃澘鎸夐挳鎵╁睍")
+@EqualsAndHashCode(callSuper = true)
+public class CodeTempbuttonEntity extends BaseModel {
+
+
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String classifytemplateoid;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String classifybuttonoid;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String buttonuse;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private Short ordernum;
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeTempphaseEntity.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeTempphaseEntity.java
new file mode 100644
index 0000000..234d260
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeTempphaseEntity.java
@@ -0,0 +1,43 @@
+/*
+ *      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.code.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.util.Date;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.tenant.mp.TenantEntity;
+
+/**
+ * 缂栫爜搴撳畾涔�-妯℃澘闃舵 瀹炰綋绫�
+ *
+ * @author yuxc
+ * @since 2023-04-20
+ */
+@Data
+@TableName("PL_CODE_TEMPPHASE")
+@ApiModel(value = "CodeTempphase瀵硅薄", description = "缂栫爜搴撳畾涔�-妯℃澘闃舵")
+@EqualsAndHashCode(callSuper = true)
+public class CodeTempphaseEntity extends BaseModel {
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String codeclassifytemplateoid;
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/po/CodeClassifyPO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/po/CodeClassifyPO.java
index 43491eb..97a9784 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/po/CodeClassifyPO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/po/CodeClassifyPO.java
@@ -1,158 +1,169 @@
 package com.vci.ubcs.code.po;
 
+import com.vci.ubcs.com.vci.starter.poi.annotation.ExcelColumn;
+
 /**
  * 涓婚搴撳垎绫荤殑瀵煎叆瀵煎嚭瀵硅薄
  * @author weidy
  * @date 2022-04-01
  */
 public class CodeClassifyPO implements java.io.Serializable{
-    /**
-     * 搴忓垪鍖�
-     */
-    private static final long serialVersionUID = 6101784029360306020L;
-    /**
-     * 鎵�鍦ㄦ暟鎹
-     */
-    private String rowIndex;
+	/**
+	 * 搴忓垪鍖�
+	 */
+	private static final long serialVersionUID = 6101784029360306020L;
+	/**
+	 * 鎵�鍦ㄦ暟鎹
+	 */
+	@ExcelColumn(rowIndexColumn = true,value = "")
+	private String rowIndex;
 
 
-    /**
-     * 鍒嗙被缂栧彿
-     */
-    private String id;
-    /**
-     * 鍒嗙被鍚嶇О
-     */
-    private String name;
+	/**
+	 * 鍒嗙被缂栧彿
+	 */
+	@ExcelColumn(value="鍒嗙被缂栧彿",nullable = false)
+	private String id;
+	/**
+	 * 鍒嗙被鍚嶇О
+	 */
+	@ExcelColumn(value="鍒嗙被鍚嶇О",nullable = false)
+	private String name;
 
-    /**
-     * 鎻忚堪
-     */
-    private String description;
+	/**
+	 * 鎻忚堪
+	 */
+	@ExcelColumn(value = "鎻忚堪")
+	private String description;
 
-    /**
-     * 缂栫爜瑙勫垯缂栧彿
-     */
-    private String codeRuleId;
+	/**
+	 * 缂栫爜瑙勫垯缂栧彿
+	 */
+	@ExcelColumn(value = "缂栫爜瑙勫垯缂栧彿")
+	private String codeRuleId;
 
-    /**
-     * 涓氬姟绫诲瀷缂栧彿
-     */
-    private String btmTypeId;
+	/**
+	 * 涓氬姟绫诲瀷缂栧彿
+	 */
+	@ExcelColumn(value = "涓氬姟绫诲瀷缂栧彿")
+	private String btmTypeId;
 
-    /**
-     * 鏌ラ噸瑙勫垯缂栧彿
-     */
-    private String keyRepeatRuleId;
+	/**
+	 * 鏌ラ噸瑙勫垯缂栧彿
+	 */
+	@ExcelColumn(value = "鏌ラ噸瑙勫垯缂栧彿")
+	private String keyRepeatRuleId;
 
-    /**
-     * 鍒嗙被璺緞
-     */
-    private String path;
+	/**
+	 * 鍒嗙被璺緞
+	 */
+	@ExcelColumn(value = "鍒嗙被璺緞",nullable = false)
+	private String path;
 
-    /**
-     * 鐘舵�佹枃鏈�
-     */
-    private String lcStatusText;
+	/**
+	 * 鐘舵�佹枃鏈�
+	 */
+	@ExcelColumn(value = "鐘舵��")
+	private String lcStatusText;
 
-    /**
-     * 鐘舵��
-     */
-    private String lcStatus;
+	/**
+	 * 鐘舵��
+	 */
+	private String lcStatus;
 
-    public String getDescription() {
-        return description;
-    }
+	public String getDescription() {
+		return description;
+	}
 
-    public void setDescription(String description) {
-        this.description = description;
-    }
+	public void setDescription(String description) {
+		this.description = description;
+	}
 
-    public String getRowIndex() {
-        return rowIndex;
-    }
+	public String getRowIndex() {
+		return rowIndex;
+	}
 
-    public void setRowIndex(String rowIndex) {
-        this.rowIndex = rowIndex;
-    }
+	public void setRowIndex(String rowIndex) {
+		this.rowIndex = rowIndex;
+	}
 
-    public String getId() {
-        return id;
-    }
+	public String getId() {
+		return id;
+	}
 
-    public void setId(String id) {
-        this.id = id;
-    }
+	public void setId(String id) {
+		this.id = id;
+	}
 
-    public String getName() {
-        return name;
-    }
+	public String getName() {
+		return name;
+	}
 
-    public void setName(String name) {
-        this.name = name;
-    }
+	public void setName(String name) {
+		this.name = name;
+	}
 
-    public String getCodeRuleId() {
-        return codeRuleId;
-    }
+	public String getCodeRuleId() {
+		return codeRuleId;
+	}
 
-    public void setCodeRuleId(String codeRuleId) {
-        this.codeRuleId = codeRuleId;
-    }
+	public void setCodeRuleId(String codeRuleId) {
+		this.codeRuleId = codeRuleId;
+	}
 
-    public String getBtmTypeId() {
-        return btmTypeId;
-    }
+	public String getBtmTypeId() {
+		return btmTypeId;
+	}
 
-    public void setBtmTypeId(String btmTypeId) {
-        this.btmTypeId = btmTypeId;
-    }
+	public void setBtmTypeId(String btmTypeId) {
+		this.btmTypeId = btmTypeId;
+	}
 
-    public String getKeyRepeatRuleId() {
-        return keyRepeatRuleId;
-    }
+	public String getKeyRepeatRuleId() {
+		return keyRepeatRuleId;
+	}
 
-    public void setKeyRepeatRuleId(String keyRepeatRuleId) {
-        this.keyRepeatRuleId = keyRepeatRuleId;
-    }
+	public void setKeyRepeatRuleId(String keyRepeatRuleId) {
+		this.keyRepeatRuleId = keyRepeatRuleId;
+	}
 
-    public String getPath() {
-        return path;
-    }
+	public String getPath() {
+		return path;
+	}
 
-    public void setPath(String path) {
-        this.path = path;
-    }
+	public void setPath(String path) {
+		this.path = path;
+	}
 
-    public String getLcStatusText() {
-        return lcStatusText;
-    }
+	public String getLcStatusText() {
+		return lcStatusText;
+	}
 
-    public void setLcStatusText(String lcStatusText) {
-        this.lcStatusText = lcStatusText;
-    }
+	public void setLcStatusText(String lcStatusText) {
+		this.lcStatusText = lcStatusText;
+	}
 
-    public String getLcStatus() {
-        return lcStatus;
-    }
+	public String getLcStatus() {
+		return lcStatus;
+	}
 
-    public void setLcStatus(String lcStatus) {
-        this.lcStatus = lcStatus;
-    }
+	public void setLcStatus(String lcStatus) {
+		this.lcStatus = lcStatus;
+	}
 
-    @Override
-    public String toString() {
-        return "CodeClassifyPO{" +
-                "rowIndex='" + rowIndex + '\'' +
-                ", id='" + id + '\'' +
-                ", name='" + name + '\'' +
-                ", description='" + description + '\'' +
-                ", codeRuleId='" + codeRuleId + '\'' +
-                ", btmTypeId='" + btmTypeId + '\'' +
-                ", keyRepeatRuleId='" + keyRepeatRuleId + '\'' +
-                ", path='" + path + '\'' +
-                ", lcStatusText='" + lcStatusText + '\'' +
-                ", lcStatus='" + lcStatus + '\'' +
-                '}';
-    }
+	@Override
+	public String toString() {
+		return "CodeClassifyPO{" +
+			"rowIndex='" + rowIndex + '\'' +
+			", id='" + id + '\'' +
+			", name='" + name + '\'' +
+			", description='" + description + '\'' +
+			", codeRuleId='" + codeRuleId + '\'' +
+			", btmTypeId='" + btmTypeId + '\'' +
+			", keyRepeatRuleId='" + keyRepeatRuleId + '\'' +
+			", path='" + path + '\'' +
+			", lcStatusText='" + lcStatusText + '\'' +
+			", lcStatus='" + lcStatus + '\'' +
+			'}';
+	}
 }
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/DictBizEnum.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeClsflowtempVO.java
similarity index 66%
copy from Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/DictBizEnum.java
copy to Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeClsflowtempVO.java
index 8f093c4..e62d3a5 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/DictBizEnum.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeClsflowtempVO.java
@@ -14,26 +14,22 @@
  *  this software without specific prior written permission.
  *  Author: Chill 搴勯獮 (smallchill@163.com)
  */
-package com.vci.ubcs.omd.enums;
+package com.vci.ubcs.code.vo;
 
-import lombok.AllArgsConstructor;
-import lombok.Getter;
+import com.vci.ubcs.code.entity.CodeClsflowtempEntity;
+import org.springblade.core.tool.node.INode;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 /**
- * 涓氬姟瀛楀吀鏋氫妇绫�
+ * 缂栫爜搴撳畾涔�-妯℃澘娴佺▼ 瑙嗗浘瀹炰綋绫�
  *
- * @author Chill
+ * @author yuxc
+ * @since 2023-04-20
  */
-@Getter
-@AllArgsConstructor
-public enum DictBizEnum {
-
-	/**
-	 * 娴嬭瘯
-	 */
-	TEST("test"),
-	;
-
-	final String name;
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class CodeClsflowtempVO extends CodeClsflowtempEntity {
+	private static final long serialVersionUID = 1L;
 
 }
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/DictBizEnum.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeClstempattrVO.java
similarity index 63%
copy from Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/DictBizEnum.java
copy to Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeClstempattrVO.java
index 8f093c4..80619d8 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/DictBizEnum.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeClstempattrVO.java
@@ -14,26 +14,27 @@
  *  this software without specific prior written permission.
  *  Author: Chill 搴勯獮 (smallchill@163.com)
  */
-package com.vci.ubcs.omd.enums;
+package com.vci.ubcs.code.vo;
 
-import lombok.AllArgsConstructor;
-import lombok.Getter;
+import com.vci.ubcs.code.entity.CodeClstempattrEntity;
+import org.springblade.core.tool.node.INode;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 /**
- * 涓氬姟瀛楀吀鏋氫妇绫�
+ * 缂栫爜搴撳畾涔�-妯℃澘灞炴�� 瑙嗗浘瀹炰綋绫�
  *
- * @author Chill
+ * @author yuxc
+ * @since 2023-04-19
  */
-@Getter
-@AllArgsConstructor
-public enum DictBizEnum {
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class CodeClstempattrVO extends CodeClstempattrEntity {
+	private static final long serialVersionUID = 1L;
 
 	/**
-	 * 娴嬭瘯
+	 * 灞炴�х被鍨嬫樉绀�
 	 */
-	TEST("test"),
-	;
-
-	final String name;
+	private String attributeDataTypeText;
 
 }
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeClstemplateVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeClstemplateVO.java
index 6925f38..b0af4bb 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeClstemplateVO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeClstemplateVO.java
@@ -20,6 +20,8 @@
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.util.List;
+
 /**
  * 缂栫爜搴撳畾涔�-妯℃澘绠$悊 瑙嗗浘瀹炰綋绫�
  *
@@ -31,4 +33,9 @@
 public class CodeClstemplateVO extends CodeClstemplateEntity {
 	private static final long serialVersionUID = 1L;
 
+	/**
+	 * 鍖呭惈鐨勫睘鎬у唴瀹�
+	 */
+	private List<CodeClstempattrVO> attributes;
+
 }
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/DictBizEnum.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodePhaseattrVO.java
similarity index 66%
copy from Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/DictBizEnum.java
copy to Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodePhaseattrVO.java
index 8f093c4..8fd4fad 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/DictBizEnum.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodePhaseattrVO.java
@@ -14,26 +14,22 @@
  *  this software without specific prior written permission.
  *  Author: Chill 搴勯獮 (smallchill@163.com)
  */
-package com.vci.ubcs.omd.enums;
+package com.vci.ubcs.code.vo;
 
-import lombok.AllArgsConstructor;
-import lombok.Getter;
+import com.vci.ubcs.code.entity.CodePhaseattrEntity;
+import org.springblade.core.tool.node.INode;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 /**
- * 涓氬姟瀛楀吀鏋氫妇绫�
+ * 缂栫爜搴撳畾涔�-妯℃澘闃舵-灞炴�� 瑙嗗浘瀹炰綋绫�
  *
- * @author Chill
+ * @author yuxc
+ * @since 2023-04-20
  */
-@Getter
-@AllArgsConstructor
-public enum DictBizEnum {
-
-	/**
-	 * 娴嬭瘯
-	 */
-	TEST("test"),
-	;
-
-	final String name;
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class CodePhaseattrVO extends CodePhaseattrEntity {
+	private static final long serialVersionUID = 1L;
 
 }
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/DictBizEnum.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeTempbuttonVO.java
similarity index 66%
copy from Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/DictBizEnum.java
copy to Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeTempbuttonVO.java
index 8f093c4..5eb1a67 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/DictBizEnum.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeTempbuttonVO.java
@@ -14,26 +14,22 @@
  *  this software without specific prior written permission.
  *  Author: Chill 搴勯獮 (smallchill@163.com)
  */
-package com.vci.ubcs.omd.enums;
+package com.vci.ubcs.code.vo;
 
-import lombok.AllArgsConstructor;
-import lombok.Getter;
+import com.vci.ubcs.code.entity.CodeTempbuttonEntity;
+import org.springblade.core.tool.node.INode;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 /**
- * 涓氬姟瀛楀吀鏋氫妇绫�
+ * 缂栫爜搴撳畾涔�-妯℃澘鎸夐挳鎵╁睍 瑙嗗浘瀹炰綋绫�
  *
- * @author Chill
+ * @author yuxc
+ * @since 2023-04-20
  */
-@Getter
-@AllArgsConstructor
-public enum DictBizEnum {
-
-	/**
-	 * 娴嬭瘯
-	 */
-	TEST("test"),
-	;
-
-	final String name;
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class CodeTempbuttonVO extends CodeTempbuttonEntity {
+	private static final long serialVersionUID = 1L;
 
 }
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/DictBizEnum.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeTempphaseVO.java
similarity index 66%
copy from Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/DictBizEnum.java
copy to Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeTempphaseVO.java
index 8f093c4..c1110e2 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/DictBizEnum.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeTempphaseVO.java
@@ -14,26 +14,22 @@
  *  this software without specific prior written permission.
  *  Author: Chill 搴勯獮 (smallchill@163.com)
  */
-package com.vci.ubcs.omd.enums;
+package com.vci.ubcs.code.vo;
 
-import lombok.AllArgsConstructor;
-import lombok.Getter;
+import com.vci.ubcs.code.entity.CodeTempphaseEntity;
+import org.springblade.core.tool.node.INode;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 /**
- * 涓氬姟瀛楀吀鏋氫妇绫�
+ * 缂栫爜搴撳畾涔�-妯℃澘闃舵 瑙嗗浘瀹炰綋绫�
  *
- * @author Chill
+ * @author yuxc
+ * @since 2023-04-20
  */
-@Getter
-@AllArgsConstructor
-public enum DictBizEnum {
-
-	/**
-	 * 娴嬭瘯
-	 */
-	TEST("test"),
-	;
-
-	final String name;
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class CodeTempphaseVO extends CodeTempphaseEntity {
+	private static final long serialVersionUID = 1L;
 
 }
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/poi/util/ExcelUtil.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/poi/util/ExcelUtil.java
index f4b549d..f43b6bd 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/poi/util/ExcelUtil.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/poi/util/ExcelUtil.java
@@ -11,12 +11,40 @@
 import com.vci.ubcs.com.vci.starter.web.util.LangBaseUtil;
 import com.vci.ubcs.com.vci.starter.web.util.VciBaseUtil;
 import org.apache.commons.io.IOUtils;
-import org.apache.poi.hssf.usermodel.*;
+import org.apache.poi.hssf.usermodel.HSSFCell;
+import org.apache.poi.hssf.usermodel.HSSFDataFormat;
+import org.apache.poi.hssf.usermodel.HSSFDataValidation;
+import org.apache.poi.hssf.usermodel.HSSFDataValidationHelper;
+import org.apache.poi.hssf.usermodel.HSSFRichTextString;
+import org.apache.poi.hssf.usermodel.HSSFSheet;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.util.HSSFColor;
-import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.hssf.util.HSSFColor.HSSFColorPredefined;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.CellStyle;
+import org.apache.poi.ss.usermodel.CellType;
+import org.apache.poi.ss.usermodel.CellValue;
+import org.apache.poi.ss.usermodel.DataValidation;
+import org.apache.poi.ss.usermodel.DataValidationConstraint;
+import org.apache.poi.ss.usermodel.DateUtil;
+import org.apache.poi.ss.usermodel.Font;
+import org.apache.poi.ss.usermodel.FormulaEvaluator;
+import org.apache.poi.ss.usermodel.HorizontalAlignment;
+import org.apache.poi.ss.usermodel.Name;
+import org.apache.poi.ss.usermodel.RichTextString;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.VerticalAlignment;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.ss.usermodel.WorkbookFactory;
 import org.apache.poi.ss.util.CellRangeAddress;
 import org.apache.poi.ss.util.CellRangeAddressList;
-import org.apache.poi.xssf.usermodel.*;
+import org.apache.poi.xssf.usermodel.XSSFDataValidation;
+import org.apache.poi.xssf.usermodel.XSSFDataValidationConstraint;
+import org.apache.poi.xssf.usermodel.XSSFDataValidationHelper;
+import org.apache.poi.xssf.usermodel.XSSFRichTextString;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springblade.core.tool.utils.StringUtil;
@@ -24,6 +52,9 @@
 
 import java.io.*;
 import java.lang.reflect.Field;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Proxy;
+import sun.reflect.annotation.*;
 import java.math.BigDecimal;
 import java.nio.channels.FileChannel;
 import java.util.*;
@@ -790,7 +821,11 @@
 			Map<Field, ExcelColumn> excelColumnSet = getExcelColumnAnnotations(doClass);
 			Map<String, ExcelColumn> excelTitleMap = (Map)((Map)Optional.of(excelColumnSet).get()).values().stream().collect(Collectors.toMap((s) -> {
 //				return s.value();
-				return s;
+//				ExcelColumn s1 = (ExcelColumn) s;
+//				s1.value();
+//				((InvocationHandler) ((Proxy) s).).memberValues.get("value");
+				return ((ExcelColumn) s).value();
+//				return ((AnnotationInvocationHandler) ((Proxy) s).h).memberValues.get("value");
 			}, (t) -> {
 				return t;
 			}));
@@ -1046,7 +1081,7 @@
 	private static Object getCellValue(Cell cell, FormulaEvaluator evaluator) {
 		if (cell != null) {
 			Object cellValue = null;
-			CellType cellTypeEnum = cell.getCellType();
+			CellType cellTypeEnum = cell.getCellTypeEnum();
 			switch (cellTypeEnum) {
 				case STRING:
 					String thisCellValue = cell.getStringCellValue();
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/web/constant/QueryOptionConstant.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/web/constant/QueryOptionConstant.java
new file mode 100644
index 0000000..e177a0b
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/com/vci/starter/web/constant/QueryOptionConstant.java
@@ -0,0 +1,21 @@
+package com.vci.ubcs.com.vci.starter.web.constant;
+
+
+public class QueryOptionConstant {
+	public static final String IN = "\\IN";
+	public static final String NOTIN = "\\NOTIN";
+	public static final String NOTEQUAL = "!=";
+	public static final String MORE = ">";
+	public static final String MORETHAN = ">=";
+	public static final String LESS = "<";
+	public static final String LESSTHAN = "<=";
+	public static final String OR = "\\OR";
+	public static final String ISNULL = "=null";
+	public static final String ISNOTNULL = "!=null";
+	public static final String EQUAL = "=";
+	public static final String AND = "and";
+	public static final String NO_OR_AND = "${no_or_and}";
+
+	public QueryOptionConstant() {
+	}
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/feign/IDictBizClient.java b/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/feign/IDictBizClient.java
index 03954e4..ce51779 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/feign/IDictBizClient.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/feign/IDictBizClient.java
@@ -22,8 +22,10 @@
 import com.vci.ubcs.system.entity.DictBiz;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
 
+import javax.validation.Valid;
 import java.util.List;
 
 /**
@@ -41,6 +43,7 @@
 	String GET_BY_ID = API_PREFIX + "/dict-biz/get-by-id";
 	String GET_VALUE = API_PREFIX + "/dict-biz/get-value";
 	String GET_LIST = API_PREFIX + "/dict-biz/get-list";
+	String CHECK_VALUE = API_PREFIX + "/dict-biz/check-value";
 
 	/**
 	 * 鑾峰彇瀛楀吀瀹炰綋
@@ -70,4 +73,13 @@
 	@GetMapping(GET_LIST)
 	R<List<DictBiz>> getList(@RequestParam("code") String code);
 
+	/**
+	 * 妫�鏌ュ瓧鍏告槸鍚﹀瓨鍦紝瀛樺湪鍗宠繑鍥烇紝涓嶅瓨鍦ㄦ柊澧�
+	 *
+	 * @param dictBiz 瀛楀吀鏁版嵁
+	 * @return
+	 */
+	@GetMapping(CHECK_VALUE)
+	R getCheck(@Valid @RequestBody DictBiz dictBiz);
+
 }
diff --git a/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/feign/IDictBizClientFallback.java b/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/feign/IDictBizClientFallback.java
index 08c4506..a19a8c7 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/feign/IDictBizClientFallback.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-dict-api/src/main/java/com/vci/ubcs/system/feign/IDictBizClientFallback.java
@@ -43,4 +43,9 @@
 	public R<List<DictBiz>> getList(String code) {
 		return R.fail("鑾峰彇鏁版嵁澶辫触");
 	}
+
+	@Override
+	public R getCheck(DictBiz dictBiz) {
+		return R.fail("鑾峰彇鏁版嵁澶辫触");
+	}
 }
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/cache/DictBizCache.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/cache/DictCache.java
similarity index 79%
rename from Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/cache/DictBizCache.java
rename to Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/cache/DictCache.java
index ed9fa81..12ff05b 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/cache/DictBizCache.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/cache/DictCache.java
@@ -16,9 +16,9 @@
  */
 package com.vci.ubcs.omd.cache;
 
-import com.vci.ubcs.omd.entity.DictBizM;
-import com.vci.ubcs.omd.enums.DictBizEnum;
-import com.vci.ubcs.omd.feign.IDictBizClient;
+import com.vci.ubcs.omd.entity.Dict;
+import com.vci.ubcs.omd.enums.DictEnum;
+import com.vci.ubcs.omd.feign.IDictClient;
 import org.springblade.core.cache.utils.CacheUtil;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
@@ -34,17 +34,17 @@
  *
  * @author Chill
  */
-public class DictBizCache {
+public class DictCache {
 
-	private static final String DICT_ID = "dictBiz:id";
-	private static final String DICT_VALUE = "dictBiz:value";
-	private static final String DICT_LIST = "dictBiz:list";
+	private static final String DICT_ID = "dict:id";
+	private static final String DICT_VALUE = "dict:value";
+	private static final String DICT_LIST = "dict:list";
 
-	private static IDictBizClient dictClient;
+	private static IDictClient dictClient;
 
-	private static IDictBizClient getDictClient() {
+	private static IDictClient getDictClient() {
 		if (dictClient == null) {
-			dictClient = SpringUtil.getBean(IDictBizClient.class);
+			dictClient = SpringUtil.getBean(IDictClient.class);
 		}
 		return dictClient;
 	}
@@ -55,10 +55,10 @@
 	 * @param id 涓婚敭
 	 * @return DictBiz
 	 */
-	public static DictBizM getById(Long id) {
+	public static Dict getById(Long id) {
 		String keyPrefix = DICT_ID.concat(StringPool.DASH).concat(AuthUtil.getTenantId()).concat(StringPool.COLON);
 		return CacheUtil.get(DICT_CACHE, keyPrefix, id, () -> {
-			R<DictBizM> result = getDictClient().getById(id);
+			R<Dict> result = getDictClient().getById(id);
 			return result.getData();
 		});
 	}
@@ -70,7 +70,7 @@
 	 * @param dictKey Integer鍨嬪瓧鍏搁敭
 	 * @return String
 	 */
-	public static String getValue(DictBizEnum code, Integer dictKey) {
+	public static String getValue(DictEnum code, Integer dictKey) {
 		return getValue(code.getName(), dictKey);
 	}
 
@@ -97,7 +97,7 @@
 	 * @param dictKey String鍨嬪瓧鍏搁敭
 	 * @return String
 	 */
-	public static String getValue(DictBizEnum code, String dictKey) {
+	public static String getValue(DictEnum code, String dictKey) {
 		return getValue(code.getName(), dictKey);
 	}
 
@@ -122,10 +122,10 @@
 	 * @param code 瀛楀吀缂栧彿
 	 * @return List<DictBiz>
 	 */
-	public static List<DictBizM> getList(String code) {
+	public static List<Dict> getList(String code) {
 		String keyPrefix = DICT_LIST.concat(StringPool.DASH).concat(AuthUtil.getTenantId()).concat(StringPool.COLON);
 		return CacheUtil.get(DICT_CACHE, keyPrefix, code, () -> {
-			R<List<DictBizM>> result = getDictClient().getList(code);
+			R<List<Dict>> result = getDictClient().getList(code);
 			return result.getData();
 		});
 	}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/DictBizM.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/Dict.java
similarity index 84%
rename from Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/DictBizM.java
rename to Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/Dict.java
index 0d952f2..29ee3e6 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/DictBizM.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/Dict.java
@@ -25,6 +25,7 @@
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.apache.ibatis.type.Alias;
 
 import java.io.Serializable;
 
@@ -34,9 +35,10 @@
  * @author Chill
  */
 @Data
-@TableName("pl_sys_dict_biz")
-@ApiModel(value = "DictBiz瀵硅薄", description = "DictBiz瀵硅薄")
-public class DictBizM implements Serializable {
+@TableName("pl_sys_dict")
+@Alias("pl_sys_dict_omd")
+@ApiModel(value = "Dict瀵硅薄", description = "Dict瀵硅薄")
+public class Dict implements Serializable {
 
 	private static final long serialVersionUID = 1L;
 
@@ -49,12 +51,6 @@
 	private Long id;
 
 	/**
-	 * 绉熸埛ID
-	 */
-	@ApiModelProperty(value = "绉熸埛ID")
-	private String tenantId;
-
-	/**
 	 * 鐖朵富閿�
 	 */
 	@JsonSerialize(using = ToStringSerializer.class)
@@ -64,19 +60,19 @@
 	/**
 	 * 瀛楀吀鐮�
 	 */
-	@ApiModelProperty(value = "瀛楀吀鐮�")
+	@ApiModelProperty(value = "鏋氫妇鐮�")
 	private String code;
 
 	/**
 	 * 瀛楀吀鍊�
 	 */
-	@ApiModelProperty(value = "瀛楀吀鍊�")
+	@ApiModelProperty(value = "鏋氫妇鍊�")
 	private String dictKey;
 
 	/**
 	 * 瀛楀吀鍚嶇О
 	 */
-	@ApiModelProperty(value = "瀛楀吀鍚嶇О")
+	@ApiModelProperty(value = "鏋氫妇鍚嶇О")
 	private String dictValue;
 
 	/**
@@ -88,7 +84,7 @@
 	/**
 	 * 瀛楀吀澶囨敞
 	 */
-	@ApiModelProperty(value = "瀛楀吀澶囨敞")
+	@ApiModelProperty(value = "鏋氫妇澶囨敞")
 	private String remark;
 
 	/**
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/DictBizEnum.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/DictEnum.java
similarity index 95%
rename from Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/DictBizEnum.java
rename to Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/DictEnum.java
index 8f093c4..056cd7d 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/DictBizEnum.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/DictEnum.java
@@ -20,13 +20,13 @@
 import lombok.Getter;
 
 /**
- * 涓氬姟瀛楀吀鏋氫妇绫�
+ * 鏋氫妇绫�
  *
  * @author Chill
  */
 @Getter
 @AllArgsConstructor
-public enum DictBizEnum {
+public enum DictEnum {
 
 	/**
 	 * 娴嬭瘯
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IDictBizClient.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IDictClient.java
similarity index 79%
rename from Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IDictBizClient.java
rename to Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IDictClient.java
index 898b720..bd14e19 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IDictBizClient.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IDictClient.java
@@ -17,7 +17,7 @@
 package com.vci.ubcs.omd.feign;
 
 
-import com.vci.ubcs.omd.entity.DictBizM;
+import com.vci.ubcs.omd.entity.Dict;
 import org.springblade.core.launch.constant.AppConstant;
 import org.springblade.core.tool.api.R;
 import org.springframework.cloud.openfeign.FeignClient;
@@ -35,15 +35,15 @@
  */
 @FeignClient(
 	value = AppConstant.APPLICATION_NAME_OMD,
-	fallback = IDictBizClientFallback.class
+	fallback = IDictClientFallback.class
 )
-public interface IDictBizClient {
+public interface IDictClient {
 
 	String API_PREFIX = "/client";
-	String GET_BY_ID = API_PREFIX + "/dict-biz/get-by-id";
-	String GET_VALUE = API_PREFIX + "/dict-biz/get-value";
-	String GET_LIST = API_PREFIX + "/dict-biz/get-list";
-	String CHECK_VALUE = API_PREFIX + "/dict-biz/check-value";
+	String GET_BY_ID = API_PREFIX + "/dict/get-by-id";
+	String GET_VALUE = API_PREFIX + "/dict/get-value";
+	String GET_LIST = API_PREFIX + "/dict/get-list";
+	String CHECK_VALUE = API_PREFIX + "/dict/check-value";
 
 	/**
 	 * 鑾峰彇瀛楀吀瀹炰綋
@@ -52,7 +52,7 @@
 	 * @return
 	 */
 	@GetMapping(GET_BY_ID)
-	R<DictBizM> getById(@RequestParam("id") Long id);
+	R<Dict> getById(@RequestParam("id") Long id);
 
 	/**
 	 * 鑾峰彇瀛楀吀琛ㄥ搴斿��
@@ -71,7 +71,7 @@
 	 * @return
 	 */
 	@GetMapping(GET_LIST)
-	R<List<DictBizM>> getList(@RequestParam("code") String code);
+	R<List<Dict>> getList(@RequestParam("code") String code);
 
 	/**
 	 * 妫�鏌ュ瓧鍏告槸鍚﹀瓨鍦紝瀛樺湪鍗宠繑鍥烇紝涓嶅瓨鍦ㄦ柊澧�
@@ -80,6 +80,6 @@
 	 * @return
 	 */
 	@GetMapping(CHECK_VALUE)
-	R getCheck(@Valid @RequestBody DictBizM dict);
+	R getCheck(@Valid @RequestBody Dict dict);
 
 }
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IDictBizClientFallback.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IDictClientFallback.java
similarity index 85%
rename from Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IDictBizClientFallback.java
rename to Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IDictClientFallback.java
index acacfe8..d5879fb 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IDictBizClientFallback.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IDictClientFallback.java
@@ -17,7 +17,7 @@
 package com.vci.ubcs.omd.feign;
 
 import org.springblade.core.tool.api.R;
-import com.vci.ubcs.omd.entity.DictBizM;
+import com.vci.ubcs.omd.entity.Dict;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
@@ -28,9 +28,9 @@
  * @author Chill
  */
 @Component
-public class IDictBizClientFallback implements IDictBizClient {
+public class IDictClientFallback implements IDictClient {
 	@Override
-	public R<DictBizM> getById(Long id) {
+	public R<Dict> getById(Long id) {
 		return R.fail("鑾峰彇鏁版嵁澶辫触");
 	}
 
@@ -40,12 +40,12 @@
 	}
 
 	@Override
-	public R<List<DictBizM>> getList(String code) {
+	public R<List<Dict>> getList(String code) {
 		return R.fail("鑾峰彇鏁版嵁澶辫触");
 	}
 
 	@Override
-	public R getCheck(DictBizM dict) {
+	public R getCheck(Dict dict) {
 		return R.fail("鑾峰彇鏁版嵁澶辫触");
 	}
 }
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/DictBizMVO.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/DictVO.java
similarity index 87%
rename from Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/DictBizMVO.java
rename to Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/DictVO.java
index 4afbd3f..54a85fd 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/DictBizMVO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/DictVO.java
@@ -19,7 +19,7 @@
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import com.vci.ubcs.omd.entity.DictBizM;
+import com.vci.ubcs.omd.entity.Dict;
 import io.swagger.annotations.ApiModel;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -35,8 +35,8 @@
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
-@ApiModel(value = "DictBizVO瀵硅薄", description = "DictBizVO瀵硅薄")
-public class DictBizMVO extends DictBizM implements INode<DictBizM> {
+@ApiModel(value = "DictVO瀵硅薄", description = "DictVO瀵硅薄")
+public class DictVO extends Dict implements INode<Dict> {
 	private static final long serialVersionUID = 1L;
 	/**
 	 * 涓婚敭ID
@@ -54,10 +54,10 @@
 	 * 瀛愬瓩鑺傜偣
 	 */
 	@JsonInclude(JsonInclude.Include.NON_EMPTY)
-	private List<DictBizM> children;
+	private List<Dict> children;
 
 	@Override
-	public List<DictBizM> getChildren() {
+	public List<Dict> getChildren() {
 		if (this.children == null) {
 			this.children = new ArrayList<>();
 		}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyController.java
index 8232b33..c854d94 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyController.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyController.java
@@ -18,11 +18,14 @@
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import com.vci.ubcs.code.entity.CodeClassify;
 import com.vci.ubcs.code.mapper.CodeClassifyMapper;
+import com.vci.ubcs.code.service.ICodeClassifyService;
 import com.vci.ubcs.code.vo.CodeOsattributeVO;
 import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
 import com.vci.ubcs.code.vo.pagemodel.TreeQueryObject;
+import com.vci.ubcs.code.wrapper.CodeClassifyWrapper;
 import com.vci.ubcs.com.vci.starter.util.LocalFileUtil;
 import com.vci.ubcs.com.vci.starter.web.pagemodel.BaseQueryObject;
 import com.vci.ubcs.com.vci.starter.web.pagemodel.DataGrid;
@@ -33,25 +36,19 @@
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
-
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-
+import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.utils.AuthUtil;
-import org.springblade.core.tool.api.IResultCode;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.StringUtil;
 import org.springframework.web.bind.annotation.*;
-import com.vci.ubcs.code.wrapper.CodeClassifyWrapper;
-import com.vci.ubcs.code.service.ICodeClassifyService;
-import org.springblade.core.boot.ctrl.BladeController;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
 import java.io.File;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
@@ -70,7 +67,7 @@
  */
 @RestController
 @AllArgsConstructor
-@RequestMapping("ubcs-code/codeClassify")
+@RequestMapping("/codeClassify")
 @Api(value = "涓婚搴撳畾涔夎〃", tags = "涓婚搴撳畾涔夎〃鎺ュ彛")
 public class CodeClassifyController extends BladeController {
 
@@ -175,7 +172,7 @@
 	 * @return 鎵ц缁撴灉 success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢�
 	 */
 	@PostMapping( "/checkIsCanDelete")
-	public R checkIsCanDelete(CodeClassify codeClassify)  {
+	public R checkIsCanDelete(@Valid @RequestBody CodeClassify codeClassify)  {
 		return codeClassifyService.checkIsCanDelete(codeClassify);
 	}
 
@@ -185,7 +182,7 @@
 	 * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
 	 */
 	@DeleteMapping( "/deleteData")
-	public R delCodeClassify(CodeClassify codeClassify) {
+	public R delCodeClassify(@Valid @RequestBody CodeClassify codeClassify) {
 		return codeClassifyService.deleteCodeClassify(codeClassify);
 	}
 
@@ -195,7 +192,7 @@
 	 * @return
 	 */
 	@PostMapping( "/enableData")
-	public R enable(CodeClassify codeClassify) {
+	public R enable(@Valid @RequestBody CodeClassify codeClassify) {
 		return codeClassifyService.updateLcStatus(codeClassify.getOid(),FRAMEWORK_DATA_ENABLED);
 	}
 
@@ -205,7 +202,7 @@
 	 * @return
 	 */
 	@PostMapping( "/disableData")
-	public R disable(CodeClassify codeClassify) {
+	public R disable(@Valid @RequestBody CodeClassify codeClassify) {
 		return codeClassifyService.updateLcStatus(codeClassify.getOid(),FRAMEWORK_DATA_DISABLED);
 	}
 
@@ -226,7 +223,7 @@
 	 * @return 涓婚搴撳垎绫绘樉绀烘爲
 	 */
 	@GetMapping("/referTree")
-	public List<Tree> referTree(TreeQueryObject treeQueryObject)  {
+	public List<Tree> referTree(@RequestBody TreeQueryObject treeQueryObject)  {
 		return codeClassifyService.referTree(treeQueryObject);
 	}
 
@@ -235,7 +232,7 @@
 	 * @param oid 鍒嗙被涓婚敭
 	 */
 	@GetMapping("/exportClassify")
-	public void exportClassify(String oid, HttpServletResponse response) throws IOException {
+	public void exportClassify(@ApiParam(value = "涓婚敭", required = true) @RequestParam String oid, HttpServletResponse response) throws IOException {
 		String excelName = codeClassifyService.exportClassify(oid);
 		try {
 			ControllerUtil.writeFileToResponse(response,excelName);
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClsflowtempController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClsflowtempController.java
new file mode 100644
index 0000000..c2ac58c
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClsflowtempController.java
@@ -0,0 +1,129 @@
+/*
+ *      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.code.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.code.entity.CodeClsflowtempEntity;
+import com.vci.ubcs.code.mapper.CodeClsflowtempMapper;
+import com.vci.ubcs.code.service.ICodeClsflowtempService;
+import com.vci.ubcs.code.vo.CodeClsflowtempVO;
+import com.vci.ubcs.code.wrapper.CodeClsflowtempWrapper;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+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.Func;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+
+/**
+ * 缂栫爜搴撳畾涔�-妯℃澘娴佺▼ 鎺у埗鍣�
+ *
+ * @author yuxc
+ * @since 2023-04-20
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("ubcs-code/CodeClsflowtemp")
+@Api(value = "缂栫爜搴撳畾涔�-妯℃澘娴佺▼", tags = "缂栫爜搴撳畾涔�-妯℃澘娴佺▼鎺ュ彛")
+public class CodeClsflowtempController extends BladeController {
+
+	private final ICodeClsflowtempService CodeClsflowtempService;
+
+	private CodeClsflowtempMapper codeClsflowtempMapper;
+
+	/**
+	 * 缂栫爜搴撳畾涔�-妯℃澘娴佺▼ 璇︽儏
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "璇︽儏", notes = "浼犲叆CodeClsflowtemp")
+	public R<CodeClsflowtempVO> detail(CodeClsflowtempEntity CodeClsflowtemp) {
+		CodeClsflowtempEntity detail = CodeClsflowtempService.getOne(Condition.getQueryWrapper(CodeClsflowtemp));
+		return R.data(CodeClsflowtempWrapper.build().entityVO(detail));
+	}
+	/**
+	 * 缂栫爜搴撳畾涔�-妯℃澘娴佺▼ 鍒嗛〉
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "鍒嗛〉", notes = "浼犲叆CodeClsflowtemp")
+	public R<IPage<CodeClsflowtempVO>> list(CodeClsflowtempEntity CodeClsflowtemp, Query query) {
+		IPage<CodeClsflowtempEntity> pages = CodeClsflowtempService.page(Condition.getPage(query), Condition.getQueryWrapper(CodeClsflowtemp));
+		return R.data(CodeClsflowtempWrapper.build().pageVO(pages));
+	}
+
+	/**
+	 * 缂栫爜搴撳畾涔�-妯℃澘娴佺▼ 鑷畾涔夊垎椤�
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "鍒嗛〉", notes = "浼犲叆CodeClsflowtemp")
+	public R<IPage<CodeClsflowtempVO>> page(CodeClsflowtempVO CodeClsflowtemp, Query query) {
+		IPage<CodeClsflowtempVO> pages = CodeClsflowtempService.selectCodeClsflowtempPage(Condition.getPage(query), CodeClsflowtemp);
+		return R.data(pages);
+	}
+
+	/**
+	 * 缂栫爜搴撳畾涔�-妯℃澘娴佺▼ 鏂板
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "鏂板", notes = "浼犲叆CodeClsflowtemp")
+	public R save(@Valid @RequestBody CodeClsflowtempEntity CodeClsflowtemp) {
+		return R.status(CodeClsflowtempService.save(CodeClsflowtemp));
+	}
+
+	/**
+	 * 缂栫爜搴撳畾涔�-妯℃澘娴佺▼ 淇敼
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "淇敼", notes = "浼犲叆CodeClsflowtemp")
+	public R update(@Valid @RequestBody CodeClsflowtempEntity CodeClsflowtemp) {
+		return R.status(CodeClsflowtempService.updateById(CodeClsflowtemp));
+	}
+
+	/**
+	 * 缂栫爜搴撳畾涔�-妯℃澘娴佺▼ 鏂板鎴栦慨鏀�
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆CodeClsflowtemp")
+	public R submit(@Valid @RequestBody CodeClsflowtempEntity CodeClsflowtemp) {
+		return R.status(CodeClsflowtempService.saveOrUpdate(CodeClsflowtemp));
+	}
+
+	/**
+	 * 缂栫爜搴撳畾涔�-妯℃澘娴佺▼ 鍒犻櫎
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
+	public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
+		return R.status(SqlHelper.retBool(codeClsflowtempMapper.deleteBatchIds(Func.toLongList(ids))));
+	}
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClstempattrController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClstempattrController.java
new file mode 100644
index 0000000..2ac1921
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClstempattrController.java
@@ -0,0 +1,125 @@
+/*
+ *      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.code.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.code.entity.CodeClstempattrEntity;
+import com.vci.ubcs.code.service.ICodeClstempattrService;
+import com.vci.ubcs.code.vo.CodeClstempattrVO;
+import com.vci.ubcs.code.wrapper.CodeClstempattrWrapper;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+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.Func;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+
+/**
+ * 缂栫爜搴撳畾涔�-妯℃澘灞炴�� 鎺у埗鍣�
+ *
+ * @author yuxc
+ * @since 2023-04-19
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/CodeClstempattr")
+@Api(value = "缂栫爜搴撳畾涔�-妯℃澘灞炴��", tags = "缂栫爜搴撳畾涔�-妯℃澘灞炴�ф帴鍙�")
+public class CodeClstempattrController extends BladeController {
+
+	private final ICodeClstempattrService CodeClstempattrService;
+
+	/**
+	 * 缂栫爜搴撳畾涔�-妯℃澘灞炴�� 璇︽儏
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "璇︽儏", notes = "浼犲叆CodeClstempattr")
+	public R<CodeClstempattrVO> detail(CodeClstempattrEntity CodeClstempattr) {
+		CodeClstempattrEntity detail = CodeClstempattrService.getOne(Condition.getQueryWrapper(CodeClstempattr));
+		return R.data(CodeClstempattrWrapper.build().entityVO(detail));
+	}
+	/**
+	 * 缂栫爜搴撳畾涔�-妯℃澘灞炴�� 鍒嗛〉
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "鍒嗛〉", notes = "浼犲叆CodeClstempattr")
+	public R<IPage<CodeClstempattrVO>> list(CodeClstempattrEntity CodeClstempattr, Query query) {
+		IPage<CodeClstempattrEntity> pages = CodeClstempattrService.page(Condition.getPage(query), Condition.getQueryWrapper(CodeClstempattr));
+		return R.data(CodeClstempattrWrapper.build().pageVO(pages));
+	}
+
+	/**
+	 * 缂栫爜搴撳畾涔�-妯℃澘灞炴�� 鑷畾涔夊垎椤�
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "鍒嗛〉", notes = "浼犲叆CodeClstempattr")
+	public R<IPage<CodeClstempattrVO>> page(CodeClstempattrVO CodeClstempattr, Query query) {
+		IPage<CodeClstempattrVO> pages = CodeClstempattrService.selectCodeClstempattrPage(Condition.getPage(query), CodeClstempattr);
+		return R.data(pages);
+	}
+
+	/**
+	 * 缂栫爜搴撳畾涔�-妯℃澘灞炴�� 鏂板
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "鏂板", notes = "浼犲叆CodeClstempattr")
+	public R save(@Valid @RequestBody CodeClstempattrEntity CodeClstempattr) {
+		return R.status(CodeClstempattrService.save(CodeClstempattr));
+	}
+
+	/**
+	 * 缂栫爜搴撳畾涔�-妯℃澘灞炴�� 淇敼
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "淇敼", notes = "浼犲叆CodeClstempattr")
+	public R update(@Valid @RequestBody CodeClstempattrEntity CodeClstempattr) {
+		return R.status(CodeClstempattrService.updateById(CodeClstempattr));
+	}
+
+	/**
+	 * 缂栫爜搴撳畾涔�-妯℃澘灞炴�� 鏂板鎴栦慨鏀�
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆CodeClstempattr")
+	public R submit(@Valid @RequestBody CodeClstempattrEntity CodeClstempattr) {
+		return R.status(CodeClstempattrService.saveOrUpdate(CodeClstempattr));
+	}
+
+	/**
+	 * 缂栫爜搴撳畾涔�-妯℃澘灞炴�� 鍒犻櫎
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
+	public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
+		return R.status(CodeClstempattrService.removeBatchByIds(Func.toLongList(ids)));
+	}
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClstemplateController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClstemplateController.java
index bf64641..980f9a4 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClstemplateController.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClstemplateController.java
@@ -16,27 +16,33 @@
  */
 package com.vci.ubcs.code.controller;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
-import com.vci.ubcs.code.mapper.CodeButtonMapper;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.code.dto.CodeClstemplateDTO;
+import com.vci.ubcs.code.entity.CodeClstemplateEntity;
+import com.vci.ubcs.code.enumpack.CodeClassifyTemplateLC;
 import com.vci.ubcs.code.mapper.CodeClstemplateMapper;
+import com.vci.ubcs.code.service.ICodeClstemplateService;
+import com.vci.ubcs.code.vo.CodeClstemplateVO;
+import com.vci.ubcs.code.vo.pagemodel.TreeQueryObject;
+import com.vci.ubcs.code.wrapper.PlCodeClstemplateWrapper;
+import com.vci.ubcs.com.vci.starter.web.pagemodel.Tree;
+import com.vci.ubcs.com.vci.starter.web.util.VciBaseUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
-import javax.validation.Valid;
-
+import org.springblade.core.boot.ctrl.BladeController;
 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.Func;
 import org.springframework.web.bind.annotation.*;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.vci.ubcs.code.entity.CodeClstemplateEntity;
-import com.vci.ubcs.code.vo.CodeClstemplateVO;
-import com.vci.ubcs.code.wrapper.PlCodeClstemplateWrapper;
-import com.vci.ubcs.code.service.ICodeClstemplateService;
-import org.springblade.core.boot.ctrl.BladeController;
+
+import javax.validation.Valid;
+import java.util.Collection;
+import java.util.List;
 
 /**
  * 缂栫爜搴撳畾涔�-妯℃澘绠$悊 鎺у埗鍣�
@@ -46,7 +52,7 @@
  */
 @RestController
 @AllArgsConstructor
-@RequestMapping("/plCodeClstemplate")
+@RequestMapping("/codeClstemplate")
 @Api(value = "缂栫爜搴撳畾涔�-妯℃澘绠$悊", tags = "缂栫爜搴撳畾涔�-妯℃澘绠$悊鎺ュ彛")
 public class CodeClstemplateController extends BladeController {
 
@@ -65,7 +71,7 @@
 		return R.data(PlCodeClstemplateWrapper.build().entityVO(detail));
 	}
 	/**
-	 * 缂栫爜搴撳畾涔�-妯℃澘绠$悊 鍒嗛〉
+	 * 缂栫爜搴撳畾涔�-妯℃澘绠$悊 鍒嗛〉,鍒嗙被妯℃澘鍒楄〃瀵瑰簲浠ュ墠骞冲彴鐨刧ridCodeClassifyTemplate
 	 */
 	@GetMapping("/list")
 	@ApiOperationSupport(order = 2)
@@ -126,5 +132,120 @@
 		return R.status(SqlHelper.retBool(codeClstemplateMapper.deleteBatchIds(Func.toLongList(ids))));
 	}
 
+	/**
+	 * 鍒嗙被妯℃澘瀵硅薄鏍�
+	 * @param treeQueryObject 鏍戝舰鏌ヨ瀵硅薄
+	 * @return 鍒嗙被妯℃澘瀵硅薄鏄剧ず鏍�
+	 */
+	@GetMapping("/treeCodeClassifyTemplate")
+	public List<Tree> treeCodeClassifyTemplate(TreeQueryObject treeQueryObject)  {
+		return  plCodeClstemplateService.treeCodeClassifyTemplate(treeQueryObject);
+	}
 
+//	/**
+//	 * 鍒嗙被妯℃澘鍒楄〃
+//	 * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄
+//	 * @return 鏄剧ず瀵硅薄
+//	 */
+//	@GetMapping("/gridCodeClassifyTemplate")
+//	public DataGrid<CodeClstemplateVO> gridCodeClassifyTemplate(BaseQueryObject baseQueryObject){
+//
+//		return  plCodeClstemplateService.gridCodeClassifyTemplate(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+//	}
+
+
+	/**
+	 * 妫�鏌� 鍒嗙被妯℃澘瀵硅薄鏄惁鍒犻櫎
+	 * @param codeClstemplateDTO 鍒嗙被妯℃澘瀵硅薄鏁版嵁浼犺緭瀵硅薄锛屽繀椤昏鏈塷id鍜宼s灞炴��
+	 * @return 鎵ц缁撴灉 success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+	 */
+	@PostMapping( "/checkIsCanDelete")
+	public R checkIsCanDelete(@RequestBody CodeClstemplateDTO codeClstemplateDTO)  {
+
+		return plCodeClstemplateService.checkIsCanDelete(codeClstemplateDTO);
+	}
+
+	/**
+	 * 鍒犻櫎鍒嗙被妯℃澘瀵硅薄
+	 * @param codeClstemplateDTO 鍒嗙被妯℃澘瀵硅薄鏁版嵁浼犺緭瀵硅薄锛宱id鍜宼s闇�瑕佷紶杈�
+	 * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+	 */
+	@DeleteMapping( "/deleteData")
+	public R delCodeClassifyTemplate( CodeClstemplateDTO codeClstemplateDTO) {
+		return plCodeClstemplateService.deleteCodeClassifyTemplate(codeClstemplateDTO);
+	}
+
+	/**
+	 * 涓婚敭鑾峰彇鍒嗙被妯℃澘瀵硅薄
+	 * @param oid 涓婚敭
+	 * @return 鍒嗙被妯℃澘瀵硅薄鏄剧ず瀵硅薄
+	 */
+	@GetMapping("/getObjectByOid")
+	public R<CodeClstemplateVO> getObjectByOid(String oid){
+		CodeClstemplateVO codeClassifyTemplateVO = plCodeClstemplateService.getObjectByOid(oid);
+		return R.data(codeClassifyTemplateVO);
+	}
+
+	/**
+	 * 涓婚敭鎵归噺鑾峰彇鍒嗙被妯℃澘瀵硅薄
+	 * @param oids 涓婚敭锛屽涓互閫楀彿鍒嗛殧锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+	 * @return 鍒嗙被妯℃澘瀵硅薄鏄剧ず瀵硅薄
+	 */
+	@GetMapping("/listDataByOids")
+	public R<Collection<CodeClstemplateVO>> listCodeClassifyTemplateByOids(String oids){
+		Collection<CodeClstemplateVO> voCollection =  plCodeClstemplateService.listCodeClassifyTemplateByOids(VciBaseUtil.str2List(oids));
+
+		return  R.data(voCollection) ;
+	}
+
+	/**
+	 * 鍙傜収鏍� 鍒嗙被妯℃澘瀵硅薄
+	 * @param treeQueryObject 鏍戝舰鏌ヨ瀵硅薄
+	 * @return 鍒嗙被妯℃澘瀵硅薄鏄剧ず鏍�
+	 */
+	@GetMapping("/referTree")
+	public List<Tree> referTree(TreeQueryObject treeQueryObject)  {
+		return plCodeClstemplateService.referTree(treeQueryObject);
+	}
+
+	/**
+	 * 鍚敤
+	 * @param codeClstemplateEntity oid
+	 * @return
+	 */
+	@PostMapping( "/enableData")
+	public R enable( CodeClstemplateDTO codeClstemplateDTO) {
+		return plCodeClstemplateService.updateLcStatus(codeClstemplateDTO.getOid(), CodeClassifyTemplateLC.RELEASED.getValue());
+	}
+
+	/**
+	 * 鍋滅敤
+	 * @param codeClassifyDTO oid
+	 * @return
+	 */
+	@PostMapping( "/disableData")
+	public R disableData( CodeClstemplateDTO codeClassifyDTO) {
+		return plCodeClstemplateService.updateLcStatus(codeClassifyDTO.getOid(),CodeClassifyTemplateLC.DISABLED.getValue());
+	}
+
+	/**
+	 * 鍐嶇紪杈�
+	 * @param codeClassifyDTO oid
+	 * @return
+	 */
+	@PostMapping( "/editDate")
+	public R editDate( CodeClstemplateDTO codeClassifyDTO) {
+		return plCodeClstemplateService.updateLcStatus(codeClassifyDTO.getOid(),CodeClassifyTemplateLC.EDITING.getValue());
+	}
+
+	/**
+	 * 鍗囩増
+	 * @param codeClassifyDTO
+	 * @return oid妯℃澘oid
+	 */
+	@PostMapping( "/upgrade")
+	public R Upgrade(@RequestBody CodeClstemplateDTO codeClassifyDTO) {
+
+		return plCodeClstemplateService.Upgrade(codeClassifyDTO);
+	}
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodePhaseattrController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodePhaseattrController.java
new file mode 100644
index 0000000..72bf049
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodePhaseattrController.java
@@ -0,0 +1,129 @@
+/*
+ *      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.code.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.code.entity.CodePhaseattrEntity;
+import com.vci.ubcs.code.mapper.CodePhaseattrMapper;
+import com.vci.ubcs.code.service.ICodePhaseattrService;
+import com.vci.ubcs.code.vo.CodePhaseattrVO;
+import com.vci.ubcs.code.wrapper.CodePhaseattrWrapper;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+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.Func;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+
+/**
+ * 缂栫爜搴撳畾涔�-妯℃澘闃舵-灞炴�� 鎺у埗鍣�
+ *
+ * @author yuxc
+ * @since 2023-04-20
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("ubcs-code/CodePhaseattr")
+@Api(value = "缂栫爜搴撳畾涔�-妯℃澘闃舵-灞炴��", tags = "缂栫爜搴撳畾涔�-妯℃澘闃舵-灞炴�ф帴鍙�")
+public class CodePhaseattrController extends BladeController {
+
+	private final ICodePhaseattrService CodePhaseattrService;
+
+	private CodePhaseattrMapper codePhaseattrMapper;
+
+	/**
+	 * 缂栫爜搴撳畾涔�-妯℃澘闃舵-灞炴�� 璇︽儏
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "璇︽儏", notes = "浼犲叆CodePhaseattr")
+	public R<CodePhaseattrVO> detail(CodePhaseattrEntity CodePhaseattr) {
+		CodePhaseattrEntity detail = CodePhaseattrService.getOne(Condition.getQueryWrapper(CodePhaseattr));
+		return R.data(CodePhaseattrWrapper.build().entityVO(detail));
+	}
+	/**
+	 * 缂栫爜搴撳畾涔�-妯℃澘闃舵-灞炴�� 鍒嗛〉
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "鍒嗛〉", notes = "浼犲叆CodePhaseattr")
+	public R<IPage<CodePhaseattrVO>> list(CodePhaseattrEntity CodePhaseattr, Query query) {
+		IPage<CodePhaseattrEntity> pages = CodePhaseattrService.page(Condition.getPage(query), Condition.getQueryWrapper(CodePhaseattr));
+		return R.data(CodePhaseattrWrapper.build().pageVO(pages));
+	}
+
+	/**
+	 * 缂栫爜搴撳畾涔�-妯℃澘闃舵-灞炴�� 鑷畾涔夊垎椤�
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "鍒嗛〉", notes = "浼犲叆CodePhaseattr")
+	public R<IPage<CodePhaseattrVO>> page(CodePhaseattrVO CodePhaseattr, Query query) {
+		IPage<CodePhaseattrVO> pages = CodePhaseattrService.selectCodePhaseattrPage(Condition.getPage(query), CodePhaseattr);
+		return R.data(pages);
+	}
+
+	/**
+	 * 缂栫爜搴撳畾涔�-妯℃澘闃舵-灞炴�� 鏂板
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "鏂板", notes = "浼犲叆CodePhaseattr")
+	public R save(@Valid @RequestBody CodePhaseattrEntity CodePhaseattr) {
+		return R.status(CodePhaseattrService.save(CodePhaseattr));
+	}
+
+	/**
+	 * 缂栫爜搴撳畾涔�-妯℃澘闃舵-灞炴�� 淇敼
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "淇敼", notes = "浼犲叆CodePhaseattr")
+	public R update(@Valid @RequestBody CodePhaseattrEntity CodePhaseattr) {
+		return R.status(CodePhaseattrService.updateById(CodePhaseattr));
+	}
+
+	/**
+	 * 缂栫爜搴撳畾涔�-妯℃澘闃舵-灞炴�� 鏂板鎴栦慨鏀�
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆CodePhaseattr")
+	public R submit(@Valid @RequestBody CodePhaseattrEntity CodePhaseattr) {
+		return R.status(CodePhaseattrService.saveOrUpdate(CodePhaseattr));
+	}
+
+	/**
+	 * 缂栫爜搴撳畾涔�-妯℃澘闃舵-灞炴�� 鍒犻櫎
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
+	public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
+		return R.status(SqlHelper.retBool(codePhaseattrMapper.deleteBatchIds(Func.toLongList(ids))));
+	}
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeTempbuttonController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeTempbuttonController.java
new file mode 100644
index 0000000..2951532
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeTempbuttonController.java
@@ -0,0 +1,129 @@
+/*
+ *      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.code.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.code.entity.CodeTempbuttonEntity;
+import com.vci.ubcs.code.mapper.CodeTempbuttonMapper;
+import com.vci.ubcs.code.service.ICodeTempbuttonService;
+import com.vci.ubcs.code.vo.CodeTempbuttonVO;
+import com.vci.ubcs.code.wrapper.CodeTempbuttonWrapper;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+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.Func;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+
+/**
+ * 缂栫爜搴撳畾涔�-妯℃澘鎸夐挳鎵╁睍 鎺у埗鍣�
+ *
+ * @author yuxc
+ * @since 2023-04-20
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("ubcs-code/CodeTempbutton")
+@Api(value = "缂栫爜搴撳畾涔�-妯℃澘鎸夐挳鎵╁睍", tags = "缂栫爜搴撳畾涔�-妯℃澘鎸夐挳鎵╁睍鎺ュ彛")
+public class CodeTempbuttonController extends BladeController {
+
+	private final ICodeTempbuttonService CodeTempbuttonService;
+
+	private CodeTempbuttonMapper codeTempbuttonMapper;
+
+	/**
+	 * 缂栫爜搴撳畾涔�-妯℃澘鎸夐挳鎵╁睍 璇︽儏
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "璇︽儏", notes = "浼犲叆CodeTempbutton")
+	public R<CodeTempbuttonVO> detail(CodeTempbuttonEntity CodeTempbutton) {
+		CodeTempbuttonEntity detail = CodeTempbuttonService.getOne(Condition.getQueryWrapper(CodeTempbutton));
+		return R.data(CodeTempbuttonWrapper.build().entityVO(detail));
+	}
+	/**
+	 * 缂栫爜搴撳畾涔�-妯℃澘鎸夐挳鎵╁睍 鍒嗛〉
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "鍒嗛〉", notes = "浼犲叆CodeTempbutton")
+	public R<IPage<CodeTempbuttonVO>> list(CodeTempbuttonEntity CodeTempbutton, Query query) {
+		IPage<CodeTempbuttonEntity> pages = CodeTempbuttonService.page(Condition.getPage(query), Condition.getQueryWrapper(CodeTempbutton));
+		return R.data(CodeTempbuttonWrapper.build().pageVO(pages));
+	}
+
+	/**
+	 * 缂栫爜搴撳畾涔�-妯℃澘鎸夐挳鎵╁睍 鑷畾涔夊垎椤�
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "鍒嗛〉", notes = "浼犲叆CodeTempbutton")
+	public R<IPage<CodeTempbuttonVO>> page(CodeTempbuttonVO CodeTempbutton, Query query) {
+		IPage<CodeTempbuttonVO> pages = CodeTempbuttonService.selectCodeTempbuttonPage(Condition.getPage(query), CodeTempbutton);
+		return R.data(pages);
+	}
+
+	/**
+	 * 缂栫爜搴撳畾涔�-妯℃澘鎸夐挳鎵╁睍 鏂板
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "鏂板", notes = "浼犲叆CodeTempbutton")
+	public R save(@Valid @RequestBody CodeTempbuttonEntity CodeTempbutton) {
+		return R.status(CodeTempbuttonService.save(CodeTempbutton));
+	}
+
+	/**
+	 * 缂栫爜搴撳畾涔�-妯℃澘鎸夐挳鎵╁睍 淇敼
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "淇敼", notes = "浼犲叆CodeTempbutton")
+	public R update(@Valid @RequestBody CodeTempbuttonEntity CodeTempbutton) {
+		return R.status(CodeTempbuttonService.updateById(CodeTempbutton));
+	}
+
+	/**
+	 * 缂栫爜搴撳畾涔�-妯℃澘鎸夐挳鎵╁睍 鏂板鎴栦慨鏀�
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆CodeTempbutton")
+	public R submit(@Valid @RequestBody CodeTempbuttonEntity CodeTempbutton) {
+		return R.status(CodeTempbuttonService.saveOrUpdate(CodeTempbutton));
+	}
+
+	/**
+	 * 缂栫爜搴撳畾涔�-妯℃澘鎸夐挳鎵╁睍 鍒犻櫎
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
+	public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
+		return R.status(SqlHelper.retBool(codeTempbuttonMapper.deleteBatchIds(Func.toLongList(ids))));
+	}
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeTempphaseController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeTempphaseController.java
new file mode 100644
index 0000000..a2dc26e
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeTempphaseController.java
@@ -0,0 +1,129 @@
+/*
+ *      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.code.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.code.entity.CodeTempphaseEntity;
+import com.vci.ubcs.code.mapper.CodeTempphaseMapper;
+import com.vci.ubcs.code.service.ICodeTempphaseService;
+import com.vci.ubcs.code.vo.CodeTempphaseVO;
+import com.vci.ubcs.code.wrapper.CodeTempphaseWrapper;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+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.Func;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+
+/**
+ * 缂栫爜搴撳畾涔�-妯℃澘闃舵 鎺у埗鍣�
+ *
+ * @author yuxc
+ * @since 2023-04-20
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("ubcs-code/CodeTempphase")
+@Api(value = "缂栫爜搴撳畾涔�-妯℃澘闃舵", tags = "缂栫爜搴撳畾涔�-妯℃澘闃舵鎺ュ彛")
+public class CodeTempphaseController extends BladeController {
+
+
+	private final ICodeTempphaseService CodeTempphaseService;
+
+	private CodeTempphaseMapper codeTempphaseMapper;
+	/**
+	 * 缂栫爜搴撳畾涔�-妯℃澘闃舵 璇︽儏
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "璇︽儏", notes = "浼犲叆CodeTempphase")
+	public R<CodeTempphaseVO> detail(CodeTempphaseEntity CodeTempphase) {
+		CodeTempphaseEntity detail = CodeTempphaseService.getOne(Condition.getQueryWrapper(CodeTempphase));
+		return R.data(CodeTempphaseWrapper.build().entityVO(detail));
+	}
+	/**
+	 * 缂栫爜搴撳畾涔�-妯℃澘闃舵 鍒嗛〉
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "鍒嗛〉", notes = "浼犲叆CodeTempphase")
+	public R<IPage<CodeTempphaseVO>> list(CodeTempphaseEntity CodeTempphase, Query query) {
+		IPage<CodeTempphaseEntity> pages = CodeTempphaseService.page(Condition.getPage(query), Condition.getQueryWrapper(CodeTempphase));
+		return R.data(CodeTempphaseWrapper.build().pageVO(pages));
+	}
+
+	/**
+	 * 缂栫爜搴撳畾涔�-妯℃澘闃舵 鑷畾涔夊垎椤�
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "鍒嗛〉", notes = "浼犲叆CodeTempphase")
+	public R<IPage<CodeTempphaseVO>> page(CodeTempphaseVO CodeTempphase, Query query) {
+		IPage<CodeTempphaseVO> pages = CodeTempphaseService.selectCodeTempphasePage(Condition.getPage(query), CodeTempphase);
+		return R.data(pages);
+	}
+
+	/**
+	 * 缂栫爜搴撳畾涔�-妯℃澘闃舵 鏂板
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "鏂板", notes = "浼犲叆CodeTempphase")
+	public R save(@Valid @RequestBody CodeTempphaseEntity CodeTempphase) {
+		return R.status(CodeTempphaseService.save(CodeTempphase));
+	}
+
+	/**
+	 * 缂栫爜搴撳畾涔�-妯℃澘闃舵 淇敼
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "淇敼", notes = "浼犲叆CodeTempphase")
+	public R update(@Valid @RequestBody CodeTempphaseEntity CodeTempphase) {
+		return R.status(CodeTempphaseService.updateById(CodeTempphase));
+	}
+
+	/**
+	 * 缂栫爜搴撳畾涔�-妯℃澘闃舵 鏂板鎴栦慨鏀�
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆CodeTempphase")
+	public R submit(@Valid @RequestBody CodeTempphaseEntity CodeTempphase) {
+		return R.status(CodeTempphaseService.saveOrUpdate(CodeTempphase));
+	}
+
+	/**
+	 * 缂栫爜搴撳畾涔�-妯℃澘闃舵 鍒犻櫎
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
+	public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
+		return R.status(SqlHelper.retBool(codeTempphaseMapper.deleteBatchIds(Func.toLongList(ids))));
+	}
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeClassifyTemplateLC.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeClassifyTemplateLC.java
new file mode 100644
index 0000000..6950708
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeClassifyTemplateLC.java
@@ -0,0 +1,125 @@
+package com.vci.ubcs.code.enumpack;
+
+import com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant;
+
+public enum CodeClassifyTemplateLC {
+
+	/**
+	 * 缂栬緫涓�
+	 */
+	EDITING(FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_EDITING,"缂栬緫涓�"),
+
+	/**
+	 * 宸插彂甯�
+	 */
+	RELEASED(FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_RELEASED,"宸插彂甯�"),
+
+	/**
+	 * 鍋滅敤
+	 */
+	DISABLED(FrameWorkDefaultValueConstant.FRAMEWORK_DATA_DISABLED,"鍋滅敤");
+
+	/**
+	 * 鏋氫妇鐨勫��
+	 */
+	private String value;
+
+	/**
+	 * 鏋氫妇鏄剧ず鏂囨湰
+	 */
+	private String text;
+
+	/**
+	 * 鑾峰彇鏋氫妇鍊�
+	 *
+	 * @return 鏋氫妇鍊�
+	 */
+	public String getValue() {
+		return value;
+	}
+
+	/**
+	 * 璁剧疆鏋氫妇鍊�
+	 *
+	 * @param value 鏋氫妇鍊�
+	 */
+	public void setValue(String value) {
+		this.value = value;
+	}
+
+	/**
+	 * 鑾峰彇鏋氫妇鏄剧ず鏂囨湰
+	 *
+	 * @return 鏄剧ず鏂囨湰
+	 */
+	public String getText() {
+		return text;
+	}
+
+	/**
+	 * 璁剧疆鏄剧ず鏂囨湰
+	 *
+	 * @param text 鏄剧ず鏂囨湰
+	 */
+	public void setText(String text) {
+		this.text = text;
+	}
+
+	/**
+	 * 鏋勯�犲嚱鏁�
+	 *
+	 * @param value 鍊�
+	 * @param text  鏄剧ず鏂囨湰
+	 */
+	private CodeClassifyTemplateLC(String value, String text) {
+		this.value = value;
+		this.text = text;
+	}
+
+	/**
+	 * 鏍规嵁鍚嶇О鑾峰彇瀵瑰簲鐨勬灇涓惧��
+	 *
+	 * @param text 鍚嶇О
+	 * @return 鏋氫妇鍊�
+	 */
+	public static String getValueByText(String text) {
+		for (CodeClassifyTemplateLC wenum : CodeClassifyTemplateLC.values()) {
+			if (wenum.getText().equalsIgnoreCase(text)) {
+				return wenum.getValue();
+			}
+		}
+		return "";
+	}
+
+	/**
+	 * 鏍规嵁鏋氫妇鍊艰幏鍙栧悕绉�
+	 *
+	 * @param value 鏋氫妇鍊�
+	 * @return 鍚嶇О
+	 */
+	public static String getTextByValue(String value) {
+		for (CodeClassifyTemplateLC wenum : CodeClassifyTemplateLC.values()) {
+			if (wenum.getValue().equalsIgnoreCase(value)) {
+				return wenum.getText();
+			}
+		}
+		return "";
+	}
+
+	/**
+	 * 鏍规嵁鏋氫妇鍊艰幏鍙栨灇涓惧璞�
+	 *
+	 * @param value 鏋氫妇鍊�
+	 * @return 鏋氫妇瀵硅薄锛屼笉瀛樺湪鏃跺�欒繑鍥瀗ull
+	 */
+	public static CodeClassifyTemplateLC forValue(String value) {
+		for (CodeClassifyTemplateLC wenum : CodeClassifyTemplateLC.values()) {
+			if (wenum.getValue().equalsIgnoreCase(value)) {
+				return wenum;
+			}
+		}
+		return null;
+	}
+}
+
+
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeClsflowtempClient.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeClsflowtempClient.java
new file mode 100644
index 0000000..7a7988d
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeClsflowtempClient.java
@@ -0,0 +1,56 @@
+/*
+ *      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.code.feign;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.vci.ubcs.code.mapper.CodeClsflowtempMapper;
+import lombok.AllArgsConstructor;
+import org.springblade.core.mp.support.BladePage;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import com.vci.ubcs.code.entity.CodeClsflowtempEntity;
+import com.vci.ubcs.code.service.ICodeClsflowtempService;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+/**
+ * 缂栫爜搴撳畾涔�-妯℃澘娴佺▼ Feign瀹炵幇绫�
+ *
+ * @author yuxc
+ * @since 2023-04-20
+ */
+@ApiIgnore()
+@RestController
+@AllArgsConstructor
+public class CodeClsflowtempClient implements ICodeClsflowtempClient {
+
+
+	private CodeClsflowtempMapper codeClsflowtempMapper;
+    @Override
+    @GetMapping(TOP)
+    public BladePage<CodeClsflowtempEntity> top(Integer current, Integer size) {
+        Query query = new Query();
+        query.setCurrent(current);
+        query.setSize(size);
+        IPage<CodeClsflowtempEntity> page = codeClsflowtempMapper.selectPage(Condition.getPage(query), Wrappers.emptyWrapper());
+
+		return BladePage.of(page);
+    }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeClstempattrClient.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeClstempattrClient.java
new file mode 100644
index 0000000..fa68f39
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeClstempattrClient.java
@@ -0,0 +1,56 @@
+/*
+ *      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.code.feign;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.vci.ubcs.code.mapper.CodeClstempattrMapper;
+import lombok.AllArgsConstructor;
+import org.springblade.core.mp.support.BladePage;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import com.vci.ubcs.code.entity.CodeClstempattrEntity;
+import com.vci.ubcs.code.service.ICodeClstempattrService;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+/**
+ * 缂栫爜搴撳畾涔�-妯℃澘灞炴�� Feign瀹炵幇绫�
+ *
+ * @author yuxc
+ * @since 2023-04-19
+ */
+@ApiIgnore()
+@RestController
+@AllArgsConstructor
+public class CodeClstempattrClient implements ICodeClstempattrClient {
+
+    private CodeClstempattrMapper codeClstempattrMapper;
+
+    @Override
+    @GetMapping(TOP)
+    public BladePage<CodeClstempattrEntity> top(Integer current, Integer size) {
+        Query query = new Query();
+        query.setCurrent(current);
+        query.setSize(size);
+        IPage<CodeClstempattrEntity> page = codeClstempattrMapper.selectPage(Condition.getPage(query), Wrappers.emptyWrapper());
+
+		return BladePage.of(page);
+    }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeClstemplateClient.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeClstemplateClient.java
index 550910f..0096fc1 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeClstemplateClient.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeClstemplateClient.java
@@ -16,8 +16,12 @@
  */
 package com.vci.ubcs.code.feign;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.vci.ubcs.code.mapper.CodeClstemplateMapper;
 import lombok.AllArgsConstructor;
 import org.springblade.core.mp.support.BladePage;
+import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import com.vci.ubcs.code.entity.CodeClstemplateEntity;
 import com.vci.ubcs.code.service.ICodeClstemplateService;
@@ -36,7 +40,7 @@
 @AllArgsConstructor
 public class CodeClstemplateClient implements lCodeClstemplateClient {
 
-    private final ICodeClstemplateService plCodeClstemplateService;
+    private final CodeClstemplateMapper codeClstemplateMapper;
 
     @Override
     @GetMapping(TOP)
@@ -44,9 +48,9 @@
         Query query = new Query();
         query.setCurrent(current);
         query.setSize(size);
-//        IPage<CodeClstemplateEntity> page = service.page(Condition.getPage(query));
-//        return BladePage.of(page);
-        return null;
+        IPage<CodeClstemplateEntity> page = codeClstemplateMapper.selectPage(Condition.getPage(query), Wrappers.emptyWrapper());
+
+		return BladePage.of(page);
     }
 
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeOsbtmtypeClient.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeOsbtmtypeClient.java
index f3be4b3..21b6b89 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeOsbtmtypeClient.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeOsbtmtypeClient.java
@@ -16,8 +16,12 @@
  */
 package com.vci.ubcs.code.feign;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.vci.ubcs.code.mapper.CodeOsbtmtypeMapper;
 import lombok.AllArgsConstructor;
 import org.springblade.core.mp.support.BladePage;
+import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import com.vci.ubcs.code.entity.CodeOsbtmtypeEntity;
 import com.vci.ubcs.code.service.ICodeOsbtmtypeService;
@@ -36,7 +40,7 @@
 @AllArgsConstructor
 public class CodeOsbtmtypeClient implements ICodeOsbtmtypeClient {
 
-    private final ICodeOsbtmtypeService PLCodeOsbtmtypeService;
+    private final CodeOsbtmtypeMapper codeOsbtmtypeMapper;
 
     @Override
     @GetMapping(TOP)
@@ -44,9 +48,8 @@
         Query query = new Query();
         query.setCurrent(current);
         query.setSize(size);
-//        IPage<CodeOsbtmtypeEntity> page = service.page(Condition.getPage(query));
-        return null;
-//        return BladePage.of(page);
+        IPage<CodeOsbtmtypeEntity> page = codeOsbtmtypeMapper.selectPage(Condition.getPage(query), Wrappers.emptyWrapper());
+        return BladePage.of(page);
     }
 
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodePhaseattrClient.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodePhaseattrClient.java
new file mode 100644
index 0000000..a36576b
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodePhaseattrClient.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.code.feign;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.vci.ubcs.code.mapper.CodePhaseattrMapper;
+import lombok.AllArgsConstructor;
+import org.springblade.core.mp.support.BladePage;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import com.vci.ubcs.code.entity.CodePhaseattrEntity;
+import com.vci.ubcs.code.service.ICodePhaseattrService;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+/**
+ * 缂栫爜搴撳畾涔�-妯℃澘闃舵-灞炴�� Feign瀹炵幇绫�
+ *
+ * @author yuxc
+ * @since 2023-04-20
+ */
+@ApiIgnore()
+@RestController
+@AllArgsConstructor
+public class CodePhaseattrClient implements ICodePhaseattrClient {
+
+    private final CodePhaseattrMapper codePhaseattrMapper;
+
+    @Override
+    @GetMapping(TOP)
+    public BladePage<CodePhaseattrEntity> top(Integer current, Integer size) {
+        Query query = new Query();
+        query.setCurrent(current);
+        query.setSize(size);
+        IPage<CodePhaseattrEntity> page = codePhaseattrMapper.selectPage(Condition.getPage(query), Wrappers.emptyWrapper());
+		return BladePage.of(page);
+    }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeTempbuttonClient.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeTempbuttonClient.java
new file mode 100644
index 0000000..7945cdd
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeTempbuttonClient.java
@@ -0,0 +1,57 @@
+/*
+ *      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.code.feign;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.vci.ubcs.code.mapper.CodeTempbuttonMapper;
+import lombok.AllArgsConstructor;
+import org.springblade.core.mp.support.BladePage;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import com.vci.ubcs.code.entity.CodeTempbuttonEntity;
+import com.vci.ubcs.code.service.ICodeTempbuttonService;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+/**
+ * 缂栫爜搴撳畾涔�-妯℃澘鎸夐挳鎵╁睍 Feign瀹炵幇绫�
+ *
+ * @author yuxc
+ * @since 2023-04-20
+ */
+@ApiIgnore()
+@RestController
+@AllArgsConstructor
+public class CodeTempbuttonClient implements ICodeTempbuttonClient {
+
+
+    private final CodeTempbuttonMapper codeTempbuttonMapper;
+
+    @Override
+    @GetMapping(TOP)
+    public BladePage<CodeTempbuttonEntity> top(Integer current, Integer size) {
+        Query query = new Query();
+        query.setCurrent(current);
+        query.setSize(size);
+        IPage<CodeTempbuttonEntity> page = codeTempbuttonMapper.selectPage(Condition.getPage(query), Wrappers.emptyWrapper());
+
+		return BladePage.of(page);
+    }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeTempphaseClient.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeTempphaseClient.java
new file mode 100644
index 0000000..24ff7cd
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeTempphaseClient.java
@@ -0,0 +1,56 @@
+/*
+ *      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.code.feign;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.vci.ubcs.code.mapper.CodeTempphaseMapper;
+import lombok.AllArgsConstructor;
+import org.springblade.core.mp.support.BladePage;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import com.vci.ubcs.code.entity.CodeTempphaseEntity;
+import com.vci.ubcs.code.service.ICodeTempphaseService;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+/**
+ * 缂栫爜搴撳畾涔�-妯℃澘闃舵 Feign瀹炵幇绫�
+ *
+ * @author yuxc
+ * @since 2023-04-20
+ */
+@ApiIgnore()
+@RestController
+@AllArgsConstructor
+public class CodeTempphaseClient implements ICodeTempphaseClient {
+
+    private final CodeTempphaseMapper codeTempphaseMapper;
+
+    @Override
+    @GetMapping(TOP)
+    public BladePage<CodeTempphaseEntity> top(Integer current, Integer size) {
+        Query query = new Query();
+        query.setCurrent(current);
+        query.setSize(size);
+        IPage<CodeTempphaseEntity> page = codeTempphaseMapper.selectPage(Condition.getPage(query), Wrappers.emptyWrapper());
+
+		return BladePage.of(page);
+    }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeClsflowtempClient.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeClsflowtempClient.java
new file mode 100644
index 0000000..b0f766f
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeClsflowtempClient.java
@@ -0,0 +1,49 @@
+/*
+ *      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.code.feign;
+
+import org.springblade.core.mp.support.BladePage;
+import com.vci.ubcs.code.entity.CodeClsflowtempEntity;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+/**
+ * 缂栫爜搴撳畾涔�-妯℃澘娴佺▼ Feign鎺ュ彛绫�
+ *
+ * @author yuxc
+ * @since 2023-04-20
+ */
+@FeignClient(
+    value = "ubcs-code"
+)
+public interface ICodeClsflowtempClient {
+
+    String API_PREFIX = "/clientFlowtemp";
+    String TOP = API_PREFIX + "/top";
+
+    /**
+     * 鑾峰彇缂栫爜搴撳畾涔�-妯℃澘娴佺▼鍒楄〃
+     *
+     * @param current   椤靛彿
+     * @param size      椤垫暟
+     * @return BladePage
+     */
+    @GetMapping(TOP)
+    BladePage<CodeClsflowtempEntity> top(@RequestParam("current") Integer current, @RequestParam("size") Integer size);
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeClstempattrClient.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeClstempattrClient.java
new file mode 100644
index 0000000..b0d3df1
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeClstempattrClient.java
@@ -0,0 +1,49 @@
+/*
+ *      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.code.feign;
+
+import org.springblade.core.mp.support.BladePage;
+import com.vci.ubcs.code.entity.CodeClstempattrEntity;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+/**
+ * 缂栫爜搴撳畾涔�-妯℃澘灞炴�� Feign鎺ュ彛绫�
+ *
+ * @author yuxc
+ * @since 2023-04-19
+ */
+@FeignClient(
+    value = "ubcs-code"
+)
+public interface ICodeClstempattrClient {
+
+    String API_PREFIX = "/clientTempAttr";
+    String TOP = API_PREFIX + "/top";
+
+    /**
+     * 鑾峰彇缂栫爜搴撳畾涔�-妯℃澘灞炴�у垪琛�
+     *
+     * @param current   椤靛彿
+     * @param size      椤垫暟
+     * @return BladePage
+     */
+    @GetMapping(TOP)
+    BladePage<CodeClstempattrEntity> top(@RequestParam("current") Integer current, @RequestParam("size") Integer size);
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodePhaseattrClient.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodePhaseattrClient.java
new file mode 100644
index 0000000..969bb62
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodePhaseattrClient.java
@@ -0,0 +1,49 @@
+/*
+ *      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.code.feign;
+
+import org.springblade.core.mp.support.BladePage;
+import com.vci.ubcs.code.entity.CodePhaseattrEntity;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+/**
+ * 缂栫爜搴撳畾涔�-妯℃澘闃舵-灞炴�� Feign鎺ュ彛绫�
+ *
+ * @author yuxc
+ * @since 2023-04-20
+ */
+@FeignClient(
+    value = "ubcs-code"
+)
+public interface ICodePhaseattrClient {
+
+    String API_PREFIX = "/clientPhaseattr";
+    String TOP = API_PREFIX + "/top";
+
+    /**
+     * 鑾峰彇缂栫爜搴撳畾涔�-妯℃澘闃舵-灞炴�у垪琛�
+     *
+     * @param current   椤靛彿
+     * @param size      椤垫暟
+     * @return BladePage
+     */
+    @GetMapping(TOP)
+    BladePage<CodePhaseattrEntity> top(@RequestParam("current") Integer current, @RequestParam("size") Integer size);
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeTempbuttonClient.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeTempbuttonClient.java
new file mode 100644
index 0000000..b102e4a
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeTempbuttonClient.java
@@ -0,0 +1,49 @@
+/*
+ *      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.code.feign;
+
+import org.springblade.core.mp.support.BladePage;
+import com.vci.ubcs.code.entity.CodeTempbuttonEntity;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+/**
+ * 缂栫爜搴撳畾涔�-妯℃澘鎸夐挳鎵╁睍 Feign鎺ュ彛绫�
+ *
+ * @author yuxc
+ * @since 2023-04-20
+ */
+@FeignClient(
+    value = "ubcs-code"
+)
+public interface ICodeTempbuttonClient {
+
+    String API_PREFIX = "/clientTempButton";
+    String TOP = API_PREFIX + "/top";
+
+    /**
+     * 鑾峰彇缂栫爜搴撳畾涔�-妯℃澘鎸夐挳鎵╁睍鍒楄〃
+     *
+     * @param current   椤靛彿
+     * @param size      椤垫暟
+     * @return BladePage
+     */
+    @GetMapping(TOP)
+    BladePage<CodeTempbuttonEntity> top(@RequestParam("current") Integer current, @RequestParam("size") Integer size);
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeTempphaseClient.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeTempphaseClient.java
new file mode 100644
index 0000000..0b007f3
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeTempphaseClient.java
@@ -0,0 +1,49 @@
+/*
+ *      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.code.feign;
+
+import org.springblade.core.mp.support.BladePage;
+import com.vci.ubcs.code.entity.CodeTempphaseEntity;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+/**
+ * 缂栫爜搴撳畾涔�-妯℃澘闃舵 Feign鎺ュ彛绫�
+ *
+ * @author yuxc
+ * @since 2023-04-20
+ */
+@FeignClient(
+    value = "ubcs-code"
+)
+public interface ICodeTempphaseClient {
+
+    String API_PREFIX = "/clientPhase";
+    String TOP = API_PREFIX + "/top";
+
+    /**
+     * 鑾峰彇缂栫爜搴撳畾涔�-妯℃澘闃舵鍒楄〃
+     *
+     * @param current   椤靛彿
+     * @param size      椤垫暟
+     * @return BladePage
+     */
+    @GetMapping(TOP)
+    BladePage<CodeTempphaseEntity> top(@RequestParam("current") Integer current, @RequestParam("size") Integer size);
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyMapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyMapper.java
index c860143..a363528 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyMapper.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyMapper.java
@@ -21,6 +21,7 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
 import org.apache.ibatis.annotations.MapKey;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;
@@ -49,7 +50,7 @@
 	 * @return
 	 */
 	@MapKey("oid")
-	Map<String,String> selectAllLevelChildOid(String oid);
+	Map<String,String> selectAllLevelChildOid(@Param("oid") String oid);
 
 	/**
 	 * 鏍¢獙鏄惁鍖呭惈瀛愯妭鐐�
@@ -58,7 +59,7 @@
 	 * @return true 琛ㄧず鍖呭惈
 	 */
 //	@MapKey("oid")
-	Boolean checkHasChild(String oid);
+	Boolean checkHasChild(@Param("oid") String oid);
 
 	/**
 	 * 鏌ユ壘鏍戝舰缁撴瀯
@@ -66,7 +67,7 @@
 	 * @param oid 鍒嗙被鐨勪富閿�
 	 * @return 鏁版嵁闆嗗悎
 	 */
-	List<CodeClassify> selectCodeClassifyVOByTree(String oid);
+	List<CodeClassify> selectCodeClassifyVOByTree(@Param("oid") String oid);
 
 	/**
 	 * 鏌ユ壘鏍戝舰缁撴瀯
@@ -74,14 +75,14 @@
 	 * @param oid 鍒嗙被鐨勪富閿�
 	 * @return 鏁版嵁闆嗗悎
 	 */
-	List<CodeClassify> selectAllLevelChildHasPath(String oid);
+	List<CodeClassify> selectAllLevelChildHasPath(@Param("oid") String oid);
 
 
 	@MapKey("oid")
-	List<Map<String,Object>> selectAllLevelParentByOid(String oid);
+	List<Map<String,Object>> selectAllLevelParentByOid(@Param("oid") String oid);
 
 
 	@MapKey("oid")
-	List<Map<String,Object>> selectByFieldPath(String fieldPath);
+	List<Map<String,Object>> selectByFieldPath(@Param("fieldPath") String fieldPath);
 
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/DictBizMapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClsflowtempMapper.java
similarity index 60%
copy from Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/DictBizMapper.java
copy to Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClsflowtempMapper.java
index 38b3b7b..14cbdf4 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/DictBizMapper.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClsflowtempMapper.java
@@ -14,51 +14,30 @@
  *  this software without specific prior written permission.
  *  Author: Chill 搴勯獮 (smallchill@163.com)
  */
-package com.vci.ubcs.omd.mapper;
+package com.vci.ubcs.code.mapper;
 
-
+import com.vci.ubcs.code.entity.CodeClsflowtempEntity;
+import com.vci.ubcs.code.vo.CodeClsflowtempVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.vci.ubcs.omd.entity.DictBizM;
-import com.vci.ubcs.omd.vo.DictBizMVO;
-
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import java.util.List;
 
 /**
- * Mapper 鎺ュ彛
+ * 缂栫爜搴撳畾涔�-妯℃澘娴佺▼ Mapper 鎺ュ彛
  *
- * @author Chill
+ * @author yuxc
+ * @since 2023-04-20
  */
-public interface DictBizMapper extends BaseMapper<DictBizM> {
+public interface CodeClsflowtempMapper extends BaseMapper<CodeClsflowtempEntity> {
 
 	/**
-	 * 鑾峰彇瀛楀吀琛ㄥ搴斾腑鏂�
+	 * 鑷畾涔夊垎椤�
 	 *
-	 * @param code    瀛楀吀缂栧彿
-	 * @param dictKey 瀛楀吀搴忓彿
+	 * @param page
+	 * @param CodeClsflowtemp
 	 * @return
 	 */
-	String getValue(String code, String dictKey);
+	List<CodeClsflowtempVO> selectCodeClsflowtempPage(IPage page, CodeClsflowtempVO CodeClsflowtemp);
 
-	/**
-	 * 鑾峰彇瀛楀吀琛�
-	 *
-	 * @param code 瀛楀吀缂栧彿
-	 * @return
-	 */
-	List<DictBizM> getList(String code);
-
-	/**
-	 * 鑾峰彇鏍戝舰鑺傜偣
-	 *
-	 * @return
-	 */
-	List<DictBizMVO> tree();
-
-	/**
-	 * 鑾峰彇鏍戝舰鑺傜偣
-	 *
-	 * @return
-	 */
-	List<DictBizMVO> parentTree();
 
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClstempattrMapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClstempattrMapper.java
new file mode 100644
index 0000000..4b111c0
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClstempattrMapper.java
@@ -0,0 +1,52 @@
+/*
+ *      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.code.mapper;
+
+import com.vci.ubcs.code.entity.CodeClstempattrEntity;
+import com.vci.ubcs.code.vo.CodeClstempattrVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import java.util.List;
+
+/**
+ * 缂栫爜搴撳畾涔�-妯℃澘灞炴�� Mapper 鎺ュ彛
+ *
+ * @author yuxc
+ * @since 2023-04-19
+ */
+public interface CodeClstempattrMapper extends BaseMapper<CodeClstempattrEntity> {
+
+	/**
+	 * 鑷畾涔夊垎椤�
+	 *
+	 * @param page
+	 * @param CodeClstempattr
+	 * @return
+	 */
+	List<CodeClstempattrVO> selectCodeClstempattrPage(IPage page, CodeClstempattrVO CodeClstempattr);
+
+	/**
+	 * 鏉′欢鏌ヨ鎺掑簭
+	 *
+	 * @param classifytemplateoid
+	 * @return
+	 */
+	List<CodeClstempattrEntity> selectByClassifytemplateoid(String classifytemplateoid);
+
+
+	List<CodeClstempattrEntity> selectRefByOid(String oid);
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClstemplateMapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClstemplateMapper.java
index f1411fe..5e87d10 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClstemplateMapper.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClstemplateMapper.java
@@ -20,6 +20,7 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.vci.ubcs.code.entity.CodeClstemplateEntity;
 import com.vci.ubcs.code.vo.CodeClstemplateVO;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -40,5 +41,21 @@
 	 */
 	List<CodeClstemplateVO> selectPlCodeClstemplatePage(IPage page, CodeClstemplateVO plCodeClstemplate);
 
+	/**
+	 * 鑾峰彇鎵�鏈夊眰绾т笅绾х殑涓婚敭
+	 *
+	 * @param oid
+	 * @return
+	 */
+	List<String> selectAllLevelChildOid(@Param("oid") String oid);
+
+	/**
+	 * 鏍¢獙鏄惁鏈変笅绾ц妭鐐癸紝涓嶆牎楠屾槸鍚﹀叧鑱斾簡鏁版嵁
+	 *
+	 * @param oid
+	 * @return
+	 */
+	int countAllLevelChildOid(@Param("oid") String oid);
+
 
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/DictBizMapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodePhaseattrMapper.java
similarity index 60%
copy from Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/DictBizMapper.java
copy to Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodePhaseattrMapper.java
index 38b3b7b..7765694 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/DictBizMapper.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodePhaseattrMapper.java
@@ -14,51 +14,31 @@
  *  this software without specific prior written permission.
  *  Author: Chill 搴勯獮 (smallchill@163.com)
  */
-package com.vci.ubcs.omd.mapper;
+package com.vci.ubcs.code.mapper;
 
-
+import com.vci.ubcs.code.entity.CodePhaseattrEntity;
+import com.vci.ubcs.code.vo.CodePhaseattrVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.vci.ubcs.omd.entity.DictBizM;
-import com.vci.ubcs.omd.vo.DictBizMVO;
-
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import java.util.List;
 
 /**
- * Mapper 鎺ュ彛
+ * 缂栫爜搴撳畾涔�-妯℃澘闃舵-灞炴�� Mapper 鎺ュ彛
  *
- * @author Chill
+ * @author yuxc
+ * @since 2023-04-20
  */
-public interface DictBizMapper extends BaseMapper<DictBizM> {
+public interface CodePhaseattrMapper extends BaseMapper<CodePhaseattrEntity> {
 
 	/**
-	 * 鑾峰彇瀛楀吀琛ㄥ搴斾腑鏂�
+	 * 鑷畾涔夊垎椤�
 	 *
-	 * @param code    瀛楀吀缂栧彿
-	 * @param dictKey 瀛楀吀搴忓彿
+	 * @param page
+	 * @param CodePhaseattr
 	 * @return
 	 */
-	String getValue(String code, String dictKey);
+	List<CodePhaseattrVO> selectCodePhaseattrPage(IPage page, CodePhaseattrVO CodePhaseattr);
 
-	/**
-	 * 鑾峰彇瀛楀吀琛�
-	 *
-	 * @param code 瀛楀吀缂栧彿
-	 * @return
-	 */
-	List<DictBizM> getList(String code);
 
-	/**
-	 * 鑾峰彇鏍戝舰鑺傜偣
-	 *
-	 * @return
-	 */
-	List<DictBizMVO> tree();
-
-	/**
-	 * 鑾峰彇鏍戝舰鑺傜偣
-	 *
-	 * @return
-	 */
-	List<DictBizMVO> parentTree();
-
+	List<CodePhaseattrEntity> selectByPhasea(String oid);
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/DictBizMapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeTempbuttonMapper.java
similarity index 60%
copy from Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/DictBizMapper.java
copy to Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeTempbuttonMapper.java
index 38b3b7b..aaad9cc 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/DictBizMapper.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeTempbuttonMapper.java
@@ -14,51 +14,30 @@
  *  this software without specific prior written permission.
  *  Author: Chill 搴勯獮 (smallchill@163.com)
  */
-package com.vci.ubcs.omd.mapper;
+package com.vci.ubcs.code.mapper;
 
-
+import com.vci.ubcs.code.entity.CodeTempbuttonEntity;
+import com.vci.ubcs.code.vo.CodeTempbuttonVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.vci.ubcs.omd.entity.DictBizM;
-import com.vci.ubcs.omd.vo.DictBizMVO;
-
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import java.util.List;
 
 /**
- * Mapper 鎺ュ彛
+ * 缂栫爜搴撳畾涔�-妯℃澘鎸夐挳鎵╁睍 Mapper 鎺ュ彛
  *
- * @author Chill
+ * @author yuxc
+ * @since 2023-04-20
  */
-public interface DictBizMapper extends BaseMapper<DictBizM> {
+public interface CodeTempbuttonMapper extends BaseMapper<CodeTempbuttonEntity> {
 
 	/**
-	 * 鑾峰彇瀛楀吀琛ㄥ搴斾腑鏂�
+	 * 鑷畾涔夊垎椤�
 	 *
-	 * @param code    瀛楀吀缂栧彿
-	 * @param dictKey 瀛楀吀搴忓彿
+	 * @param page
+	 * @param CodeTempbutton
 	 * @return
 	 */
-	String getValue(String code, String dictKey);
+	List<CodeTempbuttonVO> selectCodeTempbuttonPage(IPage page, CodeTempbuttonVO CodeTempbutton);
 
-	/**
-	 * 鑾峰彇瀛楀吀琛�
-	 *
-	 * @param code 瀛楀吀缂栧彿
-	 * @return
-	 */
-	List<DictBizM> getList(String code);
-
-	/**
-	 * 鑾峰彇鏍戝舰鑺傜偣
-	 *
-	 * @return
-	 */
-	List<DictBizMVO> tree();
-
-	/**
-	 * 鑾峰彇鏍戝舰鑺傜偣
-	 *
-	 * @return
-	 */
-	List<DictBizMVO> parentTree();
 
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/DictBizMapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeTempphaseMapper.java
similarity index 60%
copy from Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/DictBizMapper.java
copy to Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeTempphaseMapper.java
index 38b3b7b..c1587f3 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/DictBizMapper.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeTempphaseMapper.java
@@ -14,51 +14,30 @@
  *  this software without specific prior written permission.
  *  Author: Chill 搴勯獮 (smallchill@163.com)
  */
-package com.vci.ubcs.omd.mapper;
+package com.vci.ubcs.code.mapper;
 
-
+import com.vci.ubcs.code.entity.CodeTempphaseEntity;
+import com.vci.ubcs.code.vo.CodeTempphaseVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.vci.ubcs.omd.entity.DictBizM;
-import com.vci.ubcs.omd.vo.DictBizMVO;
-
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import java.util.List;
 
 /**
- * Mapper 鎺ュ彛
+ * 缂栫爜搴撳畾涔�-妯℃澘闃舵 Mapper 鎺ュ彛
  *
- * @author Chill
+ * @author yuxc
+ * @since 2023-04-20
  */
-public interface DictBizMapper extends BaseMapper<DictBizM> {
+public interface CodeTempphaseMapper extends BaseMapper<CodeTempphaseEntity> {
 
 	/**
-	 * 鑾峰彇瀛楀吀琛ㄥ搴斾腑鏂�
+	 * 鑷畾涔夊垎椤�
 	 *
-	 * @param code    瀛楀吀缂栧彿
-	 * @param dictKey 瀛楀吀搴忓彿
+	 * @param page
+	 * @param CodeTempphase
 	 * @return
 	 */
-	String getValue(String code, String dictKey);
+	List<CodeTempphaseVO> selectCodeTempphasePage(IPage page, CodeTempphaseVO CodeTempphase);
 
-	/**
-	 * 鑾峰彇瀛楀吀琛�
-	 *
-	 * @param code 瀛楀吀缂栧彿
-	 * @return
-	 */
-	List<DictBizM> getList(String code);
-
-	/**
-	 * 鑾峰彇鏍戝舰鑺傜偣
-	 *
-	 * @return
-	 */
-	List<DictBizMVO> tree();
-
-	/**
-	 * 鑾峰彇鏍戝舰鑺傜偣
-	 *
-	 * @return
-	 */
-	List<DictBizMVO> parentTree();
 
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClsflowtempService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClsflowtempService.java
new file mode 100644
index 0000000..5e6cf02
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClsflowtempService.java
@@ -0,0 +1,48 @@
+/*
+ *      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.code.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.vci.ubcs.code.entity.CodeClsflowtempEntity;
+import com.vci.ubcs.code.vo.CodeClsflowtempVO;
+
+/**
+ * 缂栫爜搴撳畾涔�-妯℃澘娴佺▼ 鏈嶅姟绫�
+ *
+ * @author yuxc
+ * @since 2023-04-20
+ */
+public interface ICodeClsflowtempService extends IService<CodeClsflowtempEntity> {
+
+	/**
+	 * 鑷畾涔夊垎椤�
+	 *
+	 * @param page
+	 * @param CodeClsflowtemp
+	 * @return
+	 */
+	IPage<CodeClsflowtempVO> selectCodeClsflowtempPage(IPage<CodeClsflowtempVO> page, CodeClsflowtempVO CodeClsflowtemp);
+
+	/**
+	 * 妯℃澘鍒犻櫎鐨勬椂鍊欒Е鍙�
+	 * @param classifyTemplateOid 妯℃澘鐨勪富閿�
+	 * @return 鍙楀奖鍝嶇殑鍐呭
+	 */
+	int codeTemplateDeleteTrigger(String classifyTemplateOid) ;
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClstempattrService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClstempattrService.java
new file mode 100644
index 0000000..27c01d0
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClstempattrService.java
@@ -0,0 +1,65 @@
+/*
+ *      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.code.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.vci.ubcs.code.entity.CodeClstempattrEntity;
+import com.vci.ubcs.code.vo.CodeClstempattrVO;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 缂栫爜搴撳畾涔�-妯℃澘灞炴�� 鏈嶅姟绫�
+ *
+ * @author yuxc
+ * @since 2023-04-19
+ */
+public interface ICodeClstempattrService extends IService<CodeClstempattrEntity> {
+
+	/**
+	 * 鑷畾涔夊垎椤�
+	 *
+	 * @param page
+	 * @param CodeClstempattr
+	 * @return
+	 */
+	IPage<CodeClstempattrVO> selectCodeClstempattrPage(IPage<CodeClstempattrVO> page, CodeClstempattrVO CodeClstempattr);
+
+	/**
+	 * 浣跨敤妯℃澘鐨勪富閿幏鍙栨ā鏉跨殑灞炴��--鎵归噺
+	 * @param templateOidCollection 妯℃澘鐨勪富閿�
+	 * @return 灞炴�х殑淇℃伅
+	 */
+	List<CodeClstempattrVO> listCodeClassifyTemplateAttrByTemplateOids(Collection<String> templateOidCollection);
+
+	/**
+	 * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+	 * @param codeClassifyTemplateAttrDOs 鏁版嵁瀵硅薄鍒楄〃
+	 * @return 鏄剧ず瀵硅薄
+	 */
+	List<CodeClstempattrVO> codeClassifyTemplateAttrDO2VOs(Collection<CodeClstempattrEntity>  codeClassifyTemplateAttrDOs);
+
+	/**
+	 * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+	 * @param  codeClassifyTemplateAttrDO 鏁版嵁瀵硅薄
+	 * @return 鏄剧ず瀵硅薄
+	 */
+	CodeClstempattrVO codeClassifyTemplateAttrDO2VO(CodeClstempattrEntity codeClassifyTemplateAttrDO);
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClstemplateService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClstemplateService.java
index fca69ab..b485109 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClstemplateService.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClstemplateService.java
@@ -18,8 +18,15 @@
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.vci.ubcs.code.dto.CodeClstemplateDTO;
 import com.vci.ubcs.code.entity.CodeClstemplateEntity;
 import com.vci.ubcs.code.vo.CodeClstemplateVO;
+import com.vci.ubcs.code.vo.pagemodel.TreeQueryObject;
+import com.vci.ubcs.com.vci.starter.web.pagemodel.Tree;
+import org.springblade.core.tool.api.R;
+
+import java.util.Collection;
+import java.util.List;
 
 /**
  * 缂栫爜搴撳畾涔�-妯℃澘绠$悊 鏈嶅姟绫�
@@ -38,5 +45,113 @@
 	 */
 	IPage<CodeClstemplateVO> selectPlCodeClstemplatePage(IPage<CodeClstemplateVO> page, CodeClstemplateVO plCodeClstemplate);
 
+	/**
+	 * 鏌ヨ鍒嗙被妯℃澘瀵硅薄 鏍�
+	 * @param treeQueryObject 鏍戞煡璇㈠璞�
+	 * @return 鍒嗙被妯℃澘瀵硅薄 鏄剧ず鏍�
+	 */
+    List<Tree> treeCodeClassifyTemplate(TreeQueryObject treeQueryObject);
 
+	/**
+	 * 鏍规嵁鏍戝舰鏌ヨ瀵硅薄鏉ユ煡璇㈡暟鎹璞�
+	 *
+	 * @param treeQueryObject 鏍戝舰鏌ヨ瀵硅薄
+	 * @return 鏌ヨ缁撴灉,鏁版嵁瀵硅薄
+	 */
+	List<CodeClstemplateEntity> selectCodeClassifyTemplateDOByTree(TreeQueryObject treeQueryObject);
+
+	/**
+	 * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+	 * @param codeClstemplateEntitys 鏁版嵁瀵硅薄鍒楄〃
+	 * @return 鏄剧ず瀵硅薄
+	 */
+	List<CodeClstemplateVO> codeClassifyTemplateDO2VOs(Collection<CodeClstemplateEntity> codeClstemplateEntitys);
+
+	/**
+	 * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+	 * @param codeClstemplateEntitys 鏁版嵁瀵硅薄鍒楄〃
+	 * @param hasAttr 鏄惁鍖呭惈灞炴��
+	 * @return 鏄剧ず瀵硅薄
+	 */
+	List<CodeClstemplateVO> codeClassifyTemplateDO2VOs(Collection<CodeClstemplateEntity> codeClstemplateEntitys, boolean hasAttr);
+
+	/**
+	 * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+	 * @param  codeClstemplateEntity 鏁版嵁瀵硅薄
+	 * @return 鏄剧ず瀵硅薄
+	 */
+	CodeClstemplateVO codeClassifyTemplateDO2VO(CodeClstemplateEntity codeClstemplateEntity);
+
+//	/**
+//	 * 鍒嗙被妯℃澘鍒楄〃
+//	 * @param conditionMap 鏌ヨ鏉′欢
+//	 * @param pageHelper 鍒嗛〉瀵硅薄
+//	 * @return 鏄剧ず瀵硅薄
+//	 */
+//	DataGrid<CodeClstemplateVO> gridCodeClassifyTemplate(Map<String, String> conditionMap, PageHelper pageHelper) ;
+
+	/**
+	 * 妫�鏌� 鍒嗙被妯℃澘瀵硅薄鏄惁鍒犻櫎
+	 * @param codeClstemplateDTO 鍒嗙被妯℃澘瀵硅薄鏁版嵁浼犺緭瀵硅薄锛屽繀椤昏鏈塷id鍜宼s灞炴��
+	 * @return 鎵ц缁撴灉 success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+	 */
+	R checkIsCanDelete(CodeClstemplateDTO codeClstemplateDTO);
+
+	/**
+	 * 妫�鏌ユ槸鍚︽湁涓嬬骇鏄惁鍏宠仈浜嗘暟鎹�
+	 *
+	 * @param oid 涓婚敭
+	 * @return true 琛ㄧず鏈夊紩鐢紝false琛ㄧず娌℃湁寮曠敤
+	 */
+	boolean checkChildIsLinked(String oid);
+
+	/**
+	 * 鏍¢獙鏄惁鏈変笅绾ц妭鐐癸紝涓嶆牎楠屾槸鍚﹀叧鑱斾簡鏁版嵁
+	 *
+	 * @param oid 涓婚敭
+	 * @return true琛ㄧず鏈変笅绾э紝false琛ㄧず娌℃湁涓嬬骇
+	 */
+	boolean checkHasChild(String oid);
+
+	/**
+	 * 鍒犻櫎鍒嗙被妯℃澘瀵硅薄
+	 * @param codeClstemplateDTO 鍒嗙被妯℃澘瀵硅薄鏁版嵁浼犺緭瀵硅薄锛宱id鍜宼s闇�瑕佷紶杈�
+	 * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+	 */
+	R deleteCodeClassifyTemplate(CodeClstemplateDTO codeClstemplateDTO);
+
+	/**
+	 * 涓婚敭鑾峰彇鍒嗙被妯℃澘瀵硅薄
+	 * @param oid 涓婚敭
+	 * @return 鍒嗙被妯℃澘瀵硅薄鏄剧ず瀵硅薄
+	 */
+	CodeClstemplateVO getObjectByOid(String oid) ;
+
+	/**
+	 * 涓婚敭鎵归噺鑾峰彇鍒嗙被妯℃澘瀵硅薄
+	 * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+	 * @return 鍒嗙被妯℃澘瀵硅薄鏄剧ず瀵硅薄
+	 */
+	Collection<CodeClstemplateVO> listCodeClassifyTemplateByOids(List<String> oidCollections);
+
+
+	/**
+	 * 鍙傜収鏍� 鍒嗙被妯℃澘瀵硅薄
+	 * @param treeQueryObject 鏍戝舰鏌ヨ瀵硅薄
+	 * @return 鍒嗙被妯℃澘瀵硅薄鏄剧ず鏍�
+	 */
+	List<Tree> referTree(TreeQueryObject treeQueryObject);
+
+	/**
+	 * 鍚敤銆佸仠鐢�
+	 * @param oid
+	 * @param lcStatus
+	 * @return
+	 */
+	R updateLcStatus(String oid, String lcStatus);
+
+	/**
+	 * 鍗囩増
+	 */
+	R Upgrade(CodeClstemplateDTO codeClassifyDTO);
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodePhaseattrService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodePhaseattrService.java
new file mode 100644
index 0000000..bfe5e4f
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodePhaseattrService.java
@@ -0,0 +1,42 @@
+/*
+ *      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.code.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.vci.ubcs.code.entity.CodePhaseattrEntity;
+import com.vci.ubcs.code.vo.CodePhaseattrVO;
+
+/**
+ * 缂栫爜搴撳畾涔�-妯℃澘闃舵-灞炴�� 鏈嶅姟绫�
+ *
+ * @author yuxc
+ * @since 2023-04-20
+ */
+public interface ICodePhaseattrService extends IService<CodePhaseattrEntity> {
+
+	/**
+	 * 鑷畾涔夊垎椤�
+	 *
+	 * @param page
+	 * @param CodePhaseattr
+	 * @return
+	 */
+	IPage<CodePhaseattrVO> selectCodePhaseattrPage(IPage<CodePhaseattrVO> page, CodePhaseattrVO CodePhaseattr);
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeTempbuttonService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeTempbuttonService.java
new file mode 100644
index 0000000..024db8d
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeTempbuttonService.java
@@ -0,0 +1,49 @@
+/*
+ *      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.code.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.vci.ubcs.code.entity.CodeTempbuttonEntity;
+import com.vci.ubcs.code.vo.CodeTempbuttonVO;
+
+/**
+ * 缂栫爜搴撳畾涔�-妯℃澘鎸夐挳鎵╁睍 鏈嶅姟绫�
+ *
+ * @author yuxc
+ * @since 2023-04-20
+ */
+public interface ICodeTempbuttonService extends IService<CodeTempbuttonEntity> {
+
+	/**
+	 * 鑷畾涔夊垎椤�
+	 *
+	 * @param page
+	 * @param CodeTempbutton
+	 * @return
+	 */
+	IPage<CodeTempbuttonVO> selectCodeTempbuttonPage(IPage<CodeTempbuttonVO> page, CodeTempbuttonVO CodeTempbutton);
+
+
+	/**
+	 * 妯℃澘鍒犻櫎鐨勬椂鍊欒Е鍙�
+	 * @param classifyTemplateOid 妯℃澘鐨勪富閿�
+	 * @return 鍙楀奖鍝嶇殑鏁版嵁琛�
+	 */
+	int codeTemplateDeleteTrigger(String classifyTemplateOid);
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeTempphaseService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeTempphaseService.java
new file mode 100644
index 0000000..2ee891a
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeTempphaseService.java
@@ -0,0 +1,48 @@
+/*
+ *      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.code.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.vci.ubcs.code.entity.CodeTempphaseEntity;
+import com.vci.ubcs.code.vo.CodeTempphaseVO;
+
+/**
+ * 缂栫爜搴撳畾涔�-妯℃澘闃舵 鏈嶅姟绫�
+ *
+ * @author yuxc
+ * @since 2023-04-20
+ */
+public interface ICodeTempphaseService extends IService<CodeTempphaseEntity> {
+
+	/**
+	 * 鑷畾涔夊垎椤�
+	 *
+	 * @param page
+	 * @param CodeTempphase
+	 * @return
+	 */
+	IPage<CodeTempphaseVO> selectCodeTempphasePage(IPage<CodeTempphaseVO> page, CodeTempphaseVO CodeTempphase);
+
+
+	/**
+	 * 妯℃澘鍒犻櫎鐨勬椂鍊欒Е鍙�
+	 * @param classifyTemplateOid 妯℃澘鐨勪富閿�
+	 * @return 鍙楀奖鍝嶇殑鏁版嵁
+	 */
+	int codeTemplateDeleteTrigger(String classifyTemplateOid);
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
index 1ae8d4f..e189b97 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
@@ -39,11 +39,11 @@
 import com.vci.ubcs.com.vci.starter.web.util.BeanUtilForVCI;
 import com.vci.ubcs.com.vci.starter.web.util.LangBaseUtil;
 import com.vci.ubcs.com.vci.starter.web.util.VciBaseUtil;
+import com.vci.ubcs.core.log.exception.ServiceException;
 import org.apache.poi.hssf.util.HSSFColor;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springblade.core.cache.utils.CacheUtil;
-import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
@@ -67,12 +67,11 @@
 	@Resource
 	private CodeClstemplateMapper codeClstemplateMapper;
 
-//	@Resource
-//	private ICodeRuleService codeRuleService;
+	@Resource
+	private ICodeRuleService codeRuleService;
 
 	@Resource
 	private CodeOsbtmtypeMapper codeOsbtmtypeMapper;
-
 	@Resource
 	CodeOsbtmtypeattributeMapper codeOsbtmtypeattributeMapper;
 
@@ -116,8 +115,11 @@
 		codeClassifyEntity.setCreator(AuthUtil.getUser().getUserName());
 		codeClassifyEntity.setCreateTime(new Date());
 		codeClassifyEntity.setTs(new Date());
+		codeClassifyEntity.setOwner(AuthUtil.getUser().getUserName());
 		codeClassifyEntity.setLastModifier(AuthUtil.getUser().getUserName());
 		codeClassifyEntity.setLastModifyTime(new Date());
+		codeClassifyEntity.setRevisionSeq(1);
+		codeClassifyEntity.setVersionSeq(1);
 		int insertNumber = codeClassifyMapper.insert(codeClassifyEntity);
 		return R.status(SqlHelper.retBool(insertNumber));
 	}
@@ -168,7 +170,11 @@
 		if(codeClassifyEntity == null || codeClassifyEntity.getOid() == null){
 			return R.fail("浼犲叆鏁版嵁涓嶈兘涓虹┖锛�");
 		}
-		codeClassifyEntity = selectByOid(codeClassifyEntity.getOid());
+		CodeClassify codeClassifyNew = selectByOid(codeClassifyEntity.getOid());
+		if(codeClassifyNew == null){
+			return R.fail("鏈煡璇㈠埌鐩稿叧鏁版嵁锛�");
+		}
+		codeClassifyNew.setTs(codeClassifyEntity.getTs());
 		return checkIsCanDeleteForDO(codeClassifyEntity);
 	}
 
@@ -194,11 +200,11 @@
 	private R checkIsCanDeleteForDO(CodeClassify codeClassifyEntity) {
 
 		//妫�鏌s
-		Map<String,Object> condition = new HashMap<>(2);
-		condition.put("oid",codeClassifyEntity.getOid());
-		condition.put("ts",codeClassifyEntity.getTs());
-		CodeClassify detail = codeClassifyMapper
-			.selectOne(Condition.getQueryWrapper(condition,CodeClassify.class));
+//		Map<String,Object> condition = new HashMap<>(2);
+//		condition.put("oid",codeClassifyEntity.getOid());
+//		condition.put("ts",codeClassifyEntity.getTs());
+		CodeClassify detail = codeClassifyMapper.selectOne(Condition.getQueryWrapper(codeClassifyEntity));
+//			.selectOne(Condition.getQueryWrapper(condition,CodeClassify.class));
 		if(detail == null){//涓嶆槸鏈�鏂扮殑涓嶈鏀�
 			throw new ServiceException("褰撳墠鏁版嵁涓嶆槸鏈�鏂帮紝璇峰埛鏂板悗鍐嶄慨鏀癸紒");
 //			return R.fail("褰撳墠鏁版嵁涓嶆槸鏈�鏂帮紝璇峰埛鏂板悗鍐嶄慨鏀癸紒");
@@ -327,6 +333,9 @@
 		//鏌ヨ淇敼鍓峵s
 		CodeClassify codeClassify = codeClassifyMapper.selectById(oid);//涓昏鏄负浜嗘煡璇s
 		codeClassify.setLcStatus(lcStatus);
+		codeClassify.setTs(new Date());
+		codeClassify.setLastModifyTime(new Date());
+		codeClassify.setLastModifier(AuthUtil.getUser().getUserName());
 		//鍚敤銆佸仠鐢�
 //		int u = codeClassifyMapper.updateLcStatus(oid,lcStatus);
 		int count = codeClassifyMapper.updateById(codeClassify);
@@ -667,19 +676,24 @@
 			});
 			throw new VciBaseException("璺緞鏈夐噸澶�,{0}",new String[]{rowIndexList.stream().collect(Collectors.joining(","))});
 		}
-		//缂栧彿鑾峰彇涓氬姟绫诲瀷鏈嶅姟杩樻湭瀹屾垚锛屾墍浠ョ瓑涓氬姟绫诲瀷瀹屾垚鍚庤繘琛屽悗缁殑瀹屾垚
-//		Map<String, CodeRuleVO> ruleVOMap = Optional.ofNullable(codeRuleService.listCodeRuleByIds(
-//			poList.stream().filter(s->StringUtils.isNotBlank(s.getCodeRuleId())).map(CodeClassifyPO::getCodeRuleId).collect(Collectors.toList()))
-//		).orElse(new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t,(o1,o2)->o2));
-		Map<String, CodeRuleVO> ruleVOMap = null;
-		Map<String,CodeKeyAttrRepeatRuleVO> keyRuleVOMap =Optional.ofNullable(iCodeKeyattrrepeatService.listCodeKeyAttrRepeatRuleByOids(
-			poList.stream().filter(s->StringUtils.isNotBlank(s.getKeyRepeatRuleId())).map(CodeClassifyPO::getKeyRepeatRuleId).collect(Collectors.toList()))
+		//缂栧彿鑾峰彇涓氬姟绫诲瀷鏈嶅姟
+		List<String> ruleOids = poList.stream().filter(
+				s -> StringUtils.isNotBlank(s.getCodeRuleId()))
+			.map(CodeClassifyPO::getCodeRuleId)
+			.collect(Collectors.toList());
+		Map<String, CodeRuleVO> ruleVOMap = Optional.ofNullable(ruleOids.size()==0 ? null:codeRuleService.listCodeRuleByOids(ruleOids)
 		).orElse(new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t,(o1,o2)->o2));
-//		codeOsbtmtypeMapper.selectList((Wrapper<CodeOsbtmtypeEntity>) poList);
-//		Map<String, CodeOsbtmtypeVO> btmVOMap = Optional.ofNullable(
-//			codeOsbtmtypeMapper.selectList((Wrapper<CodeOsbtmtypeEntity>) poList)
-//		).orElse(new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t,(o1,o2)->o2));
-		Map<String, CodeOsbtmtypeVO> btmVOMap = null;
+
+		List<String> keyOids = poList.stream().filter(s -> StringUtils.isNotBlank(s.getKeyRepeatRuleId()))
+			.map(CodeClassifyPO::getKeyRepeatRuleId).collect(Collectors.toList());
+		Map<String,CodeKeyAttrRepeatRuleVO> keyRuleVOMap =Optional.ofNullable(keyOids.size()==0 ? null: iCodeKeyattrrepeatService.listCodeKeyAttrRepeatRuleByOids(keyOids)
+		).orElse(new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t,(o1,o2)->o2));
+
+		List<String> btmOids = poList.stream().filter(s -> StringUtils.isNotBlank(s.getKeyRepeatRuleId()))
+			.map(CodeClassifyPO::getBtmTypeId).collect(Collectors.toList());
+		Map<String, CodeOsbtmtypeEntity> btmVOMap = Optional.ofNullable(btmOids.size()==0 ? null: codeOsbtmtypeMapper.selectBatchIds(btmOids)
+		).orElse(new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t,(o1,o2)->o2));
+//		Map<String, CodeOsbtmtypeVO> btmVOMap = null;
 		Map<String/**璺緞**/,String/**涓婚敭**/> oidPathMap = new HashMap<>();
 
 		//鎴戜滑闇�瑕佹煡璇㈡墍鏈夊凡缁忓瓨鍦ㄧ殑鍒嗙被锛屼富瑕佹槸璺緞锛岀敤鏉ュ垽鏂垎绫荤殑鏁版嵁
@@ -709,7 +723,7 @@
 			classify.setDescription(po.getDescription());
 			oidPathMap.put(po.getPath(),classify.getOid());
 			if(StringUtils.isNotBlank(po.getBtmTypeId())){
-				CodeOsbtmtypeVO typeVO = btmVOMap.get(po.getBtmTypeId().toLowerCase(Locale.ROOT));
+				CodeOsbtmtypeVO typeVO = (CodeOsbtmtypeVO)btmVOMap.get(po.getBtmTypeId().toLowerCase(Locale.ROOT));
 				classify.setBtmTypeId(typeVO.getId());
 				classify.setBtmTypeName(typeVO.getName());
 			}
@@ -801,7 +815,7 @@
 					classifyDO.setTs(new Date());
 					classifyDO.setBtmname("codeclassify");
 					classifyDO.setLcStatus("Enabled");
-					classifyDO.setId("0");
+					classifyDO.setOwner(AuthUtil.getUser().getUserName());
 					classifyDO.setCreator(AuthUtil.getUser().getUserName());
 					classifyDO.setLastModifier(AuthUtil.getUser().getUserName());
 					classifyDO.setLastModifyTime(new Date());
@@ -920,7 +934,7 @@
 		List<Map<String,Object>> cbos = codeClassifyMapper.selectAllLevelParentByOid(oid);
 		Map<String,String> oidLevelMap = new HashMap<>();
 		Optional.ofNullable(cbos).orElseGet(()->new ArrayList<>()).stream().forEach(cbo->{
-			oidLevelMap.put(cbo.get("oid").toString(),cbo.get("level").toString());
+			oidLevelMap.put(cbo.get("OID").toString(),cbo.get("LEVEL").toString());
 		});
 		if(CollectionUtils.isEmpty(oidLevelMap)){
 			return new ArrayList<>();
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClsflowtempServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClsflowtempServiceImpl.java
new file mode 100644
index 0000000..b37306e
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClsflowtempServiceImpl.java
@@ -0,0 +1,71 @@
+/*
+ *      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.code.service.impl;
+
+import com.alibaba.nacos.api.utils.StringUtils;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.code.entity.CodeClsflowtempEntity;
+import com.vci.ubcs.code.mapper.CodeClsflowtempMapper;
+import com.vci.ubcs.code.service.ICodeClsflowtempService;
+import com.vci.ubcs.code.vo.CodeClsflowtempVO;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 缂栫爜搴撳畾涔�-妯℃澘娴佺▼ 鏈嶅姟瀹炵幇绫�
+ *
+ * @author yuxc
+ * @since 2023-04-20
+ */
+@Service
+public class CodeClsflowtempServiceImpl extends ServiceImpl<CodeClsflowtempMapper, CodeClsflowtempEntity> implements ICodeClsflowtempService {
+
+	@Override
+	public IPage<CodeClsflowtempVO> selectCodeClsflowtempPage(IPage<CodeClsflowtempVO> page, CodeClsflowtempVO CodeClsflowtemp) {
+		return page.setRecords(baseMapper.selectCodeClsflowtempPage(page, CodeClsflowtemp));
+	}
+
+
+	/**
+	 * 妯℃澘鍒犻櫎鐨勬椂鍊欒Е鍙�
+	 *
+	 * @param classifyTemplateOid 妯℃澘鐨勪富閿�
+	 * @return 鍙楀奖鍝嶇殑鍐呭
+	 */
+	@Override
+	public int codeTemplateDeleteTrigger(String classifyTemplateOid) {
+		int updateCount = 0;
+		if(StringUtils.isBlank(classifyTemplateOid)){
+			Map<String,Object> conditionMap = new HashMap<>();
+			conditionMap.put("classifyTemplateOid",classifyTemplateOid);
+			List<CodeClsflowtempEntity> codeClsflowtempEntities = baseMapper.selectByMap(conditionMap);
+			if(!CollectionUtils.isEmpty(codeClsflowtempEntities)){
+				updateCount += baseMapper.deleteBatchIds(codeClsflowtempEntities.stream()
+					.map(CodeClsflowtempEntity::getOid).collect(Collectors.toList()));
+			}
+		}
+		return updateCount;
+	}
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClstempattrServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClstempattrServiceImpl.java
new file mode 100644
index 0000000..05ae817
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClstempattrServiceImpl.java
@@ -0,0 +1,114 @@
+/*
+ *      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.code.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.code.entity.CodeClstempattrEntity;
+import com.vci.ubcs.code.mapper.CodeClstempattrMapper;
+import com.vci.ubcs.code.service.ICodeClstempattrService;
+import com.vci.ubcs.code.vo.CodeClstempattrVO;
+import com.vci.ubcs.com.vci.starter.web.enumpck.VciFieldTypeEnum;
+import com.vci.ubcs.com.vci.starter.web.util.BeanUtilForVCI;
+import com.vci.ubcs.com.vci.starter.web.util.VciBaseUtil;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 缂栫爜搴撳畾涔�-妯℃澘灞炴�� 鏈嶅姟瀹炵幇绫�
+ *
+ * @author yuxc
+ * @since 2023-04-19
+ */
+@Service
+public class CodeClstempattrServiceImpl extends ServiceImpl<CodeClstempattrMapper, CodeClstempattrEntity> implements ICodeClstempattrService {
+
+	@Resource
+	CodeClstempattrMapper codeClstempattrMapper;
+
+	@Override
+	public IPage<CodeClstempattrVO> selectCodeClstempattrPage(IPage<CodeClstempattrVO> page, CodeClstempattrVO CodeClstempattr) {
+		return page.setRecords(baseMapper.selectCodeClstempattrPage(page, CodeClstempattr));
+	}
+
+
+	/**
+	 * 浣跨敤妯℃澘鐨勪富閿幏鍙栨ā鏉跨殑灞炴��--鎵归噺
+	 *
+	 * @param templateOidCollection 妯℃澘鐨勪富閿�
+	 * @return 灞炴�х殑淇℃伅
+	 */
+	@Override
+	public List<CodeClstempattrVO> listCodeClassifyTemplateAttrByTemplateOids(Collection<String> templateOidCollection) {
+		if(CollectionUtils.isEmpty(templateOidCollection)){
+			return new ArrayList<>();
+		}
+		List<CodeClstempattrEntity> attrDOList = new ArrayList<>();
+		VciBaseUtil.switchCollectionForOracleIn(templateOidCollection).stream().forEach(templateOids->{
+//			Map<String,String> conditionMap = new HashMap<>();
+//			conditionMap.put("classifytemplateoid", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(templateOids.toArray(new String[0])) + ")");
+//			PageHelper pageHelper = new PageHelper(-1);
+//			pageHelper.addDefaultAsc("orderNum");
+			List<CodeClstempattrEntity> attrDOS = baseMapper.selectByClassifytemplateoid(VciBaseUtil.toInSql(templateOids.toArray(new String[0])));
+
+			if(!CollectionUtils.isEmpty(attrDOS)){
+				attrDOList.addAll(attrDOS);
+			}
+		});
+		return codeClassifyTemplateAttrDO2VOs(attrDOList);
+	}
+
+	/**
+	 * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+	 * @param codeClassifyTemplateAttrDOs 鏁版嵁瀵硅薄鍒楄〃
+	 * @return 鏄剧ず瀵硅薄
+	 */
+	@Override
+	public List<CodeClstempattrVO> codeClassifyTemplateAttrDO2VOs(Collection<CodeClstempattrEntity>  codeClassifyTemplateAttrDOs){
+		List<CodeClstempattrVO> voList = new ArrayList<CodeClstempattrVO>();
+		if(!CollectionUtils.isEmpty(codeClassifyTemplateAttrDOs)){
+			for(CodeClstempattrEntity s: codeClassifyTemplateAttrDOs){
+				CodeClstempattrVO vo =  codeClassifyTemplateAttrDO2VO(s);
+				if(vo != null){
+					voList.add(vo);
+				}
+			}
+		}
+		return voList;
+	}
+
+	/**
+	 * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+	 * @param  codeClassifyTemplateAttrDO 鏁版嵁瀵硅薄
+	 * @return 鏄剧ず瀵硅薄
+	 */
+	@Override
+	public  CodeClstempattrVO codeClassifyTemplateAttrDO2VO(CodeClstempattrEntity codeClassifyTemplateAttrDO){
+		CodeClstempattrVO vo = new CodeClstempattrVO();
+		if(codeClassifyTemplateAttrDO != null){
+			BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyTemplateAttrDO,vo);
+			//濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
+			vo.setAttributeDataTypeText(VciFieldTypeEnum.getTextByValue(vo.getAttributedatatype()));
+		}
+		return vo;
+	}
+}
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 6cb26c3..632c040 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
@@ -16,13 +16,40 @@
  */
 package com.vci.ubcs.code.service.impl;
 
+import com.alibaba.nacos.api.utils.StringUtils;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.code.bo.TreeWrapperOptions;
+import com.vci.ubcs.code.dto.CodeClstemplateDTO;
+import com.vci.ubcs.code.entity.CodeClstempattrEntity;
 import com.vci.ubcs.code.entity.CodeClstemplateEntity;
+import com.vci.ubcs.code.enumpack.CodeClassifyTemplateLC;
+import com.vci.ubcs.code.enumpack.FrameworkDataLCStatus;
+import com.vci.ubcs.code.mapper.CodeClstempattrMapper;
 import com.vci.ubcs.code.mapper.CodeClstemplateMapper;
 import com.vci.ubcs.code.service.ICodeClstemplateService;
+import com.vci.ubcs.code.vo.CodeClstempattrVO;
 import com.vci.ubcs.code.vo.CodeClstemplateVO;
+import com.vci.ubcs.code.vo.pagemodel.TreeQueryObject;
+import com.vci.ubcs.com.vci.starter.exception.VciBaseException;
+import com.vci.ubcs.com.vci.starter.revision.service.RevisionModelUtil;
+import com.vci.ubcs.com.vci.starter.web.pagemodel.Tree;
+import com.vci.ubcs.com.vci.starter.web.util.BeanUtilForVCI;
+import com.vci.ubcs.com.vci.starter.web.util.VciBaseUtil;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.tool.api.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+import static com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_RELEASED;
+import static com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant.LC_STATUS;
+import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.*;
+import static com.vci.ubcs.code.service.impl.CodeClassifyServiceImpl.PARENT_FIELD_NAME;
 
 /**
  * 缂栫爜搴撳畾涔�-妯℃澘绠$悊 鏈嶅姟瀹炵幇绫�
@@ -33,8 +60,518 @@
 @Service
 public class CodeClstemplateServiceImpl extends ServiceImpl<CodeClstemplateMapper, CodeClstemplateEntity> implements ICodeClstemplateService {
 
+	/**
+	 * 妯℃澘灞炴�х殑鏈嶅姟
+	 */
+	@Lazy
+	@Autowired(required = false)
+	CodeClstempattrServiceImpl codeClstempattrService;
+
+	/**
+	 * 瀵硅薄鐨勬搷浣�
+	 */
+	@Autowired(required = false)
+	private RevisionModelUtil revisionModelUtil;
+
+	@Autowired(required = false)
+	private CodeClstempattrMapper codeClstempattrMapper;
+	@Autowired(required = false)
+	private CodeTempphaseServiceImpl codeTempphaseServiceImpl;
+	@Autowired(required = false)
+	private CodeTempbuttonServiceImpl codeTempbuttonServiceImpl;
+	@Autowired(required = false)
+	private CodeClsflowtempServiceImpl codeClsflowtempServiceImpl;
 	@Override
 	public IPage<CodeClstemplateVO> selectPlCodeClstemplatePage(IPage<CodeClstemplateVO> page, CodeClstemplateVO plCodeClstemplate) {
 		return page.setRecords(baseMapper.selectPlCodeClstemplatePage(page, plCodeClstemplate));
 	}
+
+	/**
+	 * 鏌ヨ鍒嗙被妯℃澘瀵硅薄 鏍�
+	 * @param treeQueryObject 鏍戞煡璇㈠璞�
+	 * @return 鍒嗙被妯℃澘瀵硅薄 鏄剧ず鏍�
+	 */
+	@Override
+	public List<Tree> treeCodeClassifyTemplate(TreeQueryObject treeQueryObject) {
+		List<CodeClstemplateEntity> doList =selectCodeClassifyTemplateDOByTree(treeQueryObject);
+
+		List<CodeClstemplateVO> voList = codeClassifyTemplateDO2VOs(doList);
+		TreeWrapperOptions treeWrapperOptions = new TreeWrapperOptions(PARENT_FIELD_NAME);
+		treeWrapperOptions.copyFromTreeQuery(treeQueryObject);
+		return revisionModelUtil.doList2Trees(voList,treeWrapperOptions,(CodeClstemplateVO s) ->{
+			//鍙互鍦ㄨ繖閲屽鐞嗘爲鑺傜偣鐨勬樉绀�
+			return s.getId() + " " + s.getName() + (FrameworkDataLCStatus.DISABLED.getValue().equalsIgnoreCase(s
+				.getLcStatus()) ? (" 銆愬仠鐢ㄣ�� ") : "");
+		});
+	}
+
+	/**
+	 * 鏍规嵁鏍戝舰鏌ヨ瀵硅薄鏉ユ煡璇㈡暟鎹璞�
+	 *
+	 * @param treeQueryObject 鏍戝舰鏌ヨ瀵硅薄
+	 * @return 鏌ヨ缁撴灉,鏁版嵁瀵硅薄
+	 */
+	@Override
+	public List<CodeClstemplateEntity> selectCodeClassifyTemplateDOByTree(TreeQueryObject treeQueryObject) {
+//		VciQueryWrapperForDO queryWrapperForDO = new VciQueryWrapperForDO(null,CodeClassifyTemplateDO.class);
+//		VciParentQueryOption parentQueryOption = new VciParentQueryOption();
+//		parentQueryOption.setParentFieldName(PARENT_FIELD_NAME);
+//		queryWrapperForDO.parentQueryChild(treeQueryObject,parentQueryOption);
+		CodeClstemplateEntity codeClstemplateEntity = new CodeClstemplateEntity();
+		return baseMapper.selectList(Condition.getQueryWrapper(codeClstemplateEntity));
+//		return codeClassifyTemplateMapper.selectByWrapper(queryWrapperForDO);
+	}
+
+	/**
+	 * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+	 * @param codeClassifyTemplateDOs 鏁版嵁瀵硅薄鍒楄〃
+	 * @return 鏄剧ず瀵硅薄
+	 */
+	@Override
+	public List<CodeClstemplateVO> codeClassifyTemplateDO2VOs(Collection<CodeClstemplateEntity> codeClassifyTemplateDOs) {
+		return codeClassifyTemplateDO2VOs(codeClassifyTemplateDOs,false);
+	}
+
+	/**
+	 * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+	 * @param codeClassifyTemplateDOs 鏁版嵁瀵硅薄鍒楄〃
+	 * @param hasAttr 鏄惁鍖呭惈灞炴��
+	 * @return 鏄剧ず瀵硅薄
+	 */
+	@Override
+	public List<CodeClstemplateVO> codeClassifyTemplateDO2VOs(Collection<CodeClstemplateEntity>  codeClassifyTemplateDOs,boolean hasAttr) {
+		List<CodeClstemplateVO> voList = new ArrayList<CodeClstemplateVO>();
+		if(!CollectionUtils.isEmpty(codeClassifyTemplateDOs)){
+			for(CodeClstemplateEntity s: codeClassifyTemplateDOs){
+				CodeClstemplateVO vo =  codeClassifyTemplateDO2VO(s);
+				if(vo != null){
+					voList.add(vo);
+				}
+			}
+		}
+		if(hasAttr){
+			//涓�涓垎绫婚噷闈㈡�讳笉鑳借秴杩�1000涓敓鏁堢殑鐗堟湰鍚э紒锛侊紒
+			VciBaseUtil.switchCollectionForOracleIn(voList.stream().map(CodeClstemplateVO::getOid).collect(Collectors.toList())).forEach(tempOids->{
+				List<CodeClstempattrVO> attrVOList = codeClstempattrService.listCodeClassifyTemplateAttrByTemplateOids(tempOids);
+
+				if(!CollectionUtils.isEmpty(attrVOList)){
+					Map<String, List<CodeClstempattrVO>> attrVOMap = attrVOList.stream().collect(Collectors.groupingBy(s -> s.getClassifytemplateoid()));
+
+					voList.stream().forEach(templateVO->{
+						if(attrVOMap.containsKey(templateVO.getOid())){
+							templateVO.setAttributes(attrVOMap.get(templateVO.getOid()));
+						}
+					});
+				}
+			});
+
+		}
+		return voList;
+	}
+	/**
+	 * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+	 * @param  codeClassifyTemplateDO 鏁版嵁瀵硅薄
+	 * @return 鏄剧ず瀵硅薄
+	 */
+	@Override
+	public  CodeClstemplateVO codeClassifyTemplateDO2VO(CodeClstemplateEntity codeClassifyTemplateDO) {
+		CodeClstemplateVO vo = new CodeClstemplateVO();
+		if(codeClassifyTemplateDO != null){
+			BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyTemplateDO,vo);
+			//濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
+			vo.setLcStatusText(CodeClassifyTemplateLC.getTextByValue(vo.getLcStatus()));
+
+		}
+		return vo;
+	}
+
+	/**
+	 * 妫�鏌� 鍒嗙被妯℃澘瀵硅薄鏄惁鍒犻櫎
+	 * @param codeClstemplateDTO 鍒嗙被妯℃澘瀵硅薄鏁版嵁浼犺緭瀵硅薄锛屽繀椤昏鏈塷id鍜宼s灞炴��
+	 * @return 鎵ц缁撴灉 success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+	 */
+	@Override
+	public R checkIsCanDelete(CodeClstemplateDTO codeClstemplateDTO) {
+		VciBaseUtil.alertNotNull(codeClstemplateDTO,"鏁版嵁浼犺緭瀵硅薄",codeClstemplateDTO.getOid(),"涓婚敭");
+		CodeClstemplateEntity codeClstemplateEntity = baseMapper.selectById(codeClstemplateDTO.getOid());
+		return checkIsCanDeleteForDO(codeClstemplateDTO,codeClstemplateEntity);
+	}
+
+	/**
+	 * 鏍¢獙鏄惁鍙互鍒犻櫎锛屽鏋滃瓨鍦ㄤ笅绾э紝骞朵笖涓嬬骇鏈夋暟鎹紩鐢ㄥ垯涓嶈兘鍒犻櫎
+	 * @param codeClstemplateDTO 鏁版嵁浼犺緭瀵硅薄
+	 * @param codeClstemplateEntity 鏁版嵁搴撲腑鐨勬暟鎹璞�
+	 * @return success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+	 */
+	private R checkIsCanDeleteForDO(CodeClstemplateDTO codeClstemplateDTO, CodeClstemplateEntity codeClstemplateEntity) {
+		CodeClstemplateEntity codeClassifyTemplateDOCopyFromDTO = new CodeClstemplateEntity();
+		BeanUtilForVCI.copyPropertiesIgnoreCase(codeClstemplateDTO,codeClassifyTemplateDOCopyFromDTO);
+
+		//妫�鏌s
+		Map<String,Object> condition = new HashMap<>(2);
+		condition.put("oid",codeClstemplateDTO.getOid());
+		condition.put("ts",codeClstemplateDTO.getTs());
+		CodeClstemplateEntity detail = baseMapper
+			.selectOne(Condition.getQueryWrapper(condition,CodeClstemplateEntity.class));
+		if(detail == null){//涓嶆槸鏈�鏂扮殑涓嶈鏀�
+			return R.fail("褰撳墠鏁版嵁涓嶆槸鏈�鏂帮紝璇峰埛鏂板悗鍐嶄慨鏀癸紒");
+		}
+		//鏍¢獙涓嬬骇鏄惁鏈夊紩鐢�
+		if(checkChildIsLinked(codeClstemplateEntity.getOid())){
+			return R.fail(DATA_CASCADE_LINKED_NOT_DELETE);
+		}
+		return R.status(checkHasChild(codeClstemplateEntity.getOid()));
+	}
+
+	/**
+	 * 妫�鏌ユ槸鍚︽湁涓嬬骇鏄惁鍏宠仈浜嗘暟鎹�
+	 *
+	 * @param oid 涓婚敭
+	 * @return true 琛ㄧず鏈夊紩鐢紝false琛ㄧず娌℃湁寮曠敤
+	 */
+	@Override
+	public boolean checkChildIsLinked(String oid) {
+		VciBaseUtil.alertNotNull(oid,"涓婚敭");
+		List<String> childOids = baseMapper.selectAllLevelChildOid(oid.trim());
+		if(!CollectionUtils.isEmpty(childOids)){
+			for(String childOid: childOids){
+				if(!checkIsLinked(childOid)){
+					return false;
+				}
+			}
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * 鏍¢獙鏄惁琚紩鐢�
+	 * @param oid 涓婚敭
+	 */
+	private boolean checkIsLinked(String oid){
+		//TODO 娣诲姞闇�瑕佹牎楠屽紩鐢ㄧ殑鍦版柟
+		return false;
+	}
+
+	/**
+	 * 鏍¢獙鏄惁鏈変笅绾ц妭鐐癸紝涓嶆牎楠屾槸鍚﹀叧鑱斾簡鏁版嵁
+	 *
+	 * @param oid 涓婚敭
+	 * @return true琛ㄧず鏈変笅绾э紝false琛ㄧず娌℃湁涓嬬骇
+	 */
+	@Override
+	public boolean checkHasChild(String oid) {
+		VciBaseUtil.alertNotNull(oid,"涓婚敭");
+		return baseMapper.countAllLevelChildOid(oid.trim()) > 0;
+	}
+
+
+	/**
+	 * 鍒犻櫎鍒嗙被妯℃澘瀵硅薄
+	 * @param codeClstemplateDTO 鍒嗙被妯℃澘瀵硅薄鏁版嵁浼犺緭瀵硅薄锛宱id鍜宼s闇�瑕佷紶杈�
+	 * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+	 */
+	@Override
+	public R deleteCodeClassifyTemplate(CodeClstemplateDTO codeClstemplateDTO) {
+		checkIsCanDelete(codeClstemplateDTO);
+		VciBaseUtil.alertNotNull(codeClstemplateDTO,"鍒嗙被妯℃澘瀵硅薄鏁版嵁瀵硅薄",codeClstemplateDTO.getOid(),"鍒嗙被妯℃澘瀵硅薄鐨勪富閿�");
+
+		CodeClstemplateEntity codeClassifyTemplateDO = baseMapper.selectById(codeClstemplateDTO.getOid());
+
+		//鍙湁缂栬緫涓墠鑳藉垹
+		if(!CodeClassifyTemplateLC.EDITING.getValue().equals(codeClassifyTemplateDO.getLcStatus())){
+			return R.fail("鍙湁缂栬緫涓殑锛屾ā鏉挎墠鑳藉垹闄わ紒");
+		}
+		R baseResult = checkIsCanDeleteForDO(codeClstemplateDTO,codeClassifyTemplateDO);
+
+		//妯℃澘oid
+		String templateOid = codeClstemplateDTO.getOid();
+
+		int updateCount = 0;
+
+//		WebUtil.setPersistence(false);//涓嶆墽琛屼繚瀛�
+//		BatchCBO batchCBO = new BatchCBO();
+
+		if(baseResult.isSuccess()) {
+			//鎵句笅绾х殑锛岃繖涓槸鍙互鍒犻櫎鐨勬椂鍊�
+			List<String> childrenOids = baseMapper.selectAllLevelChildOid(codeClassifyTemplateDO.getOid().trim());
+			if (!CollectionUtils.isEmpty(childrenOids)) {
+				Collection<Collection<String>> childrenCollections = VciBaseUtil.switchCollectionForOracleIn(childrenOids);
+				for (Collection<String> s : childrenCollections) {
+					updateCount += baseMapper.deleteBatchIds(s);
+
+//					batchCBO.copyFromOther(batchCBOi);
+				}
+			}
+		}else{
+			return baseResult;
+		}
+		//鎵ц鍒犻櫎鎿嶄綔
+
+		updateCount += baseMapper.deleteById(codeClassifyTemplateDO.getOid());
+//		batchCBO.copyFromOther(batchCBO_delete);
+
+		//鍒犻櫎妯℃澘灞炴��
+//		VciQueryWrapperForDO templateQueryWrapper = new VciQueryWrapperForDO(CodeClassifyTemplateAttrDO.class);
+//		templateQueryWrapper.addQueryMap("classifyTemplateOid",templateOid);
+		List<CodeClstempattrEntity> codeClstempattrEntityList = codeClstempattrMapper.selectRefByOid(templateOid);
+
+		if(!CollectionUtils.isEmpty(codeClstempattrEntityList)) {
+			List<String> templateAttrOids = new ArrayList<String>();
+			for (CodeClstempattrEntity codeClstempattrEntity:codeClstempattrEntityList){
+				templateAttrOids.add(codeClstempattrEntity.getOid());
+			}
+
+			updateCount += codeClstempattrMapper.deleteBatchIds(templateAttrOids);
+//			batchCBO.copyFromOther(batchCBO_templateAttr_delete);
+		}
+
+		//璋冪敤妯℃澘闃舵鏂规硶
+		updateCount += codeTempphaseServiceImpl.codeTemplateDeleteTrigger(templateOid);
+
+		//璋冪敤妯℃澘鎸夐挳鏂规硶
+		updateCount += codeTempbuttonServiceImpl.codeTemplateDeleteTrigger(templateOid);
+
+		//璋冪敤妯℃澘娴佺▼鏂规硶
+		updateCount += codeClsflowtempServiceImpl.codeTemplateDeleteTrigger(templateOid);
+
+		return updateCount > 0?R.success(DELETE_SUCCESS):R.fail(DELETE_FAIL);
+	}
+
+
+	/**
+	 * 涓婚敭鑾峰彇鍒嗙被妯℃澘瀵硅薄
+	 * @param oid 涓婚敭
+	 * @return 鍒嗙被妯℃澘瀵硅薄鏄剧ず瀵硅薄
+	 */
+	@Override
+	public  CodeClstemplateVO getObjectByOid(String oid) {
+		return codeClassifyTemplateDO2VO(selectByOid(oid));
+	}
+
+	@Override
+	public Collection<CodeClstemplateVO> listCodeClassifyTemplateByOids(List<String> oidCollections) {
+		VciBaseUtil.alertNotNull(oidCollections,"鏁版嵁瀵硅薄涓婚敭闆嗗悎");
+		List<CodeClstemplateEntity> codeClassifyTemplateDOList = listCodeClassifyTemplateDOByOidCollections(oidCollections);
+		return codeClassifyTemplateDO2VOs(codeClassifyTemplateDOList);
+	}
+
+	/**
+	 * 鍙傜収鏍� 鍒嗙被妯℃澘瀵硅薄
+	 * @param treeQueryObject 鏍戝舰鏌ヨ瀵硅薄
+	 * @return 鍒嗙被妯℃澘瀵硅薄鏄剧ず鏍�
+	 * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+	 */
+	@Override
+	public List<Tree> referTree(TreeQueryObject treeQueryObject) {
+		if(treeQueryObject == null){
+			treeQueryObject = new TreeQueryObject();
+		}
+		if(treeQueryObject.getConditionMap() == null){
+			treeQueryObject.setConditionMap(new HashMap<>());
+		}
+		if(treeQueryObject.getConditionMap().containsKey(LC_STATUS)) {
+			treeQueryObject.getConditionMap().remove(LC_STATUS);
+		}
+		treeQueryObject.getConditionMap().put(LC_STATUS,CodeClassifyTemplateLC.RELEASED.getValue());
+		return treeCodeClassifyTemplate(treeQueryObject);
+	}
+
+	/**
+	 * 浣跨敤涓婚敭闆嗗悎鏌ヨ鏁版嵁瀵硅薄
+	 * @param oidCollections 涓婚敭鐨勯泦鍚�
+	 * @return 鏁版嵁瀵硅薄鍒楄〃
+	 */
+	private List<CodeClstemplateEntity> listCodeClassifyTemplateDOByOidCollections(Collection<String> oidCollections){
+		List<CodeClstemplateEntity> codeClassifyTemplateDOList = new ArrayList<CodeClstemplateEntity>();
+		if(!CollectionUtils.isEmpty(oidCollections)){
+			Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
+			for(Collection<String> oids: oidCollectionsList){
+				List<CodeClstemplateEntity> tempDOList =  baseMapper.selectBatchIds(oids); //codeClassifyTemplateMapper.selectByPrimaryKeyCollection(oids);
+				if(!CollectionUtils.isEmpty(tempDOList)){
+					codeClassifyTemplateDOList.addAll(tempDOList);
+				}
+			}
+		}
+		return  codeClassifyTemplateDOList;
+	}
+
+	/**
+	 * 涓婚敭鏌ヨ鏁版嵁瀵硅薄
+	 * @param oid 涓婚敭
+	 * @return  鏁版嵁瀵硅薄
+	 */
+	private CodeClstemplateEntity  selectByOid(String oid) {
+		VciBaseUtil.alertNotNull(oid,"涓婚敭");
+		CodeClstemplateEntity codeClstemplateEntity = baseMapper.selectById(oid.trim());
+		if(codeClstemplateEntity == null || StringUtils.isBlank(codeClstemplateEntity.getOid())){
+			throw new VciBaseException(DATA_OID_NOT_EXIST);
+		}
+		return codeClstemplateEntity;
+	}
+
+	/**
+	 * 鍚敤銆佸仠鐢�
+	 * @param oid
+	 * @param lcStatus
+	 * @return
+	 */
+	@Override
+	public R updateLcStatus( String oid, String lcStatus){
+		CodeClstemplateEntity codeClassifyTemplateDO = baseMapper.selectById(oid);
+		//鍋滅敤鐨勬椂鍊欙紝楠岃瘉妯℃澘鏄惁涓哄凡鍙戝竷
+		if(CodeClassifyTemplateLC.DISABLED.getValue().equals(lcStatus)){
+//			CodeClstemplateEntity codeClassifyTemplateDO = baseMapper.selectById(oid);
+			if(!CodeClassifyTemplateLC.RELEASED.getValue().equals(codeClassifyTemplateDO.getLcStatus())){
+				return R.fail("妯℃澘鏈惎鐢紝涓嶈兘鍋滅敤锛�");
+			}
+		}
+		//鍚敤銆佸仠鐢�
+		codeClassifyTemplateDO.setLcStatus(lcStatus);
+		int u = baseMapper.updateById(codeClassifyTemplateDO);
+//		codeClassifyTemplateMapper.updateLcStatus(oid,lcStatus);
+
+		return u==0?R.fail("淇敼澶辫触锛�"):R.success("淇敼鎴愬姛");
+	}
+
+	/**
+	 * 鍗囩増
+	 * @param codeClassifyDTO
+	 */
+	@Override
+	public R Upgrade(CodeClstemplateDTO codeClassifyDTO) {
+
+		//鏃х殑妯℃澘oid
+		String templateOldOid = codeClassifyDTO.getOid();
+		//鍙湁宸插彂甯冪殑鎵嶈兘鍗囩増
+		CodeClstemplateEntity codeClassifyTemplateDOOld =  baseMapper.selectById(templateOldOid);
+		if(!FRAMEWORK_RELEASE_RELEASED.equals(codeClassifyTemplateDOOld.getLcStatus())){
+			return R.fail("璇ユā鏉挎湭鍙戝竷锛屼笉鑳藉崌鐗堬紒");
+		}
+
+		//闇�瑕佹柊澧炵殑鍗囩骇妯℃澘
+//		ClientBusinessObject clientBusinessObject_template = boService.selectCBOByOid(codeClassifyDTO.getOid(), "codeclstemplate");
+		CodeClstemplateEntity codeCls_template = baseMapper.selectById(templateOldOid);
+		CodeClstemplateEntity codeCls_template_insert = null;
+//			ClientBusinessObject clientBusinessObject_template_insert = null;
+//		try {
+////			clientBusinessObject_template_insert = clientBusinessObjectOperation.reviseBusinessObject(clientBusinessObject_template, "");
+////			codeCls_template_insert.setOid((new ObjectUtility()).getNewObjectID36());
+////			toBo.setRevisionid((new ObjectUtility()).getNewObjectID36());
+//			codeCls_template_insert.setNameOid(codeCls_template.getNameOid());
+//			codeCls_template_insert.setBtmname(codeCls_template.getBtmname());
+////			codeCls_template_insert.setIsLast(1);
+////			codeCls_template_insert.setIsFirstr(0);
+////			codeCls_template_insert.setIsFirstv(1);
+////			codeCls_template_insert.setIsLastV(1);
+//			codeCls_template_insert.setCreator(AuthUtil.getUser().getUserName());
+//			codeCls_template_insert.setCreateTime(new Date());
+//			codeCls_template_insert.setLastModifier(AuthUtil.getUser().getUserName());
+//			codeCls_template_insert.setLastModifyTime(new Date());
+//			codeCls_template_insert.setRevisionRule(codeCls_template.getRevisionRule());
+//			codeCls_template_insert.setVersionRule(codeCls_template.getVersionRule());
+//			RevisionValueObject rvObj = this.getNextRevision(fromBo.getBtmName(), fromBo.getNameoid(), item.revRuleName, item.revInput, revisionVal);
+//			codeCls_template_insert.setRevisionSeq(rvObj.getRevisionSeq());
+//			codeCls_template_insert.setRevisionValue(rvObj.getRevisionVal());
+//			VersionValueObject versionObj = this.getVersionValue(item.verRuleName);
+//			codeCls_template_insert.setVersionSeq(versionObj.getVersionSeq());
+//			codeCls_template_insert.setVersionValue(versionObj.getVersionVal());
+//			codeCls_template_insert.setLctId(codeCls_template.getLctId());
+//			codeCls_template_insert.setLcStatus(this.getLcFirstStatus(item.lifeCycle));
+//			codeCls_template_insert.setId(codeCls_template.getId());
+//			codeCls_template_insert.setName(codeCls_template.getName());
+//			codeCls_template_insert.setDescription(codeCls_template.getDescription());
+//			codeCls_template_insert.setOwner(AuthUtil.getUser().getUserName());
+////			codeCls_template_insert.setCheckinBy(userName);
+//			codeCls_template_insert.setCopyFromVersion(codeCls_template.getOid());
+//		}catch (VCIError e){
+//			e.printStackTrace();
+//			logger.error("===============>鍒嗙被妯℃澘-鍗囩増澶嶅埗鍑洪敊oid锛� "+templateOldOid+",mes"+e.error_message);
+//			return BaseResult.error("鍗囩増鍑洪敊");
+//		}
+//
+//
+//		CodeClassifyTemplateDO codeClassifyTemplateDO = new CodeClassifyTemplateDO();
+//		BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyDTO,codeClassifyTemplateDO);
+//		WebUtil.copyValueToObjectFromCbos(clientBusinessObject_template_insert,codeClassifyTemplateDO);
+//		//modify by weidy@2022-2-27
+//		//鍗囩増鍚庝笉鑳戒娇鐢╥nsert鏂规硶锛屽洜涓洪偅涓案杩滄槸鏂板涓�鏉℃暟鎹紝
+//		//涓婃柟鍏堜粠dto杞粰do锛岀劧鍚庢妸鍗囩増鐨勫垵濮嬪寲鐨勫睘鎬ф嫹璐濈粰do锛屾渶鍚庡啀浠巇o鎷疯礉鍒癱bo涓�
+//		WebUtil.copyValueToCboFromObj(clientBusinessObject_template_insert,codeClassifyTemplateDO);
+//		//鍗囩増杩囧悗鐨勬ā鏉縪id
+//		String templateNewOid = codeClassifyTemplateDO.getOid();
+//
+//		//闇�瑕佸鍒剁殑妯℃澘灞炴��
+//		//鏌ヨ鑰佹ā鏉夸笅杈圭殑鎵�鏈夊睘鎬э紝璧嬪�兼柊妯℃澘oid
+//		VciQueryWrapperForDO codeClassifyTemplateAttrQuery = new VciQueryWrapperForDO(CodeClassifyTemplateAttrDO.class);
+//		codeClassifyTemplateAttrQuery.addQueryMap("classifyTemplateOid",templateOldOid);
+//		List<CodeClassifyTemplateAttrDO> codeClassifyTemplateAttrDOList = codeClassifyTemplateAttrDaoI.selectByWrapper(codeClassifyTemplateAttrQuery);
+//		for (CodeClassifyTemplateAttrDO codeClassifyTemplateAttrDO :codeClassifyTemplateAttrDOList){
+//			String attrOid = VciBaseUtil.getPk();
+//			codeClassifyTemplateAttrDO.setOid(attrOid);
+//			codeClassifyTemplateAttrDO.setClassifyTemplateOid(templateNewOid);
+//		}
+//
+//		//澶嶅埗妯℃澘娴佺▼
+//		List<CodeClassifyProcessTempDO>  codeClassifyProcessTempDOList = copyTemplateProcess(templateOldOid,templateNewOid);
+//
+//		//澶嶅埗妯℃澘闃舵锛岄樁娈靛睘鎬�
+//		Map phase_attrMap = copyTemplatePhase_attr(templateOldOid,templateNewOid);
+//
+//		List<CodeTemplatePhaseDO> codeClassifyPhaseDOList = (ArrayList<CodeTemplatePhaseDO>)phase_attrMap.get("phase");//妯℃澘闃舵
+//		List<CodePhaseAttrDO> codePhaseAttrDOList = (ArrayList<CodePhaseAttrDO>)phase_attrMap.get("phaseAttr");//闃舵灞炴��
+//
+//		//澶嶅埗妯℃澘鎸夐挳
+//		List<CodeClassifyTemplateButtonDO> codeClassifyTemplateButtonDOList = copyTemplateButton(templateOldOid,templateNewOid);
+//
+//		//涓�璧蜂繚瀛樻暟鎹�
+//		WebUtil.setPersistence(false);//涓嶆墽琛屼繚瀛�
+//		//淇濆瓨妯℃澘
+//		BatchCBO batchCBOTemplate = new BatchCBO();
+//		//batchCBO淇濆瓨鐨勬椂鍊欐病鏈夎兘澶熻嚜鍔╱pdate婧愭暟鎹殑isLastR
+//		//batchCBOTemplate.getCreateCbos().add(clientBusinessObject_template_insert);
+//		//浣跨敤saveRevisionBuisnessObject鍙互瑙e喅杩欎釜闂锛岃繖閲屽厛鏆傛椂鎵ц涓ゆ淇濆瓨
+//		try {
+//			clientBusinessObjectOperation.saveRevisionBuinessObject(clientBusinessObject_template_insert);
+//		} catch (VCIError vciError) {
+//			throw new VciBaseException("鍗囩増淇濆瓨鍑洪敊浜�",new String[0],vciError);
+//		}
+//		// end --modify by lihang @20220408
+//		//codeClassifyTemplateMapper.insert(codeClassifyTemplateDO);
+//		//淇濆瓨妯℃澘灞炴��
+//		if(!CollectionUtils.isEmpty(codeClassifyTemplateAttrDOList)){
+//			BatchCBO batchCBOTemplateAttr = codeClassifyTemplateAttrDaoI.batchInsert(codeClassifyTemplateAttrDOList);
+//			batchCBOTemplate.copyFromOther(batchCBOTemplateAttr);
+//		}
+//
+//		//淇濆瓨妯℃澘娴佺▼
+//		if(!CollectionUtils.isEmpty(codeClassifyProcessTempDOList)) {
+//			BatchCBO batchCBOTemplateProcessAttr = codeClassifyProcessTempDaoI.batchInsert(codeClassifyProcessTempDOList);
+//			batchCBOTemplate.copyFromOther(batchCBOTemplateProcessAttr);
+//		}
+//		//妯℃澘闃舵
+//		if(!CollectionUtils.isEmpty(codeClassifyPhaseDOList)) {
+//			BatchCBO batchCBOTemplatePhaseAttr = codeTemplatePhaseDaoI.batchInsert(codeClassifyPhaseDOList);
+//			batchCBOTemplate.copyFromOther(batchCBOTemplatePhaseAttr);
+//		}
+//
+//		//妯℃澘闃舵灞炴��
+//		if(!CollectionUtils.isEmpty(codePhaseAttrDOList)) {
+//			BatchCBO batchCBOTemplatePhaseAttrAttr = codePhaseAttrDaoI.batchInsert(codePhaseAttrDOList);
+//			batchCBOTemplate.copyFromOther(batchCBOTemplatePhaseAttrAttr);
+//		}
+//
+//		//妯℃澘鎸夐挳
+//		if(!CollectionUtils.isEmpty(codeClassifyTemplateButtonDOList)) {
+//			BatchCBO batchCBOTemplateButtonAttr = codeClassifyTemplateButtonDaoI.batchInsert(codeClassifyTemplateButtonDOList);
+//			batchCBOTemplate.copyFromOther(batchCBOTemplateButtonAttr);
+//		}
+//
+//		WebUtil.setPersistence(true);//鎵ц淇濆瓨
+//
+//		boService.persistenceBatch(batchCBOTemplate);//涓�璧锋墽琛屼繚瀛�
+//
+//		return BaseResult.success("鍗囩増鎴愬姛锛�");
+		return R.success("鍗囩増鎴愬姛锛�");
+	}
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodePhaseattrServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodePhaseattrServiceImpl.java
new file mode 100644
index 0000000..742dc51
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodePhaseattrServiceImpl.java
@@ -0,0 +1,42 @@
+/*
+ *      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.code.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.code.entity.CodePhaseattrEntity;
+import com.vci.ubcs.code.mapper.CodePhaseattrMapper;
+import com.vci.ubcs.code.service.ICodePhaseattrService;
+import com.vci.ubcs.code.vo.CodePhaseattrVO;
+import org.springframework.stereotype.Service;
+
+/**
+ * 缂栫爜搴撳畾涔�-妯℃澘闃舵-灞炴�� 鏈嶅姟瀹炵幇绫�
+ *
+ * @author yuxc
+ * @since 2023-04-20
+ */
+@Service
+public class CodePhaseattrServiceImpl extends ServiceImpl<CodePhaseattrMapper, CodePhaseattrEntity> implements ICodePhaseattrService {
+
+	@Override
+	public IPage<CodePhaseattrVO> selectCodePhaseattrPage(IPage<CodePhaseattrVO> page, CodePhaseattrVO CodePhaseattr) {
+		return page.setRecords(baseMapper.selectCodePhaseattrPage(page, CodePhaseattr));
+	}
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeTempbuttonServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeTempbuttonServiceImpl.java
new file mode 100644
index 0000000..c8577ed
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeTempbuttonServiceImpl.java
@@ -0,0 +1,69 @@
+/*
+ *      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.code.service.impl;
+
+import com.alibaba.nacos.common.utils.StringUtils;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.code.entity.CodeTempbuttonEntity;
+import com.vci.ubcs.code.mapper.CodeTempbuttonMapper;
+import com.vci.ubcs.code.service.ICodeTempbuttonService;
+import com.vci.ubcs.code.vo.CodeTempbuttonVO;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 缂栫爜搴撳畾涔�-妯℃澘鎸夐挳鎵╁睍 鏈嶅姟瀹炵幇绫�
+ *
+ * @author yuxc
+ * @since 2023-04-20
+ */
+@Service
+public class CodeTempbuttonServiceImpl extends ServiceImpl<CodeTempbuttonMapper, CodeTempbuttonEntity> implements ICodeTempbuttonService {
+
+	@Override
+	public IPage<CodeTempbuttonVO> selectCodeTempbuttonPage(IPage<CodeTempbuttonVO> page, CodeTempbuttonVO CodeTempbutton) {
+		return page.setRecords(baseMapper.selectCodeTempbuttonPage(page, CodeTempbutton));
+	}
+
+	/**
+	 * 妯℃澘鍒犻櫎鐨勬椂鍊欒Е鍙�
+	 *
+	 * @param classifyTemplateOid 妯℃澘鐨勪富閿�
+	 * @return 鍙楀奖鍝嶇殑鏁版嵁琛�
+	 */
+	@Override
+	public int codeTemplateDeleteTrigger(String classifyTemplateOid) {
+		int updateCount = 0;
+		if(StringUtils.isNotBlank(classifyTemplateOid)){
+			Map<String,Object> conditionMap = new HashMap<>();
+			conditionMap.put("classifyTemplateOid",classifyTemplateOid);
+			List<CodeTempbuttonEntity> codeTempbuttonEntities = baseMapper.selectByMap(conditionMap);
+			if(!CollectionUtils.isEmpty(codeTempbuttonEntities)){
+				updateCount += baseMapper.deleteBatchIds(codeTempbuttonEntities.stream()
+					.map(CodeTempbuttonEntity::getOid).collect(Collectors.toList()));
+			}
+		}
+		return updateCount;
+	}
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeTempphaseServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeTempphaseServiceImpl.java
new file mode 100644
index 0000000..07bd3f5
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeTempphaseServiceImpl.java
@@ -0,0 +1,78 @@
+/*
+ *      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.code.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.code.entity.CodePhaseattrEntity;
+import com.vci.ubcs.code.entity.CodeTempphaseEntity;
+import com.vci.ubcs.code.mapper.CodePhaseattrMapper;
+import com.vci.ubcs.code.mapper.CodeTempphaseMapper;
+import com.vci.ubcs.code.service.ICodeTempphaseService;
+import com.vci.ubcs.code.vo.CodeTempphaseVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 缂栫爜搴撳畾涔�-妯℃澘闃舵 鏈嶅姟瀹炵幇绫�
+ *
+ * @author yuxc
+ * @since 2023-04-20
+ */
+@Service
+public class CodeTempphaseServiceImpl extends ServiceImpl<CodeTempphaseMapper, CodeTempphaseEntity> implements ICodeTempphaseService {
+
+
+	@Autowired(required = false)
+	private CodePhaseattrMapper codePhaseattrMapper;
+
+	@Override
+	public IPage<CodeTempphaseVO> selectCodeTempphasePage(IPage<CodeTempphaseVO> page, CodeTempphaseVO CodeTempphase) {
+		return page.setRecords(baseMapper.selectCodeTempphasePage(page, CodeTempphase));
+	}
+
+	/**
+	 * 妯℃澘鍒犻櫎鐨勬椂鍊欒Е鍙�
+	 *
+	 * @param templateOid 妯℃澘鐨勪富閿�
+	 * @return 鍙楀奖鍝嶇殑鏁版嵁
+	 */
+	@Override
+	public int codeTemplateDeleteTrigger(String templateOid) {
+		int updateCount = 0;
+		Map<String,Object> condition = new HashMap<>(1);
+		condition.put("classifyTemplateOid",templateOid);
+		List<CodeTempphaseEntity> codeTempphaseEntities = baseMapper.selectByMap(condition);
+		if(!CollectionUtils.isEmpty(codeTempphaseEntities)) {
+			updateCount += baseMapper.deleteBatchIds(codeTempphaseEntities.stream().map(CodeTempphaseEntity::getOid).collect(Collectors.toList()));
+//			batchCBO.copyFromOther(codeTemplatePhaseMapper.batchDeleteByOids(templatePhaseDOS.stream().map(CodeTemplatePhaseDO::getOid).collect(Collectors.toList())));
+//			conditionMap.put("codePhaseOid", QueryOptionConstant.IN + "(select oid from " + getPhaseTable() + " where codeClassifyTemplateOid='" + classifyTemplateOid + "')");
+			List<CodePhaseattrEntity> phaseAttrDOS = codePhaseattrMapper.selectByPhasea(templateOid);
+			if(!CollectionUtils.isEmpty(phaseAttrDOS)){
+				updateCount += codePhaseattrMapper.deleteBatchIds(phaseAttrDOS.stream().map(CodePhaseattrEntity::getOid).collect(Collectors.toList()));
+			}
+		}
+		return updateCount;
+	}
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeClsflowtempWrapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeClsflowtempWrapper.java
new file mode 100644
index 0000000..571b1af
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeClsflowtempWrapper.java
@@ -0,0 +1,50 @@
+/*
+ *      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.code.wrapper;
+
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.utils.BeanUtil;
+import com.vci.ubcs.code.entity.CodeClsflowtempEntity;
+import com.vci.ubcs.code.vo.CodeClsflowtempVO;
+import java.util.Objects;
+
+/**
+ * 缂栫爜搴撳畾涔�-妯℃澘娴佺▼ 鍖呰绫�,杩斿洖瑙嗗浘灞傛墍闇�鐨勫瓧娈�
+ *
+ * @author yuxc
+ * @since 2023-04-20
+ */
+public class CodeClsflowtempWrapper extends BaseEntityWrapper<CodeClsflowtempEntity, CodeClsflowtempVO>  {
+
+	public static CodeClsflowtempWrapper build() {
+		return new CodeClsflowtempWrapper();
+ 	}
+
+	@Override
+	public CodeClsflowtempVO entityVO(CodeClsflowtempEntity CodeClsflowtemp) {
+		CodeClsflowtempVO CodeClsflowtempVO = Objects.requireNonNull(BeanUtil.copy(CodeClsflowtemp, CodeClsflowtempVO.class));
+
+		//User createUser = UserCache.getUser(CodeClsflowtemp.getCreateUser());
+		//User updateUser = UserCache.getUser(CodeClsflowtemp.getUpdateUser());
+		//CodeClsflowtempVO.setCreateUserName(createUser.getName());
+		//CodeClsflowtempVO.setUpdateUserName(updateUser.getName());
+
+		return CodeClsflowtempVO;
+	}
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeClstempattrWrapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeClstempattrWrapper.java
new file mode 100644
index 0000000..fff0d78
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeClstempattrWrapper.java
@@ -0,0 +1,50 @@
+/*
+ *      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.code.wrapper;
+
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.utils.BeanUtil;
+import com.vci.ubcs.code.entity.CodeClstempattrEntity;
+import com.vci.ubcs.code.vo.CodeClstempattrVO;
+import java.util.Objects;
+
+/**
+ * 缂栫爜搴撳畾涔�-妯℃澘灞炴�� 鍖呰绫�,杩斿洖瑙嗗浘灞傛墍闇�鐨勫瓧娈�
+ *
+ * @author yuxc
+ * @since 2023-04-19
+ */
+public class CodeClstempattrWrapper extends BaseEntityWrapper<CodeClstempattrEntity, CodeClstempattrVO>  {
+
+	public static CodeClstempattrWrapper build() {
+		return new CodeClstempattrWrapper();
+ 	}
+
+	@Override
+	public CodeClstempattrVO entityVO(CodeClstempattrEntity CodeClstempattr) {
+		CodeClstempattrVO CodeClstempattrVO = Objects.requireNonNull(BeanUtil.copy(CodeClstempattr, CodeClstempattrVO.class));
+
+		//User createUser = UserCache.getUser(CodeClstempattr.getCreateUser());
+		//User updateUser = UserCache.getUser(CodeClstempattr.getUpdateUser());
+		//CodeClstempattrVO.setCreateUserName(createUser.getName());
+		//CodeClstempattrVO.setUpdateUserName(updateUser.getName());
+
+		return CodeClstempattrVO;
+	}
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodePhaseattrWrapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodePhaseattrWrapper.java
new file mode 100644
index 0000000..bb71c95
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodePhaseattrWrapper.java
@@ -0,0 +1,50 @@
+/*
+ *      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.code.wrapper;
+
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.utils.BeanUtil;
+import com.vci.ubcs.code.entity.CodePhaseattrEntity;
+import com.vci.ubcs.code.vo.CodePhaseattrVO;
+import java.util.Objects;
+
+/**
+ * 缂栫爜搴撳畾涔�-妯℃澘闃舵-灞炴�� 鍖呰绫�,杩斿洖瑙嗗浘灞傛墍闇�鐨勫瓧娈�
+ *
+ * @author yuxc
+ * @since 2023-04-20
+ */
+public class CodePhaseattrWrapper extends BaseEntityWrapper<CodePhaseattrEntity, CodePhaseattrVO>  {
+
+	public static CodePhaseattrWrapper build() {
+		return new CodePhaseattrWrapper();
+ 	}
+
+	@Override
+	public CodePhaseattrVO entityVO(CodePhaseattrEntity CodePhaseattr) {
+		CodePhaseattrVO CodePhaseattrVO = Objects.requireNonNull(BeanUtil.copy(CodePhaseattr, CodePhaseattrVO.class));
+
+		//User createUser = UserCache.getUser(CodePhaseattr.getCreateUser());
+		//User updateUser = UserCache.getUser(CodePhaseattr.getUpdateUser());
+		//CodePhaseattrVO.setCreateUserName(createUser.getName());
+		//CodePhaseattrVO.setUpdateUserName(updateUser.getName());
+
+		return CodePhaseattrVO;
+	}
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeTempbuttonWrapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeTempbuttonWrapper.java
new file mode 100644
index 0000000..6b524eb
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeTempbuttonWrapper.java
@@ -0,0 +1,50 @@
+/*
+ *      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.code.wrapper;
+
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.utils.BeanUtil;
+import com.vci.ubcs.code.entity.CodeTempbuttonEntity;
+import com.vci.ubcs.code.vo.CodeTempbuttonVO;
+import java.util.Objects;
+
+/**
+ * 缂栫爜搴撳畾涔�-妯℃澘鎸夐挳鎵╁睍 鍖呰绫�,杩斿洖瑙嗗浘灞傛墍闇�鐨勫瓧娈�
+ *
+ * @author yuxc
+ * @since 2023-04-20
+ */
+public class CodeTempbuttonWrapper extends BaseEntityWrapper<CodeTempbuttonEntity, CodeTempbuttonVO>  {
+
+	public static CodeTempbuttonWrapper build() {
+		return new CodeTempbuttonWrapper();
+ 	}
+
+	@Override
+	public CodeTempbuttonVO entityVO(CodeTempbuttonEntity CodeTempbutton) {
+		CodeTempbuttonVO CodeTempbuttonVO = Objects.requireNonNull(BeanUtil.copy(CodeTempbutton, CodeTempbuttonVO.class));
+
+		//User createUser = UserCache.getUser(CodeTempbutton.getCreateUser());
+		//User updateUser = UserCache.getUser(CodeTempbutton.getUpdateUser());
+		//CodeTempbuttonVO.setCreateUserName(createUser.getName());
+		//CodeTempbuttonVO.setUpdateUserName(updateUser.getName());
+
+		return CodeTempbuttonVO;
+	}
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeTempphaseWrapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeTempphaseWrapper.java
new file mode 100644
index 0000000..665c33d
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeTempphaseWrapper.java
@@ -0,0 +1,50 @@
+/*
+ *      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.code.wrapper;
+
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.utils.BeanUtil;
+import com.vci.ubcs.code.entity.CodeTempphaseEntity;
+import com.vci.ubcs.code.vo.CodeTempphaseVO;
+import java.util.Objects;
+
+/**
+ * 缂栫爜搴撳畾涔�-妯℃澘闃舵 鍖呰绫�,杩斿洖瑙嗗浘灞傛墍闇�鐨勫瓧娈�
+ *
+ * @author yuxc
+ * @since 2023-04-20
+ */
+public class CodeTempphaseWrapper extends BaseEntityWrapper<CodeTempphaseEntity, CodeTempphaseVO>  {
+
+	public static CodeTempphaseWrapper build() {
+		return new CodeTempphaseWrapper();
+ 	}
+
+	@Override
+	public CodeTempphaseVO entityVO(CodeTempphaseEntity CodeTempphase) {
+		CodeTempphaseVO CodeTempphaseVO = Objects.requireNonNull(BeanUtil.copy(CodeTempphase, CodeTempphaseVO.class));
+
+		//User createUser = UserCache.getUser(CodeTempphase.getCreateUser());
+		//User updateUser = UserCache.getUser(CodeTempphase.getUpdateUser());
+		//CodeTempphaseVO.setCreateUserName(createUser.getName());
+		//CodeTempphaseVO.setUpdateUserName(updateUser.getName());
+
+		return CodeTempphaseVO;
+	}
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeCLassifyMapper.xml b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeCLassifyMapper.xml
index 32e88c9..b77a539 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeCLassifyMapper.xml
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeCLassifyMapper.xml
@@ -87,12 +87,11 @@
                            on codeclassify0.codeKeyAttrRepeatOid = codekeyattrrepeatoid.oid
                  left join pl_code_resemblerule coderesembleruleoid
                            on codeclassify0.codeResembleRuleOid = coderesembleruleoid.oid
-        where
         <where>
             <if test="oid != null and oid != ''">
-                codeclassify0.parentcodeclassifyoid = #{oid}
+                codeclassify0.parentcodeclassifyoid = '${oid}'
             </if>
-            <if test="oid = null or oid = ''">
+            <if test="oid = null">
                 codeclassify0.parentcodeclassifyoid is null
             </if>
         </where>
@@ -132,14 +131,12 @@
                  left join pl_code_resemblerule coderesembleruleoid
                            on codeclassify0.codeResembleRuleOid = coderesembleruleoid.oid
             START WITH
-        <where>
-            <if test="oid != null and oid != ''">
-                codeclassify0.parentCodeClassifyOid = #{oid}
+            <if test="oid != null ">
+                codeclassify0.parentCodeClassifyOid = '${oid}'
             </if>
-            <if test="oid = null or oid = ''">
+            <if test="oid = null ">
                 codeclassify0.parentCodeClassifyOid is null
             </if>
-        </where>
         CONNECT BY PRIOR codeclassify0.OID = codeclassify0.parentCodeClassifyOid
     </select>
 
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeClsflowtempMapper.xml b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeClsflowtempMapper.xml
new file mode 100644
index 0000000..ec46665
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeClsflowtempMapper.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.code.mapper.CodeClsflowtempMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="CodeClsflowtempResultMap" type="com.vci.ubcs.code.entity.CodeClsflowtempEntity">
+        <result column="OID" property="oid"/>
+        <result column="REVISIONOID" property="revisionOid"/>
+        <result column="NAMEOID" property="nameOid"/>
+        <result column="BTMNAME" property="btmname"/>
+        <result column="ISLASTR" property="islastr"/>
+        <result column="FIRSTR" property="firstR"/>
+        <result column="LASTV" property="lastV"/>
+        <result column="FIRSTV" property="firstV"/>
+        <result column="CREATOR" property="creator"/>
+        <result column="CREATETIME" property="createTime"/>
+        <result column="LASTMODIFIER" property="lastModifier"/>
+        <result column="LASTMODIFYTIME" property="lastModifyTime"/>
+        <result column="REVISIONRULE" property="revisionRule"/>
+        <result column="VERSIONRULE" property="versionRule"/>
+        <result column="REVISIONSEQ" property="revisionSeq"/>
+        <result column="REVISIONVALUE" property="revisionValue"/>
+        <result column="VERSIONSEQ" property="versionSeq"/>
+        <result column="VERSIONVALUE" property="versionValue"/>
+        <result column="LCTID" property="lctid"/>
+        <result column="LCSTATUS" property="lcStatus"/>
+        <result column="TS" property="ts"/>
+        <result column="ID" property="id"/>
+        <result column="NAME" property="name"/>
+        <result column="DESCRIPTION" property="description"/>
+        <result column="OWNER" property="owner"/>
+        <result column="COPYFROMVERSION" property="copyFromVersion"/>
+        <result column="CODECLASSIFYOID" property="codeclassifyoid"/>
+        <result column="CLASSIFYTEMPLATEOID" property="classifytemplateoid"/>
+        <result column="CODEPROCESSUSE" property="codeprocessuse"/>
+        <result column="PROCESSVERSION" property="processversion"/>
+        <result column="CODETEMPATTROIDARR" property="codetempattroidarr"/>
+        <result column="CODETEMPATTROIDARRNAME" property="codetempattroidarrname"/>
+    </resultMap>
+
+
+    <select id="selectCodeClsflowtempPage" resultMap="CodeClsflowtempResultMap">
+        select * from PL_CODE_CLSFLOWTEMP where is_deleted = 0
+    </select>
+
+
+</mapper>
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeClstempattrMapper.xml b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeClstempattrMapper.xml
new file mode 100644
index 0000000..38e31b7
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeClstempattrMapper.xml
@@ -0,0 +1,166 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.code.mapper.CodeClstempattrMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="CodeClstempattrResultMap" type="com.vci.ubcs.code.entity.CodeClstempattrEntity">
+        <result column="OID" property="oid"/>
+        <result column="REVISIONOID" property="revisionOid"/>
+        <result column="NAMEOID" property="nameOid"/>
+        <result column="BTMNAME" property="btmname"/>
+        <result column="LASTR" property="lastR"/>
+        <result column="FIRSTR" property="firstR"/>
+        <result column="LASTV" property="lastV"/>
+        <result column="FIRSTV" property="firstV"/>
+        <result column="CREATOR" property="creator"/>
+        <result column="CREATETIME" property="createTime"/>
+        <result column="LASTMODIFIER" property="lastModifier"/>
+        <result column="LASTMODIFYTIME" property="lastModifyTime"/>
+        <result column="REVISIONRULE" property="revisionRule"/>
+        <result column="VERSIONRULE" property="versionRule"/>
+        <result column="REVISIONSEQ" property="revisionSeq"/>
+        <result column="REVISIONVALUE" property="revisionValue"/>
+        <result column="VERSIONSEQ" property="versionSeq"/>
+        <result column="VERSIONVALUE" property="versionValue"/>
+        <result column="LCTID" property="lctid"/>
+        <result column="LCSTATUS" property="lcStatus"/>
+        <result column="TS" property="ts"/>
+        <result column="ID" property="id"/>
+        <result column="NAME" property="name"/>
+        <result column="DESCRIPTION" property="description"/>
+        <result column="OWNER" property="owner"/>
+        <result column="COPYFROMVERSION" property="copyFromVersion"/>
+        <result column="CLASSIFYTEMPLATEOID" property="classifytemplateoid"/>
+        <result column="ATTRIBUTEDATATYPE" property="attributedatatype"/>
+        <result column="KEYATTRFLAG" property="keyattrflag"/>
+        <result column="QUERYATTRFLAG" property="queryattrflag"/>
+        <result column="SENIORQUERYATTRFLAG" property="seniorqueryattrflag"/>
+        <result column="SAMEREPEATATTRFLAG" property="samerepeatattrflag"/>
+        <result column="SORTATTRFLAG" property="sortattrflag"/>
+        <result column="QRCODEFLAG" property="qrcodeflag"/>
+        <result column="BARCODEFLAG" property="barcodeflag"/>
+        <result column="COMPONENTRULE" property="componentrule"/>
+        <result column="VERIFYRULE" property="verifyrule"/>
+        <result column="CLASSIFYINVOKELEVEL" property="classifyinvokelevel"/>
+        <result column="CLASSIFYINVOKEATTR" property="classifyinvokeattr"/>
+        <result column="CLASSIFYINVOKEATTRNAME" property="classifyinvokeattrname"/>
+        <result column="CLASSIFYINVOKEEDITFLAG" property="classifyinvokeeditflag"/>
+        <result column="ORDERNUM" property="ordernum"/>
+        <result column="FORMDISPLAYFLAG" property="formdisplayflag"/>
+        <result column="TABLEDISPLAYFLAG" property="tabledisplayflag"/>
+        <result column="ATTRIBUTEGROUP" property="attributegroup"/>
+        <result column="ENUMID" property="enumid"/>
+        <result column="ENUMNAME" property="enumname"/>
+        <result column="ENUMEDITFLAG" property="enumeditflag"/>
+        <result column="REFERBTMID" property="referbtmid"/>
+        <result column="REFERBTMNAME" property="referbtmname"/>
+        <result column="REFERCONFIG" property="referconfig"/>
+        <result column="REQUIREFLAG" property="requireflag"/>
+        <result column="READONLYFLAG" property="readonlyflag"/>
+        <result column="CONTROLLENGTH" property="controllength"/>
+        <result column="FORMDISPLAYSTYLE" property="formdisplaystyle"/>
+        <result column="TABLEDISPLAYSTYLE" property="tabledisplaystyle"/>
+        <result column="FORMHREF" property="formhref"/>
+        <result column="TABLEHREF" property="tablehref"/>
+        <result column="PRECISIONLENGTH" property="precisionlength"/>
+        <result column="SCALELENGTH" property="scalelength"/>
+        <result column="VALUEAREA" property="valuearea"/>
+        <result column="CODEDATEFORMAT" property="codedateformat"/>
+        <result column="TABLEDISPLAYJS" property="tabledisplayjs"/>
+        <result column="TEXTAREAFLAG" property="textareaflag"/>
+        <result column="IMAGEFLAG" property="imageflag"/>
+        <result column="DEFAULTVALUE" property="defaultvalue"/>
+        <result column="PREFIXVALUE" property="prefixvalue"/>
+        <result column="SUFFIXVALUE" property="suffixvalue"/>
+        <result column="FILTERSOURCEATTR" property="filtersourceattr"/>
+        <result column="FILTERSOURCEATTRNAME" property="filtersourceattrname"/>
+        <result column="ENUMSTRING" property="enumstring"/>
+        <result column="ATTRTABLEWIDTH" property="attrtablewidth"/>
+        <result column="EXPLAIN" property="explain"/>
+        <result column="LIBRARYIDENTIFICATION" property="libraryidentification"/>
+        <result column="PARENTCODE" property="parentcode"/>
+        <result column="PARENTNAME" property="parentname"/>
+        <result column="PARENTQUERYATTR" property="parentqueryattr"/>
+    </resultMap>
+
+
+    <select id="selectCodeClstempattrPage" resultMap="CodeClstempattrResultMap">
+        select * from PL_CODE_CLSTEMPATTR where is_deleted = 0
+    </select>
+
+    <select id="selectByClassifytemplateoid" resultMap="CodeClstempattrResultMap">
+        select * from PL_CODE_CLSTEMPATTR where classifytemplateoid in (${classifytemplateoid})
+    </select>
+
+    <select id="selectRefByOid" resultType="com.vci.ubcs.code.entity.CodeClstempattrEntity">
+        select codeclstempattr0.EXPLAIN                as explain,
+               codeclstempattr0.SAMEREPEATATTRFLAG     as samerepeatattrflag,
+               codeclstempattr0.LASTMODIFIER           as lastmodifier,
+               codeclstempattr0.ATTRTABLEWIDTH         as attrtablewidth,
+               codeclstempattr0.CONTROLLENGTH          as controllength,
+               codeclstempattr0.CLASSIFYTEMPLATEOID    as classifytemplateoid,
+               codeclstempattr0.VERIFYRULE             as verifyrule,
+               codeclstempattr0.ENUMNAME               as enumname,
+               codeclstempattr0.TABLEDISPLAYFLAG       as tabledisplayflag,
+               codeclstempattr0.PARENTQUERYATTR        as parentqueryattr,
+               codeclstempattr0.ID                     as id,
+               codeclstempattr0.FILTERSOURCEATTRNAME   as filtersourceattrname,
+               codeclstempattr0.VALUEAREA              as valuearea,
+               codeclstempattr0.TABLEDISPLAYSTYLE      as tabledisplaystyle,
+               codeclstempattr0.TABLEDISPLAYJS         as tabledisplayjs,
+               codeclstempattr0.FORMDISPLAYFLAG        as formdisplayflag,
+               codeclstempattr0.DEFAULTVALUE           as defaultvalue,
+               codeclstempattr0.FORMHREF               as formhref,
+               codeclstempattr0.BTMNAME                as btmname,
+               codeclstempattr0.READONLYFLAG           as readonlyflag,
+               codeclstempattr0.NAME                   as name,
+               codeclstempattr0.COMPONENTRULE          as componentrule,
+               codeclstempattr0.SORTATTRFLAG           as sortattrflag,
+               codeclstempattr0.REFERBTMNAME           as referbtmname,
+               codeclstempattr0.ENUMID                 as enumid,
+               codeclstempattr0.FORMDISPLAYSTYLE       as formdisplaystyle,
+               codeclstempattr0.SCALELENGTH            as scalelength,
+               codeclstempattr0.PARENTNAME             as parentname,
+               codeclstempattr0.PRECISIONLENGTH        as precisionlength,
+               codeclstempattr0.PREFIXVALUE            as prefixvalue,
+               codeclstempattr0.FILTERSOURCEATTR       as filtersourceattr,
+               codeclstempattr0.TEXTAREAFLAG           as textareaflag,
+               codeclstempattr0.BARCODEFLAG            as barcodeflag,
+               codeclstempattr0.DESCRIPTION            as description,
+               codeclstempattr0.KEYATTRFLAG            as keyattrflag,
+               codeclstempattr0.QRCODEFLAG             as qrcodeflag,
+               codeclstempattr0.OID                    as oid,
+               codeclstempattr0.CLASSIFYINVOKELEVEL    as classifyinvokelevel,
+               codeclstempattr0.CLASSIFYINVOKEATTRNAME as classifyinvokeattrname,
+               codeclstempattr0.CLASSIFYINVOKEATTR     as classifyinvokeattr,
+               codeclstempattr0.REFERBTMID             as referbtmid,
+               codeclstempattr0.CLASSIFYINVOKEEDITFLAG as classifyinvokeeditflag,
+               codeclstempattr0.CODEDATEFORMAT         as codedateformat,
+               codeclstempattr0.SENIORQUERYATTRFLAG    as seniorqueryattrflag,
+               codeclstempattr0.OWNER                  as owner,
+               codeclstempattr0.ATTRIBUTEDATATYPE      as attributedatatype,
+               codeclstempattr0.CREATOR                as creator,
+               codeclstempattr0.CREATETIME             as createtime,
+               codeclstempattr0.ENUMEDITFLAG           as enumeditflag,
+               codeclstempattr0.ATTRIBUTEGROUP         as attributegroup,
+               codeclstempattr0.PARENTCODE             as parentcode,
+               codeclstempattr0.SUFFIXVALUE            as suffixvalue,
+               codeclstempattr0.ORDERNUM               as ordernum,
+               codeclstempattr0.REFERCONFIG            as referconfig,
+               codeclstempattr0.REQUIREFLAG            as requireflag,
+               codeclstempattr0.LIBRARYIDENTIFICATION  as libraryidentification,
+               codeclstempattr0.ENUMSTRING             as enumstring,
+               codeclstempattr0.IMAGEFLAG              as imageflag,
+               codeclstempattr0.LASTMODIFYTIME         as lastmodifytime,
+               codeclstempattr0.TABLEHREF              as tablehref,
+               codeclstempattr0.QUERYATTRFLAG          as queryattrflag,
+               codeclstempattr0.TS                     as ts,
+               classifytemplateoid.name                as classifyTemplateOidName
+        from platformbtm_codeclstempattr codeclstempattr0
+                 left join platformbtm_codeclstemplate classifytemplateoid
+                           on codeclstempattr0.classifyTemplateOid = classifytemplateoid.oid
+        where codeclstempattr0.classifytemplateoid = #{oid}
+    </select>
+
+
+</mapper>
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeClstemplateMapper.xml b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeClstemplateMapper.xml
index 07e7d6e..521b9e1 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeClstemplateMapper.xml
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeClstemplateMapper.xml
@@ -40,5 +40,12 @@
         select * from PL_CODE_CLSTEMPLATE where is_deleted = 0
     </select>
 
+    <select id="selectAllLevelChildOid" resultType="java.lang.String" >
+        select oid from PL_CODE_CLSTEMPLATE START WITH codeClassifyOid = #{oid} CONNECT BY PRIOR codeClassifyOid= OID
+    </select>
+
+    <select id="countAllLevelChildOid" resultType="java.lang.Integer" >
+        select count(OID) countsize from platformbtm_codeclstemplate START WITH codeClassifyOid = #{oid} CONNECT BY PRIOR codeClassifyOid = OID
+    </select>
 
 </mapper>
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodePhaseattrMapper.xml b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodePhaseattrMapper.xml
new file mode 100644
index 0000000..1c54776
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodePhaseattrMapper.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.code.mapper.CodePhaseattrMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="CodePhaseattrResultMap" type="com.vci.ubcs.code.entity.CodePhaseattrEntity">
+        <result column="OID" property="oid"/>
+        <result column="REVISIONOID" property="revisionOid"/>
+        <result column="NAMEOID" property="nameOid"/>
+        <result column="BTMNAME" property="btmname"/>
+        <result column="LASTR" property="lastR"/>
+        <result column="FIRSTR" property="firstR"/>
+        <result column="LASTV" property="lastV"/>
+        <result column="FIRSTV" property="firstV"/>
+        <result column="CREATOR" property="creator"/>
+        <result column="CREATETIME" property="createTime"/>
+        <result column="LASTMODIFIER" property="lastModifier"/>
+        <result column="LASTMODIFYTIME" property="lastModifyTime"/>
+        <result column="REVISIONRULE" property="revisionRule"/>
+        <result column="VERSIONRULE" property="versionRule"/>
+        <result column="REVISIONSEQ" property="revisionSeq"/>
+        <result column="REVISIONVALUE" property="revisionValue"/>
+        <result column="VERSIONSEQ" property="versionSeq"/>
+        <result column="VERSIONVALUE" property="versionValue"/>
+        <result column="LCTID" property="lctid"/>
+        <result column="LCSTATUS" property="lcStatus"/>
+        <result column="TS" property="ts"/>
+        <result column="ID" property="id"/>
+        <result column="NAME" property="name"/>
+        <result column="DESCRIPTION" property="description"/>
+        <result column="OWNER" property="owner"/>
+        <result column="COPYFROMVERSION" property="copyFromVersion"/>
+        <result column="CODEPHASEOID" property="codephaseoid"/>
+        <result column="ATTRIBUTEGROUP" property="attributegroup"/>
+    </resultMap>
+
+
+    <select id="selectCodePhaseattrPage" resultMap="CodePhaseattrResultMap">
+        select * from PL_CODE_PHASEATTR where is_deleted = 0
+    </select>
+    <select id="selectByPhasea" resultType="com.vci.ubcs.code.entity.CodePhaseattrEntity">
+        select lastmodifier,
+               revisionseq,
+               versionvalue,
+               description,
+               oid,
+               versionseq,
+               checkinby,
+               revisionrule,
+               lctid,
+               id,
+               owner,
+               checkoutby,
+               creator,
+               createtime,
+               isfirstv,
+               attributegroup,
+               revisionoid,
+               btmname,
+               checkouttime,
+               revisionvalue,
+               versionrule,
+               name,
+               islastr,
+               lastmodifytime,
+               copyfromversion,
+               nameoid,
+               lcstatus,
+               islastv,
+               checkintime,
+               codephaseoid,
+               isfirstr
+        from platformbtm_codephaseattr
+        where codephaseoid in
+              (select oid
+               from platformbtm_codetempphase
+               where codeClassifyTemplateOid = #{oid})
+    </select>
+
+
+</mapper>
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeTempbuttonMapper.xml b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeTempbuttonMapper.xml
new file mode 100644
index 0000000..4dd2253
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeTempbuttonMapper.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.code.mapper.CodeTempbuttonMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="CodeTempbuttonResultMap" type="com.vci.ubcs.code.entity.CodeTempbuttonEntity">
+        <result column="OID" property="oid"/>
+        <result column="REVISIONOID" property="revisionOid"/>
+        <result column="NAMEOID" property="nameOid"/>
+        <result column="BTMNAME" property="btmname"/>
+        <result column="LASTR" property="lastR"/>
+        <result column="FIRSTR" property="firstR"/>
+        <result column="LASTV" property="lastV"/>
+        <result column="FIRSTV" property="firstV"/>
+        <result column="CREATOR" property="creator"/>
+        <result column="CREATETIME" property="createTime"/>
+        <result column="LASTMODIFIER" property="lastModifier"/>
+        <result column="LASTMODIFYTIME" property="lastModifyTime"/>
+        <result column="REVISIONRULE" property="revisionRule"/>
+        <result column="VERSIONRULE" property="versionRule"/>
+        <result column="REVISIONSEQ" property="revisionSeq"/>
+        <result column="REVISIONVALUE" property="revisionValue"/>
+        <result column="VERSIONSEQ" property="versionSeq"/>
+        <result column="VERSIONVALUE" property="versionValue"/>
+        <result column="LCTID" property="lctid"/>
+        <result column="LCSTATUS" property="lcStatus"/>
+        <result column="TS" property="ts"/>
+        <result column="ID" property="id"/>
+        <result column="NAME" property="name"/>
+        <result column="DESCRIPTION" property="description"/>
+        <result column="OWNER" property="owner"/>
+        <result column="COPYFROMVERSION" property="copyFromVersion"/>
+        <result column="CLASSIFYTEMPLATEOID" property="classifytemplateoid"/>
+        <result column="CLASSIFYBUTTONOID" property="classifybuttonoid"/>
+        <result column="BUTTONUSE" property="buttonuse"/>
+        <result column="ORDERNUM" property="ordernum"/>
+    </resultMap>
+
+
+    <select id="selectCodeTempbuttonPage" resultMap="CodeTempbuttonResultMap">
+        select * from PL_CODE_TEMPBUTTON where is_deleted = 0
+    </select>
+
+
+</mapper>
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeTempphaseMapper.xml b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeTempphaseMapper.xml
new file mode 100644
index 0000000..f6efd1c
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeTempphaseMapper.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.code.mapper.CodeTempphaseMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="CodeTempphaseResultMap" type="com.vci.ubcs.code.entity.CodeTempphaseEntity">
+        <result column="CREATETIME" property="createTime"/>
+        <result column="LASTMODIFIER" property="lastModifier"/>
+        <result column="LASTMODIFYTIME" property="lastModifyTime"/>
+        <result column="REVISIONRULE" property="revisionRule"/>
+        <result column="VERSIONRULE" property="versionRule"/>
+        <result column="REVISIONSEQ" property="revisionSeq"/>
+        <result column="REVISIONVALUE" property="revisionValue"/>
+        <result column="VERSIONSEQ" property="versionSeq"/>
+        <result column="VERSIONVALUE" property="versionValue"/>
+        <result column="LCTID" property="lctid"/>
+        <result column="LCSTATUS" property="lcStatus"/>
+        <result column="TS" property="ts"/>
+        <result column="ID" property="id"/>
+        <result column="NAME" property="name"/>
+        <result column="DESCRIPTION" property="description"/>
+        <result column="OWNER" property="owner"/>
+        <result column="COPYFROMVERSION" property="copyFromVersion"/>
+        <result column="CODECLASSIFYTEMPLATEOID" property="codeclassifytemplateoid"/>
+        <result column="OID" property="oid"/>
+        <result column="REVISIONOID" property="revisionOid"/>
+        <result column="NAMEOID" property="nameOid"/>
+        <result column="BTMNAME" property="btmname"/>
+        <result column="LASTR" property="lastR"/>
+        <result column="FIRSTR" property="firstR"/>
+        <result column="LASTV" property="lastV"/>
+        <result column="FIRSTV" property="firstV"/>
+        <result column="CREATOR" property="creator"/>
+    </resultMap>
+
+
+    <select id="selectCodeTempphasePage" resultMap="CodeTempphaseResultMap">
+        select * from PL_CODE_TEMPPHASE where is_deleted = 0
+    </select>
+
+
+</mapper>
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/DictBizOmdController.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/DictController.java
similarity index 65%
rename from Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/DictBizOmdController.java
rename to Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/DictController.java
index 228126b..7b65fa2 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/DictBizOmdController.java
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/DictController.java
@@ -17,11 +17,13 @@
 package com.vci.ubcs.omd.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import com.vci.ubcs.omd.entity.DictBizM;
-import com.vci.ubcs.omd.service.IDictBizService;
-import com.vci.ubcs.omd.vo.DictBizMVO;
-import com.vci.ubcs.omd.wrapper.DictBizWrapper;
+import com.vci.ubcs.common.constant.CommonConstant;
+import com.vci.ubcs.omd.entity.Dict;
+import com.vci.ubcs.omd.service.IDictService;
+import com.vci.ubcs.omd.vo.DictVO;
+import com.vci.ubcs.omd.wrapper.DictWrapper;
 import io.swagger.annotations.*;
 import lombok.AllArgsConstructor;
 import org.springblade.core.boot.ctrl.BladeController;
@@ -30,6 +32,7 @@
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.StringPool;
 import org.springframework.web.bind.annotation.*;
 import springfox.documentation.annotations.ApiIgnore;
 
@@ -47,11 +50,11 @@
 @NonDS
 @RestController
 @AllArgsConstructor
-@RequestMapping("/dict-biz")
-@Api(value = "涓氬姟瀛楀吀", tags = "涓氬姟瀛楀吀")
-public class DictBizOmdController extends BladeController {
+@RequestMapping("/dict")
+@Api(value = "鏋氫妇瀹氫箟", tags = "鏋氫妇瀹氫箟")
+public class DictController extends BladeController {
 
-	private final IDictBizService dictService;
+	private final IDictService dictService;
 
 	/**
 	 * 璇︽儏
@@ -59,9 +62,9 @@
 	@GetMapping("/detail")
 	@ApiOperationSupport(order = 1)
 	@ApiOperation(value = "璇︽儏", notes = "浼犲叆dict")
-	public R<DictBizMVO> detail(DictBizM dict) {
-		DictBizM detail = dictService.getOne(Condition.getQueryWrapper(dict));
-		return R.data(DictBizWrapper.build().entityVO(detail));
+	public R<DictVO> detail(Dict dict) {
+		Dict detail = dictService.getOne(Condition.getQueryWrapper(dict));
+		return R.data(DictWrapper.build().entityVO(detail));
 	}
 
 	/**
@@ -69,14 +72,14 @@
 	 */
 	@GetMapping("/list")
 	@ApiImplicitParams({
-		@ApiImplicitParam(name = "code", value = "瀛楀吀缂栧彿", paramType = "query", dataType = "string"),
-		@ApiImplicitParam(name = "dictValue", value = "瀛楀吀鍚嶇О", paramType = "query", dataType = "string")
+		@ApiImplicitParam(name = "code", value = "鏋氫妇缂栧彿", paramType = "query", dataType = "string"),
+		@ApiImplicitParam(name = "dictValue", value = "鏋氫妇鍚嶇О", paramType = "query", dataType = "string")
 	})
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "鍒楄〃", notes = "浼犲叆dict")
-	public R<List<DictBizMVO>> list(@ApiIgnore @RequestParam Map<String, Object> dict) {
-		List<DictBizM> list = dictService.list(Condition.getQueryWrapper(dict, DictBizM.class).lambda().orderByAsc(DictBizM::getSort));
-		return R.data(DictBizWrapper.build().listNodeVO(list));
+	public R<List<DictVO>> list(@ApiIgnore @RequestParam Map<String, Object> dict) {
+		List<Dict> list = dictService.list(Condition.getQueryWrapper(dict, Dict.class).lambda().orderByAsc(Dict::getSort));
+		return R.data(DictWrapper.build().listNodeVO(list));
 	}
 
 	/**
@@ -84,12 +87,12 @@
 	 */
 	@GetMapping("/parent-list")
 	@ApiImplicitParams({
-		@ApiImplicitParam(name = "code", value = "瀛楀吀缂栧彿", paramType = "query", dataType = "string"),
-		@ApiImplicitParam(name = "dictValue", value = "瀛楀吀鍚嶇О", paramType = "query", dataType = "string")
+		@ApiImplicitParam(name = "code", value = "鏋氫妇缂栧彿", paramType = "query", dataType = "string"),
+		@ApiImplicitParam(name = "dictValue", value = "鏋氫妇鍚嶇О", paramType = "query", dataType = "string")
 	})
 	@ApiOperationSupport(order = 3)
 	@ApiOperation(value = "鍒楄〃", notes = "浼犲叆dict")
-	public R<IPage<DictBizMVO>> parentList(@ApiIgnore @RequestParam Map<String, Object> dict, Query query) {
+	public R<IPage<DictVO>> parentList(@ApiIgnore @RequestParam Map<String, Object> dict, Query query) {
 		return R.data(dictService.parentList(dict, query));
 	}
 
@@ -104,7 +107,7 @@
 	})
 	@ApiOperationSupport(order = 4)
 	@ApiOperation(value = "鍒楄〃", notes = "浼犲叆dict")
-	public R<List<DictBizMVO>> childList(@ApiIgnore @RequestParam Map<String, Object> dict, @RequestParam(required = false, defaultValue = "-1") Long parentId) {
+	public R<List<DictVO>> childList(@ApiIgnore @RequestParam Map<String, Object> dict, @RequestParam(required = false, defaultValue = "-1") Long parentId) {
 		return R.data(dictService.childList(dict, parentId));
 	}
 
@@ -114,8 +117,8 @@
 	@GetMapping("/tree")
 	@ApiOperationSupport(order = 5)
 	@ApiOperation(value = "鏍戝舰缁撴瀯", notes = "鏍戝舰缁撴瀯")
-	public R<List<DictBizMVO>> tree() {
-		List<DictBizMVO> tree = dictService.tree();
+	public R<List<DictVO>> tree() {
+		List<DictVO> tree = dictService.tree();
 		return R.data(tree);
 	}
 
@@ -125,8 +128,8 @@
 	@GetMapping("/parent-tree")
 	@ApiOperationSupport(order = 5)
 	@ApiOperation(value = "鏍戝舰缁撴瀯", notes = "鏍戝舰缁撴瀯")
-	public R<List<DictBizMVO>> parentTree() {
-		List<DictBizMVO> tree = dictService.parentTree();
+	public R<List<DictVO>> parentTree() {
+		List<DictVO> tree = dictService.parentTree();
 		return R.data(tree);
 	}
 
@@ -136,7 +139,7 @@
 	@PostMapping("/submit")
 	@ApiOperationSupport(order = 6)
 	@ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆dict")
-	public R submit(@Valid @RequestBody DictBizM dict) {
+	public R submit(@Valid @RequestBody Dict dict) {
 		CacheUtil.clear(DICT_CACHE);
 		return R.status(dictService.submit(dict));
 	}
@@ -159,8 +162,8 @@
 	@GetMapping("/dictionary")
 	@ApiOperationSupport(order = 8)
 	@ApiOperation(value = "鑾峰彇瀛楀吀", notes = "鑾峰彇瀛楀吀")
-	public R<List<DictBizM>> dictionary(String code) {
-		List<DictBizM> tree = dictService.getList(code);
+	public R<List<Dict>> dictionary(String code) {
+		List<Dict> tree = dictService.getList(code);
 		return R.data(tree);
 	}
 
@@ -170,9 +173,9 @@
 	@GetMapping("/dictionary-tree")
 	@ApiOperationSupport(order = 9)
 	@ApiOperation(value = "鑾峰彇瀛楀吀鏍�", notes = "鑾峰彇瀛楀吀鏍�")
-	public R<List<DictBizMVO>> dictionaryTree(String code) {
-		List<DictBizM> tree = dictService.getList(code);
-		return R.data(DictBizWrapper.build().listNodeVO(tree));
+	public R<List<DictVO>> dictionaryTree(String code) {
+		List<Dict> tree = dictService.getList(code);
+		return R.data(DictWrapper.build().listNodeVO(tree));
 	}
 
 	/**
@@ -181,9 +184,21 @@
 	@PostMapping("/check")
 	@ApiOperationSupport(order = 6)
 	@ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆dict")
-	public R checkOrInsert(@Valid @RequestBody DictBizM dict) {
+	public R checkOrInsert(@Valid @RequestBody Dict dict) {
 		CacheUtil.clear(DICT_CACHE);
 		return dictService.checkOrInsert(dict);
 	}
 
+	/**
+	 * 瀛楀吀閿�煎垪琛�
+	 */
+	@GetMapping("/select")
+	@ApiOperationSupport(order = 10)
+	@ApiOperation(value = "瀛楀吀閿�煎垪琛�", notes = "瀛楀吀閿�煎垪琛�")
+	public R<List<Dict>> select() {
+		List<Dict> list = dictService.list(Wrappers.<Dict>query().lambda().eq(Dict::getParentId, CommonConstant.TOP_PARENT_ID));
+		list.forEach(dict -> dict.setDictValue(dict.getCode() + StringPool.COLON + StringPool.SPACE + dict.getDictValue()));
+		return R.data(list);
+	}
+
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/DictBizClient.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/DictClient.java
similarity index 84%
rename from Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/DictBizClient.java
rename to Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/DictClient.java
index 3b19c8a..1b0d863 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/DictBizClient.java
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/DictClient.java
@@ -17,8 +17,8 @@
 package com.vci.ubcs.omd.feign;
 
 
-import com.vci.ubcs.omd.entity.DictBizM;
-import com.vci.ubcs.omd.service.IDictBizService;
+import com.vci.ubcs.omd.entity.Dict;
+import com.vci.ubcs.omd.service.IDictService;
 import lombok.AllArgsConstructor;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tool.api.R;
@@ -38,13 +38,13 @@
 @ApiIgnore
 @RestController
 @AllArgsConstructor
-public class DictBizClient implements IDictBizClient {
+public class DictClient implements IDictClient {
 
-	private final IDictBizService service;
+	private final IDictService service;
 
 	@Override
 	@GetMapping(GET_BY_ID)
-	public R<DictBizM> getById(Long id) {
+	public R<Dict> getById(Long id) {
 		return R.data(service.getById(id));
 	}
 
@@ -56,13 +56,13 @@
 
 	@Override
 	@GetMapping(GET_LIST)
-	public R<List<DictBizM>> getList(String code) {
+	public R<List<Dict>> getList(String code) {
 		return R.data(service.getList(code));
 	}
 
 	@Override
 	@GetMapping(CHECK_VALUE)
-	public R getCheck(DictBizM dict) {
+	public R getCheck(Dict dict) {
 		return service.checkOrInsert(dict);
 	}
 
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/DictBizMapper.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/DictMapper.java
similarity index 84%
rename from Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/DictBizMapper.java
rename to Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/DictMapper.java
index 38b3b7b..3308e43 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/DictBizMapper.java
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/DictMapper.java
@@ -18,8 +18,8 @@
 
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.vci.ubcs.omd.entity.DictBizM;
-import com.vci.ubcs.omd.vo.DictBizMVO;
+import com.vci.ubcs.omd.entity.Dict;
+import com.vci.ubcs.omd.vo.DictVO;
 
 import java.util.List;
 
@@ -28,7 +28,7 @@
  *
  * @author Chill
  */
-public interface DictBizMapper extends BaseMapper<DictBizM> {
+public interface DictMapper extends BaseMapper<Dict> {
 
 	/**
 	 * 鑾峰彇瀛楀吀琛ㄥ搴斾腑鏂�
@@ -45,20 +45,20 @@
 	 * @param code 瀛楀吀缂栧彿
 	 * @return
 	 */
-	List<DictBizM> getList(String code);
+	List<Dict> getList(String code);
 
 	/**
 	 * 鑾峰彇鏍戝舰鑺傜偣
 	 *
 	 * @return
 	 */
-	List<DictBizMVO> tree();
+	List<DictVO> tree();
 
 	/**
 	 * 鑾峰彇鏍戝舰鑺傜偣
 	 *
 	 * @return
 	 */
-	List<DictBizMVO> parentTree();
+	List<DictVO> parentTree();
 
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IDictBizService.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IDictService.java
similarity index 74%
rename from Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IDictBizService.java
rename to Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IDictService.java
index 71222c5..f9ece50 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IDictBizService.java
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IDictService.java
@@ -19,8 +19,8 @@
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.vci.ubcs.omd.entity.DictBizM;
-import com.vci.ubcs.omd.vo.DictBizMVO;
+import com.vci.ubcs.omd.entity.Dict;
+import com.vci.ubcs.omd.vo.DictVO;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 
@@ -32,38 +32,38 @@
  *
  * @author Chill
  */
-public interface IDictBizService extends IService<DictBizM> {
+public interface IDictService extends IService<Dict> {
 
 	/**
 	 * 鏍戝舰缁撴瀯
 	 *
 	 * @return
 	 */
-	List<DictBizMVO> tree();
+	List<DictVO> tree();
 
 	/**
 	 * 鏍戝舰缁撴瀯
 	 *
 	 * @return
 	 */
-	List<DictBizMVO> parentTree();
+	List<DictVO> parentTree();
 
 	/**
-	 * 鑾峰彇瀛楀吀琛ㄥ搴斾腑鏂�
+	 * 鑾峰彇鏋氫妇琛ㄥ搴斾腑鏂�
 	 *
-	 * @param code    瀛楀吀缂栧彿
-	 * @param dictKey 瀛楀吀搴忓彿
+	 * @param code    鏋氫妇缂栧彿
+	 * @param dictKey 鏋氫妇搴忓彿
 	 * @return
 	 */
 	String getValue(String code, String dictKey);
 
 	/**
-	 * 鑾峰彇瀛楀吀琛�
+	 * 鑾峰彇鏋氫妇琛�
 	 *
-	 * @param code 瀛楀吀缂栧彿
+	 * @param code 鏋氫妇缂栧彿
 	 * @return
 	 */
-	List<DictBizM> getList(String code);
+	List<Dict> getList(String code);
 
 	/**
 	 * 鏂板鎴栦慨鏀�
@@ -71,7 +71,7 @@
 	 * @param dict
 	 * @return
 	 */
-	boolean submit(DictBizM dict);
+	boolean submit(Dict dict);
 
 	/**
 	 * 鍒犻櫎瀛楀吀
@@ -88,7 +88,7 @@
 	 * @param query
 	 * @return
 	 */
-	IPage<DictBizMVO> parentList(Map<String, Object> dict, Query query);
+	IPage<DictVO> parentList(Map<String, Object> dict, Query query);
 
 	/**
 	 * 瀛愬垪琛�
@@ -97,7 +97,7 @@
 	 * @param parentId
 	 * @return
 	 */
-	List<DictBizMVO> childList(Map<String, Object> dict, Long parentId);
+	List<DictVO> childList(Map<String, Object> dict, Long parentId);
 
 	/**
 	 * 鏂板鎴栦慨鏀�
@@ -105,5 +105,5 @@
 	 * @param dict
 	 * @return
 	 */
-	R checkOrInsert(DictBizM dict);
+	R checkOrInsert(Dict dict);
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/DictBizServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/DictBizServiceImpl.java
deleted file mode 100644
index ffd23b0..0000000
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/DictBizServiceImpl.java
+++ /dev/null
@@ -1,126 +0,0 @@
-package com.vci.ubcs.omd.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.vci.ubcs.omd.mapper.DictBizMapper;
-import com.vci.ubcs.omd.service.IDictBizService;
-import com.vci.ubcs.omd.wrapper.DictBizWrapper;
-import com.vci.ubcs.common.constant.CommonConstant;
-import org.springblade.core.cache.utils.CacheUtil;
-import org.springblade.core.log.exception.ServiceException;
-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.constant.BladeConstant;
-import org.springblade.core.tool.node.ForestNodeMerger;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.core.tool.utils.StringPool;
-import com.vci.ubcs.omd.cache.DictBizCache;
-import com.vci.ubcs.omd.entity.DictBizM;
-import com.vci.ubcs.omd.vo.DictBizMVO;
-import org.springframework.stereotype.Service;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import static org.springblade.core.cache.constant.CacheConstant.DICT_CACHE;
-
-/**
- * 鏈嶅姟瀹炵幇绫�
- *
- * @author Chill
- */
-@Service
-public class DictBizServiceImpl extends ServiceImpl<DictBizMapper, DictBizM> implements IDictBizService {
-
-	@Override
-	public List tree() {
-		return  ForestNodeMerger.merge((List)baseMapper.tree());
-	}
-
-	@Override
-	public List<DictBizMVO> parentTree() {
-		return ForestNodeMerger.merge((List)baseMapper.parentTree());
-	}
-
-	@Override
-	public String getValue(String code, String dictKey) {
-		return Func.toStr(baseMapper.getValue(code, dictKey), StringPool.EMPTY);
-	}
-
-	@Override
-	public List<DictBizM> getList(String code) {
-		return baseMapper.getList(code);
-	}
-
-	@Override
-	public boolean submit(DictBizM dict) {
-		LambdaQueryWrapper<DictBizM> lqw = Wrappers.<DictBizM>query().lambda().eq(DictBizM::getCode, dict.getCode()).eq(DictBizM::getDictKey, dict.getDictKey());
-		Long cnt = baseMapper.selectCount((Func.isEmpty(dict.getId())) ? lqw : lqw.notIn(DictBizM::getId, dict.getId()));
-		if (cnt > 0L) {
-			throw new ServiceException("褰撳墠瀛楀吀閿�煎凡瀛樺湪!");
-		}
-		// 淇敼椤剁骇瀛楀吀鍚庡悓姝ユ洿鏂颁笅灞炲瓧鍏哥殑缂栧彿
-		if (Func.isNotEmpty(dict.getId()) && dict.getParentId().longValue() == BladeConstant.TOP_PARENT_ID) {
-			DictBizM parent = DictBizCache.getById(dict.getId());
-			this.update(Wrappers.<DictBizM>update().lambda().set(DictBizM::getCode, dict.getCode()).eq(DictBizM::getCode, parent.getCode()).ne(DictBizM::getParentId, BladeConstant.TOP_PARENT_ID));
-		}
-		if (Func.isEmpty(dict.getParentId())) {
-			dict.setParentId(BladeConstant.TOP_PARENT_ID);
-		}
-		dict.setIsDeleted(BladeConstant.DB_NOT_DELETED);
-		CacheUtil.clear(DICT_CACHE);
-		return saveOrUpdate(dict);
-	}
-
-	@Override
-	public boolean removeDict(String ids) {
-		Long cnt = baseMapper.selectCount(Wrappers.<DictBizM>query().lambda().in(DictBizM::getParentId, Func.toLongList(ids)));
-		if (cnt > 0L) {
-			throw new ServiceException("璇峰厛鍒犻櫎瀛愯妭鐐�!");
-		}
-		return removeByIds(Func.toLongList(ids));
-	}
-
-	@Override
-	public IPage<DictBizMVO> parentList(Map<String, Object> dict, Query query) {
-		IPage<DictBizM> page = this.page(Condition.getPage(query), Condition.getQueryWrapper(dict, DictBizM.class).lambda().eq(DictBizM::getParentId, CommonConstant.TOP_PARENT_ID).orderByAsc(DictBizM::getSort));
-		return DictBizWrapper.build().pageVO(page);
-	}
-
-	@Override
-	public List<DictBizMVO> childList(Map<String, Object> dict, Long parentId) {
-		if (parentId < 0) {
-			return new ArrayList<>();
-		}
-		dict.remove("parentId");
-		DictBizM parentDict = DictBizCache.getById(parentId);
-		List<DictBizM> list = this.list(Condition.getQueryWrapper(dict, DictBizM.class).lambda().ne(DictBizM::getId, parentId).eq(DictBizM::getCode, parentDict.getCode()).orderByAsc(DictBizM::getSort));
-		return DictBizWrapper.build().listNodeVO(list);
-	}
-
-    @Override
-    public R checkOrInsert(DictBizM dict) {
-
-		LambdaQueryWrapper<DictBizM> lqw = Wrappers.<DictBizM>query().lambda().eq(DictBizM::getCode, dict.getCode()).eq(DictBizM::getDictKey, dict.getDictKey());
-		Long cnt = baseMapper.selectCount((Func.isEmpty(dict.getId())) ? lqw : lqw.notIn(DictBizM::getId, dict.getId()));
-		if (cnt > 0L) {
-			return R.fail("瀛楀吀宸茬粡瀛樺湪锛�");
-		}
-
-		if (Func.isEmpty(dict.getParentId())) {
-			dict.setParentId(BladeConstant.TOP_PARENT_ID);
-		}
-		dict.setIsDeleted(BladeConstant.DB_NOT_DELETED);
-		CacheUtil.clear(DICT_CACHE);
-
-		if(saveOrUpdate(dict) == true){
-			return R.success("鎿嶄綔鎴愬姛!");
-		}
-		return R.fail("鎿嶄綔澶辫触锛�");
-
-    }
-}
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/DictServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/DictServiceImpl.java
new file mode 100644
index 0000000..f6584e8
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/DictServiceImpl.java
@@ -0,0 +1,126 @@
+package com.vci.ubcs.omd.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vci.ubcs.core.log.exception.ServiceException;
+import com.vci.ubcs.omd.mapper.DictMapper;
+import com.vci.ubcs.omd.service.IDictService;
+import com.vci.ubcs.omd.wrapper.DictWrapper;
+import com.vci.ubcs.common.constant.CommonConstant;
+import org.springblade.core.cache.utils.CacheUtil;
+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.constant.BladeConstant;
+import org.springblade.core.tool.node.ForestNodeMerger;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.StringPool;
+import com.vci.ubcs.omd.cache.DictCache;
+import com.vci.ubcs.omd.entity.Dict;
+import com.vci.ubcs.omd.vo.DictVO;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import static org.springblade.core.cache.constant.CacheConstant.DICT_CACHE;
+
+/**
+ * 鏈嶅姟瀹炵幇绫�
+ *
+ * @author Chill
+ */
+@Service
+public class DictServiceImpl extends ServiceImpl<DictMapper, Dict> implements IDictService {
+
+	@Override
+	public List tree() {
+		return  ForestNodeMerger.merge((List)baseMapper.tree());
+	}
+
+	@Override
+	public List<DictVO> parentTree() {
+		return ForestNodeMerger.merge((List)baseMapper.parentTree());
+	}
+
+	@Override
+	public String getValue(String code, String dictKey) {
+		return Func.toStr(baseMapper.getValue(code, dictKey), StringPool.EMPTY);
+	}
+
+	@Override
+	public List<Dict> getList(String code) {
+		return baseMapper.getList(code);
+	}
+
+	@Override
+	public boolean submit(Dict dict) {
+		LambdaQueryWrapper<Dict> lqw = Wrappers.<Dict>query().lambda().eq(Dict::getCode, dict.getCode()).eq(Dict::getDictKey, dict.getDictKey());
+		Long cnt = baseMapper.selectCount((Func.isEmpty(dict.getId())) ? lqw : lqw.notIn(Dict::getId, dict.getId()));
+		if (cnt > 0L) {
+			throw new ServiceException("褰撳墠鏋氫妇閿�煎凡瀛樺湪!");
+		}
+		// 淇敼椤剁骇瀛楀吀鍚庡悓姝ユ洿鏂颁笅灞炲瓧鍏哥殑缂栧彿
+		if (Func.isNotEmpty(dict.getId()) && dict.getParentId().longValue() == BladeConstant.TOP_PARENT_ID) {
+			Dict parent = DictCache.getById(dict.getId());
+			this.update(Wrappers.<Dict>update().lambda().set(Dict::getCode, dict.getCode()).eq(Dict::getCode, parent.getCode()).ne(Dict::getParentId, BladeConstant.TOP_PARENT_ID));
+		}
+		if (Func.isEmpty(dict.getParentId())) {
+			dict.setParentId(BladeConstant.TOP_PARENT_ID);
+		}
+		dict.setIsDeleted(BladeConstant.DB_NOT_DELETED);
+		CacheUtil.clear(DICT_CACHE);
+		return saveOrUpdate(dict);
+	}
+
+	@Override
+	public boolean removeDict(String ids) {
+		Long cnt = baseMapper.selectCount(Wrappers.<Dict>query().lambda().in(Dict::getParentId, Func.toLongList(ids)));
+		if (cnt > 0L) {
+			throw new ServiceException("璇峰厛鍒犻櫎瀛愯妭鐐�!");
+		}
+		return removeByIds(Func.toLongList(ids));
+	}
+
+	@Override
+	public IPage<DictVO> parentList(Map<String, Object> dict, Query query) {
+		IPage<Dict> page = this.page(Condition.getPage(query), Condition.getQueryWrapper(dict, Dict.class).lambda().eq(Dict::getParentId, CommonConstant.TOP_PARENT_ID).orderByAsc(Dict::getSort));
+		return DictWrapper.build().pageVO(page);
+	}
+
+	@Override
+	public List<DictVO> childList(Map<String, Object> dict, Long parentId) {
+		if (parentId < 0) {
+			return new ArrayList<>();
+		}
+		dict.remove("parentId");
+		Dict parentDict = DictCache.getById(parentId);
+		List<Dict> list = this.list(Condition.getQueryWrapper(dict, Dict.class).lambda().ne(Dict::getId, parentId).eq(Dict::getCode, parentDict.getCode()).orderByAsc(Dict::getSort));
+		return DictWrapper.build().listNodeVO(list);
+	}
+
+    @Override
+    public R checkOrInsert(Dict dict) {
+
+		LambdaQueryWrapper<Dict> lqw = Wrappers.<Dict>query().lambda().eq(Dict::getCode, dict.getCode()).eq(Dict::getDictKey, dict.getDictKey());
+		Long cnt = baseMapper.selectCount((Func.isEmpty(dict.getId())) ? lqw : lqw.notIn(Dict::getId, dict.getId()));
+		if (cnt > 0L) {
+			return R.fail("鏋氫妇宸茬粡瀛樺湪锛�");
+		}
+
+		if (Func.isEmpty(dict.getParentId())) {
+			dict.setParentId(BladeConstant.TOP_PARENT_ID);
+		}
+		dict.setIsDeleted(BladeConstant.DB_NOT_DELETED);
+		CacheUtil.clear(DICT_CACHE);
+
+		if(saveOrUpdate(dict) == true){
+			return R.success("鎿嶄綔鎴愬姛!");
+		}
+		return R.fail("鎿嶄綔澶辫触锛�");
+
+    }
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/DictBizWrapper.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/DictWrapper.java
similarity index 70%
rename from Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/DictBizWrapper.java
rename to Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/DictWrapper.java
index 9cfe8f4..a36faab 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/DictBizWrapper.java
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/DictWrapper.java
@@ -16,9 +16,9 @@
  */
 package com.vci.ubcs.omd.wrapper;
 
-import com.vci.ubcs.omd.cache.DictBizCache;
-import com.vci.ubcs.omd.entity.DictBizM;
-import com.vci.ubcs.omd.vo.DictBizMVO;
+import com.vci.ubcs.omd.cache.DictCache;
+import com.vci.ubcs.omd.entity.Dict;
+import com.vci.ubcs.omd.vo.DictVO;
 import org.springblade.core.mp.support.BaseEntityWrapper;
 import org.springblade.core.tool.constant.BladeConstant;
 import org.springblade.core.tool.node.ForestNodeMerger;
@@ -35,26 +35,26 @@
  *
  * @author Chill
  */
-public class DictBizWrapper extends BaseEntityWrapper<DictBizM, DictBizMVO> {
+public class DictWrapper extends BaseEntityWrapper<Dict, DictVO> {
 
-	public static DictBizWrapper build() {
-		return new DictBizWrapper();
+	public static DictWrapper build() {
+		return new DictWrapper();
 	}
 
 	@Override
-	public DictBizMVO entityVO(DictBizM dict) {
-		DictBizMVO dictVO = Objects.requireNonNull(BeanUtil.copy(dict, DictBizMVO.class));
+	public DictVO entityVO(Dict dict) {
+		DictVO dictVO = Objects.requireNonNull(BeanUtil.copy(dict, DictVO.class));
 		if (Func.equals(dict.getParentId(), BladeConstant.TOP_PARENT_ID)) {
 			dictVO.setParentName(BladeConstant.TOP_PARENT_NAME);
 		} else {
-			DictBizM parent = DictBizCache.getById(dict.getParentId());
+			Dict parent = DictCache.getById(dict.getParentId());
 			dictVO.setParentName(parent.getDictValue());
 		}
 		return dictVO;
 	}
 
-	public List<DictBizMVO> listNodeVO(List<DictBizM> list) {
-		List<DictBizMVO> collect = list.stream().map(dict -> BeanUtil.copy(dict, DictBizMVO.class)).collect(Collectors.toList());
+	public List<DictVO> listNodeVO(List<Dict> list) {
+		List<DictVO> collect = list.stream().map(dict -> BeanUtil.copy(dict, DictVO.class)).collect(Collectors.toList());
 		return ForestNodeMerger.merge((List)collect);
 	}
 
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/DictBizMapper.xml b/Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/DictMapper.xml
similarity index 76%
rename from Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/DictBizMapper.xml
rename to Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/DictMapper.xml
index 1cb8b5f..6ab5794 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/DictBizMapper.xml
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/DictMapper.xml
@@ -1,11 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.vci.ubcs.omd.mapper.DictBizMapper">
+<mapper namespace="com.vci.ubcs.omd.mapper.DictMapper">
 
     <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
-    <resultMap id="dictResultMap" type="com.vci.ubcs.omd.entity.DictBizM">
+    <resultMap id="dictResultMap" type="com.vci.ubcs.omd.entity.Dict">
         <id column="id" property="id"/>
-        <result column="tenant_id" property="tenantId"/>
         <result column="parent_id" property="parentId"/>
         <result column="code" property="code"/>
         <result column="dict_key" property="dictKey"/>
@@ -26,7 +25,7 @@
     <select id="getValue" resultType="java.lang.String">
         select
             dict_value
-        from pl_sys_dict_biz where code = #{param1} and dict_key = #{param2} and is_deleted = 0
+        from pl_sys_dict where code = #{param1} and dict_key = #{param2} and is_deleted = 0
     </select>
 
     <!-- oracle 鐗堟湰 -->
@@ -37,15 +36,15 @@
     </select>-->
 
     <select id="getList" resultMap="dictResultMap">
-        select id, tenant_id, parent_id, code, dict_key, dict_value, sort, remark from pl_sys_dict_biz where code = #{param1} and parent_id > 0 and is_sealed = 0 and is_deleted = 0
+        select id, parent_id, code, dict_key, dict_value, sort, remark from pl_sys_dict where code = #{param1} and parent_id > 0 and is_sealed = 0 and is_deleted = 0
     </select>
 
     <select id="tree" resultMap="treeNodeResultMap">
-        select id, parent_id, dict_value as title, id as "value", id as "key" from pl_sys_dict_biz where is_deleted = 0
+        select id, parent_id, dict_value as title, id as "value", id as "key" from pl_sys_dict where is_deleted = 0
     </select>
 
     <select id="parentTree" resultMap="treeNodeResultMap">
-        select id, parent_id, dict_value as title, id as "value", id as "key" from pl_sys_dict_biz where is_deleted = 0 and parent_id = 0
+        select id, parent_id, dict_value as title, id as "value", id as "key" from pl_sys_dict where is_deleted = 0 and parent_id = 0
     </select>
 
 </mapper>
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/feign/DictBizClient.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/feign/DictBizClient.java
index 7eb0cc3..d66a6b6 100644
--- a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/feign/DictBizClient.java
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/feign/DictBizClient.java
@@ -60,4 +60,15 @@
 		return R.data(service.getList(code));
 	}
 
+	/**
+	 * 鏂板鎴栦慨鏀�
+	 *
+	 * @param dictBiz
+	 * @return
+	 */
+	@Override
+	@GetMapping(CHECK_VALUE)
+	public R getCheck(DictBiz dictBiz) {
+		return service.checkOrInsert(dictBiz);
+	}
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IDictBizService.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IDictBizService.java
index 18d639f..2dcd14d 100644
--- a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IDictBizService.java
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IDictBizService.java
@@ -22,6 +22,7 @@
 import org.springblade.core.mp.support.Query;
 import com.vci.ubcs.system.entity.DictBiz;
 import com.vci.ubcs.system.vo.DictBizVO;
+import org.springblade.core.tool.api.R;
 
 import java.util.List;
 import java.util.Map;
@@ -98,4 +99,11 @@
 	 */
 	List<DictBizVO> childList(Map<String, Object> dict, Long parentId);
 
+	/**
+	 * 鏂板鎴栦慨鏀�
+	 *
+	 * @param dictBiz
+	 * @return
+	 */
+    R checkOrInsert(DictBiz dictBiz);
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/DictBizServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/DictBizServiceImpl.java
index b35d728..e725d4a 100644
--- a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/DictBizServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/DictBizServiceImpl.java
@@ -21,7 +21,7 @@
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.vci.ubcs.common.constant.CommonConstant;
-import org.springblade.core.log.exception.ServiceException;
+import com.vci.ubcs.core.log.exception.ServiceException;
 import com.vci.ubcs.system.cache.DictBizCache;
 import com.vci.ubcs.system.entity.DictBiz;
 import com.vci.ubcs.system.mapper.DictBizMapper;
@@ -31,6 +31,7 @@
 import org.springblade.core.cache.utils.CacheUtil;
 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.constant.BladeConstant;
 import org.springblade.core.tool.node.ForestNodeMerger;
 import org.springblade.core.tool.utils.Func;
@@ -116,4 +117,26 @@
 		List<DictBiz> list = this.list(Condition.getQueryWrapper(dict, DictBiz.class).lambda().ne(DictBiz::getId, parentId).eq(DictBiz::getCode, parentDict.getCode()).orderByAsc(DictBiz::getSort));
 		return DictBizWrapper.build().listNodeVO(list);
 	}
+
+	@Override
+	public R checkOrInsert(DictBiz dictBiz) {
+
+		LambdaQueryWrapper<DictBiz> lqw = Wrappers.<DictBiz>query().lambda().eq(DictBiz::getCode, dictBiz.getCode()).eq(DictBiz::getDictKey, dictBiz.getDictKey());
+		Long cnt = baseMapper.selectCount((Func.isEmpty(dictBiz.getId())) ? lqw : lqw.notIn(DictBiz::getId, dictBiz.getId()));
+		if (cnt > 0L) {
+			return R.fail("瀛楀吀宸茬粡瀛樺湪锛�");
+		}
+
+		if (Func.isEmpty(dictBiz.getParentId())) {
+			dictBiz.setParentId(BladeConstant.TOP_PARENT_ID);
+		}
+		dictBiz.setIsDeleted(BladeConstant.DB_NOT_DELETED);
+		CacheUtil.clear(DICT_CACHE);
+
+		if(saveOrUpdate(dictBiz) == true){
+			return R.success("鎿嶄綔鎴愬姛!");
+		}
+		return R.fail("鎿嶄綔澶辫触锛�");
+
+	}
 }

--
Gitblit v1.9.3