From d1e3a87aad6f737394b33852d9496d673472ddbe Mon Sep 17 00:00:00 2001
From: yuxc <653031404@qq.com>
Date: 星期二, 16 五月 2023 18:19:17 +0800
Subject: [PATCH] 主要完成修改Class统一命名,与老平台命名一致,删除多余VOClass等。

---
 Source/UBCS-WEB/src/views/code/codeKeyAttrRepeat.vue                                                                     |   12 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeClassifyTemplateAttrClient.java            |    2 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmIOService.java                             |   32 
 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeClassifyTemplateMapper.xml                              |    4 
 Source/UBCS-WEB/src/const/code/codeKeyAttrRepeat.js                                                                      |   24 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/UITableFieldVO.java              |  402 ++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeTempButtonClient.java                       |    3 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateAttrServiceImpl.java |  791 +++++
 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeKeyAttrRepeatMapper.xml                                 |    4 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeKeyAttrRepeat.java                 |    2 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImportTemplateVO.java        |    4 
 Source/UBCS-WEB/src/api/code/codeKeyAttrRepeat.js                                                                        |    0 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/UIFormDefineVO.java              |  136 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeKeyAttrRepeatController.java           |   40 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeButtonClient.java                           |    1 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeClassifyTemplateAttrWrapper.java          |    6 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/lCodeKeyAttrRepeatClient.java                   |    6 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClstemplateServiceImpl.java          |  219 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClassifyTemplate.java              |    2 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/UITablePageVO.java               |   49 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodePhaseAttrClient.java                       |    2 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeKeyAttrRepeatService.java                |   18 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyTemplateAttrService.java         |  106 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeKeyAttrRepeatMapper.java                   |    8 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CommonsMapper.java                             |    2 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyProcessTempServiceImpl.java  |   28 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeKeyAttrRepeatWrapper.java                 |   14 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeClassifyTemplateWrapper.java              |   15 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/lCodeClassifyTemplateClient.java                |    6 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClstemplateService.java                  |   56 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeKeyAttrRepeatServiceImpl.java        |   48 
 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CommonsMapper.xml                                           |    4 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodePhaseAttrClient.java                        |    3 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmProductCodeService.java                    |    4 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyTemplateController.java        |   82 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeClassifyTemplateClient.java                 |   13 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/SmUserVO.java                    |  393 ++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyTemplateAttrController.java    |  141 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodePhaseAttrController.java               |    2 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeKeyAttrRepeatVO.java                   |    4 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/FormulaServiceImpl.java                  | 1165 ++++++++
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/UIFormItemVO.java                |  350 ++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java           |    9 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeKeyAttrRepeatClient.java                    |   17 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyProcessTempService.java          |    6 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java                    |  764 ++--
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeClassifyTemplateAttrClient.java             |    2 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeTempButtonClient.java                      |    2 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeKeyAttrRepeatDTO.java                 |    4 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyTemplateMapper.java                |   13 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/MdmUIInfoVO.java                 |  100 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java             |   14 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/UITableDefineVO.java             |  237 +
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImprotDataVO.java            |    8 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java                         |  163 
 /dev/null                                                                                                                |  104 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/SmOperationVO.java               |  161 +
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java                | 2230 +++++++++++----
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java                   |  254 +
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeClassifyProcessTempWrapper.java           |    3 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeTempphaseServiceImpl.java            |    9 
 61 files changed, 6,654 insertions(+), 1,649 deletions(-)

diff --git a/Source/UBCS-WEB/src/api/code/plCodeKeyattrrepeat.js b/Source/UBCS-WEB/src/api/code/codeKeyAttrRepeat.js
similarity index 100%
rename from Source/UBCS-WEB/src/api/code/plCodeKeyattrrepeat.js
rename to Source/UBCS-WEB/src/api/code/codeKeyAttrRepeat.js
diff --git a/Source/UBCS-WEB/src/const/code/plCodeKeyattrrepeat.js b/Source/UBCS-WEB/src/const/code/codeKeyAttrRepeat.js
similarity index 92%
rename from Source/UBCS-WEB/src/const/code/plCodeKeyattrrepeat.js
rename to Source/UBCS-WEB/src/const/code/codeKeyAttrRepeat.js
index 819f401..8e3c94e 100644
--- a/Source/UBCS-WEB/src/const/code/plCodeKeyattrrepeat.js
+++ b/Source/UBCS-WEB/src/const/code/codeKeyAttrRepeat.js
@@ -256,12 +256,12 @@
       label: "蹇界暐澶у皬鍐�",
       prop: "ignorecaseflag",
       type: "select",
-      dicUrl: "/api/ubcs-system/dict/dictionary?code=codeKeyFlag",
+      dicUrl: "/api/ubcs-system/enum/dictionary?code=codeKeyFlag",
       dataType: "String",
       search: true,
       props: {
-        label: "dictValue",
-        value: "dictKey"
+        label: "itemName",
+        value: "itemValue"
       },
       rules: [{
         required: true,
@@ -273,12 +273,12 @@
       label: "蹇界暐绌烘牸",
       prop: "ignorespaceflag",
       type: "select",
-      dicUrl: "/api/ubcs-system/dict/dictionary?code=codeKeyFlag",
+      dicUrl: "/api/ubcs-system/enum/dictionary?code=codeKeyFlag",
       dataType: "String",
       search: true,
       props: {
-        label: "dictValue",
-        value: "dictKey"
+        label: "itemName",
+        value: "itemValue"
       },
       rules: [{
         required: true,
@@ -290,12 +290,12 @@
       label: "蹇界暐鍏ㄩ儴绌烘牸",
       prop: "ignoreallspaceflag",
       type: "select",
-      dicUrl: "/api/ubcs-system/dict/dictionary?code=codeKeyFlag",
+      dicUrl: "/api/ubcs-system/enum/dictionary?code=codeKeyFlag",
       dataType: "String",
       search: true,
       props: {
-        label: "dictValue",
-        value: "dictKey"
+        label: "itemName",
+        value: "itemValue"
       },
       rules: [{
         required: true,
@@ -308,11 +308,11 @@
       prop: "ignorewidthflag",
       type: "select",
       search: true,
-      dicUrl: "/api/ubcs-system/dict/dictionary?code=codeKeyFlag",
+      dicUrl: "/api/ubcs-system/enum/dictionary?code=codeKeyFlag",
       dataType: "String",
       props: {
-        label: "dictValue",
-        value: "dictKey"
+        label: "itemName",
+        value: "itemValue"
       },
       rules: [{
         required: true,
diff --git a/Source/UBCS-WEB/src/views/code/plCodeKeyattrrepeat.vue b/Source/UBCS-WEB/src/views/code/codeKeyAttrRepeat.vue
similarity index 91%
rename from Source/UBCS-WEB/src/views/code/plCodeKeyattrrepeat.vue
rename to Source/UBCS-WEB/src/views/code/codeKeyAttrRepeat.vue
index 3c36a25..e661759 100644
--- a/Source/UBCS-WEB/src/views/code/plCodeKeyattrrepeat.vue
+++ b/Source/UBCS-WEB/src/views/code/codeKeyAttrRepeat.vue
@@ -32,8 +32,8 @@
 </template>
 
 <script>
-  import {getList, getDetail, add, update, remove} from "@/api/code/plCodeKeyattrrepeat";
-  import option from "@/const/code/plCodeKeyattrrepeat";
+  import {getList, getDetail, add, update, remove} from "@/api/code/codeKeyAttrRepeat";
+  import option from "@/const/code/codeKeyAttrRepeat";
   import {mapGetters} from "vuex";
 
   export default {
@@ -56,10 +56,10 @@
       ...mapGetters(["permission"]),
       permissionList() {
         return {
-          addBtn: this.vaildData(this.permission.plCodeKeyattrrepeat_add, false),
-          viewBtn: this.vaildData(this.permission.plCodeKeyattrrepeat_view, false),
-          delBtn: this.vaildData(this.permission.plCodeKeyattrrepeat_delete, false),
-          editBtn: this.vaildData(this.permission.plCodeKeyattrrepeat_edit, false)
+          // addBtn: this.vaildData(this.permission.plCodeKeyattrrepeat_add, false),
+          // viewBtn: this.vaildData(this.permission.plCodeKeyattrrepeat_view, false),
+          // delBtn: this.vaildData(this.permission.plCodeKeyattrrepeat_delete, false),
+          // editBtn: this.vaildData(this.permission.plCodeKeyattrrepeat_edit, false)
         };
       },
       ids() {
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClsflowtempDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClsflowtempDTO.java
deleted file mode 100644
index 6171736..0000000
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClsflowtempDTO.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- *      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.CodeClsflowtempEntity;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * 缂栫爜搴撳畾涔�-妯℃澘娴佺▼ 鏁版嵁浼犺緭瀵硅薄瀹炰綋绫�
- *
- * @author yuxc
- * @since 2023-04-20
- */
-@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
deleted file mode 100644
index 8f8168e..0000000
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClstempattrDTO.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- *      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-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClstemplateDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClstemplateDTO.java
deleted file mode 100644
index a8d5eac..0000000
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeClstemplateDTO.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- *      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.CodeClstemplateEntity;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * 缂栫爜搴撳畾涔�-妯℃澘绠$悊 鏁版嵁浼犺緭瀵硅薄瀹炰綋绫�
- *
- * @author yuxc
- * @since 2023-04-10
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-public class CodeClstemplateDTO extends CodeClstemplateEntity {
-	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/CodeKeyattrrepeatDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeKeyAttrRepeatDTO.java
similarity index 89%
rename from Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeKeyattrrepeatDTO.java
rename to Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeKeyAttrRepeatDTO.java
index 3f3aee4..57e09f1 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeKeyattrrepeatDTO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeKeyAttrRepeatDTO.java
@@ -16,7 +16,7 @@
  */
 package com.vci.ubcs.code.dto;
 
-import com.vci.ubcs.code.entity.CodeKeyattrrepeatEntity;
+import com.vci.ubcs.code.entity.CodeKeyAttrRepeat;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -28,7 +28,7 @@
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
-public class CodeKeyattrrepeatDTO extends CodeKeyattrrepeatEntity {
+public class CodeKeyAttrRepeatDTO extends CodeKeyAttrRepeat {
 	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/CodeClstemplateEntity.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClassifyTemplate.java
similarity index 96%
rename from Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClstemplateEntity.java
rename to Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClassifyTemplate.java
index 937d100..992f0d4 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClstemplateEntity.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClassifyTemplate.java
@@ -35,7 +35,7 @@
 @TableName("PL_CODE_CLSTEMPLATE")
 @ApiModel(value = "PlCodeClstemplate瀵硅薄", description = "缂栫爜搴撳畾涔�-妯℃澘绠$悊")
 @EqualsAndHashCode(callSuper = true)
-public class CodeClstemplateEntity  extends BaseModel {
+public class CodeClassifyTemplate extends BaseModel {
 
 	/**
 	 * 涓婚搴撳垎绫讳富閿�
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
deleted file mode 100644
index acf3e5c..0000000
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClsflowtempEntity.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- *      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.TableField;
-import com.baomidou.mybatisplus.annotation.TableName;
-
-import com.vci.ubcs.starter.revision.model.BaseModel;
-import lombok.Data;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.EqualsAndHashCode;
-
-/**
- * 缂栫爜搴撳畾涔�-妯℃澘娴佺▼ 瀹炰綋绫�
- *
- * @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 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
deleted file mode 100644
index 27ca9c7..0000000
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeClstempattrEntity.java
+++ /dev/null
@@ -1,298 +0,0 @@
-/*
- *      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.TableField;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.vci.ubcs.starter.revision.model.BaseModel;
-import lombok.Data;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.EqualsAndHashCode;
-
-/**
- * 缂栫爜搴撳畾涔�-妯℃澘灞炴�� 瀹炰綋绫�
- *
- * @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 Integer precisionlength;
-	/**
-	 *
-	 */
-	@ApiModelProperty(value = "")
-	private Integer 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 = "")
-	@TableField("\"EXPLAIN\"")
-	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/CodeKeyattrrepeatEntity.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeKeyAttrRepeat.java
similarity index 98%
rename from Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeKeyattrrepeatEntity.java
rename to Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeKeyAttrRepeat.java
index 8f919ad..254edc7 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeKeyattrrepeatEntity.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeKeyAttrRepeat.java
@@ -38,7 +38,7 @@
 @TableName("PL_CODE_KEYATTRREPEAT")
 @ApiModel(value = "PlCodeKeyattrrepeat瀵硅薄", description = "鍏抽敭灞炴�ф煡閲嶈鍒�")
 //@EqualsAndHashCode(callSuper = true)
-public class CodeKeyattrrepeatEntity  implements Serializable {
+public class CodeKeyAttrRepeat implements Serializable {
 
 	/**
 	 *
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
deleted file mode 100644
index bc2e34d..0000000
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodePhaseattrEntity.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- *      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 com.vci.ubcs.starter.revision.model.BaseModel;
-import lombok.Data;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.EqualsAndHashCode;
-
-/**
- * 缂栫爜搴撳畾涔�-妯℃澘闃舵-灞炴�� 瀹炰綋绫�
- *
- * @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/vo/CodeClsflowtempVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeClsflowtempVO.java
deleted file mode 100644
index e62d3a5..0000000
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeClsflowtempVO.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- *      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.vo;
-
-import com.vci.ubcs.code.entity.CodeClsflowtempEntity;
-import org.springblade.core.tool.node.INode;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * 缂栫爜搴撳畾涔�-妯℃澘娴佺▼ 瑙嗗浘瀹炰綋绫�
- *
- * @author yuxc
- * @since 2023-04-20
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-public class CodeClsflowtempVO 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/vo/CodeClstempattrVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeClstempattrVO.java
deleted file mode 100644
index 80619d8..0000000
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeClstempattrVO.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- *      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.vo;
-
-import com.vci.ubcs.code.entity.CodeClstempattrEntity;
-import org.springblade.core.tool.node.INode;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * 缂栫爜搴撳畾涔�-妯℃澘灞炴�� 瑙嗗浘瀹炰綋绫�
- *
- * @author yuxc
- * @since 2023-04-19
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-public class CodeClstempattrVO extends CodeClstempattrEntity {
-	private static final long serialVersionUID = 1L;
-
-	/**
-	 * 灞炴�х被鍨嬫樉绀�
-	 */
-	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
deleted file mode 100644
index 93a8daf..0000000
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeClstemplateVO.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.vci.ubcs.code.vo;
-
-import com.vci.ubcs.code.entity.CodeClstemplateEntity;
-import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
-import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-import java.util.List;
-
-/**
- * 鍒嗙被妯℃澘瀵硅薄鏄剧ず瀵硅薄
- *
- * @author yuxc
- * @date 2022-01-24
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-public class CodeClstemplateVO extends CodeClstemplateEntity {
-
-	/**
-     * 绂佹淇敼杩欎釜鍊�
-     */
-	private static final long serialVersionUID = 4615707118684061936L;
-
-	/**
-	 * 鍖呭惈鐨勫睘鎬у唴瀹�
-	 */
-	private List<CodeClassifyTemplateAttrVO> attributes;
-
-}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeKeyattrrepeatVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeKeyAttrRepeatVO.java
similarity index 89%
rename from Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeKeyattrrepeatVO.java
rename to Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeKeyAttrRepeatVO.java
index 060e006..0821957 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeKeyattrrepeatVO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeKeyAttrRepeatVO.java
@@ -16,7 +16,7 @@
  */
 package com.vci.ubcs.code.vo;
 
-import com.vci.ubcs.code.entity.CodeKeyattrrepeatEntity;
+import com.vci.ubcs.code.entity.CodeKeyAttrRepeat;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -28,7 +28,7 @@
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
-public class CodeKeyattrrepeatVO extends CodeKeyattrrepeatEntity {
+public class CodeKeyAttrRepeatVO extends CodeKeyAttrRepeat {
 	private static final long serialVersionUID = 1L;
 
 }
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImportTemplateVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImportTemplateVO.java
index 420b491..815febf 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImportTemplateVO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImportTemplateVO.java
@@ -1,14 +1,12 @@
 package com.vci.ubcs.code.vo.pagemodel;
 
-import com.vci.ubcs.code.vo.CodeClstemplateVO;
-
 import java.util.ArrayList;
 import java.util.List;
 
 public class CodeImportTemplateVO {
     private List<ColumnVO> cloNamesList=new ArrayList<>();
 
-    private CodeClstemplateVO codeClstemplateVO;
+    private CodeClassifyTemplateVO codeClstemplateVO;
 
     private CodeClassifyVO codeClassifyVO;
 
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImprotDataVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImprotDataVO.java
index aafe730..7ffb90f 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImprotDataVO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeImprotDataVO.java
@@ -1,8 +1,6 @@
 package com.vci.ubcs.code.vo.pagemodel;
 
 
-import com.vci.ubcs.code.vo.CodeClstemplateVO;
-
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
@@ -49,14 +47,14 @@
      * 鏁版嵁
      */
     private List<Map<String,String>> datas = new ArrayList<>();
-    private CodeClstemplateVO codeClstemplateVO;
+    private CodeClassifyTemplateVO codeClstemplateVO;
     private CodeClassifyVO codeClassifyVO;
 
-    public CodeClstemplateVO getCodeClassifyTemplateVO() {
+    public CodeClassifyTemplateVO getCodeClassifyTemplateVO() {
         return codeClstemplateVO;
     }
 
-    public void setCodeClassifyTemplateVO(CodeClstemplateVO codeClstemplateVO) {
+    public void setCodeClassifyTemplateVO(CodeClassifyTemplateVO codeClstemplateVO) {
         this.codeClstemplateVO = codeClstemplateVO;
     }
 
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/MdmUIInfoVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/MdmUIInfoVO.java
new file mode 100644
index 0000000..16b0235
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/MdmUIInfoVO.java
@@ -0,0 +1,100 @@
+package com.vci.ubcs.code.vo.pagemodel;
+
+import java.util.List;
+
+public class MdmUIInfoVO implements java.io.Serializable {
+
+	/**
+	 * 搴忓垪鍖�
+	 */
+	private static final long serialVersionUID = 4192521596336111375L;
+	/**
+	 * 妯℃澘鐨勪俊鎭�
+	 */
+	private CodeClassifyTemplateVO templateVO;
+	/**
+	 * 琛ㄦ牸鐨勪俊鎭�
+	 */
+	private UITableDefineVO tableDefineVO;
+
+	/**
+	 * 琛ㄥ崟鐨勪俊鎭�
+	 */
+	private UIFormDefineVO formDefineVO;
+
+	/**
+	 * 鏌ラ噸灞炴�х殑鐩稿叧琛ㄦ牸鐨勪俊鎭�
+	 */
+	private UITableDefineVO resembleTableVO;
+
+	/**
+	 * 鎸夐挳鐨勫唴瀹�
+	 */
+	private List<SmOperationVO> buttons;
+
+	/**
+	 * 褰撳墠鍒嗙被鏄惁涓哄彾瀛愯妭鐐�
+	 */
+	private boolean leaf;
+
+	public List<SmOperationVO> getButtons() {
+		return buttons;
+	}
+
+	public void setButtons(List<SmOperationVO> buttons) {
+		this.buttons = buttons;
+	}
+
+	public CodeClassifyTemplateVO getTemplateVO() {
+		return templateVO;
+	}
+
+	public void setTemplateVO(CodeClassifyTemplateVO templateVO) {
+		this.templateVO = templateVO;
+	}
+
+	public UITableDefineVO getTableDefineVO() {
+		return tableDefineVO;
+	}
+
+	public void setTableDefineVO(UITableDefineVO tableDefineVO) {
+		this.tableDefineVO = tableDefineVO;
+	}
+
+	public UIFormDefineVO getFormDefineVO() {
+		return formDefineVO;
+	}
+
+	public void setFormDefineVO(UIFormDefineVO formDefineVO) {
+		this.formDefineVO = formDefineVO;
+	}
+
+	public boolean isLeaf() {
+		return leaf;
+	}
+
+	public void setLeaf(boolean leaf) {
+		this.leaf = leaf;
+	}
+
+	public UITableDefineVO getResembleTableVO() {
+		return resembleTableVO;
+	}
+
+	public void setResembleTableVO(UITableDefineVO resembleTableVO) {
+		this.resembleTableVO = resembleTableVO;
+	}
+
+	@Override
+	public String toString() {
+		return "MdmUIInfoVO{" +
+			"templateVO=" + templateVO +
+			", tableDefineVO=" + tableDefineVO +
+			", formDefineVO=" + formDefineVO +
+			", resembleTableVO=" + resembleTableVO +
+			", buttons=" + buttons +
+			", leaf=" + leaf +
+			'}';
+	}
+}
+
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/SmOperationVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/SmOperationVO.java
new file mode 100644
index 0000000..f3c18cc
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/SmOperationVO.java
@@ -0,0 +1,161 @@
+package com.vci.ubcs.code.vo.pagemodel;
+
+
+/**
+ * 鑿滃崟鐨勬寜閽璞�
+ * @author weidy
+ * @date 2022-2-23
+ */
+public class SmOperationVO implements java.io.Serializable{
+
+
+	/**
+	 * 搴忓垪鍖�
+	 */
+	private static final long serialVersionUID = 8193579608741643735L;
+	/**
+	 * 鍔熻兘鐨勪富閿�
+	 */
+	private String functionOid;
+
+	/**
+	 * 鍔熻兘鐨勭紪鍙�
+	 */
+	private String moduleNo;
+
+	/**
+	 * 鍔熻兘鍜屾寜閽叧鑱旂殑涓婚敭
+	 */
+	private String oid;
+
+	/**
+	 * 鍞竴鏍囪瘑绗�
+	 */
+	private String uniqueFlag;
+
+	/**
+	 * 鎻忚堪
+	 */
+	private String description;
+
+	/**
+	 * 鍦ㄥ姛鑳戒腑鐨勬帓搴忓彿
+	 */
+	private String orderNo;
+
+	/**
+	 * 鎸夐挳鍚嶇О锛屾槸鎿嶄綔绫诲瀷鐨勫悕绉�
+	 */
+	private String name;
+
+	/**
+	 * 鎸夐挳鏄电О锛屾槸鍦ㄥ姛鑳藉拰鎸夐挳鐨勫叧鑱斾腑鐨勬樀绉帮紝鍓嶇浣跨敤杩欎釜鏉ユ樉绀烘寜閽�
+	 */
+	private String alias;
+
+	/**
+	 * 鎵ц鐨刯s鍐呭
+	 */
+	private String executeJs;
+
+	/**
+	 * 鍥炬爣鏍峰紡
+	 */
+	private String iconCls;
+
+	public String getFunctionOid() {
+		return functionOid;
+	}
+
+	public void setFunctionOid(String functionOid) {
+		this.functionOid = functionOid;
+	}
+
+	public String getOid() {
+		return oid;
+	}
+
+	public void setOid(String oid) {
+		this.oid = oid;
+	}
+
+	public String getUniqueFlag() {
+		return uniqueFlag;
+	}
+
+	public void setUniqueFlag(String uniqueFlag) {
+		this.uniqueFlag = uniqueFlag;
+	}
+
+	public String getDescription() {
+		return description;
+	}
+
+	public void setDescription(String description) {
+		this.description = description;
+	}
+
+	public String getOrderNo() {
+		return orderNo;
+	}
+
+	public void setOrderNo(String orderNo) {
+		this.orderNo = orderNo;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getAlias() {
+		return alias;
+	}
+
+	public void setAlias(String alias) {
+		this.alias = alias;
+	}
+
+	public String getModuleNo() {
+		return moduleNo;
+	}
+
+	public void setModuleNo(String moduleNo) {
+		this.moduleNo = moduleNo;
+	}
+
+	public String getExecuteJs() {
+		return executeJs;
+	}
+
+	public void setExecuteJs(String executeJs) {
+		this.executeJs = executeJs;
+	}
+
+	public String getIconCls() {
+		return iconCls;
+	}
+
+	public void setIconCls(String iconCls) {
+		this.iconCls = iconCls;
+	}
+
+	@Override
+	public String toString() {
+		return "SmOperationVO{" +
+			"functionOid='" + functionOid + '\'' +
+			", moduleNo='" + moduleNo + '\'' +
+			", oid='" + oid + '\'' +
+			", uniqueFlag='" + uniqueFlag + '\'' +
+			", description='" + description + '\'' +
+			", orderNo='" + orderNo + '\'' +
+			", name='" + name + '\'' +
+			", alias='" + alias + '\'' +
+			", executeJs='" + executeJs + '\'' +
+			", iconCls='" + iconCls + '\'' +
+			'}';
+	}
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/SmUserVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/SmUserVO.java
new file mode 100644
index 0000000..cc937c9
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/SmUserVO.java
@@ -0,0 +1,393 @@
+package com.vci.ubcs.code.vo.pagemodel;
+
+
+import java.util.Date;
+
+/**
+ * 鐢ㄦ埛鏄剧ず瀵硅薄锛屾敞鎰忓拰杩欎釜涓嶅寘鍚瘑鐮佸瓧娈�
+ * @author weidy
+ * @date 2020/1/29
+ */
+public class SmUserVO extends BaseModelVO {
+	/**
+	 * 绂佹淇敼杩欎釜鍊�
+	 */
+	private static final long serialVersionUID = -8583106405033336802L;
+
+	/**
+	 * 鐢ㄦ埛鍚�
+	 */
+	private String id;
+
+	/**
+	 * 鐢ㄦ埛濮撳悕
+	 */
+	private String name;
+
+
+	/**
+	 * 鐢ㄦ埛绫诲瀷
+	 */
+	private String userType;
+
+	/**
+	 * 鐢ㄦ埛绫诲瀷鏄剧ず鏂囨湰
+	 */
+	private String userTypeText;
+
+	/**
+	 * 鎵�灞炰汉鍛�
+	 */
+	private String pkPerson;
+
+	/**
+	 * 鎵�灞炰汉鍛樺悕绉�
+	 */
+	private String pkPersonName;
+
+	/**
+	 * 澶辨晥鏃ユ湡
+	 */
+	private Date disabledate;
+
+	/**
+	 * 閭欢鍦板潃
+	 */
+	private String email;
+
+	/**
+	 * 鐢佃瘽
+	 */
+	private String tel;
+
+	/**
+	 * RTX鑱旂郴鍙�
+	 */
+	private String rtxNo;
+
+	/**
+	 * 瀹炴椂閫氳杞欢璐﹀彿
+	 */
+	private String IMNo;
+
+	/**
+	 * 鎵�灞為儴闂�
+	 */
+	private String pkDepartment;
+
+	/**
+	 * 鎵�灞為儴闂ㄥ悕绉�
+	 */
+	private String pkDepartmentName;
+
+	/**
+	 * 鎵�灞炶亴鍔�
+	 */
+	private String pkDuty;
+
+	/**
+	 * 鎵�灞炶亴鍔″悕绉�
+	 */
+	private String pkDutyName;
+
+	/**
+	 * 鎵�灞炲瘑鐮佸畨鍏ㄧ瓥鐣�
+	 */
+	private String pkPasswordStrategy;
+
+	/**
+	 * 鎵�灞炲瘑鐮佸畨鍏ㄧ瓥鐣�
+	 */
+	private String pkPasswordStrategyName;
+
+	/**
+	 * 鏈�鍚庣櫥褰曟椂闂�
+	 */
+	private Date lastLoginTime;
+
+	/**
+	 * 鏈�鍚庝慨鏀瑰瘑鐮佹椂闂�
+	 */
+	private Date lastModifyPasswordTime;
+
+	/**
+	 * 瀵嗙爜閿欒娆℃暟
+	 */
+	private Integer pwdWrongCount;
+
+	/**
+	 * 鎬у埆
+	 */
+
+	private String sex;
+
+	/**
+	 * 鎬у埆鏄剧ず鍚嶇О
+	 */
+	private String sexText;
+
+	/**
+	 * 榛樿鐨勮瑷�缂栫爜
+	 */
+	private String langCode;
+
+	/**
+	 * 榛樿鐨勮瑷�鍚嶇О
+	 */
+	private String langCodeText;
+
+	/**
+	 * 鏄惁閿佸畾
+	 */
+	private boolean lockFlag;
+
+	/**
+	 * 澶村儚
+	 */
+	private String photo;
+
+	@Override
+	public String getId() {
+		return id;
+	}
+
+	@Override
+	public void setId(String id) {
+		this.id = id;
+	}
+
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	@Override
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getUserType() {
+		return userType;
+	}
+
+	public void setUserType(String userType) {
+		this.userType = userType;
+	}
+
+	public String getUserTypeText() {
+		return userTypeText;
+	}
+
+	public void setUserTypeText(String userTypeText) {
+		this.userTypeText = userTypeText;
+	}
+
+	public String getPkPerson() {
+		return pkPerson;
+	}
+
+	public void setPkPerson(String pkPerson) {
+		this.pkPerson = pkPerson;
+	}
+
+	public String getPkPersonName() {
+		return pkPersonName;
+	}
+
+	public void setPkPersonName(String pkPersonName) {
+		this.pkPersonName = pkPersonName;
+	}
+
+	public Date getDisabledate() {
+		return disabledate;
+	}
+
+	public void setDisabledate(Date disabledate) {
+		this.disabledate = disabledate;
+	}
+
+	public String getEmail() {
+		return email;
+	}
+
+	public void setEmail(String email) {
+		this.email = email;
+	}
+
+	public String getTel() {
+		return tel;
+	}
+
+	public void setTel(String tel) {
+		this.tel = tel;
+	}
+
+	public String getRtxNo() {
+		return rtxNo;
+	}
+
+	public void setRtxNo(String rtxNo) {
+		this.rtxNo = rtxNo;
+	}
+
+	public String getIMNo() {
+		return IMNo;
+	}
+
+	public void setIMNo(String IMNo) {
+		this.IMNo = IMNo;
+	}
+
+	public String getPkDepartment() {
+		return pkDepartment;
+	}
+
+	public void setPkDepartment(String pkDepartment) {
+		this.pkDepartment = pkDepartment;
+	}
+
+	public String getPkDepartmentName() {
+		return pkDepartmentName;
+	}
+
+	public void setPkDepartmentName(String pkDepartmentName) {
+		this.pkDepartmentName = pkDepartmentName;
+	}
+
+	public String getPkDuty() {
+		return pkDuty;
+	}
+
+	public void setPkDuty(String pkDuty) {
+		this.pkDuty = pkDuty;
+	}
+
+	public String getPkDutyName() {
+		return pkDutyName;
+	}
+
+	public void setPkDutyName(String pkDutyName) {
+		this.pkDutyName = pkDutyName;
+	}
+
+	public String getPkPasswordStrategy() {
+		return pkPasswordStrategy;
+	}
+
+	public void setPkPasswordStrategy(String pkPasswordStrategy) {
+		this.pkPasswordStrategy = pkPasswordStrategy;
+	}
+
+	public String getPkPasswordStrategyName() {
+		return pkPasswordStrategyName;
+	}
+
+	public void setPkPasswordStrategyName(String pkPasswordStrategyName) {
+		this.pkPasswordStrategyName = pkPasswordStrategyName;
+	}
+
+	public Date getLastLoginTime() {
+		return lastLoginTime;
+	}
+
+	public void setLastLoginTime(Date lastLoginTime) {
+		this.lastLoginTime = lastLoginTime;
+	}
+
+	public Date getLastModifyPasswordTime() {
+		return lastModifyPasswordTime;
+	}
+
+	public void setLastModifyPasswordTime(Date lastModifyPasswordTime) {
+		this.lastModifyPasswordTime = lastModifyPasswordTime;
+	}
+
+	public Integer getPwdWrongCount() {
+		return pwdWrongCount;
+	}
+
+	public void setPwdWrongCount(Integer pwdWrongCount) {
+		this.pwdWrongCount = pwdWrongCount;
+	}
+
+	public String getSex() {
+		return sex;
+	}
+
+	public void setSex(String sex) {
+		this.sex = sex;
+	}
+
+	public String getSexText() {
+		return sexText;
+	}
+
+	public void setSexText(String sexText) {
+		this.sexText = sexText;
+	}
+
+	public String getLangCode() {
+		return langCode;
+	}
+
+	public void setLangCode(String langCode) {
+		this.langCode = langCode;
+	}
+
+	public String getLangCodeText() {
+		return langCodeText;
+	}
+
+	public void setLangCodeText(String langCodeText) {
+		this.langCodeText = langCodeText;
+	}
+
+	public boolean isLockFlag() {
+		return lockFlag;
+	}
+
+	public void setLockFlag(boolean lockFlag) {
+		this.lockFlag = lockFlag;
+	}
+	public String getPhoto() {
+		return photo;
+	}
+
+	public void setPhoto(String photo) {
+		this.photo = photo;
+	}
+
+	@Override
+	public String toString() {
+		return "SmUserVO{" +
+			"oid='" + getOid() + '\'' +
+			",id='" + id + '\'' +
+			", name='" + name + '\'' +
+			", userType='" + userType + '\'' +
+			", userTypeText='" + userTypeText + '\'' +
+			", pkPerson='" + pkPerson + '\'' +
+			", pkPersonName='" + pkPersonName + '\'' +
+			", disabledate=" + disabledate +
+			", email='" + email + '\'' +
+			", tel='" + tel + '\'' +
+			", rtxNo='" + rtxNo + '\'' +
+			", IMNo='" + IMNo + '\'' +
+			", pkDepartment='" + pkDepartment + '\'' +
+			", pkDepartmentName='" + pkDepartmentName + '\'' +
+			", pkDuty='" + pkDuty + '\'' +
+			", pkDutyName='" + pkDutyName + '\'' +
+			", pkPasswordStrategy='" + pkPasswordStrategy + '\'' +
+			", pkPasswordStrategyName='" + pkPasswordStrategyName + '\'' +
+			", lastLoginTime=" + lastLoginTime +
+			", lastModifyPasswordTime=" + lastModifyPasswordTime +
+			", pwdWrongCount=" + pwdWrongCount +
+			", sex='" + sex + '\'' +
+			", sexText='" + sexText + '\'' +
+			", langCode='" + langCode + '\'' +
+			", langCodeText='" + langCodeText + '\'' +
+			", lockFlag='" + lockFlag + '\'' +
+			", photo='" + photo + '\'' +
+			",description='" + getDescription() + '\'' +
+			'}';
+	}
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/UIFormDefineVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/UIFormDefineVO.java
new file mode 100644
index 0000000..949cb90
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/UIFormDefineVO.java
@@ -0,0 +1,136 @@
+package com.vci.ubcs.code.vo.pagemodel;
+
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 琛ㄥ崟鐨勫畾涔変俊鎭�
+ * @author weidy
+ * @date 2021/2/15
+ */
+public class UIFormDefineVO implements java.io.Serializable {
+
+	/**
+	 * 搴忓垪鍖�
+	 */
+	private static final long serialVersionUID = 4870957433172577436L;
+	/**
+	 * 琛ㄥ崟鐨勪富閿�
+	 */
+	private String oid;
+
+	/**
+	 * 琛ㄥ崟鐨勭紪鍙�
+	 */
+	private String id;
+
+	/**
+	 * 涓氬姟绫诲瀷
+	 */
+	private String btmType;
+
+	/**
+	 * 鏄惁涓洪摼鎺ョ被鍨�
+	 */
+	private boolean linkTypeFlag;
+
+	/**
+	 * 姣忚鏄剧ず澶氬皯鍒�
+	 */
+	private int columnOneRow;
+
+	/**
+	 * 鏌ヨ妯℃澘鍚嶇О
+	 */
+	private String queryTemplateName;
+
+	/**
+	 * 鍖呭惈鐨勬槑缁�
+	 */
+	private List<UIFormItemVO> items = new ArrayList();
+
+	/**
+	 * freeMarker鐨勮〃杈惧紡鐨勫��
+	 */
+	private List<String> freeMarkerEls = new ArrayList<>();
+
+	public String getOid() {
+		return oid;
+	}
+
+	public void setOid(String oid) {
+		this.oid = oid;
+	}
+
+	public String getId() {
+		return id;
+	}
+
+	public void setId(String id) {
+		this.id = id;
+	}
+
+	public String getBtmType() {
+		return btmType;
+	}
+
+	public void setBtmType(String btmType) {
+		this.btmType = btmType;
+	}
+
+	public int getColumnOneRow() {
+		return columnOneRow;
+	}
+
+	public void setColumnOneRow(int columnOneRow) {
+		this.columnOneRow = columnOneRow;
+	}
+
+	public String getQueryTemplateName() {
+		return queryTemplateName;
+	}
+
+	public void setQueryTemplateName(String queryTemplateName) {
+		this.queryTemplateName = queryTemplateName;
+	}
+
+	public List<UIFormItemVO> getItems() {
+		return items;
+	}
+
+	public void setItems(List<UIFormItemVO> items) {
+		this.items = items;
+	}
+
+	public boolean isLinkTypeFlag() {
+		return linkTypeFlag;
+	}
+
+	public void setLinkTypeFlag(boolean linkTypeFlag) {
+		this.linkTypeFlag = linkTypeFlag;
+	}
+
+	public List<String> getFreeMarkerEls() {
+		return freeMarkerEls;
+	}
+
+	public void setFreeMarkerEls(List<String> freeMarkerEls) {
+		this.freeMarkerEls = freeMarkerEls;
+	}
+
+	@Override
+	public String toString() {
+		return "UIFormDefineVO{" +
+			"oid='" + oid + '\'' +
+			", id='" + id + '\'' +
+			", btmType='" + btmType + '\'' +
+			", linkTypeFlag=" + linkTypeFlag +
+			", columnOneRow=" + columnOneRow +
+			", queryTemplateName='" + queryTemplateName + '\'' +
+			", items=" + items +
+			", freeMarkerEls=" + freeMarkerEls +
+			'}';
+	}
+}
+
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/UIFormItemVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/UIFormItemVO.java
new file mode 100644
index 0000000..a4fa296
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/UIFormItemVO.java
@@ -0,0 +1,350 @@
+package com.vci.ubcs.code.vo.pagemodel;
+
+
+import com.vci.ubcs.starter.web.pagemodel.KeyValue;
+import com.vci.ubcs.starter.web.pagemodel.UIFormReferVO;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 琛ㄥ崟鐨勫瓧娈�
+ * @author weidy
+ * @date 2021/2/24
+ */
+public class UIFormItemVO implements java.io.Serializable {
+
+	/**
+	 * 搴忓垪鍖�
+	 */
+	private static final long serialVersionUID = 3589862839886943864L;
+
+	/**
+	 * 瀛楁鍚�
+	 */
+	private String field;
+
+	/**
+	 * 鏄剧ず绫诲瀷
+	 */
+	private String text;
+
+	/**
+	 * 鍙
+	 */
+	private boolean readOnly;
+
+	/**
+	 * 蹇呭~
+	 */
+	private boolean required;
+
+	/**
+	 * 鍞竴
+	 */
+	private boolean unique;
+
+	/**
+	 * 鍏抽敭灞炴��
+	 */
+	private boolean keyAttr;
+
+	/**
+	 * 榛樿鍊�
+	 */
+	private String defaultValue;
+
+	/**
+	 * 绫诲瀷
+	 */
+	private String type = "text";
+
+	/**
+	 * 鏄剧ず琛ㄨ揪寮�
+	 */
+	private String displayExtension;
+
+	/**
+	 * 鏃堕棿鏍煎紡
+	 */
+	private String dateFormate;
+
+	/**
+	 * 鏄惁闅愯棌
+	 */
+	private boolean hidden = false;
+
+	/**
+	 * 鏍¢獙瑙勫垯
+	 */
+	private String verify;
+
+	/**
+	 * 鎻愮ず淇℃伅
+	 */
+	private String tooltips;
+
+	/**
+	 * 鑷畾涔夌被鍚嶇О
+	 */
+	private String customClass;
+
+	/**
+	 * 涓嬫媺鑿滃崟鐨勫悕绉�
+	 */
+	private String comboxKey;
+
+	/**
+	 * 涓嬫媺鑿滃崟鐨勯�夐」鍊�
+	 */
+	private List<KeyValue> data = null;
+
+	/**
+	 * 閫夋嫨搴撶殑鏍囪
+	 */
+	private String selectLibFlag;
+
+	/**
+	 * 鍙傜収鏄剧ず鐨勫瓧娈�
+	 */
+	private String showField;
+
+	/**
+	 * 鍙傜収鐨勪俊鎭�
+	 */
+	private UIFormReferVO referConfig;
+
+	/**
+	 * 闄勫姞灞炴��
+	 */
+	private Map<String,String> extendAttrMap;
+
+	/**
+	 * 鍘熸湰鐨勫睘鎬�
+	 */
+	private String extendAttrString;
+
+	/**
+	 * 鍓嶇紑
+	 */
+	private String prefix;
+
+	/**
+	 * 鍚庣紑
+	 */
+	private String suffix;
+
+	public boolean isKeyAttr() {
+		return keyAttr;
+	}
+
+	public void setKeyAttr(boolean keyAttr) {
+		this.keyAttr = keyAttr;
+	}
+
+	public String getField() {
+		return field;
+	}
+
+	public void setField(String field) {
+		this.field = field;
+	}
+
+	public String getText() {
+		return text;
+	}
+
+	public void setText(String text) {
+		this.text = text;
+	}
+
+	public boolean isReadOnly() {
+		return readOnly;
+	}
+
+	public void setReadOnly(boolean readOnly) {
+		this.readOnly = readOnly;
+	}
+
+	public boolean isRequired() {
+		return required;
+	}
+
+	public void setRequired(boolean required) {
+		this.required = required;
+	}
+
+	public String getDefaultValue() {
+		return defaultValue;
+	}
+
+	public void setDefaultValue(String defaultValue) {
+		this.defaultValue = defaultValue;
+	}
+
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+	public String getDisplayExtension() {
+		return displayExtension;
+	}
+
+	public void setDisplayExtension(String displayExtension) {
+		this.displayExtension = displayExtension;
+	}
+
+	public String getDateFormate() {
+		return dateFormate;
+	}
+
+	public void setDateFormate(String dateFormate) {
+		this.dateFormate = dateFormate;
+	}
+
+	public boolean isHidden() {
+		return hidden;
+	}
+
+	public void setHidden(boolean hidden) {
+		this.hidden = hidden;
+	}
+
+	public String getVerify() {
+		return verify;
+	}
+
+	public void setVerify(String verify) {
+		this.verify = verify;
+	}
+
+	public String getTooltips() {
+		return tooltips;
+	}
+
+	public void setTooltips(String tooltips) {
+		this.tooltips = tooltips;
+	}
+
+	public String getCustomClass() {
+		return customClass;
+	}
+
+	public void setCustomClass(String customClass) {
+		this.customClass = customClass;
+	}
+
+	public String getComboxKey() {
+		return comboxKey;
+	}
+
+	public void setComboxKey(String comboxKey) {
+		this.comboxKey = comboxKey;
+	}
+
+	public List<KeyValue> getData() {
+		return data;
+	}
+
+	public void setData(List<KeyValue> data) {
+		this.data = data;
+	}
+
+	public String getShowField() {
+		return showField;
+	}
+
+	public void setShowField(String showField) {
+		this.showField = showField;
+	}
+
+	public UIFormReferVO getReferConfig() {
+		return referConfig;
+	}
+
+	public void setReferConfig(UIFormReferVO referConfig) {
+		this.referConfig = referConfig;
+	}
+
+	public Map<String, String> getExtendAttrMap() {
+		return extendAttrMap;
+	}
+
+	public void setExtendAttrMap(Map<String, String> extendAttrMap) {
+		this.extendAttrMap = extendAttrMap;
+	}
+
+	public String getExtendAttrString() {
+		return extendAttrString;
+	}
+
+	public void setExtendAttrString(String extendAttrString) {
+		this.extendAttrString = extendAttrString;
+	}
+
+	public boolean isUnique() {
+		return unique;
+	}
+
+	public void setUnique(boolean unique) {
+		this.unique = unique;
+	}
+
+
+	public String getPrefix() {
+		return prefix;
+	}
+
+	public void setPrefix(String prefix) {
+		this.prefix = prefix;
+	}
+
+	public String getSuffix() {
+		return suffix;
+	}
+
+	public void setSuffix(String suffix) {
+		this.suffix = suffix;
+	}
+
+	public String getSelectLibFlag() {
+		return selectLibFlag;
+	}
+
+	public void setSelectLibFlag(String selectLibFlag) {
+		this.selectLibFlag = selectLibFlag;
+	}
+
+	@Override
+	public String toString() {
+		return "UIFormItemVO{" +
+			"field='" + field + '\'' +
+			", text='" + text + '\'' +
+			", readOnly=" + readOnly +
+			", required=" + required +
+			", unique=" + unique +
+			", keyAttr=" + keyAttr +
+			", defaultValue='" + defaultValue + '\'' +
+			", type='" + type + '\'' +
+			", displayExtension='" + displayExtension + '\'' +
+			", dateFormate='" + dateFormate + '\'' +
+			", hidden=" + hidden +
+			", verify='" + verify + '\'' +
+			", tooltips='" + tooltips + '\'' +
+			", customClass='" + customClass + '\'' +
+			", comboxKey='" + comboxKey + '\'' +
+			", data=" + data +
+			", selectLibFlag='" + selectLibFlag + '\'' +
+			", showField='" + showField + '\'' +
+			", referConfig=" + referConfig +
+			", extendAttrMap=" + extendAttrMap +
+			", extendAttrString='" + extendAttrString + '\'' +
+			", prefix='" + prefix + '\'' +
+			", suffix='" + suffix + '\'' +
+			'}';
+	}
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/UITableDefineVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/UITableDefineVO.java
new file mode 100644
index 0000000..be969ff
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/UITableDefineVO.java
@@ -0,0 +1,237 @@
+package com.vci.ubcs.code.vo.pagemodel;
+
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 琛ㄦ牸瀹氫箟
+ * @author weidy
+ * @date 2021/2/15
+ */
+public class UITableDefineVO implements java.io.Serializable {
+
+	/**
+	 * 搴忓垪鍖�
+	 */
+	private static final long serialVersionUID = 1664618940805858993L;
+	/**
+	 * 琛ㄦ牸鐨勪富閿�
+	 */
+	private String oid;
+
+	/**
+	 * 琛ㄥ崟鐨勭紪鍙�
+	 */
+	private String id;
+
+	/**
+	 * 涓氬姟绫诲瀷
+	 */
+	private String btmType;
+
+	/**
+	 * 鏄惁涓洪摼鎺ョ被鍨�
+	 */
+	private boolean linkTypeFlag;
+
+	/**
+	 * 鏌ヨ妯℃澘鍚嶇О
+	 */
+	private String queryTemplateName;
+
+	/**
+	 * 椤甸潰
+	 */
+	private UITablePageVO pageVO;
+
+	/**
+	 * 鍒嗛〉鐨勫唴瀹�
+	 */
+	private Integer[] limits;
+
+	/**
+	 * 闄勫姞鏉′欢
+	 */
+	private String whereSql;
+
+	/**
+	 * 鏄惁鏄剧ず鏌ヨ鍖哄煙
+	 */
+	private boolean displayQueryArea;
+
+	/**
+	 * 鏄剧ず鏂囦欢澶�
+	 */
+	private boolean displayFolder ;
+
+	/**
+	 * 鐖跺悕绉扮殑瀛楁
+	 */
+	private String folderParentField;
+
+	/**
+	 * 鍖呭惈鐨勫垪
+	 */
+	private List<List<UITableFieldVO>> cols;
+
+	/**
+	 * 鏄惁鍖呭惈
+	 */
+	private boolean hasEditor;
+
+	/**
+	 * 楂樼骇鏌ヨ鐨勫垪
+	 */
+	private List<UITableFieldVO> seniorQueryColumns;
+
+	/**
+	 * 鏌ヨ鐨勫垪
+	 */
+	private List<UITableFieldVO> queryColumns;
+	/**
+	 * freeMarker鐨勮〃杈惧紡鐨勫��
+	 */
+	private List<String> freeMarkerEls = new ArrayList<>();
+
+	public boolean isDisplayQueryArea() {
+		return displayQueryArea;
+	}
+
+	public void setDisplayQueryArea(boolean displayQueryArea) {
+		this.displayQueryArea = displayQueryArea;
+	}
+
+	public boolean isDisplayFolder() {
+		return displayFolder;
+	}
+
+	public void setDisplayFolder(boolean displayFolder) {
+		this.displayFolder = displayFolder;
+	}
+
+	public String getFolderParentField() {
+		return folderParentField;
+	}
+
+	public void setFolderParentField(String folderParentField) {
+		this.folderParentField = folderParentField;
+	}
+
+	public String getOid() {
+		return oid;
+	}
+
+	public void setOid(String oid) {
+		this.oid = oid;
+	}
+
+	public String getId() {
+		return id;
+	}
+
+	public void setId(String id) {
+		this.id = id;
+	}
+
+	public String getBtmType() {
+		return btmType;
+	}
+
+	public void setBtmType(String btmType) {
+		this.btmType = btmType;
+	}
+
+	public boolean isLinkTypeFlag() {
+		return linkTypeFlag;
+	}
+
+	public void setLinkTypeFlag(boolean linkTypeFlag) {
+		this.linkTypeFlag = linkTypeFlag;
+	}
+
+	public String getQueryTemplateName() {
+		return queryTemplateName;
+	}
+
+	public void setQueryTemplateName(String queryTemplateName) {
+		this.queryTemplateName = queryTemplateName;
+	}
+
+	public List<List<UITableFieldVO>> getCols() {
+		return cols;
+	}
+
+	public void setCols(List<List<UITableFieldVO>> cols) {
+		this.cols = cols;
+	}
+
+	public List<UITableFieldVO> getQueryColumns() {
+		return queryColumns;
+	}
+
+	public void setQueryColumns(List<UITableFieldVO> queryColumns) {
+		this.queryColumns = queryColumns;
+	}
+
+	public UITablePageVO getPageVO() {
+		return pageVO;
+	}
+
+	public void setPageVO(UITablePageVO pageVO) {
+		this.pageVO = pageVO;
+	}
+
+	public Integer[] getLimits() {
+		return limits;
+	}
+
+	public void setLimits(Integer[] limits) {
+		this.limits = limits;
+	}
+
+	public String getWhereSql() {
+		return whereSql;
+	}
+
+	public void setWhereSql(String whereSql) {
+		this.whereSql = whereSql;
+	}
+
+	public List<UITableFieldVO> getSeniorQueryColumns() {
+		return seniorQueryColumns;
+	}
+
+	public void setSeniorQueryColumns(List<UITableFieldVO> seniorQueryColumns) {
+		this.seniorQueryColumns = seniorQueryColumns;
+	}
+
+	public boolean isHasEditor() {
+		return hasEditor;
+	}
+
+	public void setHasEditor(boolean hasEditor) {
+		this.hasEditor = hasEditor;
+	}
+
+
+	@Override
+	public String toString() {
+		return "UITableDefineVO{" +
+			"oid='" + oid + '\'' +
+			", id='" + id + '\'' +
+			", btmType='" + btmType + '\'' +
+			", linkTypeFlag=" + linkTypeFlag +
+			", queryTemplateName='" + queryTemplateName + '\'' +
+			", pageVO=" + pageVO +
+			", limits=" + Arrays.toString(limits) +
+			", whereSql='" + whereSql + '\'' +
+			", displayQueryArea=" + displayQueryArea +
+			", displayFolder=" + displayFolder +
+			", folderParentField='" + folderParentField + '\'' +
+			", cols=" + cols +
+			", queryColumns=" + queryColumns +
+			'}';
+	}
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/UITableFieldVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/UITableFieldVO.java
new file mode 100644
index 0000000..1ecd984
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/UITableFieldVO.java
@@ -0,0 +1,402 @@
+package com.vci.ubcs.code.vo.pagemodel;
+
+
+import com.vci.ubcs.starter.web.pagemodel.KeyValue;
+import com.vci.ubcs.starter.web.pagemodel.UIFormReferVO;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 鍒楄〃鐨勫垪鐨勪俊鎭�
+ * @author weidy
+ * @date 2021/2/25
+ */
+public class UITableFieldVO implements java.io.Serializable{
+
+	/**
+	 * 鍒楀悕
+	 */
+	private String field;
+
+	/**
+	 * 鏄剧ず鐨勫悕绉�
+	 */
+	private String title;
+
+	/**
+	 * 瀛楁绫诲瀷
+	 */
+	private String fieldType;
+
+	/**
+	 * 鏄惁鎺掑簭
+	 */
+	private boolean sort = false;
+
+	/**
+	 * 鎺掑簭瀛楁
+	 */
+	private String sortField ;
+
+	/**
+	 * 闅愯棌鐨勫瓧娈�
+	 */
+	private boolean hidden = false;
+
+	/**
+	 * 瀹藉害
+	 */
+	private Integer width;
+
+	/**
+	 * 鏈�灏忕殑瀹藉害
+	 */
+	private Integer minWidth;
+
+	/**
+	 * 鍥哄畾浣嶇疆锛屾敮鎸乺ight鍜宭eft
+	 */
+	private String fixed;
+
+	/**
+	 * 鎵�鍗犵殑鍒�
+	 */
+	private Integer colspan = 1;
+
+	/**
+	 * 鎵�绔欑殑琛�
+	 */
+	private Integer rowspan = 1;
+
+	/**
+	 * 妯℃澘鐨勭殑鍐呭
+	 */
+	private String templet;
+
+	/**
+	 * 鏃堕棿鏍煎紡
+	 */
+	private String dateFormate;
+
+	/**
+	 * 鏄惁鎿嶄綔鍒�
+	 */
+	private boolean optionField = false;
+
+	/**
+	 * 鎿嶄綔鍒楀寘鍚殑鎸夐挳
+	 */
+	private List<KeyValue> optionButtons;
+
+	/**
+	 * 浜嬩欢-鎵цjs鐨勬槧灏�
+	 */
+	private Map<String,String> optionJsMap;
+
+	/**
+	 * 鏄惁缂栬緫
+	 */
+	private String edit;
+
+	/**
+	 * 缂栬緫鐨勯厤缃�
+	 */
+	private String editConfig ;
+
+	/**
+	 * 瀵归綈鏂瑰紡
+	 */
+	private String align = "left";
+
+	/**
+	 * 鐗规畩鏍峰紡
+	 */
+	private String style;
+
+	/**
+	 * 鍗曞厓鏍肩偣鍑讳簨浠�
+	 */
+	private String event;
+
+	/**
+	 * 绂佺敤鎷栨嫿鍒楀
+	 */
+	private boolean unresize = false;
+
+	/**
+	 * 涓嬫媺鑿滃崟鐨勫悕绉�
+	 */
+	private String comboxKey;
+
+	/**
+	 * 涓嬫媺鑿滃崟鐨勯�夐」鍊�
+	 */
+	private List<KeyValue> data = new ArrayList<>();
+
+	/**
+	 * 鍙傜収鏄剧ず鐨勫瓧娈�
+	 */
+	private String showField;
+
+	/**
+	 * 鏌ヨ鐨勫瓧娈�
+	 */
+	private String queryField;
+
+	/**
+	 * 鍙傜収鐨勪俊鎭�
+	 */
+	private UIFormReferVO referConfig;
+
+	public Map<String, String> getOptionJsMap() {
+		return optionJsMap;
+	}
+
+	public void setOptionJsMap(Map<String, String> optionJsMap) {
+		this.optionJsMap = optionJsMap;
+	}
+
+	public String getFieldType() {
+		return fieldType;
+	}
+
+	public void setFieldType(String fieldType) {
+		this.fieldType = fieldType;
+	}
+
+	public String getDateFormate() {
+		return dateFormate;
+	}
+
+	public void setDateFormate(String dateFormate) {
+		this.dateFormate = dateFormate;
+	}
+
+	public String getField() {
+		return field;
+	}
+
+	public void setField(String field) {
+		this.field = field;
+	}
+
+	public String getTitle() {
+		return title;
+	}
+
+	public void setTitle(String title) {
+		this.title = title;
+	}
+
+	public boolean isSort() {
+		return sort;
+	}
+
+	public void setSort(boolean sort) {
+		this.sort = sort;
+	}
+
+	public String getSortField() {
+		return sortField;
+	}
+
+	public void setSortField(String sortField) {
+		this.sortField = sortField;
+	}
+
+	public boolean isHidden() {
+		return hidden;
+	}
+
+	public void setHidden(boolean hidden) {
+		this.hidden = hidden;
+	}
+
+	public Integer getWidth() {
+		return width;
+	}
+
+	public void setWidth(Integer width) {
+		this.width = width;
+	}
+
+	public Integer getMinWidth() {
+		return minWidth;
+	}
+
+	public void setMinWidth(Integer minWidth) {
+		this.minWidth = minWidth;
+	}
+
+	public String getFixed() {
+		return fixed;
+	}
+
+	public void setFixed(String fixed) {
+		this.fixed = fixed;
+	}
+
+	public Integer getColspan() {
+		return colspan;
+	}
+
+	public void setColspan(Integer colspan) {
+		this.colspan = colspan;
+	}
+
+	public Integer getRowspan() {
+		return rowspan;
+	}
+
+	public void setRowspan(Integer rowspan) {
+		this.rowspan = rowspan;
+	}
+
+	public String getTemplet() {
+		return templet;
+	}
+
+	public void setTemplet(String templet) {
+		this.templet = templet;
+	}
+
+	public boolean isOptionField() {
+		return optionField;
+	}
+
+	public void setOptionField(boolean optionField) {
+		this.optionField = optionField;
+	}
+
+	public List<KeyValue> getOptionButtons() {
+		return optionButtons;
+	}
+
+	public void setOptionButtons(List<KeyValue> optionButtons) {
+		this.optionButtons = optionButtons;
+	}
+
+	public String getEdit() {
+		return edit;
+	}
+
+	public void setEdit(String edit) {
+		this.edit = edit;
+	}
+
+	public String getEditConfig() {
+		return editConfig;
+	}
+
+	public void setEditConfig(String editConfig) {
+		this.editConfig = editConfig;
+	}
+
+	public String getAlign() {
+		return align;
+	}
+
+	public void setAlign(String align) {
+		this.align = align;
+	}
+
+	public String getStyle() {
+		return style;
+	}
+
+	public void setStyle(String style) {
+		this.style = style;
+	}
+
+	public String getEvent() {
+		return event;
+	}
+
+	public void setEvent(String event) {
+		this.event = event;
+	}
+
+	public boolean isUnresize() {
+		return unresize;
+	}
+
+	public void setUnresize(boolean unresize) {
+		this.unresize = unresize;
+	}
+
+	public String getComboxKey() {
+		return comboxKey;
+	}
+
+	public void setComboxKey(String comboxKey) {
+		this.comboxKey = comboxKey;
+	}
+
+	public List<KeyValue> getData() {
+		return data;
+	}
+
+	public void setData(List<KeyValue> data) {
+		this.data = data;
+	}
+
+	public String getShowField() {
+		return showField;
+	}
+
+	public void setShowField(String showField) {
+		this.showField = showField;
+	}
+
+	public UIFormReferVO getReferConfig() {
+		return referConfig;
+	}
+
+	public void setReferConfig(UIFormReferVO referConfig) {
+		this.referConfig = referConfig;
+	}
+
+	public String getQueryField() {
+		return queryField;
+	}
+
+	public void setQueryField(String queryField) {
+		this.queryField = queryField;
+	}
+
+	@Override
+	public String toString() {
+		return "UITableFieldVO{" +
+			"field='" + field + '\'' +
+			", title='" + title + '\'' +
+			", fieldType='" + fieldType + '\'' +
+			", sort=" + sort +
+			", sortField='" + sortField + '\'' +
+			", hidden=" + hidden +
+			", width=" + width +
+			", minWidth=" + minWidth +
+			", fixed='" + fixed + '\'' +
+			", colspan=" + colspan +
+			", rowspan=" + rowspan +
+			", templet='" + templet + '\'' +
+			", dateFormate='" + dateFormate + '\'' +
+			", optionField=" + optionField +
+			", optionButtons=" + optionButtons +
+			", optionJsMap=" + optionJsMap +
+			", edit='" + edit + '\'' +
+			", editConfig='" + editConfig + '\'' +
+			", align='" + align + '\'' +
+			", style='" + style + '\'' +
+			", event='" + event + '\'' +
+			", unresize=" + unresize +
+			", comboxKey='" + comboxKey + '\'' +
+			", data=" + data +
+			", showField='" + showField + '\'' +
+			", queryField='" + queryField + '\'' +
+			", referConfig=" + referConfig +
+			'}';
+	}
+}
+
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/UITablePageVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/UITablePageVO.java
new file mode 100644
index 0000000..44a675e
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/UITablePageVO.java
@@ -0,0 +1,49 @@
+package com.vci.ubcs.code.vo.pagemodel;
+
+
+/**
+ * 琛ㄦ牸鐨勫垎椤靛璞�
+ * @author weidy
+ * @date 2021/2/25
+ */
+public class UITablePageVO implements java.io.Serializable{
+
+	/**
+	 * 搴忓垪鍖�
+	 */
+	private static final long serialVersionUID = -6338518925812603615L;
+	/**
+	 * 姣忛〉鏄剧ず鏁伴噺
+	 */
+	private Integer limit = -1;
+
+	/**
+	 * 褰撳墠椤垫暟
+	 */
+	private Integer page = 1;
+
+	public Integer getLimit() {
+		return limit;
+	}
+
+	public void setLimit(Integer limit) {
+		this.limit = limit;
+	}
+
+	public Integer getPage() {
+		return page;
+	}
+
+	public void setPage(Integer page) {
+		this.page = page;
+	}
+
+	@Override
+	public String toString() {
+		return "UITablePageVO{" +
+			"limit=" + limit +
+			", page=" + page +
+			'}';
+	}
+}
+
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyTemplateAttrController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyTemplateAttrController.java
index 92fabc6..07c50ad 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyTemplateAttrController.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyTemplateAttrController.java
@@ -18,10 +18,15 @@
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.code.dto.CodeClassifyTemplateAttrDTO;
 import com.vci.ubcs.code.entity.CodeClassifyTemplateAttr;
 import com.vci.ubcs.code.service.ICodeClassifyTemplateAttrService;
+import com.vci.ubcs.code.vo.CodeOsbtmtypeattributeVO;
 import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
-import com.vci.ubcs.code.wrapper.CodeClstempattrWrapper;
+import com.vci.ubcs.code.wrapper.CodeClassifyTemplateAttrWrapper;
+import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
+import com.vci.ubcs.starter.web.pagemodel.DataGrid;
+import com.vci.ubcs.starter.web.util.VciBaseUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -31,9 +36,12 @@
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
+import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
+import java.util.Collection;
+import java.util.List;
 
 /**
  * 缂栫爜搴撳畾涔�-妯℃澘灞炴�� 鎺у埗鍣�
@@ -57,7 +65,7 @@
 	@ApiOperation(value = "璇︽儏", notes = "浼犲叆CodeClstempattr")
 	public R<CodeClassifyTemplateAttrVO> detail(CodeClassifyTemplateAttr CodeClstempattr) {
 		CodeClassifyTemplateAttr detail = CodeClstempattrService.getOne(Condition.getQueryWrapper(CodeClstempattr));
-		return R.data(CodeClstempattrWrapper.build().entityVO(detail));
+		return R.data(CodeClassifyTemplateAttrWrapper.build().entityVO(detail));
 	}
 	/**
 	 * 缂栫爜搴撳畾涔�-妯℃澘灞炴�� 鍒嗛〉
@@ -67,7 +75,7 @@
 	@ApiOperation(value = "鍒嗛〉", notes = "浼犲叆CodeClstempattr")
 	public R<IPage<CodeClassifyTemplateAttrVO>> list(CodeClassifyTemplateAttr CodeClstempattr, Query query) {
 		IPage<CodeClassifyTemplateAttr> pages = CodeClstempattrService.page(Condition.getPage(query), Condition.getQueryWrapper(CodeClstempattr));
-		return R.data(CodeClstempattrWrapper.build().pageVO(pages));
+		return R.data(CodeClassifyTemplateAttrWrapper.build().pageVO(pages));
 	}
 
 	/**
@@ -122,4 +130,131 @@
 	}
 
 
+	/**
+	 * 涓婚搴撳垎绫荤殑妯℃澘灞炴�у垪琛�
+	 * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+	 * @return 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф樉绀哄璞″垪琛�
+	 */
+	@GetMapping("/gridCodeClassifyTemplateAttr")
+	public DataGrid<CodeClassifyTemplateAttrVO> gridCodeClassifyTemplateAttr(BaseQueryObject baseQueryObject){
+		if(baseQueryObject == null){
+			baseQueryObject = new BaseQueryObject();
+		}
+		return CodeClstempattrService.gridCodeClassifyTemplateAttr(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+	}
+
+	/**
+	 * 澧炲姞 涓婚搴撳垎绫荤殑妯℃澘灞炴��
+	 * @param codeClassifyTemplateAttrDTO 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф暟鎹紶杈撳璞�
+	 * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+	 */
+	@PostMapping( "/addSave")
+	public R<CodeClassifyTemplateAttrVO> addSave(@RequestBody CodeClassifyTemplateAttrDTO codeClassifyTemplateAttrDTO){
+		CodeClassifyTemplateAttrVO codeClassifyTemplateAttrVO = CodeClstempattrService.addSave(codeClassifyTemplateAttrDTO);
+		return R.data(codeClassifyTemplateAttrVO);
+	}
+
+	/**
+	 * 鎵归噺淇濆瓨鍒楄〃鏁版嵁
+	 * @param list
+	 * @return
+	 */
+	@PostMapping( "/batchAddSave")
+	public R<List<CodeClassifyTemplateAttrVO>> batchAddSaves(@RequestBody List<CodeClassifyTemplateAttrDTO> list){
+		if(CollectionUtils.isEmpty(list)){
+			return R.fail("鍒楄〃涓嶈兘涓虹┖!");
+		}
+		List<CodeClassifyTemplateAttrVO> codeClassifyTemplateAttrVOs = CodeClstempattrService.batchAddSave(list);
+		return R.data(codeClassifyTemplateAttrVOs);
+	}
+
+	/**
+	 * 淇敼 涓婚搴撳垎绫荤殑妯℃澘灞炴��
+	 * @param codeClassifyTemplateAttrDTO 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф暟鎹紶杈撳璞�
+	 * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞�
+	 */
+	@PutMapping("/editSave")
+	public R<CodeClassifyTemplateAttrVO> editSave(@RequestBody CodeClassifyTemplateAttrDTO codeClassifyTemplateAttrDTO){
+		return CodeClstempattrService.editSave(codeClassifyTemplateAttrDTO);
+	}
+
+	/**
+	 * 鍒犻櫎涓婚搴撳垎绫荤殑妯℃澘灞炴��
+	 * @param codeClassifyTemplateAttrDTO 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+	 * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+	 */
+	@DeleteMapping( "/deleteData")
+	public R delCodeClassifyTemplateAttr(@RequestBody CodeClassifyTemplateAttrDTO codeClassifyTemplateAttrDTO) {
+		return CodeClstempattrService.deleteCodeClassifyTemplateAttr(codeClassifyTemplateAttrDTO);
+	}
+
+	/**
+	 * 涓婚敭鑾峰彇涓婚搴撳垎绫荤殑妯℃澘灞炴��
+	 * @param oid 涓婚敭
+	 * @return 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф樉绀哄璞�
+	 */
+	@GetMapping("/getObjectByOid")
+	public R<CodeClassifyTemplateAttrVO> getObjectByOid(String oid){
+		CodeClassifyTemplateAttrVO codeClassifyTemplateAttrVO = CodeClstempattrService.getObjectByOid(oid);
+		return R.data(codeClassifyTemplateAttrVO);
+	}
+
+
+	/**
+	 * 涓婚敭鎵归噺鑾峰彇涓婚搴撳垎绫荤殑妯℃澘灞炴��
+	 * @param oids 涓婚敭锛屽涓互閫楀彿鍒嗛殧锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+	 * @return 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф樉绀哄璞�
+	 */
+	@GetMapping("/listDataByOids")
+	public R listCodeClassifyTemplateAttrByOids(String oids){
+		Collection<CodeClassifyTemplateAttrVO> voCollection =  CodeClstempattrService.listCodeClassifyTemplateAttrByOids(VciBaseUtil.str2List(oids));
+//		BaseResult baseResult = BaseResult.success();
+//		baseResult.setData(voCollection);
+		return  R.data(voCollection);
+	}
+
+	/**
+	 * 鍙傜収涓婚搴撳垎绫荤殑妯℃澘灞炴�у垪琛�
+	 * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+	 * @return 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
+	 */
+	@GetMapping("/refDataGrid")
+	public DataGrid<CodeClassifyTemplateAttrVO> refDataGridCodeClassifyTemplateAttr(BaseQueryObject baseQueryObject){
+		if(baseQueryObject == null){
+			baseQueryObject = new BaseQueryObject();
+		}
+		return CodeClstempattrService.refDataGridCodeClassifyTemplateAttr(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+	}
+
+	/**
+	 * 鏌ヨ杩欎釜涓氬姟绫诲瀷涓嬬殑鎵�鏈夊睘鎬�,鎺掗櫎鎺夎繖涓ā鏉垮凡缁忓瓨鍦ㄧ殑灞炴��
+	 * @param baseQueryObject
+	 * @return
+	 */
+	@GetMapping("/codeClassifyTemplateAttrByBtm")
+	public DataGrid<CodeOsbtmtypeattributeVO> codeClassifyTemplateAttrByBtm(BaseQueryObject baseQueryObject){
+		return CodeClstempattrService.codeClassifyTemplateAttrByBtm(baseQueryObject);
+	}
+
+	/**
+	 * 鏌ヨ杩欎釜涓氬姟绫诲瀷涓嬨�佽繖涓ā鏉垮凡缁忓瓨鍦ㄧ殑灞炴��
+	 * @param baseQueryObject
+	 * @return
+	 */
+	@GetMapping("/codeClassifyTemplateAttrByBtmHave")
+	public DataGrid<CodeOsbtmtypeattributeVO> codeClassifyTemplateAttrByBtmHave(BaseQueryObject baseQueryObject){
+		return CodeClstempattrService.codeClassifyTemplateAttrByBtmHave(baseQueryObject);
+	}
+
+	/**
+	 * 鍚屾鍒板叾浠栨ā鏉�
+	 * @param codeClassifyAttrDTO   id 鑻辨枃鍚嶇О
+	 * @return 鎵ц缁撴灉
+	 */
+	@PostMapping( "/copyto")
+	public R copyto(@RequestBody CodeClassifyTemplateAttrDTO codeClassifyAttrDTO) {
+		return CodeClstempattrService.copyto(codeClassifyAttrDTO);
+	}
+
+
 }
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/CodeClassifyTemplateController.java
similarity index 68%
rename from Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClstemplateController.java
rename to Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyTemplateController.java
index 53c4684..9cea828 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/CodeClassifyTemplateController.java
@@ -19,14 +19,16 @@
 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.dto.CodeClstemplateDTO;
-import com.vci.ubcs.code.entity.CodeClstemplateEntity;
+import com.vci.ubcs.code.dto.CodeClassifyTemplateDTO;
+import com.vci.ubcs.code.entity.CodeClassifyTemplate;
 import com.vci.ubcs.code.enumpack.CodeClassifyTemplateLC;
-import com.vci.ubcs.code.mapper.CodeClstemplateMapper;
+import com.vci.ubcs.code.mapper.CodeClassifyTemplateMapper;
 import com.vci.ubcs.code.service.ICodeClstemplateService;
-import com.vci.ubcs.code.vo.CodeClstemplateVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO;
 import com.vci.ubcs.starter.revision.model.TreeQueryObject;
-import com.vci.ubcs.code.wrapper.PlCodeClstemplateWrapper;
+import com.vci.ubcs.code.wrapper.CodeClassifyTemplateWrapper;
+import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
+import com.vci.ubcs.starter.web.pagemodel.DataGrid;
 import com.vci.ubcs.starter.web.pagemodel.Tree;
 import com.vci.ubcs.starter.web.util.VciBaseUtil;
 import io.swagger.annotations.Api;
@@ -52,13 +54,13 @@
  */
 @RestController
 @AllArgsConstructor
-@RequestMapping("/codeClstemplate")
+@RequestMapping("/codeClassifyTemplateController")
 @Api(value = "缂栫爜搴撳畾涔�-妯℃澘绠$悊", tags = "缂栫爜搴撳畾涔�-妯℃澘绠$悊鎺ュ彛")
-public class CodeClstemplateController extends BladeController {
+public class CodeClassifyTemplateController extends BladeController {
 
 	private final ICodeClstemplateService plCodeClstemplateService;
 
-	CodeClstemplateMapper codeClstemplateMapper;
+	CodeClassifyTemplateMapper codeClassifyTemplateMapper;
 
 	/**
 	 * 缂栫爜搴撳畾涔�-妯℃澘绠$悊 璇︽儏
@@ -66,9 +68,9 @@
 	@GetMapping("/detail")
 	@ApiOperationSupport(order = 1)
 	@ApiOperation(value = "璇︽儏", notes = "浼犲叆plCodeClstemplate")
-	public R<CodeClstemplateVO> detail(CodeClstemplateEntity plCodeClstemplate) {
-		CodeClstemplateEntity detail = plCodeClstemplateService.getOne(Condition.getQueryWrapper(plCodeClstemplate));
-		return R.data(PlCodeClstemplateWrapper.build().entityVO(detail));
+	public R<CodeClassifyTemplateVO> detail(CodeClassifyTemplate plCodeClstemplate) {
+		CodeClassifyTemplate detail = plCodeClstemplateService.getOne(Condition.getQueryWrapper(plCodeClstemplate));
+		return R.data(CodeClassifyTemplateWrapper.build().entityVO(detail));
 	}
 	/**
 	 * 缂栫爜搴撳畾涔�-妯℃澘绠$悊 鍒嗛〉,鍒嗙被妯℃澘鍒楄〃瀵瑰簲浠ュ墠骞冲彴鐨刧ridCodeClassifyTemplate
@@ -76,9 +78,9 @@
 	@GetMapping("/list")
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "鍒嗛〉", notes = "浼犲叆plCodeClstemplate")
-	public R<IPage<CodeClstemplateVO>> list(CodeClstemplateEntity plCodeClstemplate, Query query) {
-		IPage<CodeClstemplateEntity> pages = plCodeClstemplateService.page(Condition.getPage(query), Condition.getQueryWrapper(plCodeClstemplate));
-		return R.data(PlCodeClstemplateWrapper.build().pageVO(pages));
+	public R<IPage<CodeClassifyTemplateVO>> list(CodeClassifyTemplate plCodeClstemplate, Query query) {
+		IPage<CodeClassifyTemplate> pages = plCodeClstemplateService.page(Condition.getPage(query), Condition.getQueryWrapper(plCodeClstemplate));
+		return R.data(CodeClassifyTemplateWrapper.build().pageVO(pages));
 	}
 
 	/**
@@ -87,8 +89,8 @@
 	@GetMapping("/page")
 	@ApiOperationSupport(order = 3)
 	@ApiOperation(value = "鍒嗛〉", notes = "浼犲叆plCodeClstemplate")
-	public R<IPage<CodeClstemplateVO>> page(CodeClstemplateVO plCodeClstemplate, Query query) {
-		IPage<CodeClstemplateVO> pages = plCodeClstemplateService.selectPlCodeClstemplatePage(Condition.getPage(query), plCodeClstemplate);
+	public R<IPage<CodeClassifyTemplateVO>> page(CodeClassifyTemplateVO plCodeClstemplate, Query query) {
+		IPage<CodeClassifyTemplateVO> pages = plCodeClstemplateService.selectPlCodeClstemplatePage(Condition.getPage(query), plCodeClstemplate);
 		return R.data(pages);
 	}
 
@@ -98,7 +100,7 @@
 	@PostMapping("/save")
 	@ApiOperationSupport(order = 4)
 	@ApiOperation(value = "鏂板", notes = "浼犲叆plCodeClstemplate")
-	public R save(@Valid @RequestBody CodeClstemplateEntity plCodeClstemplate) {
+	public R save(@Valid @RequestBody CodeClassifyTemplate plCodeClstemplate) {
 		return R.status(plCodeClstemplateService.save(plCodeClstemplate));
 	}
 
@@ -108,7 +110,7 @@
 	@PostMapping("/update")
 	@ApiOperationSupport(order = 5)
 	@ApiOperation(value = "淇敼", notes = "浼犲叆plCodeClstemplate")
-	public R update(@Valid @RequestBody CodeClstemplateEntity plCodeClstemplate) {
+	public R update(@Valid @RequestBody CodeClassifyTemplate plCodeClstemplate) {
 		return R.status(plCodeClstemplateService.updateById(plCodeClstemplate));
 	}
 
@@ -118,7 +120,7 @@
 	@PostMapping("/submit")
 	@ApiOperationSupport(order = 6)
 	@ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆plCodeClstemplate")
-	public R submit(@Valid @RequestBody CodeClstemplateEntity plCodeClstemplate) {
+	public R submit(@Valid @RequestBody CodeClassifyTemplate plCodeClstemplate) {
 		return R.status(plCodeClstemplateService.saveOrUpdate(plCodeClstemplate));
 	}
 
@@ -129,7 +131,7 @@
 	@ApiOperationSupport(order = 7)
 	@ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
 	public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
-		return R.status(SqlHelper.retBool(codeClstemplateMapper.deleteBatchIds(Func.toLongList(ids))));
+		return R.status(SqlHelper.retBool(codeClassifyTemplateMapper.deleteBatchIds(Func.toLongList(ids))));
 	}
 
 	/**
@@ -142,16 +144,16 @@
 		return  plCodeClstemplateService.treeCodeClassifyTemplate(treeQueryObject);
 	}
 
-//	/**
-//	 * 鍒嗙被妯℃澘鍒楄〃
-//	 * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄
-//	 * @return 鏄剧ず瀵硅薄
-//	 */
-//	@GetMapping("/gridCodeClassifyTemplate")
-//	public DataGrid<CodeClstemplateVO> gridCodeClassifyTemplate(BaseQueryObject baseQueryObject){
-//
-//		return  plCodeClstemplateService.gridCodeClassifyTemplate(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
-//	}
+	/**
+	 * 鍒嗙被妯℃澘鍒楄〃
+	 * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄
+	 * @return 鏄剧ず瀵硅薄
+	 */
+	@GetMapping("/gridCodeClassifyTemplate")
+	public DataGrid<CodeClassifyTemplateVO> gridCodeClassifyTemplate(BaseQueryObject baseQueryObject){
+
+		return  plCodeClstemplateService.gridCodeClassifyTemplate(baseQueryObject.getConditionMap(),baseQueryObject.getPageHelper());
+	}
 
 
 	/**
@@ -160,7 +162,7 @@
 	 * @return 鎵ц缁撴灉 success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
 	 */
 	@PostMapping( "/checkIsCanDelete")
-	public R checkIsCanDelete(@RequestBody CodeClstemplateDTO codeClstemplateDTO)  {
+	public R checkIsCanDelete(@RequestBody CodeClassifyTemplateDTO codeClstemplateDTO)  {
 
 		return plCodeClstemplateService.checkIsCanDelete(codeClstemplateDTO);
 	}
@@ -171,7 +173,7 @@
 	 * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
 	 */
 	@DeleteMapping( "/deleteData")
-	public R delCodeClassifyTemplate(@Valid @RequestBody CodeClstemplateDTO codeClstemplateDTO) {
+	public R delCodeClassifyTemplate(@Valid @RequestBody CodeClassifyTemplateDTO codeClstemplateDTO) {
 		return plCodeClstemplateService.deleteCodeClassifyTemplate(codeClstemplateDTO);
 	}
 
@@ -181,8 +183,8 @@
 	 * @return 鍒嗙被妯℃澘瀵硅薄鏄剧ず瀵硅薄
 	 */
 	@GetMapping("/getObjectByOid")
-	public R<CodeClstemplateVO> getObjectByOid(String oid){
-		CodeClstemplateVO codeClassifyTemplateVO = plCodeClstemplateService.getObjectByOid(oid);
+	public R<CodeClassifyTemplateVO> getObjectByOid(String oid){
+		CodeClassifyTemplateVO codeClassifyTemplateVO = plCodeClstemplateService.getObjectByOid(oid);
 		return R.data(codeClassifyTemplateVO);
 	}
 
@@ -192,8 +194,8 @@
 	 * @return 鍒嗙被妯℃澘瀵硅薄鏄剧ず瀵硅薄
 	 */
 	@GetMapping("/listDataByOids")
-	public R<Collection<CodeClstemplateVO>> listCodeClassifyTemplateByOids(String oids){
-		Collection<CodeClstemplateVO> voCollection =  plCodeClstemplateService.listCodeClassifyTemplateByOids(VciBaseUtil.str2List(oids));
+	public R<Collection<CodeClassifyTemplateVO>> listCodeClassifyTemplateByOids(String oids){
+		Collection<CodeClassifyTemplateVO> voCollection =  plCodeClstemplateService.listCodeClassifyTemplateByOids(VciBaseUtil.str2List(oids));
 
 		return  R.data(voCollection) ;
 	}
@@ -214,7 +216,7 @@
 	 * @return
 	 */
 	@PostMapping( "/enableData")
-	public R enable( CodeClstemplateDTO codeClstemplateDTO) {
+	public R enable( CodeClassifyTemplateDTO codeClstemplateDTO) {
 		return plCodeClstemplateService.updateLcStatus(codeClstemplateDTO.getOid(), CodeClassifyTemplateLC.RELEASED.getValue());
 	}
 
@@ -224,7 +226,7 @@
 	 * @return
 	 */
 	@PostMapping( "/disableData")
-	public R disableData( CodeClstemplateDTO codeClassifyDTO) {
+	public R disableData( CodeClassifyTemplateDTO codeClassifyDTO) {
 		return plCodeClstemplateService.updateLcStatus(codeClassifyDTO.getOid(),CodeClassifyTemplateLC.DISABLED.getValue());
 	}
 
@@ -234,7 +236,7 @@
 	 * @return
 	 */
 	@PostMapping( "/editDate")
-	public R editDate( CodeClstemplateDTO codeClassifyDTO) {
+	public R editDate( CodeClassifyTemplateDTO codeClassifyDTO) {
 		return plCodeClstemplateService.updateLcStatus(codeClassifyDTO.getOid(),CodeClassifyTemplateLC.EDITING.getValue());
 	}
 
@@ -244,7 +246,7 @@
 	 * @return oid妯℃澘oid
 	 */
 	@PostMapping( "/upgrade")
-	public R Upgrade(@RequestBody CodeClstemplateDTO codeClassifyDTO) {
+	public R Upgrade(@RequestBody CodeClassifyTemplateDTO codeClassifyDTO) {
 
 		return plCodeClstemplateService.Upgrade(codeClassifyDTO);
 	}
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
deleted file mode 100644
index c2ac58c..0000000
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClsflowtempController.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- *      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/CodeKeyattrrepeatController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeKeyAttrRepeatController.java
similarity index 73%
rename from Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeKeyattrrepeatController.java
rename to Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeKeyAttrRepeatController.java
index f2ec097..5dedb32 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeKeyattrrepeatController.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeKeyAttrRepeatController.java
@@ -17,9 +17,8 @@
 package com.vci.ubcs.code.controller;
 
 import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
-import com.vci.ubcs.code.entity.CodeKeyattrrepeatEntity;
-import com.vci.ubcs.code.mapper.CodeButtonMapper;
-import com.vci.ubcs.code.mapper.CodeKeyattrrepeatMapper;
+import com.vci.ubcs.code.entity.CodeKeyAttrRepeat;
+import com.vci.ubcs.code.mapper.CodeKeyAttrRepeatMapper;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -31,12 +30,11 @@
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.vci.ubcs.code.vo.CodeKeyattrrepeatVO;
-import com.vci.ubcs.code.wrapper.PlCodeKeyattrrepeatWrapper;
-import com.vci.ubcs.code.service.ICodeKeyattrrepeatService;
+import com.vci.ubcs.code.vo.CodeKeyAttrRepeatVO;
+import com.vci.ubcs.code.wrapper.CodeKeyAttrRepeatWrapper;
+import com.vci.ubcs.code.service.ICodeKeyAttrRepeatService;
 import org.springblade.core.boot.ctrl.BladeController;
 
 /**
@@ -49,12 +47,12 @@
 @AllArgsConstructor
 @RequestMapping("/plCodeKeyattrrepeat")
 @Api(value = "鍏抽敭灞炴�ф煡閲嶈鍒�", tags = "鍏抽敭灞炴�ф煡閲嶈鍒欐帴鍙�")
-public class CodeKeyattrrepeatController extends BladeController {
+public class CodeKeyAttrRepeatController extends BladeController {
 
-	private final ICodeKeyattrrepeatService plCodeKeyattrrepeatService;
+	private final ICodeKeyAttrRepeatService plCodeKeyattrrepeatService;
 
 
-	CodeKeyattrrepeatMapper codeKeyattrrepeatMapper;
+	CodeKeyAttrRepeatMapper codeKeyattrrepeatMapper;
 
 	/**
 	 * 鍏抽敭灞炴�ф煡閲嶈鍒� 璇︽儏
@@ -62,9 +60,9 @@
 	@GetMapping("/detail")
 	@ApiOperationSupport(order = 1)
 	@ApiOperation(value = "璇︽儏", notes = "浼犲叆plCodeKeyattrrepeat")
-	public R<CodeKeyattrrepeatVO> detail(CodeKeyattrrepeatEntity plCodeKeyattrrepeat) {
-		CodeKeyattrrepeatEntity detail = codeKeyattrrepeatMapper.selectOne(Condition.getQueryWrapper(plCodeKeyattrrepeat));
-		return R.data(PlCodeKeyattrrepeatWrapper.build().entityVO(detail));
+	public R<CodeKeyAttrRepeatVO> detail(CodeKeyAttrRepeat plCodeKeyattrrepeat) {
+		CodeKeyAttrRepeat detail = codeKeyattrrepeatMapper.selectOne(Condition.getQueryWrapper(plCodeKeyattrrepeat));
+		return R.data(CodeKeyAttrRepeatWrapper.build().entityVO(detail));
 	}
 	/**
 	 * 鍏抽敭灞炴�ф煡閲嶈鍒� 鍒嗛〉
@@ -72,9 +70,9 @@
 	@GetMapping("/list")
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "鍒嗛〉", notes = "浼犲叆plCodeKeyattrrepeat")
-	public R<IPage<CodeKeyattrrepeatVO>> list(CodeKeyattrrepeatEntity plCodeKeyattrrepeat, Query query) {
-		IPage<CodeKeyattrrepeatEntity> pages = codeKeyattrrepeatMapper.selectPage(Condition.getPage(query), Condition.getQueryWrapper(plCodeKeyattrrepeat));
-		return R.data(PlCodeKeyattrrepeatWrapper.build().pageVO(pages));
+	public R<IPage<CodeKeyAttrRepeatVO>> list(CodeKeyAttrRepeat plCodeKeyattrrepeat, Query query) {
+		IPage<CodeKeyAttrRepeat> pages = codeKeyattrrepeatMapper.selectPage(Condition.getPage(query), Condition.getQueryWrapper(plCodeKeyattrrepeat));
+		return R.data(CodeKeyAttrRepeatWrapper.build().pageVO(pages));
 	}
 
 	/**
@@ -83,8 +81,8 @@
 	@GetMapping("/page")
 	@ApiOperationSupport(order = 3)
 	@ApiOperation(value = "鍒嗛〉", notes = "浼犲叆plCodeKeyattrrepeat")
-	public R<IPage<CodeKeyattrrepeatVO>> page(CodeKeyattrrepeatVO plCodeKeyattrrepeat, Query query) {
-		IPage<CodeKeyattrrepeatVO> pages = plCodeKeyattrrepeatService.selectPlCodeKeyattrrepeatPage(Condition.getPage(query), plCodeKeyattrrepeat);
+	public R<IPage<CodeKeyAttrRepeatVO>> page(CodeKeyAttrRepeatVO plCodeKeyattrrepeat, Query query) {
+		IPage<CodeKeyAttrRepeatVO> pages = plCodeKeyattrrepeatService.selectPlCodeKeyattrrepeatPage(Condition.getPage(query), plCodeKeyattrrepeat);
 		return R.data(pages);
 	}
 
@@ -94,7 +92,7 @@
 	@PostMapping("/save")
 	@ApiOperationSupport(order = 4)
 	@ApiOperation(value = "鏂板", notes = "浼犲叆plCodeKeyattrrepeat")
-	public R save(@Valid @RequestBody CodeKeyattrrepeatEntity plCodeKeyattrrepeat) {
+	public R save(@Valid @RequestBody CodeKeyAttrRepeat plCodeKeyattrrepeat) {
 		return R.status(SqlHelper.retBool(codeKeyattrrepeatMapper.insert(plCodeKeyattrrepeat)));
 	}
 
@@ -104,7 +102,7 @@
 	@PostMapping("/update")
 	@ApiOperationSupport(order = 5)
 	@ApiOperation(value = "淇敼", notes = "浼犲叆plCodeKeyattrrepeat")
-	public R update(@Valid @RequestBody CodeKeyattrrepeatEntity plCodeKeyattrrepeat) {
+	public R update(@Valid @RequestBody CodeKeyAttrRepeat plCodeKeyattrrepeat) {
 		return R.status(SqlHelper.retBool(codeKeyattrrepeatMapper.updateById(plCodeKeyattrrepeat)));
 	}
 
@@ -114,7 +112,7 @@
 	@PostMapping("/submit")
 	@ApiOperationSupport(order = 6)
 	@ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆plCodeKeyattrrepeat")
-	public R submit(@Valid @RequestBody CodeKeyattrrepeatEntity plCodeKeyattrrepeat) {
+	public R submit(@Valid @RequestBody CodeKeyAttrRepeat plCodeKeyattrrepeat) {
 		if(plCodeKeyattrrepeat.getOid() != null){
 			return R.status(SqlHelper.retBool(codeKeyattrrepeatMapper.updateById(plCodeKeyattrrepeat)));
 		}
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
index 675d4fd..4389e71 100644
--- 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
@@ -45,7 +45,7 @@
  */
 @RestController
 @AllArgsConstructor
-@RequestMapping("/CodePhaseattr")
+@RequestMapping("/codePhaseAttrController")
 @Api(value = "缂栫爜搴撳畾涔�-妯℃澘闃舵-灞炴��", tags = "缂栫爜搴撳畾涔�-妯℃澘闃舵-灞炴�ф帴鍙�")
 public class CodePhaseAttrController extends BladeController {
 
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java
index f185863..9ceecf8 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java
@@ -9,8 +9,10 @@
 import com.vci.ubcs.code.service.MdmEngineService;
 import com.vci.ubcs.code.service.MdmIOService;
 import com.vci.ubcs.code.vo.pagemodel.CodeImProtRusultVO;
+import com.vci.ubcs.code.vo.pagemodel.MdmUIInfoVO;
 import com.vci.ubcs.starter.annotation.VciBusinessLog;
 import com.vci.ubcs.starter.util.LocalFileUtil;
+import com.vci.ubcs.starter.web.pagemodel.DataGrid;
 import com.vci.ubcs.starter.web.util.ControllerUtil;
 import com.vci.ubcs.starter.web.util.LangBaseUtil;
 import io.swagger.annotations.Api;
@@ -27,121 +29,157 @@
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.util.List;
+import java.util.Map;
 
 @RestController
 //@AllArgsConstructor
 @RequestMapping("/mdmEngineController")
 @Api(value = "缂栫爜鏁版嵁绠$悊", tags = "缂栫爜鏁版嵁绠$悊")
 public class MdmEngineController {
-
+//
+////	/**
+////	 * 鏃ュ織
+////	 */
+//	private Logger logger = LoggerFactory.getLogger(getClass());
 //	/**
-//	 * 鏃ュ織
+//	 * 涓绘暟鎹紩鎿庢湇鍔�
 //	 */
-	private Logger logger = LoggerFactory.getLogger(getClass());
-	/**
-	 * 涓绘暟鎹紩鎿庢湇鍔�
-	 */
-	@Autowired
-	private MdmEngineService engineService;
-	/**
-	 * 涓绘暟鎹鍏ュ鍑烘湇鍔�
-	 */
-	@Autowired
-	private MdmIOService mdmIOService;
+//	@Autowired
+//	private MdmEngineService engineService;
+//	/**
+//	 * 涓绘暟鎹鍏ュ鍑烘湇鍔�
+//	 */
+//	@Autowired
+//	private MdmIOService mdmIOService;
+//
+//	/**
+//	 * 涓嬭浇鎵归噺鐢宠鐨勫鍏ユā鏉�
+//	 * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+//	 * @param response 鍝嶅簲瀵硅薄
+//	 * @throws IOException 鎶涘嚭寮傚父
+//	 */
+//	@GetMapping("/downloadImportExcel")
+//	@VciBusinessLog(operateName = "涓嬭浇鎵归噺鐢宠缂栫爜鐨勫鍏ユā鏉�")
+//	public void downloadImportExcel(String codeClassifyOid, HttpServletResponse response) throws IOException{
+//		String excelName = mdmIOService.createImportExcel(codeClassifyOid,false);
+//		try {
+//			ControllerUtil.writeFileToResponse(response,excelName);
+//		} catch (Throwable e) {
+//			//濡傛灉鍑洪敊,鎶婇敊璇俊鎭啓鍒皌ext
+//			String msg = LangBaseUtil.getErrorMsg(e);
+//			if(StringUtils.isBlank(msg)){
+//				msg = "鏈煡閿欒";
+//			}
+//			ControllerUtil.writeDataToResponse(response,msg.getBytes(StandardCharsets.UTF_8),null);
+//		}
+//	}
+//
+//
+//	/**
+//	 * 鎵归噺鐢宠缂栫爜鐨勪俊鎭�
+//	 * @param secDTOList 鐢宠缂栫爜鐨勪俊鎭紝蹇呴』鍖呭惈鐮佹鍜屽垎绫讳富閿殑淇℃伅
+//	 * @param file 鏂囦欢鐨勫唴瀹�
+//	 */
+//	@VciBusinessLog(operateName = "鎵归噺鐢宠缂栫爜鐨勪俊鎭�")
+//	@PostMapping("/batchImportCode")
+//	public R batchImportCode(String secDTOList, String codeClassifyOid, MultipartFile file, HttpServletResponse response) throws Throwable {
+//		CodeOrderDTO orderDTO = new CodeOrderDTO();
+//		orderDTO.setCodeClassifyOid(codeClassifyOid);
+//		if(StringUtils.isNotBlank(secDTOList)){
+//			List<CodeOrderSecDTO> secDTOS = JSONObject.parseArray(secDTOList, CodeOrderSecDTO.class);
+//			orderDTO.setSecDTOList(secDTOS);
+//		}
+//		String excelFileName = LocalFileUtil.getDefaultTempFolder() + File.separator + LocalFileUtil.getFileNameForIE(file.getOriginalFilename());
+//		File file1 = new File(excelFileName);
+//		try {
+//			file.transferTo(new File(excelFileName));
+//			CodeImProtRusultVO codeImProtRusultVO = mdmIOService.batchImportCode(orderDTO,file1);
+//			if(StringUtils.isNotBlank(codeImProtRusultVO.getFilePath())||StringUtils.isNotBlank(codeImProtRusultVO.getRedisUuid())){
+//				//鏀惧埌map閲�
+//				R result = R.fail("瀵煎叆澶辫触");
+//				if(StringUtils.isNotBlank(codeImProtRusultVO.getFilePath())) {
+//					String filedUUid = ControllerUtil.putErrorFile(codeImProtRusultVO.getFilePath());
+//					codeImProtRusultVO.setFileOid(filedUUid);
+//				}
+//				result.setData(codeImProtRusultVO);
+//				return result;
+//			}else {
+//				return R.success("鎿嶄綔鎴愬姛锛�");
+//			}
+//		}catch (Throwable e) {
+//			logger.error("瀵煎叆閿欒",e);
+//			String errorFile = LocalFileUtil.getDefaultTempFolder() + File.separator + "閿欒.txt";
+//			LocalFileUtil.writeContentToFile( LangBaseUtil.getErrorMsg(e),errorFile);
+//			String uuid=ControllerUtil.putErrorFile(errorFile);
+//			CodeImProtRusultVO codeImProtRusultVO =new CodeImProtRusultVO();
+//			codeImProtRusultVO.setRedisUuid("");
+//			codeImProtRusultVO.setFileOid(uuid);
+//			codeImProtRusultVO.setFilePath(errorFile);
+//			R result = R.fail("瀵煎叆澶辫触");
+//			result.setData(codeImProtRusultVO);
+////			result.setObj(codeImProtRusultVO);
+//			return result;
+//		}finally {
+//			file1.delete();
+//		}
+//	}
+//
+//
+//	/**
+//	 * 淇敼鐘舵��
+//	 * @param baseModelDTO 鏁版嵁浼犺緭瀵硅薄
+//	 * @return 鎵ц缁撴灉
+//	 */
+//	@PostMapping("changeStatus")
+//	public R changeStatus(BaseModelDTO baseModelDTO) {
+//		engineService.changeStatus(baseModelDTO);
+//		return R.success("鎿嶄綔鎴愬姛锛�");
+//	}
+//
+//
+//	/**
+//	 * 鐢宠缂栫爜淇濆瓨
+//	 * @param orderDTO 缂栫爜鐢宠鐩稿叧鐨勪俊鎭紝闇�瑕佹湁灞炴�у拰鐮佹鐩稿叧鐨勪俊鎭�
+//	 * @return 鎵ц缁撴灉
+//	 */
+//	@PostMapping("/addSaveCode")
+//	@VciBusinessLog(operateName = "鐢宠鍗曚釜缂栫爜")
+//	public R addSaveCode(@RequestBody CodeOrderDTO orderDTO){
+//		return R.success(engineService.addSaveCode(orderDTO));
+//	}
+//
+//
+//	/**
+//	 * 浣跨敤妯℃澘鐨勪富閿幏鍙栬〃鍗曠殑瀹氫箟
+//	 * @param templateOid 妯℃澘鐨勪富閿�
+//	 * @param codeClassifyOid 浣跨敤妯℃澘鐨勫垎绫讳富閿�
+//	 * @return UI鐩稿叧鐨勪俊鎭紙浠呭寘鍚〃鍗曪級
+//	 */
+//	@GetMapping("/getFormDefineByTemplateOid")
+//	public MdmUIInfoVO getFormDefineByTemplateOid(String templateOid, String codeClassifyOid){
+//		return engineService.getFormDefineByTemplateOid(templateOid,codeClassifyOid);
+//	}
+//
+//	/**
+//	 * 鐩镐技椤规煡璇�
+//	 * @param orderDTO 缂栫爜鐨勭浉鍏充俊鎭�
+//	 * @return 鏁版嵁鍒楄〃
+//	 */
+//	@PostMapping("/resembleQuery")
+//	public DataGrid<Map<String,String>> resembleQuery(@RequestBody CodeOrderDTO orderDTO){
+//		return engineService.resembleQuery(orderDTO);
+//	}
+//
+//	/**
+//	 * 淇敼鍗曟潯涓婚搴撶殑鏁版嵁
+//	 * @param orderDTO 缂栫爜鐢宠鐩稿叧鐨勪俊鎭紝涓嶉渶瑕佺爜娈电殑淇℃伅
+//	 * @return 鎵ц缁撴灉
+//	 */
+//	@PutMapping("/editSaveCode")
+//	@VciBusinessLog(operateName = "淇敼缂栫爜鏁版嵁")
+//	public R editSaveCode(@RequestBody CodeOrderDTO orderDTO){
+//		engineService.editSaveCode(orderDTO);
+//		return  R.success("淇敼鎴愬姛锛�");
+//	}
 
-	/**
-	 * 涓嬭浇鎵归噺鐢宠鐨勫鍏ユā鏉�
-	 * @param codeClassifyOid 鍒嗙被鐨勪富閿�
-	 * @param response 鍝嶅簲瀵硅薄
-	 * @throws IOException 鎶涘嚭寮傚父
-	 */
-	@GetMapping("/downloadImportExcel")
-	@VciBusinessLog(operateName = "涓嬭浇鎵归噺鐢宠缂栫爜鐨勫鍏ユā鏉�")
-	public void downloadImportExcel(String codeClassifyOid, HttpServletResponse response) throws IOException{
-		String excelName = mdmIOService.createImportExcel(codeClassifyOid,false);
-		try {
-			ControllerUtil.writeFileToResponse(response,excelName);
-		} catch (Throwable e) {
-			//濡傛灉鍑洪敊,鎶婇敊璇俊鎭啓鍒皌ext
-			String msg = LangBaseUtil.getErrorMsg(e);
-			if(StringUtils.isBlank(msg)){
-				msg = "鏈煡閿欒";
-			}
-			ControllerUtil.writeDataToResponse(response,msg.getBytes(StandardCharsets.UTF_8),null);
-		}
-	}
-
-
-	/**
-	 * 鎵归噺鐢宠缂栫爜鐨勪俊鎭�
-	 * @param secDTOList 鐢宠缂栫爜鐨勪俊鎭紝蹇呴』鍖呭惈鐮佹鍜屽垎绫讳富閿殑淇℃伅
-	 * @param file 鏂囦欢鐨勫唴瀹�
-	 */
-	@VciBusinessLog(operateName = "鎵归噺鐢宠缂栫爜鐨勪俊鎭�")
-	@PostMapping("/batchImportCode")
-	public R batchImportCode(String secDTOList, String codeClassifyOid, MultipartFile file, HttpServletResponse response) throws Throwable {
-		CodeOrderDTO orderDTO = new CodeOrderDTO();
-		orderDTO.setCodeClassifyOid(codeClassifyOid);
-		if(StringUtils.isNotBlank(secDTOList)){
-			List<CodeOrderSecDTO> secDTOS = JSONObject.parseArray(secDTOList, CodeOrderSecDTO.class);
-			orderDTO.setSecDTOList(secDTOS);
-		}
-		String excelFileName = LocalFileUtil.getDefaultTempFolder() + File.separator + LocalFileUtil.getFileNameForIE(file.getOriginalFilename());
-		File file1 = new File(excelFileName);
-		try {
-			file.transferTo(new File(excelFileName));
-			CodeImProtRusultVO codeImProtRusultVO = mdmIOService.batchImportCode(orderDTO,file1);
-			if(StringUtils.isNotBlank(codeImProtRusultVO.getFilePath())||StringUtils.isNotBlank(codeImProtRusultVO.getRedisUuid())){
-				//鏀惧埌map閲�
-				R result = R.fail("瀵煎叆澶辫触");
-				if(StringUtils.isNotBlank(codeImProtRusultVO.getFilePath())) {
-					String filedUUid = ControllerUtil.putErrorFile(codeImProtRusultVO.getFilePath());
-					codeImProtRusultVO.setFileOid(filedUUid);
-				}
-				result.setData(codeImProtRusultVO);
-				return result;
-			}else {
-				return R.success("鎿嶄綔鎴愬姛锛�");
-			}
-		}catch (Throwable e) {
-			logger.error("瀵煎叆閿欒",e);
-			String errorFile = LocalFileUtil.getDefaultTempFolder() + File.separator + "閿欒.txt";
-			LocalFileUtil.writeContentToFile( LangBaseUtil.getErrorMsg(e),errorFile);
-			String uuid=ControllerUtil.putErrorFile(errorFile);
-			CodeImProtRusultVO codeImProtRusultVO =new CodeImProtRusultVO();
-			codeImProtRusultVO.setRedisUuid("");
-			codeImProtRusultVO.setFileOid(uuid);
-			codeImProtRusultVO.setFilePath(errorFile);
-			R result = R.fail("瀵煎叆澶辫触");
-			result.setData(codeImProtRusultVO);
-//			result.setObj(codeImProtRusultVO);
-			return result;
-		}finally {
-			file1.delete();
-		}
-	}
-
-
-	/**
-	 * 淇敼鐘舵��
-	 * @param baseModelDTO 鏁版嵁浼犺緭瀵硅薄
-	 * @return 鎵ц缁撴灉
-	 */
-	@PostMapping("changeStatus")
-	public R changeStatus(BaseModelDTO baseModelDTO) {
-		engineService.changeStatus(baseModelDTO);
-		return R.success("鎿嶄綔鎴愬姛锛�");
-	}
-
-
-	/**
-	 * 鐢宠缂栫爜淇濆瓨
-	 * @param orderDTO 缂栫爜鐢宠鐩稿叧鐨勪俊鎭紝闇�瑕佹湁灞炴�у拰鐮佹鐩稿叧鐨勪俊鎭�
-	 * @return 鎵ц缁撴灉
-	 */
-	@PostMapping("/addSaveCode")
-	@VciBusinessLog(operateName = "鐢宠鍗曚釜缂栫爜")
-	public R addSaveCode(@RequestBody CodeOrderDTO orderDTO){
-		return R.success(engineService.addSaveCode(orderDTO));
-	}
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeButtonClient.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeButtonClient.java
index 0f6ddc8..2acb0df 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeButtonClient.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeButtonClient.java
@@ -19,7 +19,6 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.vci.ubcs.code.entity.CodeButton;
-import com.vci.ubcs.code.entity.CodeKeyattrrepeatEntity;
 import com.vci.ubcs.code.mapper.CodeButtonMapper;
 import com.vci.ubcs.code.service.ICodeButtonService;
 import lombok.AllArgsConstructor;
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/CodeClassifyTemplateAttrClient.java
similarity index 95%
rename from Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeClstempattrClient.java
rename to Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeClassifyTemplateAttrClient.java
index fb9e2ff..dfa6c28 100644
--- 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/CodeClassifyTemplateAttrClient.java
@@ -37,7 +37,7 @@
 @ApiIgnore()
 @RestController
 @AllArgsConstructor
-public class CodeClstempattrClient implements ICodeClstempattrClient {
+public class CodeClassifyTemplateAttrClient implements ICodeClassifyTemplateAttrClient {
 
     private CodeClassifyTemplateAttrMapper codeClstempattrMapper;
 
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/CodeClassifyTemplateClient.java
similarity index 76%
rename from Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeClstemplateClient.java
rename to Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeClassifyTemplateClient.java
index 0096fc1..5fa1b24 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/CodeClassifyTemplateClient.java
@@ -18,13 +18,12 @@
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.vci.ubcs.code.mapper.CodeClstemplateMapper;
+import com.vci.ubcs.code.mapper.CodeClassifyTemplateMapper;
 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;
+import com.vci.ubcs.code.entity.CodeClassifyTemplate;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RestController;
 import springfox.documentation.annotations.ApiIgnore;
@@ -38,17 +37,17 @@
 @ApiIgnore()
 @RestController
 @AllArgsConstructor
-public class CodeClstemplateClient implements lCodeClstemplateClient {
+public class CodeClassifyTemplateClient implements lCodeClassifyTemplateClient {
 
-    private final CodeClstemplateMapper codeClstemplateMapper;
+    private final CodeClassifyTemplateMapper codeClassifyTemplateMapper;
 
     @Override
     @GetMapping(TOP)
-    public BladePage<CodeClstemplateEntity> top(Integer current, Integer size) {
+    public BladePage<CodeClassifyTemplate> top(Integer current, Integer size) {
         Query query = new Query();
         query.setCurrent(current);
         query.setSize(size);
-        IPage<CodeClstemplateEntity> page = codeClstemplateMapper.selectPage(Condition.getPage(query), Wrappers.emptyWrapper());
+        IPage<CodeClassifyTemplate> page = codeClassifyTemplateMapper.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/CodeClsflowtempClient.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeClsflowtempClient.java
deleted file mode 100644
index 7a7988d..0000000
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeClsflowtempClient.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- *      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/CodeKeyattrrepeatClient.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeKeyAttrRepeatClient.java
similarity index 72%
rename from Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeKeyattrrepeatClient.java
rename to Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeKeyAttrRepeatClient.java
index 893c286..dbcc6b9 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeKeyattrrepeatClient.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeKeyAttrRepeatClient.java
@@ -18,14 +18,13 @@
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.vci.ubcs.code.entity.CodeKeyattrrepeatEntity;
-import com.vci.ubcs.code.entity.CodeSynonymEntity;
-import com.vci.ubcs.code.mapper.CodeKeyattrrepeatMapper;
+import com.vci.ubcs.code.entity.CodeKeyAttrRepeat;
+import com.vci.ubcs.code.mapper.CodeKeyAttrRepeatMapper;
 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.service.ICodeKeyattrrepeatService;
+import com.vci.ubcs.code.service.ICodeKeyAttrRepeatService;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RestController;
 import springfox.documentation.annotations.ApiIgnore;
@@ -39,19 +38,19 @@
 @ApiIgnore()
 @RestController
 @AllArgsConstructor
-public class CodeKeyattrrepeatClient implements lCodeKeyattrrepeatClient {
+public class CodeKeyAttrRepeatClient implements lCodeKeyAttrRepeatClient {
 
-    private final ICodeKeyattrrepeatService plCodeKeyattrrepeatService;
+    private final ICodeKeyAttrRepeatService plCodeKeyattrrepeatService;
 
-	CodeKeyattrrepeatMapper codeKeyattrrepeatMapper;
+	CodeKeyAttrRepeatMapper codeKeyattrrepeatMapper;
 
     @Override
     @GetMapping(TOP)
-    public BladePage<CodeKeyattrrepeatEntity> top(Integer current, Integer size) {
+    public BladePage<CodeKeyAttrRepeat> top(Integer current, Integer size) {
         Query query = new Query();
         query.setCurrent(current);
         query.setSize(size);
-        IPage<CodeKeyattrrepeatEntity> page = codeKeyattrrepeatMapper.selectPage(Condition.getPage(query), Wrappers.emptyWrapper());
+        IPage<CodeKeyAttrRepeat> page = codeKeyattrrepeatMapper.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
similarity index 94%
rename from Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodePhaseattrClient.java
rename to Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodePhaseAttrClient.java
index 85f0c24..10e6fc1 100644
--- 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
@@ -20,7 +20,6 @@
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.vci.ubcs.code.entity.CodePhaseAttr;
 import com.vci.ubcs.code.mapper.CodePhaseAttrMapper;
-import com.vci.ubcs.code.mapper.CodePhaseAttrMapper;
 import lombok.AllArgsConstructor;
 import org.springblade.core.mp.support.BladePage;
 import org.springblade.core.mp.support.Condition;
@@ -38,7 +37,7 @@
 @ApiIgnore()
 @RestController
 @AllArgsConstructor
-public class CodePhaseattrClient implements ICodePhaseattrClient {
+public class CodePhaseAttrClient implements ICodePhaseAttrClient {
 
     private final CodePhaseAttrMapper codePhaseAttrMapper;
 
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
similarity index 94%
rename from Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeTempbuttonClient.java
rename to Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeTempButtonClient.java
index 981f26f..6e9d004 100644
--- 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
@@ -24,7 +24,6 @@
 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.service.ICodeTempbuttonService;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RestController;
 import springfox.documentation.annotations.ApiIgnore;
@@ -38,7 +37,7 @@
 @ApiIgnore()
 @RestController
 @AllArgsConstructor
-public class CodeTempbuttonClient implements ICodeTempbuttonClient {
+public class CodeTempButtonClient implements ICodeTempButtonClient {
 
 
     private final CodeClassifyTemplateButtonMapper codeTempbuttonMapper;
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/ICodeClassifyTemplateAttrClient.java
similarity index 96%
rename from Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeClstempattrClient.java
rename to Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeClassifyTemplateAttrClient.java
index 8dadfd3..3390462 100644
--- 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/ICodeClassifyTemplateAttrClient.java
@@ -31,7 +31,7 @@
 @FeignClient(
     value = "ubcs-code"
 )
-public interface ICodeClstempattrClient {
+public interface ICodeClassifyTemplateAttrClient {
 
     String API_PREFIX = "/clientTempAttr";
     String TOP = API_PREFIX + "/top";
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
deleted file mode 100644
index b0f766f..0000000
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeClsflowtempClient.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- *      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/ICodePhaseattrClient.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodePhaseAttrClient.java
similarity index 97%
rename from Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodePhaseattrClient.java
rename to Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodePhaseAttrClient.java
index 9058be2..0588004 100644
--- 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
@@ -31,7 +31,7 @@
 @FeignClient(
     value = "ubcs-code"
 )
-public interface ICodePhaseattrClient {
+public interface ICodePhaseAttrClient {
 
     String API_PREFIX = "/clientPhaseattr";
     String TOP = API_PREFIX + "/top";
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
similarity index 97%
rename from Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeTempbuttonClient.java
rename to Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeTempButtonClient.java
index cd6943b..225a981 100644
--- 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
@@ -31,7 +31,7 @@
 @FeignClient(
     value = "ubcs-code"
 )
-public interface ICodeTempbuttonClient {
+public interface ICodeTempButtonClient {
 
     String API_PREFIX = "/clientTempButton";
     String TOP = API_PREFIX + "/top";
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/lCodeClstemplateClient.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/lCodeClassifyTemplateClient.java
similarity index 87%
rename from Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/lCodeClstemplateClient.java
rename to Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/lCodeClassifyTemplateClient.java
index 9848e93..50822ad 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/lCodeClstemplateClient.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/lCodeClassifyTemplateClient.java
@@ -17,7 +17,7 @@
 package com.vci.ubcs.code.feign;
 
 import org.springblade.core.mp.support.BladePage;
-import com.vci.ubcs.code.entity.CodeClstemplateEntity;
+import com.vci.ubcs.code.entity.CodeClassifyTemplate;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -31,7 +31,7 @@
 @FeignClient(
     value = "ubcs-code"
 )
-public interface lCodeClstemplateClient {
+public interface lCodeClassifyTemplateClient {
 
     String API_PREFIX = "/client";
     String TOP = API_PREFIX + "/getClstempPage";
@@ -44,6 +44,6 @@
      * @return BladePage
      */
     @GetMapping(TOP)
-    BladePage<CodeClstemplateEntity> top(@RequestParam("current") Integer current, @RequestParam("size") Integer size);
+    BladePage<CodeClassifyTemplate> 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/lCodeKeyattrrepeatClient.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/lCodeKeyAttrRepeatClient.java
similarity index 86%
rename from Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/lCodeKeyattrrepeatClient.java
rename to Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/lCodeKeyAttrRepeatClient.java
index 797401d..ac92c15 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/lCodeKeyattrrepeatClient.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/lCodeKeyAttrRepeatClient.java
@@ -16,7 +16,7 @@
  */
 package com.vci.ubcs.code.feign;
 
-import com.vci.ubcs.code.entity.CodeKeyattrrepeatEntity;
+import com.vci.ubcs.code.entity.CodeKeyAttrRepeat;
 import org.springblade.core.mp.support.BladePage;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -31,7 +31,7 @@
 @FeignClient(
     value = "ubcs-code"
 )
-public interface lCodeKeyattrrepeatClient {
+public interface lCodeKeyAttrRepeatClient {
 
     String API_PREFIX = "/codekey";
     String TOP = API_PREFIX + "/keylist";
@@ -44,6 +44,6 @@
      * @return BladePage
      */
     @GetMapping(TOP)
-    BladePage<CodeKeyattrrepeatEntity> top(@RequestParam("current") Integer current, @RequestParam("size") Integer size);
+    BladePage<CodeKeyAttrRepeat> 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/CodeClstemplateMapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyTemplateMapper.java
similarity index 79%
rename from Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClstemplateMapper.java
rename to Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyTemplateMapper.java
index 94b5710..2915e46 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/CodeClassifyTemplateMapper.java
@@ -18,9 +18,8 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 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.MapKey;
+import com.vci.ubcs.code.entity.CodeClassifyTemplate;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -32,7 +31,7 @@
  * @author yuxc
  * @since 2023-04-10
  */
-public interface CodeClstemplateMapper extends BaseMapper<CodeClstemplateEntity> {
+public interface CodeClassifyTemplateMapper extends BaseMapper<CodeClassifyTemplate> {
 
 	/**
 	 * 鑷畾涔夊垎椤�
@@ -41,7 +40,7 @@
 	 * @param plCodeClstemplate
 	 * @return
 	 */
-	List<CodeClstemplateVO> selectPlCodeClstemplatePage(IPage page, CodeClstemplateVO plCodeClstemplate);
+	List<CodeClassifyTemplateVO> selectPlCodeClstemplatePage(IPage page, CodeClassifyTemplateVO plCodeClstemplate);
 
 	/**
 	 * 鑾峰彇鎵�鏈夊眰绾т笅绾х殑涓婚敭
@@ -68,8 +67,8 @@
 //	@MapKey("REVISIONSEQ")
 	Map<String,Object> getNextRevision(@Param("nameoid") String nameoid);
 
-	List<CodeClstemplateEntity> selectCodeClassifyTemplateDOByTree(@Param("codeclassifyoid") String codeclassifyoid,
-														  @Param("lcstatus") String lcstatus);
+	List<CodeClassifyTemplate> selectCodeClassifyTemplateDOByTree(@Param("codeclassifyoid") String codeclassifyoid,
+																  @Param("lcstatus") String lcstatus);
 
 	List<Map<String,String>> selectChildHasReleaseTemplate(@Param("lcstatus") String lcstatus,
 														      @Param("classifyoid") String classifyoid,
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClsflowtempMapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClsflowtempMapper.java
deleted file mode 100644
index 14cbdf4..0000000
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClsflowtempMapper.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- *      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.CodeClsflowtempEntity;
-import com.vci.ubcs.code.vo.CodeClsflowtempVO;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import java.util.List;
-
-/**
- * 缂栫爜搴撳畾涔�-妯℃澘娴佺▼ Mapper 鎺ュ彛
- *
- * @author yuxc
- * @since 2023-04-20
- */
-public interface CodeClsflowtempMapper extends BaseMapper<CodeClsflowtempEntity> {
-
-	/**
-	 * 鑷畾涔夊垎椤�
-	 *
-	 * @param page
-	 * @param CodeClsflowtemp
-	 * @return
-	 */
-	List<CodeClsflowtempVO> selectCodeClsflowtempPage(IPage page, CodeClsflowtempVO CodeClsflowtemp);
-
-
-}
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
deleted file mode 100644
index 4b111c0..0000000
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClstempattrMapper.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- *      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/CodeKeyattrrepeatMapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeKeyAttrRepeatMapper.java
similarity index 79%
rename from Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeKeyattrrepeatMapper.java
rename to Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeKeyAttrRepeatMapper.java
index 672e554..8275fe4 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeKeyattrrepeatMapper.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeKeyAttrRepeatMapper.java
@@ -18,8 +18,8 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.vci.ubcs.code.entity.CodeKeyattrrepeatEntity;
-import com.vci.ubcs.code.vo.CodeKeyattrrepeatVO;
+import com.vci.ubcs.code.entity.CodeKeyAttrRepeat;
+import com.vci.ubcs.code.vo.CodeKeyAttrRepeatVO;
 
 import java.util.List;
 
@@ -29,7 +29,7 @@
  * @author yuxc
  * @since 2023-04-03
  */
-public interface CodeKeyattrrepeatMapper extends BaseMapper<CodeKeyattrrepeatEntity> {
+public interface CodeKeyAttrRepeatMapper extends BaseMapper<CodeKeyAttrRepeat> {
 
 	/**
 	 * 鑷畾涔夊垎椤�
@@ -38,7 +38,7 @@
 	 * @param plCodeKeyattrrepeat
 	 * @return
 	 */
-	List<CodeKeyattrrepeatVO> selectPlCodeKeyattrrepeatPage(IPage page, CodeKeyattrrepeatVO plCodeKeyattrrepeat);
+	List<CodeKeyAttrRepeatVO> selectPlCodeKeyattrrepeatPage(IPage page, CodeKeyAttrRepeatVO plCodeKeyattrrepeat);
 
 
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CommonsMapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CommonsMapper.java
index 0162239..e0354b9 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CommonsMapper.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CommonsMapper.java
@@ -19,4 +19,6 @@
 
 	List<String> selectById(@Param("inSql") String inSql);
 
+	List<Map> selectBySql(@Param("inSql") String inSql);
+
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyProcessTempService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyProcessTempService.java
index e18befb..643469e 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyProcessTempService.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyProcessTempService.java
@@ -115,5 +115,11 @@
 	 */
 	List<CodeClassifyProcessTempVO> selectByWrapper(LambdaQueryWrapper<CodeClassifyProcessTemp> queryWrapper);
 
+	/**
+	 * 妯℃澘鍒犻櫎鐨勬椂鍊欒Е鍙�
+	 * @param classifyTemplateOid 妯℃澘鐨勪富閿�
+	 * @return 鍙楀奖鍝嶇殑鍐呭
+	 */
+	int codeTemplateDeleteTrigger(String classifyTemplateOid) ;
 }
 
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyTemplateAttrService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyTemplateAttrService.java
index 921c6a5..4b6ccca 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyTemplateAttrService.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyTemplateAttrService.java
@@ -1,14 +1,17 @@
 package com.vci.ubcs.code.service;
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.vci.ubcs.code.dto.CodeClassifyTemplateAttrDTO;
 import com.vci.ubcs.code.entity.CodeClassifyTemplateAttr;
+import com.vci.ubcs.code.vo.CodeOsbtmtypeattributeVO;
 import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
 import com.vci.ubcs.starter.exception.VciBaseException;
+import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
 import com.vci.ubcs.starter.web.pagemodel.DataGrid;
 import com.vci.ubcs.starter.web.pagemodel.PageHelper;
+import org.springblade.core.tool.api.R;
 
 import java.util.Collection;
 import java.util.List;
@@ -31,13 +34,6 @@
 	 */
 	IPage<CodeClassifyTemplateAttrVO> gridCodeClassifyTemplateAttr(MPJLambdaWrapper<CodeClassifyTemplateAttr> mpjLambdaWrapper , PageHelper pageHelper) throws VciBaseException;
 
-	/**
-	 * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
-	 * @param codeClassifyTemplateAttrDOs 鏁版嵁瀵硅薄鍒楄〃
-	 * @return 鏄剧ず瀵硅薄
-	 * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
-	 */
-	List<CodeClassifyTemplateAttrVO> codeClassifyTemplateAttrDO2VOs(Collection<CodeClassifyTemplateAttr> codeClassifyTemplateAttrDOs) throws VciBaseException;
 
 	/**
 	 * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
@@ -47,14 +43,6 @@
 	 */
 	CodeClassifyTemplateAttrVO codeClassifyTemplateAttrDO2VO(CodeClassifyTemplateAttr codeClassifyTemplateAttrDO) throws VciBaseException;
 
-	/**
-	 * 鍙傜収涓婚搴撳垎绫荤殑妯℃澘灞炴�у垪琛�
-	 * @param conditionMap 鏌ヨ鏉′欢
-	 * @param pageHelper 鍒嗛〉鍜屾帓搴�
-	 * @return 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
-	 * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
-	 */
-	IPage<CodeClassifyTemplateAttrVO> refDataGridCodeClassifyTemplateAttr(Map<String, Object> conditionMap, PageHelper pageHelper) throws VciBaseException;
 
 	/**
 	 * 鑷畾涔夊垎椤�
@@ -73,5 +61,91 @@
 	List<CodeClassifyTemplateAttrVO> listCodeClassifyTemplateAttrByTemplateOids(Collection<String> templateOidCollection);
 
 
+	/**
+	 * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+	 * @param codeClassifyTemplateAttrDOs 鏁版嵁瀵硅薄鍒楄〃
+	 * @return 鏄剧ず瀵硅薄
+	 */
+	List<CodeClassifyTemplateAttrVO> codeClassifyTemplateAttrDO2VOs(Collection<CodeClassifyTemplateAttr>  codeClassifyTemplateAttrDOs);
+
+//	/**
+//	 * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+//	 * @param  codeClassifyTemplateAttrDO 鏁版嵁瀵硅薄
+//	 * @return 鏄剧ず瀵硅薄
+//	 */
+//	CodeClassifyTemplateAttrVO codeClassifyTemplateAttrDO2VO(CodeClassifyTemplateAttr codeClassifyTemplateAttrDO);
+	/**
+	 * 鏌ヨ鎵�鏈夌殑涓婚搴撳垎绫荤殑妯℃澘灞炴��
+	 * @param conditionMap 鏌ヨ鏉′欢
+	 * @param pageHelper 鍒嗛〉鍜屾帓搴�
+	 * @return 鎵ц缁撴灉
+	 */
+	DataGrid<CodeClassifyTemplateAttrVO> gridCodeClassifyTemplateAttr(Map<String, String> conditionMap, PageHelper pageHelper);
+
+
+	/**
+	 * 澧炲姞涓婚搴撳垎绫荤殑妯℃澘灞炴��
+	 * @param codeClassifyTemplateAttrDTO 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф暟鎹紶杈撳璞�
+	 * @return 鎵ц缁撴灉
+	 */
+	CodeClassifyTemplateAttrVO addSave(CodeClassifyTemplateAttrDTO codeClassifyTemplateAttrDTO);
+
+	List<CodeClassifyTemplateAttrVO> batchAddSave(List<CodeClassifyTemplateAttrDTO> list);
+
+	/**
+	 * 淇敼涓婚搴撳垎绫荤殑妯℃澘灞炴��
+	 * @param codeClassifyTemplateAttrDTO 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф暟鎹紶杈撳璞�
+	 * @return 鎵ц缁撴灉
+	 */
+	R<CodeClassifyTemplateAttrVO> editSave(CodeClassifyTemplateAttrDTO codeClassifyTemplateAttrDTO);
+
+	/**
+	 * 鍒犻櫎涓婚搴撳垎绫荤殑妯℃澘灞炴��
+	 * @param codeClassifyTemplateAttrDTO 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+	 * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+	 */
+	R deleteCodeClassifyTemplateAttr(CodeClassifyTemplateAttrDTO codeClassifyTemplateAttrDTO);
+
+	/**
+	 * 涓婚敭鑾峰彇涓婚搴撳垎绫荤殑妯℃澘灞炴��
+	 * @param oid 涓婚敭
+	 * @return 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф樉绀哄璞�
+	 */
+	CodeClassifyTemplateAttrVO getObjectByOid(String oid);
+
+	/**
+	 * 涓婚敭鎵归噺鑾峰彇涓婚搴撳垎绫荤殑妯℃澘灞炴��
+	 * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+	 * @return 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф樉绀哄璞�
+	 */
+	Collection<CodeClassifyTemplateAttrVO> listCodeClassifyTemplateAttrByOids(Collection<String> oidCollections);
+
+	/**
+	 * 鍙傜収涓婚搴撳垎绫荤殑妯℃澘灞炴�у垪琛�
+	 * @param conditionMap 鏌ヨ鏉′欢
+	 * @param pageHelper 鍒嗛〉鍜屾帓搴�
+	 * @return 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
+	 */
+	DataGrid<CodeClassifyTemplateAttrVO> refDataGridCodeClassifyTemplateAttr(Map<String, String> conditionMap, PageHelper pageHelper);
+
+	/**
+	 * 鏌ヨ杩欎釜妯℃澘锛屼笟鍔$被鍨嬩笅鐨勬墍鏈夋湭閫夋嫨鐨勫睘鎬�
+	 * @param baseQueryObject
+	 * @return
+	 */
+	DataGrid<CodeOsbtmtypeattributeVO> codeClassifyTemplateAttrByBtm(BaseQueryObject baseQueryObject);
+	/**
+	 * 鏌ヨ杩欎釜妯℃澘锛屼笟鍔$被鍨嬩笅宸查�夋嫨鐨勫睘鎬�
+	 * @param baseQueryObject
+	 * @return
+	 */
+	DataGrid<CodeOsbtmtypeattributeVO> codeClassifyTemplateAttrByBtmHave(BaseQueryObject baseQueryObject);
+
+	/**
+	 * 鍚屾鍒板叾浠栨ā鏉�
+	 * @param codeClassifyAttrDTO oid
+	 * @return
+	 */
+	R copyto(CodeClassifyTemplateAttrDTO codeClassifyAttrDTO);
 
 }
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
deleted file mode 100644
index 5e6cf02..0000000
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClsflowtempService.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- *      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/ICodeClstemplateService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClstemplateService.java
index 5e287d1..3f0a0ec 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,13 +18,13 @@
 
 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.dto.CodeClassifyTemplateDTO;
+import com.vci.ubcs.code.entity.CodeClassifyTemplate;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO;
 import com.vci.ubcs.starter.revision.model.TreeQueryObject;
 import com.vci.ubcs.starter.web.pagemodel.DataGrid;
+import com.vci.ubcs.starter.web.pagemodel.PageHelper;
 import com.vci.ubcs.starter.web.pagemodel.Tree;
-import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 
 import java.util.Collection;
@@ -37,7 +37,7 @@
  * @author yuxc
  * @since 2023-04-10
  */
-public interface ICodeClstemplateService extends IService<CodeClstemplateEntity> {
+public interface ICodeClstemplateService extends IService<CodeClassifyTemplate> {
 
 	/**
 	 * 鑷畾涔夊垎椤�
@@ -46,7 +46,7 @@
 	 * @param plCodeClstemplate
 	 * @return
 	 */
-	IPage<CodeClstemplateVO> selectPlCodeClstemplatePage(IPage<CodeClstemplateVO> page, CodeClstemplateVO plCodeClstemplate);
+	IPage<CodeClassifyTemplateVO> selectPlCodeClstemplatePage(IPage<CodeClassifyTemplateVO> page, CodeClassifyTemplateVO plCodeClstemplate);
 
 	/**
 	 * 鏌ヨ鍒嗙被妯℃澘瀵硅薄 鏍�
@@ -61,29 +61,29 @@
 	 * @param treeQueryObject 鏍戝舰鏌ヨ瀵硅薄
 	 * @return 鏌ヨ缁撴灉,鏁版嵁瀵硅薄
 	 */
-	List<CodeClstemplateEntity> selectCodeClassifyTemplateDOByTree(TreeQueryObject treeQueryObject);
+	List<CodeClassifyTemplate> selectCodeClassifyTemplateDOByTree(TreeQueryObject treeQueryObject);
 
 	/**
 	 * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
-	 * @param codeClstemplateEntitys 鏁版嵁瀵硅薄鍒楄〃
+	 * @param codeClassifyTemplates 鏁版嵁瀵硅薄鍒楄〃
 	 * @return 鏄剧ず瀵硅薄
 	 */
-	List<CodeClstemplateVO> codeClassifyTemplateDO2VOs(Collection<CodeClstemplateEntity> codeClstemplateEntitys);
+	List<CodeClassifyTemplateVO> codeClassifyTemplateDO2VOs(Collection<CodeClassifyTemplate> codeClassifyTemplates);
 
 	/**
 	 * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
-	 * @param codeClstemplateEntitys 鏁版嵁瀵硅薄鍒楄〃
+	 * @param codeClassifyTemplates 鏁版嵁瀵硅薄鍒楄〃
 	 * @param hasAttr 鏄惁鍖呭惈灞炴��
 	 * @return 鏄剧ず瀵硅薄
 	 */
-	List<CodeClstemplateVO> codeClassifyTemplateDO2VOs(Collection<CodeClstemplateEntity> codeClstemplateEntitys, boolean hasAttr);
+	List<CodeClassifyTemplateVO> codeClassifyTemplateDO2VOs(Collection<CodeClassifyTemplate> codeClassifyTemplates, boolean hasAttr);
 
 	/**
 	 * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
-	 * @param  codeClstemplateEntity 鏁版嵁瀵硅薄
+	 * @param  codeClassifyTemplate 鏁版嵁瀵硅薄
 	 * @return 鏄剧ず瀵硅薄
 	 */
-	CodeClstemplateVO codeClassifyTemplateDO2VO(CodeClstemplateEntity codeClstemplateEntity);
+	CodeClassifyTemplateVO codeClassifyTemplateDO2VO(CodeClassifyTemplate codeClassifyTemplate);
 
 //	/**
 //	 * 鍒嗙被妯℃澘鍒楄〃
@@ -98,7 +98,7 @@
 	 * @param codeClstemplateDTO 鍒嗙被妯℃澘瀵硅薄鏁版嵁浼犺緭瀵硅薄锛屽繀椤昏鏈塷id鍜宼s灞炴��
 	 * @return 鎵ц缁撴灉 success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
 	 */
-	R checkIsCanDelete(CodeClstemplateDTO codeClstemplateDTO);
+	R checkIsCanDelete(CodeClassifyTemplateDTO codeClstemplateDTO);
 
 	/**
 	 * 妫�鏌ユ槸鍚︽湁涓嬬骇鏄惁鍏宠仈浜嗘暟鎹�
@@ -121,21 +121,21 @@
 	 * @param codeClstemplateDTO 鍒嗙被妯℃澘瀵硅薄鏁版嵁浼犺緭瀵硅薄锛宱id鍜宼s闇�瑕佷紶杈�
 	 * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
 	 */
-	R deleteCodeClassifyTemplate(CodeClstemplateDTO codeClstemplateDTO);
+	R deleteCodeClassifyTemplate(CodeClassifyTemplateDTO codeClstemplateDTO);
 
 	/**
 	 * 涓婚敭鑾峰彇鍒嗙被妯℃澘瀵硅薄
 	 * @param oid 涓婚敭
 	 * @return 鍒嗙被妯℃澘瀵硅薄鏄剧ず瀵硅薄
 	 */
-	CodeClstemplateVO getObjectByOid(String oid) ;
+	CodeClassifyTemplateVO getObjectByOid(String oid) ;
 
 	/**
 	 * 涓婚敭鎵归噺鑾峰彇鍒嗙被妯℃澘瀵硅薄
 	 * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
 	 * @return 鍒嗙被妯℃澘瀵硅薄鏄剧ず瀵硅薄
 	 */
-	Collection<CodeClstemplateVO> listCodeClassifyTemplateByOids(List<String> oidCollections);
+	Collection<CodeClassifyTemplateVO> listCodeClassifyTemplateByOids(List<String> oidCollections);
 
 
 	/**
@@ -156,40 +156,40 @@
 	/**
 	 * 鍗囩増
 	 */
-	R Upgrade(CodeClstemplateDTO codeClassifyDTO);
+	R Upgrade(CodeClassifyTemplateDTO codeClassifyDTO);
 	/**
 	 * 妯℃澘鍏嬮殕
 	 */
-	R copyTemplate(CodeClstemplateDTO codeClassifyDTO);
+	R copyTemplate(CodeClassifyTemplateDTO codeClassifyDTO);
 
 	/**
 	 * 鍒嗙被妯℃澘鍒楄〃
-	 * @param plCodeClstemplate 鏌ヨ鏉′欢
-	 * @param query 鍒嗛〉瀵硅薄
+	 * @param conditionMap 鏌ヨ鏉′欢
+	 * @param pageHelper 鍒嗛〉瀵硅薄
 	 * @return 鏄剧ず瀵硅薄
 	 */
-	DataGrid<CodeClstemplateVO> gridCodeClassifyTemplate(CodeClstemplateVO plCodeClstemplate, Query query);
+	DataGrid<CodeClassifyTemplateVO> gridCodeClassifyTemplate(Map<String, String> conditionMap, PageHelper pageHelper);
 
 	/**
 	 * 澧炲姞鍒嗙被妯℃澘瀵硅薄
 	 * @param codeClassifyTemplateDTO 鍒嗙被妯℃澘瀵硅薄鏁版嵁浼犺緭瀵硅薄
 	 * @return 鎵ц缁撴灉
 	 */
-	R<CodeClstemplateVO> addSave(CodeClstemplateDTO codeClassifyTemplateDTO);
+	R<CodeClassifyTemplateVO> addSave(CodeClassifyTemplateDTO codeClassifyTemplateDTO);
 
 	/**
 	 * 淇敼鍒嗙被妯℃澘瀵硅薄
 	 * @param codeClassifyTemplateDTO 鍒嗙被妯℃澘瀵硅薄鏁版嵁浼犺緭瀵硅薄
 	 * @return 鎵ц缁撴灉
 	 */
-	R<CodeClstemplateVO> editSave(CodeClstemplateDTO codeClassifyTemplateDTO);
+	R<CodeClassifyTemplateVO> editSave(CodeClassifyTemplateDTO codeClassifyTemplateDTO);
 
 	/**
 	 * 鑾峰彇鎵�鏈夊瓙鍒嗙被妯℃澘
 	 * @param codeClassifyOid 鐖跺垎绫荤殑涓婚敭
 	 * @return true琛ㄧず鐩稿悓
 	 */
-	List<CodeClstemplateVO> childTemplates(String codeClassifyOid);
+	List<CodeClassifyTemplateVO> childTemplates(String codeClassifyOid);
 
 	/**
 	 * 浣跨敤涓婚搴撶殑鍒嗙被涓婚敭锛岃幏鍙栫敓鏁堢殑妯℃澘
@@ -197,14 +197,14 @@
 	 * @param hasAttribute 鏄惁鍖呭惈灞炴��
 	 * @return 妯℃澘鐨勪俊鎭�
 	 */
-	List<CodeClstemplateVO> listReleaseTemplateByClassifyOid(String codeClassifyOid,boolean hasAttribute);
+	List<CodeClassifyTemplateVO> listReleaseTemplateByClassifyOid(String codeClassifyOid,boolean hasAttribute);
 
 	/**
 	 * 鐢ㄦā鏉跨殑鐗堟湰鏉ユ帓搴�
 	 * @param templateVOList 妯℃澘鐨勬樉绀哄璞�
 	 * @return 鎺掑簭鍚庣殑鍒楄〃
 	 */
-	List<CodeClstemplateVO> sortTemplateByRevision(List<CodeClstemplateVO> templateVOList);
+	List<CodeClassifyTemplateVO> sortTemplateByRevision(List<CodeClassifyTemplateVO> templateVOList);
 
 
 	/**
@@ -212,7 +212,7 @@
 	 * @param templateOid 涓婚敭
 	 * @return 鍒嗙被妯℃澘瀵硅薄鏄剧ず瀵硅薄
 	 */
-    CodeClstemplateVO getObjectHasAttrByOid(String templateOid);
+	CodeClassifyTemplateVO getObjectHasAttrByOid(String templateOid);
 
 
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeKeyattrrepeatService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeKeyAttrRepeatService.java
similarity index 78%
rename from Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeKeyattrrepeatService.java
rename to Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeKeyAttrRepeatService.java
index 4df9740..c950e5a 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeKeyattrrepeatService.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeKeyAttrRepeatService.java
@@ -17,8 +17,8 @@
 package com.vci.ubcs.code.service;
 
 import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
-import com.vci.ubcs.code.entity.CodeKeyattrrepeatEntity;
-import com.vci.ubcs.code.vo.CodeKeyattrrepeatVO;
+import com.vci.ubcs.code.entity.CodeKeyAttrRepeat;
+import com.vci.ubcs.code.vo.CodeKeyAttrRepeatVO;
 import com.vci.ubcs.code.vo.pagemodel.CodeKeyAttrRepeatRuleVO;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
@@ -31,7 +31,7 @@
  * @author yuxc
  * @since 2023-04-03
  */
-public interface ICodeKeyattrrepeatService  {
+public interface ICodeKeyAttrRepeatService {
 
 	/**
 	 * 鑷畾涔夊垎椤�
@@ -40,7 +40,7 @@
 	 * @param plCodeKeyattrrepeat
 	 * @return
 	 */
-	IPage<CodeKeyattrrepeatVO> selectPlCodeKeyattrrepeatPage(IPage<CodeKeyattrrepeatVO> page, CodeKeyattrrepeatVO plCodeKeyattrrepeat);
+	IPage<CodeKeyAttrRepeatVO> selectPlCodeKeyattrrepeatPage(IPage<CodeKeyAttrRepeatVO> page, CodeKeyAttrRepeatVO plCodeKeyattrrepeat);
 
 	/**
 	 * 涓婚敭鎵归噺鑾峰彇鍏抽敭鏁版嵁鏌ラ噸瑙勫垯
@@ -52,24 +52,24 @@
 
 	/**
 	 * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
-	 * @param codeKeyattrrepeatEntityS 鏁版嵁瀵硅薄鍒楄〃
+	 * @param codeKeyAttrRepeats 鏁版嵁瀵硅薄鍒楄〃
 	 * @return 鏄剧ず瀵硅薄
 	 */
-	List<CodeKeyAttrRepeatRuleVO> codeKeyAttrRepeatRuleDO2VOs(Collection<CodeKeyattrrepeatEntity>  codeKeyattrrepeatEntityS);
+	List<CodeKeyAttrRepeatRuleVO> codeKeyAttrRepeatRuleDO2VOs(Collection<CodeKeyAttrRepeat> codeKeyAttrRepeats);
 
 	/**
 	 * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
-	 * @param  codeKeyattrrepeatEntity 鏁版嵁瀵硅薄
+	 * @param  codeKeyAttrRepeat 鏁版嵁瀵硅薄
 	 * @return 鏄剧ず瀵硅薄
 	 */
-	CodeKeyAttrRepeatRuleVO codeKeyAttrRepeatRuleDO2VO(CodeKeyattrrepeatEntity codeKeyattrrepeatEntity);
+	CodeKeyAttrRepeatRuleVO codeKeyAttrRepeatRuleDO2VO(CodeKeyAttrRepeat codeKeyAttrRepeat);
 
 	/**
 	 * 浣跨敤鍒嗙被鐨勫叏閮ㄤ俊鎭潵鑾峰彇鍏抽敭灞炴�у垽鏂鍒欑殑鍐呭
 	 * @param classifyFullInfo 涓婚搴撳垎绫荤殑鍏ㄩ儴淇℃伅
 	 * @return 瑙勫垯鐨勬樉绀哄璞�
 	 */
-    CodeKeyattrrepeatVO getRuleByClassifyFullInfo(CodeClassifyFullInfoBO classifyFullInfo);
+    CodeKeyAttrRepeatVO getRuleByClassifyFullInfo(CodeClassifyFullInfoBO classifyFullInfo);
 
 	/**
 	 * 涓婚敭鑾峰彇鍏抽敭鏁版嵁鏌ラ噸瑙勫垯
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java
index 2c7f399..3b27cc4 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java
@@ -2,15 +2,7 @@
 
 
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.vci.ubcs.code.dto.CodeOrderDTO;
-import com.vci.ubcs.code.dto.datapush.BaseModelDTO;
 import com.vci.ubcs.code.entity.CodeAllCode;
-import com.vci.ubcs.code.vo.CodeClstemplateVO;
-import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
-import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
-import com.vci.ubcs.starter.web.pagemodel.KeyValue;
-
-import java.util.List;
 
 /**
  * 涓绘暟鎹紩鎿庢湇鍔�
@@ -18,46 +10,117 @@
  * @date 2022-2-21
  */
 public interface MdmEngineService extends IService<CodeAllCode> {
-
-	/**
-	 * 浣跨敤鍒嗙被鐨勪富閿幏鍙栧彲浠ヤ娇鐢ㄧ殑妯℃澘瀵硅薄
-	 * @param codeClassifyOid 鍒嗙被鐨勪富閿�
-	 * @return 妯℃澘鐨勬樉绀哄璞�
-	 */
-	CodeClstemplateVO getUsedTemplateByClassifyOid(String codeClassifyOid);
-
-	/**
-	 * 浣跨敤鍒嗙被鐨勪富閿幏鍙栧彲浠ヤ娇鐢ㄧ殑妯℃澘瀵硅薄
-	 * @param codeClassifyOid 鍒嗙被鐨勪富閿�
-	 * @param hasAttr 鍖呭惈灞炴��
-	 * @return 妯℃澘鐨勬樉绀哄璞�
-	 */
-	CodeClstemplateVO getUsedTemplateByClassifyOid(String codeClassifyOid, boolean hasAttr);
-
-	/**
-	 * 鑾峰彇鏋氫妇鐨勪笅鎷夐�夐」
-	 * @param attrVO 妯℃澘灞炴�х殑瀵硅薄
-	 * @return 涓嬫媺閫夐」
-	 */
-	List<KeyValue> listComboboxItems(CodeClassifyTemplateAttrVO attrVO);
-
-	/**
-	 * 淇敼鐘舵��
-	 * @param baseModelDTO 鏁版嵁浼犺緭瀵硅薄
-	 */
-	void changeStatus(BaseModelDTO baseModelDTO);
-
-	/**
-	 * 鐢宠鍗曚竴缂栫爜
-	 * @param orderDTO 鐢宠鐨勪俊鎭紝闇�瑕佸寘鍚睘鎬х殑鍐呭鍜岀爜娈电浉鍏崇殑鍐呭
-	 * @return 杩斿洖缂栫爜鐨勫唴瀹�
-	 */
-	String addSaveCode(CodeOrderDTO orderDTO);
-
-	/**
-	 * 鍒ゆ柇缂栫爜鐨勭爜娈垫槸鍚﹁緭鍏ユ垨鑰呴�夋嫨浜嗙爜鍊�
-	 * @param ruleVO 瑙勫垯鐨勬樉绀哄璞�
-	 * @param orderDTO 缂栫爜鐢宠鐨勫唴瀹�
-	 */
-	void checkSecValueOnOrder(CodeRuleVO ruleVO, CodeOrderDTO orderDTO);
+//	/**
+//	 * 浣跨敤鍒嗙被鐨勪富閿幏鍙栧彲浠ヤ娇鐢ㄧ殑妯℃澘瀵硅薄
+//	 * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+//	 * @return 妯℃澘鐨勬樉绀哄璞�
+//	 */
+//	CodeClstemplateVO getUsedTemplateByClassifyOid(String codeClassifyOid);
+//
+//	/**
+//	 * 浣跨敤鍒嗙被鐨勪富閿幏鍙栧彲浠ヤ娇鐢ㄧ殑妯℃澘瀵硅薄
+//	 * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+//	 * @param hasAttr 鍖呭惈灞炴��
+//	 * @return 妯℃澘鐨勬樉绀哄璞�
+//	 */
+//	CodeClstemplateVO getUsedTemplateByClassifyOid(String codeClassifyOid, boolean hasAttr);
+//
+//	/**
+//	 * 鑾峰彇鏋氫妇鐨勪笅鎷夐�夐」
+//	 * @param attrVO 妯℃澘灞炴�х殑瀵硅薄
+//	 * @return 涓嬫媺閫夐」
+//	 */
+//	List<KeyValue> listComboboxItems(CodeClassifyTemplateAttrVO attrVO);
+//
+//	/**
+//	 * 淇敼鐘舵��
+//	 * @param baseModelDTO 鏁版嵁浼犺緭瀵硅薄
+//	 */
+//	void changeStatus(BaseModelDTO baseModelDTO);
+//
+//	/**
+//	 * 鐢宠鍗曚竴缂栫爜
+//	 * @param orderDTO 鐢宠鐨勪俊鎭紝闇�瑕佸寘鍚睘鎬х殑鍐呭鍜岀爜娈电浉鍏崇殑鍐呭
+//	 * @return 杩斿洖缂栫爜鐨勫唴瀹�
+//	 */
+//	String addSaveCode(CodeOrderDTO orderDTO);
+//
+//	/**
+//	 * 鍒ゆ柇缂栫爜鐨勭爜娈垫槸鍚﹁緭鍏ユ垨鑰呴�夋嫨浜嗙爜鍊�
+//	 * @param ruleVO 瑙勫垯鐨勬樉绀哄璞�
+//	 * @param orderDTO 缂栫爜鐢宠鐨勫唴瀹�
+//	 */
+//	void checkSecValueOnOrder(CodeRuleVO ruleVO, CodeOrderDTO orderDTO);
+//
+//	/**
+//	 * 灏佽鍏抽敭灞炴�х殑鏌ヨ璇彞
+//	 *
+//	 * @param value        褰撳墠鐨勫��
+//	 * @param keyRuleVO    鍏抽敭灞炴�х殑鎺у埗瑙勫垯锛屽彲浠ヤ负绌�
+//	 * @param attrId       灞炴�х殑缂栧彿
+//	 * @param trim         鏄惁鍘婚櫎绌烘牸
+//	 * @param ignoreCase   鏄惁涓嶅尯鍒嗗ぇ灏忓啓
+//	 * @param ignoreWidth  鏄惁蹇界暐鍏ㄥ崐瑙�
+//	 * @param trimAll      鏄惁蹇界暐鍏ㄩ儴绌烘牸
+//	 * @param conditionMap 鏌ヨ鏉′欢
+//	 */
+//	void wrapperKeyAttrConditionMap(String value, CodeKeyattrrepeatVO keyRuleVO, String attrId,
+//							   boolean trim, boolean ignoreCase, boolean ignoreWidth,
+//							   boolean trimAll, Map<String, String> conditionMap);
+//	/**
+//	 * 鍒濆鍖栦笟鍔$被鍨�
+//	 * --鍒涘缓浜洪粯璁や负褰撳墠鐢ㄦ埛锛屽鏋滈渶瑕佷慨鏀癸紝鍙互鍦ㄨ幏鍙栧悗鑷澶勭悊
+//	 * @param btmName 涓氬姟绫诲瀷鐨勫悕绉帮紝浼氳嚜鍔ㄥ彉鎴愬皬鍐�
+//	 * @return CodeWupinEntity
+//	 * @throws VciBaseException 鍒濆鍖栧嚭閿欑殑鏄細鎶涘嚭寮傚父
+//	 */
+//	CodeWupinEntity createCBOByBtmName(String btmName);
+//
+//	/**
+//	 * 淇濆瓨鍙緭鍙�夌殑淇℃伅
+//	 *
+//	 * @param templateVO 妯℃澘鐨勫璞�
+//	 * @param cboList    鏁版嵁鐨勫唴瀹�
+//	 */
+//	void batchSaveSelectChar(CodeClstemplateVO templateVO, /*List<ClientBusinessObject> cboList*/
+//							 List<String> cboList);
+//
+//	/**
+//	 * 浣跨敤妯℃澘鐨勪富閿幏鍙栬〃鍗曠殑淇℃伅
+//	 * @param templateOid 妯℃澘鐨勪富閿�
+//	 * @param codeClassifyOid 浣跨敤妯℃澘鐨勫垎绫荤殑涓婚敭
+//	 * @return ui鐩稿叧鐨勫唴瀹�
+//	 */
+//    MdmUIInfoVO getFormDefineByTemplateOid(String templateOid, String codeClassifyOid);
+//
+//	/**
+//	 * 妯℃澘灞炴�ц浆鎹负琛ㄥ崟鐨勫瓧娈�
+//	 *
+//	 * @param attrVO  妯℃澘灞炴��
+//	 * @param btmType 涓氬姟绫诲瀷
+//	 * @return 琛ㄥ崟鐨勫瓧娈�
+//	 */
+//	UIFormItemVO templateAttr2FormField(CodeClstempattrVO attrVO, String btmType) ;
+//
+//	/**
+//	 * 妯℃澘灞炴�ц浆鎹负琛ㄦ牸鏄剧ず鐨勯厤缃�
+//	 *
+//	 * @param attrVO 妯℃澘灞炴��
+//	 * @param forEdit 鏄惁鏄紪杈戞墍闇�
+//	 * @return 琛ㄦ牸鐨勫瓧娈�
+//	 */
+//	UITableFieldVO templateAttr2TableField(CodeClstempattrVO attrVO, boolean forEdit);
+//
+//	/**
+//	 * 鐩镐技椤规煡璇�
+//	 * @param orderDTO 缂栫爜鐨勭浉鍏充俊鎭�
+//	 * @return 鏁版嵁鍒楄〃
+//	 */
+//	DataGrid<Map<String, String>> resembleQuery(CodeOrderDTO orderDTO);
+//
+//	/**
+//	 * 淇敼涓婚搴撴暟鎹�
+//	 * @param orderDTO 鏁版嵁鐨勫唴瀹癸紝涓嶇敤鍖呭惈鐮佹鐨勫唴瀹逛簡
+//	 */
+//	void editSaveCode(CodeOrderDTO orderDTO);
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmIOService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmIOService.java
index 784ba90..db55109 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmIOService.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmIOService.java
@@ -6,20 +6,20 @@
 import java.io.File;
 
 public interface MdmIOService {
-
-	/**
-	 * 鐢熸垚瀵煎叆鐨勬枃浠�
-	 * @param codeClassifyOid 鍒嗙被鐨勪富閿�
-	 * @param isHistory 鏄惁鍘嗗彶鏁版嵁瀵煎叆
-	 * @return excel鐨勬枃浠跺湴鍧�
-	 */
-	String createImportExcel(String codeClassifyOid,boolean isHistory);
-
-	/**
-	 * 鎵归噺鐢宠缂栫爜鏁版嵁
-	 * @param orderDTO 缂栫爜鐢宠淇℃伅锛屽繀椤诲寘鍚垎绫讳富閿拰鐮佹鐨勪俊鎭�
-	 * @param file excel鏂囦欢鐨勪俊鎭�
-	 * @return 鏈夐敊璇俊鎭殑excel
-	 */
-	CodeImProtRusultVO batchImportCode(CodeOrderDTO orderDTO, File file);
+//
+//	/**
+//	 * 鐢熸垚瀵煎叆鐨勬枃浠�
+//	 * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+//	 * @param isHistory 鏄惁鍘嗗彶鏁版嵁瀵煎叆
+//	 * @return excel鐨勬枃浠跺湴鍧�
+//	 */
+//	String createImportExcel(String codeClassifyOid,boolean isHistory);
+//
+//	/**
+//	 * 鎵归噺鐢宠缂栫爜鏁版嵁
+//	 * @param orderDTO 缂栫爜鐢宠淇℃伅锛屽繀椤诲寘鍚垎绫讳富閿拰鐮佹鐨勪俊鎭�
+//	 * @param file excel鏂囦欢鐨勪俊鎭�
+//	 * @return 鏈夐敊璇俊鎭殑excel
+//	 */
+//	CodeImProtRusultVO batchImportCode(CodeOrderDTO orderDTO, File file);
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmProductCodeService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmProductCodeService.java
index 4136658..7a4d160 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmProductCodeService.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmProductCodeService.java
@@ -3,7 +3,7 @@
 import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
 import com.vci.ubcs.code.dto.CodeOrderSecDTO;
 import com.vci.ubcs.code.entity.CodeWupinEntity;
-import com.vci.ubcs.code.vo.CodeClstemplateVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO;
 import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
 
 import java.util.List;
@@ -17,7 +17,7 @@
 	 * @param secDTOList 鍚勪釜鐮佹鐨勫��
 	 * @param dataCBOList 涓氬姟鏁版嵁
 	 */
-	List<String> productCodeAndSaveData(CodeClassifyFullInfoBO classifyFullInfoBO, CodeClstemplateVO templateVO,
+	List<String> productCodeAndSaveData(CodeClassifyFullInfoBO classifyFullInfoBO, CodeClassifyTemplateVO templateVO,
 										CodeRuleVO ruleVO, List<CodeOrderSecDTO> secDTOList, List<CodeWupinEntity> dataCBOList);
 
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyProcessTempServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyProcessTempServiceImpl.java
index a0469b6..26b1d8d 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyProcessTempServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyProcessTempServiceImpl.java
@@ -6,8 +6,6 @@
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.fasterxml.jackson.core.JsonParser;
 import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
 import com.vci.ubcs.code.dto.CodeClassifyProcessTempDTO;
 import com.vci.ubcs.code.entity.CodeClassifyProcessTemp;
@@ -15,7 +13,6 @@
 import com.vci.ubcs.code.service.ICodeClassifyProcessTempService;
 import com.vci.ubcs.code.vo.pagemodel.CodeClassifyProcessTempVO;
 import com.vci.ubcs.code.wrapper.CodeClassifyProcessTempWrapper;
-import com.vci.ubcs.common.utils.PageDO2PageVO;
 import com.vci.ubcs.starter.exception.VciBaseException;
 import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
 import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
@@ -33,12 +30,10 @@
 import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
-import java.sql.Wrapper;
-import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.stream.Collectors;
 
 import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.*;
-import static com.vci.ubcs.code.constant.MdmBtmTypeConstant.CODE_CLASSIFY_PROCESS_TEMPLATE;
 
 /**
  * 鍒嗙被浣跨敤鐨勬祦绋嬫ā鏉挎湇鍔℃帴鍙�
@@ -362,4 +357,25 @@
 		return count;
 	}
 
+	/**
+	 * 妯℃澘鍒犻櫎鐨勬椂鍊欒Е鍙�
+	 *
+	 * @param classifyTemplateOid 妯℃澘鐨勪富閿�
+	 * @return 鍙楀奖鍝嶇殑鍐呭
+	 */
+	@Override
+	public int codeTemplateDeleteTrigger(String classifyTemplateOid) {
+		int updateCount = 0;
+		if(com.alibaba.nacos.api.utils.StringUtils.isBlank(classifyTemplateOid)){
+			Map<String,Object> conditionMap = new HashMap<>();
+			conditionMap.put("classifyTemplateOid",classifyTemplateOid);
+			List<CodeClassifyProcessTemp> codeClsflowtempEntities = baseMapper.selectByMap(conditionMap);
+			if(!CollectionUtils.isEmpty(codeClsflowtempEntities)){
+				updateCount += baseMapper.deleteBatchIds(codeClsflowtempEntities.stream()
+					.map(CodeClassifyProcessTemp::getOid).collect(Collectors.toList()));
+			}
+		}
+		return updateCount;
+	}
+
 }
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 2a6a165..8470c1b 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
@@ -7,17 +7,17 @@
 import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
 import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
 import com.vci.ubcs.code.entity.CodeClassify;
-import com.vci.ubcs.code.entity.CodeClstemplateEntity;
+import com.vci.ubcs.code.entity.CodeClassifyTemplate;
 import com.vci.ubcs.code.entity.CodeOsbtmtypeEntity;
 import com.vci.ubcs.code.entity.CodeOsbtmtypeattributeEntity;
 import com.vci.ubcs.code.enumpack.FrameworkDataLCStatus;
 import com.vci.ubcs.code.mapper.CodeClassifyMapper;
-import com.vci.ubcs.code.mapper.CodeClstemplateMapper;
+import com.vci.ubcs.code.mapper.CodeClassifyTemplateMapper;
 import com.vci.ubcs.code.mapper.CodeOsbtmtypeMapper;
 import com.vci.ubcs.code.mapper.CodeOsbtmtypeattributeMapper;
 import com.vci.ubcs.code.po.CodeClassifyPO;
 import com.vci.ubcs.code.service.ICodeClassifyService;
-import com.vci.ubcs.code.service.ICodeKeyattrrepeatService;
+import com.vci.ubcs.code.service.ICodeKeyAttrRepeatService;
 import com.vci.ubcs.code.service.ICodeRuleService;
 import com.vci.ubcs.code.vo.CodeOsattributeVO;
 import com.vci.ubcs.code.vo.CodeOsbtmtypeVO;
@@ -44,7 +44,7 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springblade.core.cache.utils.CacheUtil;
-import org.springblade.core.log.exception.ServiceException;
+import com.vci.ubcs.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;
@@ -66,7 +66,7 @@
 	private CodeClassifyMapper codeClassifyMapper;
 
 	@Resource
-	private CodeClstemplateMapper codeClstemplateMapper;
+	private CodeClassifyTemplateMapper codeClassifyTemplateMapper;
 
 	@Resource
 	private ICodeRuleService codeRuleService;
@@ -89,7 +89,7 @@
 	private RevisionModelUtil revisionModelUtil;
 
 	@Resource
-	private ICodeKeyattrrepeatService iCodeKeyattrrepeatService;
+	private ICodeKeyAttrRepeatService iCodeKeyattrrepeatService;
 	/**
 	 * 涓婄骇鑺傜偣鐨勫睘鎬у悕绉�
 	 */
@@ -276,7 +276,7 @@
 		//鍏堢畝绉版槸鍚︽湁鍏宠仈妯℃澘锛屾湁妯℃澘瑕佸厛鍒犻櫎
 		Map<String,Object> condition = new HashMap<>(2);
 		condition.put("codeClassifyOid",codeClassify.getOid());
-		List<CodeClstemplateEntity> codeClstemplateEntities = codeClstemplateMapper.selectByMap(condition);
+		List<CodeClassifyTemplate> codeClstemplateEntities = codeClassifyTemplateMapper.selectByMap(condition);
 //		VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(CodeClassifyTemplateDO.class);
 //		queryWrapper.addQueryMap("codeClassifyOid",codeClassifyDTO.getOid());
 //		List<CodeClassifyTemplateDO> codeClassifyTemplateDOListHaveTemplate =  codeClassifyTemplateMapper.selectByWrapper(queryWrapper);
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateAttrServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateAttrServiceImpl.java
index 61722bd..24eb35b 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateAttrServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateAttrServiceImpl.java
@@ -1,33 +1,51 @@
 package com.vci.ubcs.code.service.impl;
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.nacos.common.utils.StringUtils;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
+import com.vci.ubcs.code.dto.CodeClassifyTemplateAttrDTO;
 import com.vci.ubcs.code.entity.CodeClassifyTemplateAttr;
-import com.vci.ubcs.code.entity.CodeClstemplateEntity;
+import com.vci.ubcs.code.entity.CodeClassifyTemplate;
+import com.vci.ubcs.code.enumpack.CodeLevelTypeEnum;
 import com.vci.ubcs.code.mapper.CodeClassifyTemplateAttrMapper;
+import com.vci.ubcs.code.mapper.CodeClassifyTemplateMapper;
+import com.vci.ubcs.code.mapper.CodeOsbtmtypeattributeMapper;
 import com.vci.ubcs.code.service.ICodeClassifyTemplateAttrService;
+import com.vci.ubcs.code.service.ICodeTempphaseService;
+import com.vci.ubcs.code.vo.CodeOsbtmtypeattributeVO;
 import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
-import com.vci.ubcs.code.wrapper.CodeClstempattrWrapper;
-import com.vci.ubcs.common.utils.PageDO2PageVO;
+import com.vci.ubcs.code.wrapper.CodeClassifyTemplateAttrWrapper;
 import com.vci.ubcs.starter.exception.VciBaseException;
-import com.vci.ubcs.starter.util.Map2MPLLambdaUtil;
-import com.vci.ubcs.starter.util.MybatisParameterUtil;
+import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
+import com.vci.ubcs.starter.util.PatternUtil;
 import com.vci.ubcs.starter.web.enumpck.VciFieldTypeEnum;
-import com.vci.ubcs.starter.web.pagemodel.DataGrid;
-import com.vci.ubcs.starter.web.pagemodel.PageHelper;
+import com.vci.ubcs.starter.web.pagemodel.*;
 import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
 import com.vci.ubcs.starter.web.util.VciBaseUtil;
+import com.vci.ubcs.starter.web.util.VciDateUtil;
+import com.vci.ubcs.system.entity.DictBiz;
+import com.vci.ubcs.system.feign.IDictBizClient;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cglib.beans.BeanMap;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
 import java.util.*;
+import java.util.stream.Collectors;
+
+import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.*;
+import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.DATA_OID_NOT_EXIST;
 
 /**
  * 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф湇鍔�
@@ -42,6 +60,25 @@
 	 */
 	@Resource
 	private CodeClassifyTemplateAttrMapper codeClassifyTemplateAttrMapper;
+
+//	@Resource
+//	CodeClstempattrMapper codeClstempattrMapper;
+	//	@Resource
+//	ICodeTempphaseService codeTempphaseService;
+	@Resource
+	IDictBizClient iDictBizClient;
+	@Resource
+	CodeClassifyTemplateMapper codeClassifyTemplateMapper;
+	@Resource
+	CodeOsbtmtypeattributeMapper codeOsbtmtypeattributeMapper;
+	@Resource
+	@Lazy
+	ICodeTempphaseService codeTempphaseService;
+	/**
+	 * 瀵硅薄鐨勬搷浣�
+	 */
+	@Autowired(required = false)
+	private RevisionModelUtil revisionModelUtil;
 
 	/**
 	 * 鏌ヨ鎵�鏈夌殑涓婚搴撳垎绫荤殑妯℃澘灞炴��
@@ -70,25 +107,25 @@
 		IPage<CodeClassifyTemplateAttr> doList = codeClassifyTemplateAttrMapper.selectPage(Condition.getPage(query), mpjLambdaWrapper);
 		IPage<CodeClassifyTemplateAttrVO> voList = new Page<>();
 		if (!CollectionUtils.isEmpty(doList.getRecords())) {
-			voList = CodeClstempattrWrapper.build().pageVO(doList);
+			voList = CodeClassifyTemplateAttrWrapper.build().pageVO(doList);
 		}
 		return voList;
 	}
 
-	/**
-	 * 鍙傜収涓婚搴撳垎绫荤殑妯℃澘灞炴�у垪琛�
-	 * @param conditionMap 鏌ヨ鏉′欢
-	 * @param pageHelper 鍒嗛〉鍜屾帓搴�
-	 * @return 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
-	 * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
-	 */
-	@Override
-	public IPage<CodeClassifyTemplateAttrVO> refDataGridCodeClassifyTemplateAttr(Map<String, Object> conditionMap, PageHelper pageHelper) throws VciBaseException{
-		if(conditionMap == null){
-			conditionMap = new HashMap<String, Object>();
-		}
-		return gridCodeClassifyTemplateAttr(Map2MPLLambdaUtil.getMPJLambdaWrapper(conditionMap, CodeClassifyTemplateAttr.class),pageHelper);
-	}
+//	/**
+//	 * 鍙傜収涓婚搴撳垎绫荤殑妯℃澘灞炴�у垪琛�
+//	 * @param conditionMap 鏌ヨ鏉′欢
+//	 * @param pageHelper 鍒嗛〉鍜屾帓搴�
+//	 * @return 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
+//	 * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+//	 */
+//	@Override
+//	public IPage<CodeClassifyTemplateAttrVO> refDataGridCodeClassifyTemplateAttr(Map<String, Object> conditionMap, PageHelper pageHelper) throws VciBaseException{
+//		if(conditionMap == null){
+//			conditionMap = new HashMap<String, Object>();
+//		}
+//		return gridCodeClassifyTemplateAttr(Map2MPLLambdaUtil.getMPJLambdaWrapper(conditionMap, CodeClassifyTemplateAttr.class),pageHelper);
+//	}
 
 	@Override
 	public IPage<CodeClassifyTemplateAttrVO> selectCodeClstempattrPage(IPage<CodeClassifyTemplateAttrVO> page, CodeClassifyTemplateAttrVO CodeClstempattr) {
@@ -158,6 +195,714 @@
 		return vo;
 	}
 
+//	@Override
+//	public IPage<CodeClassifyTemplateAttrVO> selectCodeClstempattrPage(IPage<CodeClassifyTemplateAttrVO> page, CodeClassifyTemplateAttrVO CodeClstempattr) {
+//		return page.setRecords(baseMapper.selectCodeClstempattrPage(page, CodeClstempattr));
+//	}
 
 
+//	/**
+//	 * 浣跨敤妯℃澘鐨勪富閿幏鍙栨ā鏉跨殑灞炴��--鎵归噺
+//	 *
+//	 * @param templateOidCollection 妯℃澘鐨勪富閿�
+//	 * @return 灞炴�х殑淇℃伅
+//	 */
+//	@Override
+//	public List<CodeClassifyTemplateAttrVO> listCodeClassifyTemplateAttrByTemplateOids(Collection<String> templateOidCollection) {
+//		if(CollectionUtils.isEmpty(templateOidCollection)){
+//			return new ArrayList<>();
+//		}
+//		List<CodeClassifyTemplateAttr> 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<CodeClassifyTemplateAttr> 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<CodeClassifyTemplateAttrVO> codeClassifyTemplateAttrDO2VOs(Collection<CodeClassifyTemplateAttr>  codeClassifyTemplateAttrDOs){
+//		List<CodeClassifyTemplateAttrVO> voList = new ArrayList<CodeClassifyTemplateAttrVO>();
+//		if(!CollectionUtils.isEmpty(codeClassifyTemplateAttrDOs)){
+//			for(CodeClassifyTemplateAttr s: codeClassifyTemplateAttrDOs){
+//				CodeClassifyTemplateAttrVO vo =  codeClassifyTemplateAttrDO2VO(s);
+//				if(vo != null){
+//					voList.add(vo);
+//				}
+//			}
+//		}
+//		return voList;
+//	}
+
+//	/**
+//	 * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+//	 * @param  codeClassifyTemplateAttrDO 鏁版嵁瀵硅薄
+//	 * @return 鏄剧ず瀵硅薄
+//	 */
+//	@Override
+//	public  CodeClassifyTemplateAttrVO codeClassifyTemplateAttrDO2VO(CodeClassifyTemplateAttr codeClassifyTemplateAttrDO){
+//		CodeClassifyTemplateAttrVO vo = new CodeClassifyTemplateAttrVO();
+//		if(codeClassifyTemplateAttrDO != null){
+//			BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyTemplateAttrDO,vo);
+//			//濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
+//			vo.setAttributeDataTypeText(VciFieldTypeEnum.getTextByValue(vo.getAttributeDataType()));
+//		}
+//		return vo;
+//	}
+
+	/**
+	 * 鏌ヨ鎵�鏈夌殑涓婚搴撳垎绫荤殑妯℃澘灞炴��
+	 * @param conditionMap 鏌ヨ鏉′欢
+	 * @param pageHelper 鍒嗛〉鍜屾帓搴�
+	 * @return 鎵ц缁撴灉
+	 */
+	@Override
+	public DataGrid<CodeClassifyTemplateAttrVO> gridCodeClassifyTemplateAttr(Map<String, String> conditionMap, PageHelper pageHelper) {
+		DataGrid<CodeClassifyTemplateAttrVO> dataGrid=new DataGrid<CodeClassifyTemplateAttrVO>();
+		//娌℃湁浼犻�掑弬鏁帮紝灏变笉鎵ц鏌ヨ閫昏緫
+		if(conditionMap.size()==0){
+			dataGrid.setData(new ArrayList<>());
+			dataGrid.setTotal(0);
+			return dataGrid;
+		}
+
+		if (pageHelper == null) {
+			pageHelper = new PageHelper(-1);
+		}
+		pageHelper.addDefaultAsc("ordernum");
+//		IPage iPage = new IPage();
+		Query query = new Query();
+		query.setAscs("ordernum");
+//		query.setSize(100);
+		if(pageHelper.getLimit() != -1){
+			query.setSize(pageHelper.getLimit());
+			query.setCurrent(pageHelper.getPage());
+		}
+//		Condition.getPage(query)
+		CodeClassifyTemplateAttr codeClstempattrVO = new CodeClassifyTemplateAttr();
+//		BeanUtil.toBean(map,codeClstempattrVO);
+//		BeanUtil
+		BeanMap beanMap = BeanMap.create(codeClstempattrVO);
+
+		beanMap.putAll(conditionMap);
+//		Condition.getQueryWrapper(
+		IPage<CodeClassifyTemplateAttr> doList = baseMapper.
+			selectPage(Condition.getPage(query), Condition.getQueryWrapper(codeClstempattrVO));
+
+
+		if (!CollectionUtils.isEmpty(doList.getRecords())) {
+//			CodeClstempattrEntity codeClstempattrEntity = new CodeClstempattrEntity();
+//			BeanUtils.copyProperties(conditionMap, codeClstempattrEntity);
+//			List<CodeClstempattrEntity> codeClstempattrEntities = new ArrayList<>();
+//			BeanUtils.copyProperties(doList,codeClstempattrEntities);
+//			codeClstempattrEntities.addAll(doList);
+			dataGrid.setData(codeClassifyTemplateAttrDO2VOs(doList.getRecords()));
+			dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(baseMapper.selectCount(Condition.getQueryWrapper(codeClstempattrVO)))));
+		}
+		return dataGrid;
+	}
+
+	/**
+	 * 澧炲姞涓婚搴撳垎绫荤殑妯℃澘灞炴��
+	 * @param codeClassifyTemplateAttrDTO 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф暟鎹紶杈撳璞�
+	 * @return 鎵ц缁撴灉
+	 */
+	@Override
+	public CodeClassifyTemplateAttrVO addSave(CodeClassifyTemplateAttrDTO codeClassifyTemplateAttrDTO){
+		VciBaseUtil.alertNotNull(codeClassifyTemplateAttrDTO,"闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄");
+		//灏咲TO杞崲涓篋O
+		CodeClassifyTemplateAttr codeClassifyTemplateAttrDO = new CodeClassifyTemplateAttr();
+		BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyTemplateAttrDTO,codeClassifyTemplateAttrDO);
+		baseMapper.insert(codeClassifyTemplateAttrDO);
+		return codeClassifyTemplateAttrDO2VO(codeClassifyTemplateAttrDO);
+	}
+
+
+	/**
+	 * 鎵归噺娣诲姞
+	 * @param codeClassifyTemplateAttrDTOs 鏁版嵁浼犺緭瀵硅薄
+	 * @return 淇濆瓨鍚庣殑鏄剧ず瀵硅薄
+	 */
+	@Override
+	@Transactional
+	public List<CodeClassifyTemplateAttrVO> batchAddSave(List<CodeClassifyTemplateAttrDTO> codeClassifyTemplateAttrDTOs) {
+		if(CollectionUtils.isEmpty(codeClassifyTemplateAttrDTOs)){
+			return new ArrayList<>();
+		}
+
+		//鍙栨墍鏈夊睘鎬х殑鑻辨枃鍚嶇О锛岀涓変釜楠岃瘉闇�瑕佺敤鍒�
+		Map<String,CodeClassifyTemplateAttrDTO> attrDTOMap =codeClassifyTemplateAttrDTOs.stream().collect(Collectors.toMap(s->s.getId().toLowerCase(Locale.ROOT), t->t));
+
+		//鎵惧睘鎬т腑鏂囧悕瀛楅噸澶�
+		Map<String, Long> nameCountMap = codeClassifyTemplateAttrDTOs.stream().collect(Collectors.groupingBy(s -> s.getName(), Collectors.counting()));
+		List<String> repeatNameList = nameCountMap.keySet().stream().filter(s -> nameCountMap.get(s) > 1).collect(Collectors.toList());
+		if(!CollectionUtils.isEmpty(repeatNameList)){
+			throw new VciBaseException("妯℃澘灞炴�т腑鏂囧悕绉般�恵0}銆戦噸澶�",new String[]{ repeatNameList.stream().collect(Collectors.joining(","))});
+		}
+		//鎵惧睘鎬ц嫳鏂囧悕瀛楅噸澶�
+		Map<String, Long> idCountMap = codeClassifyTemplateAttrDTOs.stream().collect(Collectors.groupingBy(s -> s.getId().toLowerCase(Locale.ROOT), Collectors.counting()));
+		List<String> repeatIdList = idCountMap.keySet().stream().filter(s -> idCountMap.get(s) > 1).collect(Collectors.toList());
+		if(!CollectionUtils.isEmpty(repeatIdList)){
+			throw new VciBaseException("妯℃澘灞炴�ц嫳鏂囧悕绉般�恵0}銆戦噸澶�",new String[]{ repeatIdList.stream().collect(Collectors.joining(","))});
+		}
+
+		//妯℃澘oid
+		String CLASSIFYTEMPLATEOID = null;
+		//杞崲
+		List<CodeClassifyTemplateAttr> codeClassifyTemplateAttrDOInsert = new ArrayList<CodeClassifyTemplateAttr>();
+		List<String> prefix = new ArrayList<>();
+		List<String> suffix = new ArrayList<>();
+		List<String> dateFormates = new ArrayList<>();
+		for (CodeClassifyTemplateAttrDTO codeClassifyTemplateAttrDTO:codeClassifyTemplateAttrDTOs){
+			VciBaseUtil.alertNotNull(codeClassifyTemplateAttrDTO,"闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄");
+			//灏咲TO杞崲涓篋O
+			CodeClassifyTemplateAttr codeClassifyTemplateAttrDO = new CodeClassifyTemplateAttr();
+			BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyTemplateAttrDTO,codeClassifyTemplateAttrDO);
+			codeClassifyTemplateAttrDOInsert.add(codeClassifyTemplateAttrDO);
+
+			if(StringUtils.isNotBlank(codeClassifyTemplateAttrDO.getPrefixValue())){
+				prefix.add(codeClassifyTemplateAttrDO.getPrefixValue());
+			}
+			if(StringUtils.isNotBlank(codeClassifyTemplateAttrDO.getSuffixValue())){
+				suffix.add(codeClassifyTemplateAttrDO.getSuffixValue());
+			}
+			if(StringUtils.isNotBlank(codeClassifyTemplateAttrDO.getCodeDateFormat())){
+				dateFormates.add(codeClassifyTemplateAttrDO.getCodeDateFormat());
+			}
+			//鍒ゆ柇浼犺繃鏉ョ殑鏋氫妇娉ㄥ叆鏄惁鏄痡sonArr鏍煎紡
+			if(StringUtils.isNotBlank(codeClassifyTemplateAttrDO.getEnumString())&&!checkKVArr(codeClassifyTemplateAttrDO.getEnumString())){
+				throw new VciBaseException("{0}{1}灞炴�х殑鏋氫妇娉ㄥ叆鏁版嵁鏍煎紡閿欒!",new String[]{codeClassifyTemplateAttrDO.getId(),codeClassifyTemplateAttrDO.getName()});
+			}
+			//鍒嗙被娉ㄥ叆
+			if(StringUtils.isNotBlank(codeClassifyTemplateAttrDO.getClassifyInvokeAttr())
+				&& !CodeLevelTypeEnum.MIN.getValue().equalsIgnoreCase(codeClassifyTemplateAttrDO.getClassifyInvokeLevel())
+				&& VciBaseUtil.getInt(codeClassifyTemplateAttrDO.getClassifyInvokeLevel()) < 0){
+				throw new VciBaseException("{0}{1}灞炴�х殑鏄垎绫绘敞鍏ワ紝浣嗘槸娉ㄥ叆灞傜骇涓嶈兘灏忎簬0!",new String[]{codeClassifyTemplateAttrDO.getId(),codeClassifyTemplateAttrDO.getName()});
+			}
+
+			//鍒ゆ柇浼犺繃鏉ョ殑鍙傜収閰嶇疆鏄惁鏄痡son鏍煎紡
+			if(StringUtils.isNotBlank(codeClassifyTemplateAttrDO.getReferConfig())&&!checkKVObj(codeClassifyTemplateAttrDO.getReferConfig())){
+				throw new VciBaseException("{0}{1}灞炴�х殑鍙傜収閰嶇疆鏁版嵁鏍煎紡閿欒!",new String[]{codeClassifyTemplateAttrDO.getId(),codeClassifyTemplateAttrDO.getName()});
+			}
+			if(StringUtils.isNotBlank(codeClassifyTemplateAttrDO.getCodeDateFormat()) && !checkDateFormat(codeClassifyTemplateAttrDO.getCodeDateFormat())){
+				throw new VciBaseException("{0}{1}灞炴�х殑鏃堕棿鏍煎紡涓嶇鍚堣姹�",new String[]{codeClassifyTemplateAttrDO.getId(),codeClassifyTemplateAttrDO.getName()});
+			}
+			//濡傛灉鏄粍鍚堣鍒欙紝閲岄潰浣跨敤鐨勫睘鎬т笉鑳界己澶憋紝涔熼兘寰楁樉绀�
+			String componentrule = codeClassifyTemplateAttrDTO.getComponentrule();
+			boolean isContainsDynamicParameter = PatternUtil.isContainsDynamicParameter(componentrule);
+			if(isContainsDynamicParameter){
+				List<String> userdAttrList =  PatternUtil.getKeyListByContent(componentrule);//鍖呭惈鐨勬墍鏈�${xxx}涓殑xxx
+				if(!CollectionUtils.isEmpty(userdAttrList)){
+					String unExistAttr = userdAttrList.stream().filter(s -> !attrDTOMap.containsKey(s.toLowerCase(Locale.ROOT))).collect(Collectors.joining(","));
+					if(StringUtils.isNotBlank(unExistAttr)){
+						throw new VciBaseException("{0}灞炴�ф槸缁勫悎瑙勫垯锛屼絾鏄鍒欓噷鍖呭惈鐨勫睘鎬{1}]鍦ㄥ綋鍓嶆ā鏉夸腑涓嶅瓨鍦�!",new String[]{codeClassifyTemplateAttrDO.getName(), unExistAttr});
+					}
+					//瑕佺湅鐪嬭〃鍗曟槸鍚︽樉绀�
+					String unFormDisplayAttr = userdAttrList.stream().filter(s -> !VciBaseUtil.getBoolean(attrDTOMap.getOrDefault(s.toLowerCase(Locale.ROOT),
+						new CodeClassifyTemplateAttrDTO()).getFormdisplayflag())).collect(Collectors.joining(","));
+					if(StringUtils.isNotBlank(unFormDisplayAttr)){
+						throw new VciBaseException("{0}灞炴�ф槸缁勫悎瑙勫垯锛屼絾鏄鍒欓噷鍖呭惈鐨勫睘鎬{1}]鍦ㄥ綋鍓嶆ā鏉夸腑娌℃湁璁剧疆 琛ㄥ崟鏄剧ず ",new String[]{codeClassifyTemplateAttrDO.getName(),unFormDisplayAttr});
+					}
+				}
+			}
+
+			if(CLASSIFYTEMPLATEOID==null){
+				CLASSIFYTEMPLATEOID = codeClassifyTemplateAttrDTO.getClassifytemplateoid();
+			}
+
+		}
+
+		//鎵ц鏁版嵁淇濆瓨鎿嶄綔
+//		WebUtil.setPersistence(false);//涓嶆墽琛屼繚瀛�
+
+		//鍏堥兘鍒犱簡
+//		VciQueryWrapperForDO deleteAttrWrapper = new VciQueryWrapperForDO(CodeClassifyTemplateAttrDO.class);
+//		deleteAttrWrapper.addQueryMap("CLASSIFYTEMPLATEOID",CLASSIFYTEMPLATEOID);
+		Map<String,Object> condition = new HashMap<>();
+		condition.put("CLASSIFYTEMPLATEOID",CLASSIFYTEMPLATEOID);
+		List<CodeClassifyTemplateAttr> codeClassifyTemplateAttrDODelete = baseMapper.selectByMap(condition);
+
+		//oids
+		List<String> oids = new ArrayList<String>();
+		for (CodeClassifyTemplateAttr codeClassifyTemplateAttrDO:codeClassifyTemplateAttrDODelete){
+			oids.add(codeClassifyTemplateAttrDO.getOid());
+		}
+//		BatchCBO batchCBOTemplateDelete = new BatchCBO();
+		if(!CollectionUtils.isEmpty(oids)){
+			baseMapper.deleteBatchIds(oids);
+		}
+
+		//鍐嶆柊澧�
+		if(!CollectionUtils.isEmpty(codeClassifyTemplateAttrDOInsert)){
+			this.saveBatch(codeClassifyTemplateAttrDOInsert);
+		}
+
+		//璋冪敤闃舵
+		if(!CollectionUtils.isEmpty(codeClassifyTemplateAttrDOInsert)){
+			codeTempphaseService.codeTemplateAttrModifyTrigger(codeClassifyTemplateAttrDOInsert);
+
+		}
+
+
+//		SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
+		//澶勭悊鍙緭鍙�夌殑瀛楃
+		if(!CollectionUtils.isEmpty(prefix)){
+			for (String s : prefix) {
+				DictBiz dictBiz = new DictBiz();
+				dictBiz.setCode(MdmBtmTypeConstant.CODE_CLASSIFY_TEMPLATE_ATTR);
+				dictBiz.setDictKey(s);
+				dictBiz.setDictValue("prefix");
+				iDictBizClient.getCheck(dictBiz) ;
+			}
+//				.saveBySameNamespaceAndFlag(MdmBtmTypeConstant.CODE_CLASSIFY_TEMPLATE_ATTR,"prefix",prefix,sessionInfo);
+		}
+		if(!CollectionUtils.isEmpty(suffix)){
+			for (String s : suffix) {
+				DictBiz dictBiz = new DictBiz();
+				dictBiz.setCode(MdmBtmTypeConstant.CODE_CLASSIFY_TEMPLATE_ATTR);
+				dictBiz.setDictKey(s);
+				dictBiz.setDictValue("suffix");
+				iDictBizClient.getCheck(dictBiz) ;
+			}
+//			charService.saveBySameNamespaceAndFlag(MdmBtmTypeConstant.CODE_CLASSIFY_TEMPLATE_ATTR,"suffix",suffix,sessionInfo);
+		}
+		if(!CollectionUtils.isEmpty(dateFormates)){
+			for (String s : dateFormates) {
+				DictBiz dictBiz = new DictBiz();
+				dictBiz.setCode(MdmBtmTypeConstant.CODE_CLASSIFY_TEMPLATE_ATTR);
+				dictBiz.setDictKey(s);
+				dictBiz.setDictValue("dateFormates");
+				iDictBizClient.getCheck(dictBiz) ;
+			}
+//			charService.saveBySameNamespaceAndFlag(MdmBtmTypeConstant.CODE_CLASSIFY_TEMPLATE_ATTR,"dateFormates",dateFormates,sessionInfo);
+		}
+
+//		WebUtil.setPersistence(true);//鎵ц淇濆瓨
+//		boService.persistenceBatch(batchCBOTemplateDelete);//涓�璧锋墽琛屼繚瀛�
+		return codeClassifyTemplateAttrDO2VOs(codeClassifyTemplateAttrDOInsert);
+	}
+
+	public boolean checkKVArr(String kvString){
+		boolean isKV = true;
+		try {
+			JSONObject.parseArray(kvString, KeyValue.class);
+		}catch (Exception e){
+			isKV=false;
+		}
+		return isKV;
+	}
+	public boolean checkKVObj(String kvString){
+		boolean isKV = true;
+		try {
+			JSONObject.parseObject(kvString, UIFormReferVO.class);
+		}catch (Exception e){
+			isKV=false;
+		}
+		return isKV;
+	}
+
+	/**
+	 * 鏍¢獙鏃堕棿鏍煎紡
+	 * @param dateFormat 鏃堕棿鏍煎紡
+	 * @return true琛ㄧず鏍¢獙閫氳繃
+	 */
+	public boolean checkDateFormat(String dateFormat){
+		try{
+			VciDateUtil.date2Str(new Date(),dateFormat);
+			return  true;
+		}catch (Throwable e){
+			return false;
+		}
+	}
+
+
+	/**
+	 * 淇敼涓婚搴撳垎绫荤殑妯℃澘灞炴��
+	 * @param codeClassifyTemplateAttrDTO 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф暟鎹紶杈撳璞�
+	 * @return 鎵ц缁撴灉
+	 * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
+	 */
+	@Override
+	public R editSave(CodeClassifyTemplateAttrDTO codeClassifyTemplateAttrDTO) throws VciBaseException{
+		VciBaseUtil.alertNotNull(codeClassifyTemplateAttrDTO,"鏁版嵁瀵硅薄",codeClassifyTemplateAttrDTO.getOid(),"涓婚搴撳垎绫荤殑妯℃澘灞炴�т富閿�");
+
+		//鍒ゆ柇浼犺繃鏉ョ殑鏋氫妇娉ㄥ叆鏄惁鏄痡sonArr鏍煎紡
+		if(StringUtils.isNotBlank(codeClassifyTemplateAttrDTO.getEnumString())&&!checkKVArr(codeClassifyTemplateAttrDTO.getEnumString())){
+			throw new VciBaseException("鏋氫妇娉ㄥ叆鏁版嵁鏍煎紡閿欒!");
+		}
+
+		//鍒ゆ柇浼犺繃鏉ョ殑鍙傜収閰嶇疆鏄惁鏄痡son鏍煎紡
+		if(StringUtils.isNotBlank(codeClassifyTemplateAttrDTO.getReferbtmid())&&!checkKVObj(codeClassifyTemplateAttrDTO.getReferbtmid())){
+			throw new VciBaseException("鏋氫妇娉ㄥ叆鏁版嵁鏍煎紡閿欒!");
+		}
+
+
+		//妫�鏌s
+		CodeClassifyTemplateAttr codeClassifyTemplateAttrDOCopyFromDTO = new CodeClassifyTemplateAttr();
+//		BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyTemplateAttrDTO,codeClassifyTemplateAttrDOCopyFromDTO);
+//		boolean tsBoolean = boService.checkTs(codeClassifyTemplateAttrDOCopyFromDTO);
+
+		//妫�鏌s
+//		Map<String,Object> condition = new HashMap<>(2);
+//		condition.put("oid",codeClassifyTemplateAttrDTO.getOid());
+//		condition.put("ts",codeClassifyTemplateAttrDTO.getTs());
+		CodeClassifyTemplateAttr detail = baseMapper.selectById(codeClassifyTemplateAttrDTO.getOid());
+		if(!detail.getTs().toString().equals(codeClassifyTemplateAttrDTO.getTs().toString())){//涓嶆槸鏈�鏂扮殑涓嶈鏀�
+			return R.fail("褰撳墠鏁版嵁涓嶆槸鏈�鏂帮紝璇峰埛鏂板悗鍐嶄慨鏀癸紒");
+		}
+
+		//灏咲TO杞崲涓篋O
+		CodeClassifyTemplateAttr codeClassifyTemplateAttrDO = baseMapper.selectById(codeClassifyTemplateAttrDTO.getOid());
+		revisionModelUtil.copyFromDTOIgnore(codeClassifyTemplateAttrDTO,codeClassifyTemplateAttrDO);
+		baseMapper.updateById(codeClassifyTemplateAttrDO);
+		return R.data(codeClassifyTemplateAttrDO2VO(codeClassifyTemplateAttrDO));
+	}
+
+	/**
+	 * 鍒犻櫎涓婚搴撳垎绫荤殑妯℃澘灞炴��
+	 * @param codeClassifyTemplateAttrDTO 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+	 * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+	 * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+	 */
+	@Override
+	public R deleteCodeClassifyTemplateAttr(CodeClassifyTemplateAttrDTO codeClassifyTemplateAttrDTO) throws VciBaseException{
+		VciBaseUtil.alertNotNull(codeClassifyTemplateAttrDTO,"涓婚搴撳垎绫荤殑妯℃澘灞炴�ф暟鎹璞�",codeClassifyTemplateAttrDTO.getOid(),"涓婚搴撳垎绫荤殑妯℃澘灞炴�х殑涓婚敭");
+		CodeClassifyTemplateAttr codeClassifyTemplateAttrDO = baseMapper.selectById(codeClassifyTemplateAttrDTO.getOid());
+		R baseResult = checkIsCanDeleteForDO(codeClassifyTemplateAttrDTO,codeClassifyTemplateAttrDO);
+		if(baseResult.isSuccess()) {
+		}else{
+			return baseResult;
+		}
+		//鎵ц鍒犻櫎鎿嶄綔
+		int deleteNum = baseMapper.deleteById(codeClassifyTemplateAttrDO.getOid());
+		return deleteNum>0?R.success(DELETE_SUCCESS):R.fail(DELETE_FAIL);
+	}
+
+	/**
+	 * 鏍¢獙鏄惁鍙互鍒犻櫎锛屽鏋滃瓨鍦ㄤ笅绾э紝骞朵笖涓嬬骇鏈夋暟鎹紩鐢ㄥ垯涓嶈兘鍒犻櫎
+	 * @param codeClassifyTemplateAttrDTO 鏁版嵁浼犺緭瀵硅薄
+	 * @param codeClassifyTemplateAttrDO 鏁版嵁搴撲腑鐨勬暟鎹璞�
+	 * @return success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+	 */
+	private R checkIsCanDeleteForDO(CodeClassifyTemplateAttrDTO codeClassifyTemplateAttrDTO, CodeClassifyTemplateAttr codeClassifyTemplateAttrDO) {
+//		boService.checkTs(codeClassifyTemplateAttrDO);
+//		Map<String,Object> condition = new HashMap<>(2);
+//		condition.put("oid",codeClassifyTemplateAttrDTO.getOid());
+//		condition.put("ts",codeClassifyTemplateAttrDTO.getTs());
+		CodeClassifyTemplateAttr detail = baseMapper.selectById(codeClassifyTemplateAttrDTO.getOid());
+//		.selectOne(Condition.getQueryWrapper(condition,CodeClstempattrEntity.class));
+
+		if(!detail.getTs().toString().equals(codeClassifyTemplateAttrDTO.getTs().toString())){//涓嶆槸鏈�鏂扮殑涓嶈鏀�
+			return R.fail("褰撳墠鏁版嵁涓嶆槸鏈�鏂帮紝璇峰埛鏂板悗鍐嶄慨鏀癸紒");
+		}
+		if(!checkIsLinked(codeClassifyTemplateAttrDO.getOid())) {
+			return R.success("鍙互鍒犻櫎锛�");
+		}else{
+			return R.fail(DATA_LINKED_NOT_DELETE);
+		}
+	}
+
+	/**
+	 * 鏍¢獙鏄惁琚紩鐢�
+	 * @param oid 涓婚敭
+	 * @throws VciBaseException 琚紩鐢ㄧ殑鏃跺�欎細鎶涘嚭寮傚父
+	 */
+	private boolean checkIsLinked(String oid) throws VciBaseException{
+		//TODO 娣诲姞闇�瑕佹牎楠屽紩鐢ㄧ殑鍦版柟
+		return false;
+	}
+
+	/**
+	 * 涓婚敭鑾峰彇涓婚搴撳垎绫荤殑妯℃澘灞炴��
+	 * @param oid 涓婚敭
+	 * @return 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф樉绀哄璞�
+	 * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
+	 */
+	@Override
+	public  CodeClassifyTemplateAttrVO getObjectByOid(String oid) throws VciBaseException{
+		return codeClassifyTemplateAttrDO2VO(selectByOid(oid));
+	}
+	/**
+	 * 涓婚敭鏌ヨ鏁版嵁瀵硅薄
+	 * @param oid 涓婚敭
+	 * @return  鏁版嵁瀵硅薄
+	 * @throws VciBaseException 鍙傛暟涓虹┖锛屽苟涓旀暟鎹笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+	 */
+	private CodeClassifyTemplateAttr selectByOid(String oid) throws VciBaseException{
+		VciBaseUtil.alertNotNull(oid,"涓婚敭");
+		CodeClassifyTemplateAttr codeClassifyTemplateAttrDO = baseMapper.selectById(oid.trim());
+		if(codeClassifyTemplateAttrDO == null || StringUtils.isBlank(codeClassifyTemplateAttrDO.getOid())){
+			throw new VciBaseException(DATA_OID_NOT_EXIST);
+		}
+		return codeClassifyTemplateAttrDO;
+	}
+
+	/**
+	 * 涓婚敭鎵归噺鑾峰彇涓婚搴撳垎绫荤殑妯℃澘灞炴��
+	 * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+	 * @return 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф樉绀哄璞�
+	 * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭
+	 */
+	@Override
+	public Collection<CodeClassifyTemplateAttrVO> listCodeClassifyTemplateAttrByOids(Collection<String> oidCollections) {
+		VciBaseUtil.alertNotNull(oidCollections,"鏁版嵁瀵硅薄涓婚敭闆嗗悎");
+		List<CodeClassifyTemplateAttr> codeClassifyTemplateAttrDOList = listCodeClassifyTemplateAttrDOByOidCollections(oidCollections);
+		return codeClassifyTemplateAttrDO2VOs(codeClassifyTemplateAttrDOList);
+	}
+
+	/**
+	 * 浣跨敤涓婚敭闆嗗悎鏌ヨ鏁版嵁瀵硅薄
+	 * @param oidCollections 涓婚敭鐨勯泦鍚�
+	 * @return 鏁版嵁瀵硅薄鍒楄〃
+	 */
+	private List<CodeClassifyTemplateAttr> listCodeClassifyTemplateAttrDOByOidCollections(Collection<String> oidCollections){
+		List<CodeClassifyTemplateAttr> codeClassifyTemplateAttrDOList = new ArrayList<CodeClassifyTemplateAttr>();
+		if(!CollectionUtils.isEmpty(oidCollections)){
+			Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
+			for(Collection<String> oids: oidCollectionsList){
+				List<CodeClassifyTemplateAttr> tempDOList = baseMapper.selectBatchIds(oids);
+				if(!CollectionUtils.isEmpty(tempDOList)){
+					codeClassifyTemplateAttrDOList.addAll(tempDOList);
+				}
+			}
+		}
+		return  codeClassifyTemplateAttrDOList;
+	}
+
+	/**
+	 * 鍙傜収涓婚搴撳垎绫荤殑妯℃澘灞炴�у垪琛�
+	 * @param conditionMap 鏌ヨ鏉′欢
+	 * @param pageHelper 鍒嗛〉鍜屾帓搴�
+	 * @return 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
+	 * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+	 */
+	@Override
+	public DataGrid<CodeClassifyTemplateAttrVO> refDataGridCodeClassifyTemplateAttr(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+		if(conditionMap == null){
+			conditionMap = new HashMap<String, String>();
+		}
+		return gridCodeClassifyTemplateAttr(conditionMap,pageHelper);
+	}
+
+	/**
+	 * 鏌ヨ杩欎釜妯℃澘锛屼笟鍔$被鍨嬩笅鐨勬墍鏈夋湭閫夋嫨鐨勫睘鎬�
+	 * @param baseQueryObject
+	 * @return
+	 */
+	@Override
+	public DataGrid<CodeOsbtmtypeattributeVO> codeClassifyTemplateAttrByBtm(BaseQueryObject baseQueryObject){
+		if(baseQueryObject.getConditionMap() == null){
+			baseQueryObject.setConditionMap(new HashMap<>());
+		}
+		DataGrid<CodeOsbtmtypeattributeVO> dataGrid=new DataGrid<CodeOsbtmtypeattributeVO>();
+		//妯℃澘oid
+		String templateAttrOid = baseQueryObject.getConditionMap().get("oid");
+		String name = baseQueryObject.getConditionMap().getOrDefault("name","");
+		String id = baseQueryObject.getConditionMap().getOrDefault("id","");
+
+		//娌℃湁oid涓嶆墽琛岄�昏緫
+		if(StringUtils.isBlank(templateAttrOid)){
+			dataGrid.setData(new ArrayList<>());
+			dataGrid.setTotal(0);
+			return dataGrid;
+		}
+
+		//鏌ヨ妯℃澘瀵硅薄
+		CodeClassifyTemplate codeClassifyTemplateDO = codeClassifyTemplateMapper.selectById(templateAttrOid);
+
+		//杩欎釜涓氬姟绫诲瀷涓嬬殑鎵�鏈夊睘鎬�
+		List<CodeOsbtmtypeattributeVO> boAttrs = (List<CodeOsbtmtypeattributeVO>) codeOsbtmtypeattributeMapper.selectById(codeClassifyTemplateDO.getBtmTypeId());// this.btmService.listAttributeByBtmId(codeClassifyTemplateDO.getBtmTypeId());
+//		codeOsbtmtypeattributeMapper.selectById(codeClassifyTemplateDO.getBtmTypeId());
+//		BeanUtils.copyProperties(codeOsbtmtypeattributeMapper.selectById(codeClassifyTemplateDO.getBtmTypeId()),boAttrs);
+		//鎶婇粯璁ょ殑灞炴�т篃娣诲姞鍒癰oAttrs
+		if(boAttrs == null){
+			boAttrs = new ArrayList<>();
+		}
+		if(!false){
+//			List<CodeOsbtmtypeattributeVO> finalBoAttrs = boAttrs;
+//			attributeService.getDefaultAttributeVOs().stream().forEach(attr-> {
+//				CodeOsbtmtypeattributeVO attributeVO = new CodeOsbtmtypeattributeVO();
+//				BeanUtil.convert(attr, attributeVO);
+//				if ("id".equalsIgnoreCase(attributeVO.getId())) {
+//					attributeVO.setName("浼佷笟缂栫爜");
+//				}
+//				if ("name".equalsIgnoreCase(attributeVO.getId())) {
+//					attributeVO.setName("闆嗗洟鐮�");
+//				}
+//				attributeVO.setAttrDataType(attr.getAttributeDataType());
+//				attributeVO.setAttributeLength(attr.getAttrLength());
+//				attributeVO.setReferBtmTypeId(attr.getBtmTypeId());
+//				attributeVO.setReferBtmTypeName(attr.getBtmTypeName());
+//				finalBoAttrs.add(attributeVO);
+//			});
+//			boAttrs = finalBoAttrs;
+			Object o = null;
+		}
+
+		//杩欎釜妯℃澘涓嬪凡缁忔湁鐨勫睘鎬�
+//		VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(CodeClassifyTemplateAttrDO.class);
+//		queryWrapper.addQueryMap("CLASSIFYTEMPLATEOID",templateAttrOid);
+		Map<String,Object> condition = new HashMap<>(1);
+		condition.put("CLASSIFYTEMPLATEOID",templateAttrOid);
+		List<CodeClassifyTemplateAttr> codeClassifyTemplateAttrDOList = baseMapper.selectByMap(condition);
+
+		List<String> btmOids = new ArrayList<String>();
+		for (CodeClassifyTemplateAttr codeClassifyTemplateAttrDO:codeClassifyTemplateAttrDOList){
+			btmOids.add(codeClassifyTemplateAttrDO.getId());
+		}
+
+		//杩囨护鎺夊凡缁忓瓨鍦ㄧ殑灞炴��
+		List<CodeOsbtmtypeattributeVO> boAttrss = new ArrayList<CodeOsbtmtypeattributeVO>();
+
+		for (CodeOsbtmtypeattributeVO osBtmTypeAttributeVO:boAttrs){
+			if(!btmOids.contains(osBtmTypeAttributeVO.getId())){
+				//鐪嬬湅鏄笉鏄湁妯$硦鏌ヨ
+				boolean inSearch = true;
+				if(StringUtils.isNotBlank(name) && !osBtmTypeAttributeVO.getName().contains(name.replace("*",""))){
+					inSearch = false;
+				}
+				if(StringUtils.isNotBlank(id) && !osBtmTypeAttributeVO.getId().contains(id.replace("*",""))){
+					inSearch = false;
+				}
+				if(inSearch) {
+					boAttrss.add(osBtmTypeAttributeVO);
+				}
+			}
+		}
+		dataGrid.setData(boAttrss);
+		dataGrid.setTotal(boAttrss.size());
+		return dataGrid;
+	}
+
+
+
+	/**
+	 * 鏌ヨ杩欎釜妯℃澘锛屼笟鍔$被鍨嬩笅宸查�夋嫨鐨勫睘鎬�
+	 * @param baseQueryObject
+	 * @return
+	 */
+	@Override
+	public DataGrid<CodeOsbtmtypeattributeVO> codeClassifyTemplateAttrByBtmHave(BaseQueryObject baseQueryObject){
+		DataGrid<CodeOsbtmtypeattributeVO> dataGrid=new DataGrid<CodeOsbtmtypeattributeVO>();
+		//妯℃澘oid
+		String templateAttrOid = baseQueryObject.getConditionMap().get("oid");
+
+		//娌℃湁oid涓嶆墽琛岄�昏緫
+		if(StringUtils.isBlank(templateAttrOid)){
+			dataGrid.setData(new ArrayList<>());
+			dataGrid.setTotal(0);
+			return dataGrid;
+		}
+
+		//鏌ヨ妯℃澘瀵硅薄
+		CodeClassifyTemplate codeClassifyTemplateDO = codeClassifyTemplateMapper.selectById(templateAttrOid);
+
+		//杩欎釜涓氬姟绫诲瀷涓嬬殑鎵�鏈夊睘鎬�
+		List<CodeOsbtmtypeattributeVO> boAttrs = (List<CodeOsbtmtypeattributeVO>) codeOsbtmtypeattributeMapper.selectById(codeClassifyTemplateDO.getBtmTypeId());//this.btmService.listAttributeByBtmIdHasDefault(codeClassifyTemplateDO.getBtmTypeId());
+//		codeOsbtmtypeattributeMapper.selectById(codeClassifyTemplateDO.getBtmTypeId());
+//		BeanUtils.copyProperties(codeOsbtmtypeattributeMapper.selectById(codeClassifyTemplateDO.getBtmTypeId()),boAttrs);
+		//杩欎釜妯℃澘涓嬪凡缁忔湁鐨勫睘鎬�
+		//鎶婇粯璁ょ殑灞炴�т篃娣诲姞鍒癰oAttrs
+		if(boAttrs == null){
+			boAttrs = new ArrayList<>();
+		}
+//		VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(CodeClassifyTemplateAttrDO.class);
+//		queryWrapper.addQueryMap("CLASSIFYTEMPLATEOID",templateAttrOid);
+
+//		Map<String,Object> condition = new HashMap<>(1);
+//		condition.put("CLASSIFYTEMPLATEOID",templateAttrOid);
+
+		QueryWrapper<CodeClassifyTemplateAttr> wrapper=new QueryWrapper<>();
+		wrapper.eq("CLASSIFYTEMPLATEOID",templateAttrOid);
+
+		List<CodeClassifyTemplateAttr> codeClassifyTemplateAttrDOList = baseMapper.selectList(wrapper);
+		List<String> btmOids = new ArrayList<String>();
+		for (CodeClassifyTemplateAttr codeClassifyTemplateAttrDO:codeClassifyTemplateAttrDOList){
+			btmOids.add(codeClassifyTemplateAttrDO.getId());
+		}
+
+		//杩囨护鎺夐櫎浜嗚嚜韬殑鍒殑灞炴��
+		List<CodeOsbtmtypeattributeVO> boAttrss = new ArrayList<CodeOsbtmtypeattributeVO>();
+
+		for (CodeOsbtmtypeattributeVO osBtmTypeAttributeVO:boAttrs){
+			if(btmOids.contains(osBtmTypeAttributeVO.getId())){
+				boAttrss.add(osBtmTypeAttributeVO);
+			}
+		}
+		dataGrid.setData(boAttrss);
+		dataGrid.setTotal(boAttrss.size());
+		return dataGrid;
+	}
+
+
+	/**
+	 * 鍚屾鍒板叾浠栨ā鏉�
+	 * @param codeClassifyTemplateAttrDTO oid
+	 * @return
+	 */
+	@Override
+	public R copyto(CodeClassifyTemplateAttrDTO codeClassifyTemplateAttrDTO) throws VciBaseException{
+
+		String templateAttrOid = codeClassifyTemplateAttrDTO.getOid();
+
+		//鏌ヨ鍑烘潵瑕佸鍒剁殑瀵硅薄
+		CodeClassifyTemplateAttr codeClassifyTemplateAttrDO = selectByOid(templateAttrOid);
+		String id = codeClassifyTemplateAttrDO.getId();//鑻辨枃鍚嶇О
+		String classfyTemplateOid = codeClassifyTemplateAttrDO.getClassifyTemplateOid();
+
+		//鏌ヨ鍏朵粬id=id鐨勬ā鏉垮睘鎬�
+//		VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(CodeClassifyTemplateAttrDO.class);
+//		queryWrapper.addQueryMap("id",id);
+//		Map<String,Object> condition = new HashMap<>(1);
+//		condition.put("id",id);
+		QueryWrapper<CodeClassifyTemplateAttr> wrapper=new QueryWrapper<>();
+		wrapper.eq("id",id);
+		//鎵�鏈塱d=id鐨勬ā鏉垮睘鎬�
+		List<CodeClassifyTemplateAttr> codeClassifyTemplateAttrDOList =baseMapper.selectList(wrapper);
+
+		//瑕佸垹闄ょ殑妯℃澘灞炴�х殑oids
+		List<String> deleteOids = new ArrayList<String>();
+		//瑕佷慨鏀圭殑妯℃澘灞炴�у璞�
+		List<CodeClassifyTemplateAttr> codeClassifyTemplateAttrDOListInsert = new ArrayList<CodeClassifyTemplateAttr>();
+		for (CodeClassifyTemplateAttr codeClassifyTemplateAttrDOi:codeClassifyTemplateAttrDOList){
+			String oid = codeClassifyTemplateAttrDOi.getOid();
+			String templateOldOid = codeClassifyTemplateAttrDOi.getClassifyTemplateOid();
+
+			CodeClassifyTemplateAttr codeClassifyTemplateAttrDOInsert = new CodeClassifyTemplateAttr();
+			BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyTemplateAttrDO,codeClassifyTemplateAttrDOInsert);
+			codeClassifyTemplateAttrDOInsert.setOid(oid);
+			codeClassifyTemplateAttrDOInsert.setClassifyTemplateOid(templateOldOid);
+			codeClassifyTemplateAttrDOListInsert.add(codeClassifyTemplateAttrDOInsert);
+
+			deleteOids.add(codeClassifyTemplateAttrDOi.getOid());
+		}
+
+//		WebUtil.setPersistence(false);//涓嶆墽琛屼繚瀛�
+
+		//鍒犻櫎
+//		BatchCBO batchCBOTemplateAttrDelete = codeClassifyTemplateAttrDOissifyTemplateAttrMapper.batchDeleteByOids(deleteOids);
+		baseMapper.deleteBatchIds(deleteOids);
+		//鍐嶆柊澧�
+//		BatchCBO batchCBOTemplateAttrInsert = codeClassifyTemplateAttrMapper.batchInsert(codeClassifyTemplateAttrDOListInsert);
+//		batchCBOTemplateAttrDelete.copyFromOther(batchCBOTemplateAttrInsert);
+		this.saveBatch(codeClassifyTemplateAttrDOListInsert);
+
+//		WebUtil.setPersistence(true);//鎵ц淇濆瓨
+//		boService.persistenceBatch(batchCBOTemplateAttrDelete);//涓�璧锋墽琛屼繚瀛�
+
+		return R.success("鎿嶄綔鎴愬姛锛�");
+	}
+
 }
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
deleted file mode 100644
index b37306e..0000000
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClsflowtempServiceImpl.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- *      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/CodeClstemplateServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClstemplateServiceImpl.java
index dfba31d..ba39071 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
@@ -21,21 +21,23 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant;
-import com.vci.ubcs.code.dto.CodeClstemplateDTO;
+import com.vci.ubcs.code.dto.CodeClassifyTemplateDTO;
 import com.vci.ubcs.code.entity.*;
 import com.vci.ubcs.code.enumpack.CodeClassifyTemplateLC;
 import com.vci.ubcs.code.enumpack.FrameworkDataLCStatus;
 import com.vci.ubcs.code.mapper.*;
+import com.vci.ubcs.code.service.ICodeClassifyProcessTempService;
 import com.vci.ubcs.code.service.ICodeClassifyService;
 import com.vci.ubcs.code.service.ICodeClassifyTemplateAttrService;
 import com.vci.ubcs.code.service.ICodeClstemplateService;
-import com.vci.ubcs.code.vo.CodeClstemplateVO;
 import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO;
 import com.vci.ubcs.starter.exception.VciBaseException;
 import com.vci.ubcs.starter.revision.model.TreeQueryObject;
 import com.vci.ubcs.starter.revision.model.TreeWrapperOptions;
 import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
 import com.vci.ubcs.starter.web.pagemodel.DataGrid;
+import com.vci.ubcs.starter.web.pagemodel.PageHelper;
 import com.vci.ubcs.starter.web.pagemodel.Tree;
 import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
 import com.vci.ubcs.starter.web.util.VciBaseUtil;
@@ -45,6 +47,7 @@
 import org.springblade.core.tool.api.R;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cglib.beans.BeanMap;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -64,7 +67,7 @@
  * @since 2023-04-10
  */
 @Service
-public class CodeClstemplateServiceImpl extends ServiceImpl<CodeClstemplateMapper, CodeClstemplateEntity> implements ICodeClstemplateService {
+public class CodeClstemplateServiceImpl extends ServiceImpl<CodeClassifyTemplateMapper, CodeClassifyTemplate> implements ICodeClstemplateService {
 
 	/**
 	 * 妯℃澘灞炴�х殑鏈嶅姟
@@ -86,9 +89,9 @@
 	@Autowired(required = false)
 	private CodeTempbuttonServiceImpl codeTempbuttonServiceImpl;
 	@Autowired(required = false)
-	private CodeClsflowtempServiceImpl codeClsflowtempServiceImpl;
-	@Autowired(required = false)
-	private CodeClsflowtempMapper codeClsflowtempMapper;
+	private ICodeClassifyProcessTempService codeClsflowtempServiceImpl;
+//	@Autowired(required = false)
+//	private CodeClsflowtempMapper codeClsflowtempMapper;
 	@Autowired(required = false)
 	private CodeTemplatePhaseMapper codeTempphaseMapper;
 	@Autowired(required = false)
@@ -100,12 +103,12 @@
 	@Autowired(required = false)
 	private ICodeClassifyService codeClassifyService;
 	@Autowired(required = false)
-	private CodeClstemplateMapper codeClstemplateMapper;
+	private CodeClassifyTemplateMapper codeClassifyTemplateMapper;
 	@Autowired(required = false)
 	private CodePhaseAttrServiceImpl codePhaseattrServiceImpl;
 
 	@Override
-	public IPage<CodeClstemplateVO> selectPlCodeClstemplatePage(IPage<CodeClstemplateVO> page, CodeClstemplateVO plCodeClstemplate) {
+	public IPage<CodeClassifyTemplateVO> selectPlCodeClstemplatePage(IPage<CodeClassifyTemplateVO> page, CodeClassifyTemplateVO plCodeClstemplate) {
 		return page.setRecords(baseMapper.selectPlCodeClstemplatePage(page, plCodeClstemplate));
 	}
 
@@ -116,12 +119,12 @@
 	 */
 	@Override
 	public List<Tree> treeCodeClassifyTemplate(TreeQueryObject treeQueryObject) {
-		List<CodeClstemplateEntity> doList =selectCodeClassifyTemplateDOByTree(treeQueryObject);
+		List<CodeClassifyTemplate> doList =selectCodeClassifyTemplateDOByTree(treeQueryObject);
 
-		List<CodeClstemplateVO> voList = codeClassifyTemplateDO2VOs(doList);
+		List<CodeClassifyTemplateVO> voList = codeClassifyTemplateDO2VOs(doList);
 		TreeWrapperOptions treeWrapperOptions = new TreeWrapperOptions(PARENT_FIELD_NAME);
 		treeWrapperOptions.copyFromTreeQuery(treeQueryObject);
-		return revisionModelUtil.doList2Trees(voList,treeWrapperOptions,(CodeClstemplateVO s) ->{
+		return revisionModelUtil.doList2Trees(voList,treeWrapperOptions,(CodeClassifyTemplateVO s) ->{
 			//鍙互鍦ㄨ繖閲屽鐞嗘爲鑺傜偣鐨勬樉绀�
 			return s.getId() + " " + s.getName() + (FrameworkDataLCStatus.DISABLED.getValue().equalsIgnoreCase(s
 				.getLcStatus()) ? (" 銆愬仠鐢ㄣ�� ") : "");
@@ -135,7 +138,7 @@
 	 * @return 鏌ヨ缁撴灉,鏁版嵁瀵硅薄
 	 */
 	@Override
-	public List<CodeClstemplateEntity> selectCodeClassifyTemplateDOByTree(TreeQueryObject treeQueryObject) {
+	public List<CodeClassifyTemplate> selectCodeClassifyTemplateDOByTree(TreeQueryObject treeQueryObject) {
 //		VciQueryWrapperForDO queryWrapperForDO = new VciQueryWrapperForDO(null,CodeClassifyTemplateDO.class);
 //		VciParentQueryOption parentQueryOption = new VciParentQueryOption();
 //		parentQueryOption.setParentFieldName(PARENT_FIELD_NAME);
@@ -155,7 +158,7 @@
 	 * @return 鏄剧ず瀵硅薄
 	 */
 	@Override
-	public List<CodeClstemplateVO> codeClassifyTemplateDO2VOs(Collection<CodeClstemplateEntity> codeClassifyTemplateDOs) {
+	public List<CodeClassifyTemplateVO> codeClassifyTemplateDO2VOs(Collection<CodeClassifyTemplate> codeClassifyTemplateDOs) {
 		return codeClassifyTemplateDO2VOs(codeClassifyTemplateDOs,false);
 	}
 
@@ -166,11 +169,11 @@
 	 * @return 鏄剧ず瀵硅薄
 	 */
 	@Override
-	public List<CodeClstemplateVO> codeClassifyTemplateDO2VOs(Collection<CodeClstemplateEntity>  codeClassifyTemplateDOs,boolean hasAttr) {
-		List<CodeClstemplateVO> voList = new ArrayList<CodeClstemplateVO>();
+	public List<CodeClassifyTemplateVO> codeClassifyTemplateDO2VOs(Collection<CodeClassifyTemplate>  codeClassifyTemplateDOs, boolean hasAttr) {
+		List<CodeClassifyTemplateVO> voList = new ArrayList<CodeClassifyTemplateVO>();
 		if(!CollectionUtils.isEmpty(codeClassifyTemplateDOs)){
-			for(CodeClstemplateEntity s: codeClassifyTemplateDOs){
-				CodeClstemplateVO vo =  codeClassifyTemplateDO2VO(s);
+			for(CodeClassifyTemplate s: codeClassifyTemplateDOs){
+				CodeClassifyTemplateVO vo =  codeClassifyTemplateDO2VO(s);
 				if(vo != null){
 					voList.add(vo);
 				}
@@ -178,7 +181,7 @@
 		}
 		if(hasAttr){
 			//涓�涓垎绫婚噷闈㈡�讳笉鑳借秴杩�1000涓敓鏁堢殑鐗堟湰鍚э紒锛侊紒
-			VciBaseUtil.switchCollectionForOracleIn(voList.stream().map(CodeClstemplateVO::getOid).collect(Collectors.toList())).forEach(tempOids->{
+			VciBaseUtil.switchCollectionForOracleIn(voList.stream().map(CodeClassifyTemplateVO::getOid).collect(Collectors.toList())).forEach(tempOids->{
 				List<CodeClassifyTemplateAttrVO> attrVOList = codeClstempattrService.listCodeClassifyTemplateAttrByTemplateOids(tempOids);
 
 				if(!CollectionUtils.isEmpty(attrVOList)){
@@ -186,7 +189,11 @@
 
 					voList.stream().forEach(templateVO->{
 						if(attrVOMap.containsKey(templateVO.getOid())){
-							templateVO.setAttributes(attrVOMap.get(templateVO.getOid()));
+							List<CodeClassifyTemplateAttrVO> codeClstempattrVO = new ArrayList<>();
+							for (CodeClassifyTemplateAttrVO codeClassifyTemplateAttrVO : attrVOMap.get(templateVO.getOid())) {
+								codeClstempattrVO.add(codeClassifyTemplateAttrVO);
+							}
+							templateVO.setAttributes(codeClstempattrVO);
 						}
 					});
 				}
@@ -201,8 +208,8 @@
 	 * @return 鏄剧ず瀵硅薄
 	 */
 	@Override
-	public  CodeClstemplateVO codeClassifyTemplateDO2VO(CodeClstemplateEntity codeClassifyTemplateDO) {
-		CodeClstemplateVO vo = new CodeClstemplateVO();
+	public  CodeClassifyTemplateVO codeClassifyTemplateDO2VO(CodeClassifyTemplate codeClassifyTemplateDO) {
+		CodeClassifyTemplateVO vo = new CodeClassifyTemplateVO();
 		if(codeClassifyTemplateDO != null){
 			BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyTemplateDO,vo);
 			//濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
@@ -218,37 +225,37 @@
 	 * @return 鎵ц缁撴灉 success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
 	 */
 	@Override
-	public R checkIsCanDelete(CodeClstemplateDTO codeClstemplateDTO) {
+	public R checkIsCanDelete(CodeClassifyTemplateDTO codeClstemplateDTO) {
 		VciBaseUtil.alertNotNull(codeClstemplateDTO,"鏁版嵁浼犺緭瀵硅薄",codeClstemplateDTO.getOid(),"涓婚敭");
-		CodeClstemplateEntity codeClstemplateEntity = baseMapper.selectById(codeClstemplateDTO.getOid());
-		return checkIsCanDeleteForDO(codeClstemplateDTO,codeClstemplateEntity);
+		CodeClassifyTemplate codeClassifyTemplate = baseMapper.selectById(codeClstemplateDTO.getOid());
+		return checkIsCanDeleteForDO(codeClstemplateDTO, codeClassifyTemplate);
 	}
 
 	/**
 	 * 鏍¢獙鏄惁鍙互鍒犻櫎锛屽鏋滃瓨鍦ㄤ笅绾э紝骞朵笖涓嬬骇鏈夋暟鎹紩鐢ㄥ垯涓嶈兘鍒犻櫎
 	 * @param codeClstemplateDTO 鏁版嵁浼犺緭瀵硅薄
-	 * @param codeClstemplateEntity 鏁版嵁搴撲腑鐨勬暟鎹璞�
+	 * @param codeClassifyTemplate 鏁版嵁搴撲腑鐨勬暟鎹璞�
 	 * @return success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
 	 */
-	private R checkIsCanDeleteForDO(CodeClstemplateDTO codeClstemplateDTO, CodeClstemplateEntity codeClstemplateEntity) {
-		CodeClstemplateEntity codeClassifyTemplateDOCopyFromDTO = new CodeClstemplateEntity();
+	private R checkIsCanDeleteForDO(CodeClassifyTemplateDTO codeClstemplateDTO, CodeClassifyTemplate codeClassifyTemplate) {
+		CodeClassifyTemplate codeClassifyTemplateDOCopyFromDTO = new CodeClassifyTemplate();
 		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
+		CodeClassifyTemplate detail = baseMapper
 			.selectById(codeClstemplateDTO.getOid());
 
 		if(!detail.getTs().toString().equals(codeClstemplateDTO.getTs().toString())){//涓嶆槸鏈�鏂扮殑涓嶈鏀�
 			return R.fail("褰撳墠鏁版嵁涓嶆槸鏈�鏂帮紝璇峰埛鏂板悗鍐嶄慨鏀癸紒");
 		}
 		//鏍¢獙涓嬬骇鏄惁鏈夊紩鐢�
-		if(checkChildIsLinked(codeClstemplateEntity.getOid())){
+		if(checkChildIsLinked(codeClassifyTemplate.getOid())){
 			return R.fail(DATA_CASCADE_LINKED_NOT_DELETE);
 		}
-		return R.success(String.valueOf(checkHasChild(codeClstemplateEntity.getOid())));
+		return R.success(String.valueOf(checkHasChild(codeClassifyTemplate.getOid())));
 	}
 
 	/**
@@ -301,11 +308,11 @@
 	 */
 	@Transactional
 	@Override
-	public R deleteCodeClassifyTemplate(CodeClstemplateDTO codeClstemplateDTO) {
+	public R deleteCodeClassifyTemplate(CodeClassifyTemplateDTO codeClstemplateDTO) {
 		checkIsCanDelete(codeClstemplateDTO);
 		VciBaseUtil.alertNotNull(codeClstemplateDTO,"鍒嗙被妯℃澘瀵硅薄鏁版嵁瀵硅薄",codeClstemplateDTO.getOid(),"鍒嗙被妯℃澘瀵硅薄鐨勪富閿�");
 
-		CodeClstemplateEntity codeClassifyTemplateDO = baseMapper.selectById(codeClstemplateDTO.getOid());
+		CodeClassifyTemplate codeClassifyTemplateDO = baseMapper.selectById(codeClstemplateDTO.getOid());
 
 		//鍙湁缂栬緫涓墠鑳藉垹
 		if(!CodeClassifyTemplateLC.EDITING.getValue().equals(codeClassifyTemplateDO.getLcStatus())){
@@ -374,14 +381,14 @@
 	 * @return 鍒嗙被妯℃澘瀵硅薄鏄剧ず瀵硅薄
 	 */
 	@Override
-	public  CodeClstemplateVO getObjectByOid(String oid) {
+	public  CodeClassifyTemplateVO getObjectByOid(String oid) {
 		return codeClassifyTemplateDO2VO(selectByOid(oid));
 	}
 
 	@Override
-	public Collection<CodeClstemplateVO> listCodeClassifyTemplateByOids(List<String> oidCollections) {
+	public Collection<CodeClassifyTemplateVO> listCodeClassifyTemplateByOids(List<String> oidCollections) {
 		VciBaseUtil.alertNotNull(oidCollections,"鏁版嵁瀵硅薄涓婚敭闆嗗悎");
-		List<CodeClstemplateEntity> codeClassifyTemplateDOList = listCodeClassifyTemplateDOByOidCollections(oidCollections);
+		List<CodeClassifyTemplate> codeClassifyTemplateDOList = listCodeClassifyTemplateDOByOidCollections(oidCollections);
 		return codeClassifyTemplateDO2VOs(codeClassifyTemplateDOList);
 	}
 
@@ -411,12 +418,12 @@
 	 * @param oidCollections 涓婚敭鐨勯泦鍚�
 	 * @return 鏁版嵁瀵硅薄鍒楄〃
 	 */
-	private List<CodeClstemplateEntity> listCodeClassifyTemplateDOByOidCollections(Collection<String> oidCollections){
-		List<CodeClstemplateEntity> codeClassifyTemplateDOList = new ArrayList<CodeClstemplateEntity>();
+	private List<CodeClassifyTemplate> listCodeClassifyTemplateDOByOidCollections(Collection<String> oidCollections){
+		List<CodeClassifyTemplate> codeClassifyTemplateDOList = new ArrayList<CodeClassifyTemplate>();
 		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);
+				List<CodeClassifyTemplate> tempDOList =  baseMapper.selectBatchIds(oids); //codeClassifyTemplateMapper.selectByPrimaryKeyCollection(oids);
 				if(!CollectionUtils.isEmpty(tempDOList)){
 					codeClassifyTemplateDOList.addAll(tempDOList);
 				}
@@ -430,13 +437,13 @@
 	 * @param oid 涓婚敭
 	 * @return  鏁版嵁瀵硅薄
 	 */
-	private CodeClstemplateEntity  selectByOid(String oid) {
+	private CodeClassifyTemplate selectByOid(String oid) {
 		VciBaseUtil.alertNotNull(oid,"涓婚敭");
-		CodeClstemplateEntity codeClstemplateEntity = baseMapper.selectById(oid.trim());
-		if(codeClstemplateEntity == null || StringUtils.isBlank(codeClstemplateEntity.getOid())){
+		CodeClassifyTemplate codeClassifyTemplate = baseMapper.selectById(oid.trim());
+		if(codeClassifyTemplate == null || StringUtils.isBlank(codeClassifyTemplate.getOid())){
 			throw new VciBaseException(DATA_OID_NOT_EXIST);
 		}
-		return codeClstemplateEntity;
+		return codeClassifyTemplate;
 	}
 
 	/**
@@ -448,7 +455,7 @@
 	@Transactional
 	@Override
 	public R updateLcStatus( String oid, String lcStatus){
-		CodeClstemplateEntity codeClassifyTemplateDO = baseMapper.selectById(oid);
+		CodeClassifyTemplate codeClassifyTemplateDO = baseMapper.selectById(oid);
 		//鍋滅敤鐨勬椂鍊欙紝楠岃瘉妯℃澘鏄惁涓哄凡鍙戝竷
 		if(CodeClassifyTemplateLC.DISABLED.getValue().equals(lcStatus)){
 //			CodeClstemplateEntity codeClassifyTemplateDO = baseMapper.selectById(oid);
@@ -470,20 +477,20 @@
 	 */
 	@Transactional
 	@Override
-	public R Upgrade(CodeClstemplateDTO codeClassifyDTO) {
+	public R Upgrade(CodeClassifyTemplateDTO codeClassifyDTO) {
 
 		//鏃х殑妯℃澘oid
 		String templateOldOid = codeClassifyDTO.getOid();
 		//鍙湁宸插彂甯冪殑鎵嶈兘鍗囩増
-		CodeClstemplateEntity codeClassifyTemplateDOOld =  baseMapper.selectById(templateOldOid);
+		CodeClassifyTemplate 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 = new CodeClstemplateEntity();
+		CodeClassifyTemplate codeCls_template = baseMapper.selectById(templateOldOid);
+		CodeClassifyTemplate codeCls_template_insert = new CodeClassifyTemplate();
 //			ClientBusinessObject clientBusinessObject_template_insert = null;
 //		try {
 //			clientBusinessObject_template_insert = clientBusinessObjectOperation.reviseBusinessObject(clientBusinessObject_template, "");
@@ -547,7 +554,7 @@
 		}
 
 		//澶嶅埗妯℃澘娴佺▼
-		List<CodeClsflowtempEntity>  codeClassifyProcessTempDOList = copyTemplateProcess(templateOldOid,templateNewOid);
+		List<CodeClassifyProcessTemp>  codeClassifyProcessTempDOList = copyTemplateProcess(templateOldOid,templateNewOid);
 		//澶嶅埗妯℃澘闃舵锛岄樁娈靛睘鎬�
 		Map phase_attrMap = copyTemplatePhase_attr(templateOldOid,templateNewOid);
 
@@ -610,16 +617,16 @@
 
 	@Override
 	@Transactional
-	public R copyTemplate(CodeClstemplateDTO codeClassifyDTO) {
+	public R copyTemplate(CodeClassifyTemplateDTO codeClassifyDTO) {
 		//鏃х殑妯℃澘oid
 		String oldOid = codeClassifyDTO.getOid();
 		//鏂扮殑妯℃澘oid
 		String newOid = VciBaseUtil.getPk();
 		//鍒嗙被oid,澶嶅埗杩囨潵鐨勬柊鐨勫垎绫籵id
-		String codeClassifyOid = codeClassifyDTO.getCodeClassifyOid();
+		String codeClassifyOid = codeClassifyDTO.getCodeclassifyoid();
 
 		//澶嶅埗妯℃澘
-		CodeClstemplateEntity codeClassifyTemplateDO_old = baseMapper.selectById(oldOid);//鏃фā鏉�
+		CodeClassifyTemplate codeClassifyTemplateDO_old = baseMapper.selectById(oldOid);//鏃фā鏉�
 
 		//楠岃瘉锛屼笟鍔$被鍨嬫槸涓嶆槸涓�鑷�
 		CodeClassify codeClassifyDO_old = codeClassifyService.selectBtmOrParentBtm(codeClassifyTemplateDO_old.getCodeClassifyOid());
@@ -642,14 +649,14 @@
 		codeClassifyTemplateDO_old.setDescription(codeClassifyDTO.getDescription());//鎻忚堪
 		codeClassifyTemplateDO_old.setCodeClassifyOid(codeClassifyOid);//鍒嗙被oid
 		codeClassifyTemplateDO_old.setOid(newOid);
-		List<CodeClstemplateEntity> codeClassifyTemplateDOList = new ArrayList<CodeClstemplateEntity>();
+		List<CodeClassifyTemplate> codeClassifyTemplateDOList = new ArrayList<CodeClassifyTemplate>();
 		codeClassifyTemplateDOList.add(codeClassifyTemplateDO_old);
 
 		//澶嶅埗妯℃澘灞炴��
 		List<CodeClassifyTemplateAttr> codeClassifyTemplateAttrDOList = copyTemplateAttr(oldOid,newOid);
 
 		//澶嶅埗妯℃澘娴佺▼
-		List<CodeClsflowtempEntity> codeClassifyProcessTempDOList = copyTemplateProcess(oldOid,newOid);
+		List<CodeClassifyProcessTemp> codeClassifyProcessTempDOList = copyTemplateProcess(oldOid,newOid);
 
 		//澶嶅埗妯℃澘闃舵锛岄樁娈靛睘鎬�
 		Map  phase_attrMap = copyTemplatePhase_attr(oldOid,newOid);
@@ -726,18 +733,21 @@
 	/**
 	 * 澶嶅埗妯℃澘娴佺▼
 	 */
-	public List<CodeClsflowtempEntity> copyTemplateProcess(String templateOldOid,String templateNewOid){
+	public List<CodeClassifyProcessTemp> copyTemplateProcess(String templateOldOid,String templateNewOid){
 //		VciQueryWrapperForDO processWrapper = new VciQueryWrapperForDO(CodeClassifyProcessTempDO.class);
 //		processWrapper.addQueryMap("classifyTemplateOid",templateOldOid);
-		Map<String,Object> condition = new HashMap<>(1);
-		condition.put("classifyTemplateOid",templateOldOid);
-		List<CodeClsflowtempEntity> codeClsflowtempEntities = codeClsflowtempMapper.selectByMap(condition);
+
+//		Map<String,Object> condition = new HashMap<>(1);
+//		condition.put("classifyTemplateOid",templateOldOid);
+		QueryWrapper<CodeClassifyProcessTemp> wrapper = new QueryWrapper<>();
+		wrapper.eq("classifyTemplateOid",templateOldOid);
+		List<CodeClassifyProcessTemp> codeClsflowtempEntities = codeClsflowtempServiceImpl.list(wrapper);
 //		List<CodeClassifyProcessTempDO>  codeClassifyProcessTempDOList = codeClassifyProcessTempDaoI.selectByWrapper(processWrapper);//瑕佷繚瀛樼殑鏂扮殑妯℃澘娴佺▼
-		for (CodeClsflowtempEntity codeClassifyProcessTempDO:codeClsflowtempEntities){
+		for (CodeClassifyProcessTemp codeClassifyProcessTempDO:codeClsflowtempEntities){
 //			String newOid = VciBaseUtil.getPk();
 			codeClassifyProcessTempDO.setOid(null);
 			//codeClassifyProcessTempDO.setCodeClassifyOid(templateNewOid);
-			codeClassifyProcessTempDO.setClassifytemplateoid(templateNewOid);
+			codeClassifyProcessTempDO.setClassifyTemplateOid(templateNewOid);
 //			codeClsflowtempMapper.insert(codeClassifyProcessTempDO);
 			//modify by lihang - @20220406 璁剧疆妯℃澘涓婚敭浣嶇疆鍑洪敊锛屽鑷村崌鐗堢殑妯℃澘涓殑娴佺▼鏄┖鐨勩��
 		}
@@ -841,14 +851,13 @@
 	/**
 	 * 鍒嗙被妯℃澘鍒楄〃
 	 *
-	 * @param plCodeClstemplate 鏌ヨ鏉′欢
-	 * @param query   鍒嗛〉瀵硅薄
+	 * @param conditionMap 鏌ヨ鏉′欢
+	 * @param pageHelper   鍒嗛〉瀵硅薄
 	 * @return 鏄剧ず瀵硅薄
 	 * @throws VciBaseException 鏌ヨ鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
 	 */
-	@Override
-	public DataGrid<CodeClstemplateVO> gridCodeClassifyTemplate(CodeClstemplateVO plCodeClstemplate, Query query) throws VciBaseException {
-		DataGrid<CodeClstemplateVO> dataGrid=new DataGrid<CodeClstemplateVO>();
+	public DataGrid<CodeClassifyTemplateVO> gridCodeClassifyTemplate(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException {
+		DataGrid<CodeClassifyTemplateVO> dataGrid=new DataGrid<CodeClassifyTemplateVO>();
 		//娌℃湁浼犲垎绫籭d锛屼笉鎵ц鏌ヨ閫昏緫锛岀洿鎺ヨ繑鍥�
 //		if(conditionMap.size()==0){
 //			dataGrid.setData(new ArrayList<>());
@@ -860,14 +869,38 @@
 //		}
 //		pageHelper.addDefaultDesc("revisionSeq");
 
-		List<CodeClstemplateVO> doList = codeClstemplateMapper.selectPlCodeClstemplatePage(Condition.getPage(query), plCodeClstemplate);
-		if (!CollectionUtils.isEmpty(doList)) {
-			// QueryWrapper<CodeClstemplateVO> codeClstemplateVOQueryWrapper = new QueryWrapper<>();
-			// codeClstemplateVOQueryWrapper.allEq(plCodeClstemplate);
-			List<CodeClstemplateEntity> codeClstemplateEntity = new ArrayList<>();
-			BeanUtils.copyProperties(doList,codeClstemplateEntity);
-			dataGrid.setData(codeClassifyTemplateDO2VOs(codeClstemplateEntity));
-			dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(codeClstemplateMapper.selectCount(Condition.getQueryWrapper(plCodeClstemplate)))));
+//		CodeClassifyTemplateVO codeClstemplateVO = new CodeClassifyTemplateVO();
+
+
+		CodeClassifyTemplate codeClstemplateQuery = new CodeClassifyTemplate();
+//		BeanUtil.toBean(map,codeClstempattrVO);
+//		BeanUtil
+		BeanMap beanMap = BeanMap.create(codeClstemplateQuery);
+		beanMap.putAll(conditionMap);
+//		BeanUtils.copyProperties(codeClstemplateVO,codeClstemplateQuery);
+		if (pageHelper == null) {
+			pageHelper = new PageHelper(-1);
+		}
+//		IPage iPage = new IPage();
+		Query query = new Query();
+//		query.setSize(100);
+		if(pageHelper.getLimit() != -1){
+			query.setSize(pageHelper.getLimit());
+			query.setCurrent(pageHelper.getPage());
+		}
+
+//		List<CodeClstemplateVO> doList = codeClstemplateMapper.selectPlCodeClstemplatePage(Condition.getPage(query), codeClstemplateVO);
+
+		IPage<CodeClassifyTemplate> doList = baseMapper.
+			selectPage(Condition.getPage(query), Condition.getQueryWrapper(codeClstemplateQuery));
+		if (!CollectionUtils.isEmpty(doList.getRecords())) {
+//			QueryWrapper<CodeClstemplateVO> codeClstemplateVOQueryWrapper = new QueryWrapper<>();
+//			codeClstemplateVOQueryWrapper.allEq(plCodeClstemplate);
+//			List<CodeClstemplateEntity> codeClstemplateEntity = new ArrayList<>();
+//			BeanUtils.copyProperties(doList,codeClstemplateEntity);
+
+			dataGrid.setData(codeClassifyTemplateDO2VOs(doList.getRecords()));
+			dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(codeClassifyTemplateMapper.selectCount(Condition.getQueryWrapper(codeClstemplateQuery)))));
 		}
 		return dataGrid;
 	}
@@ -880,14 +913,14 @@
 	 * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
 	 */
 	@Override
-	public R<CodeClstemplateVO> addSave(CodeClstemplateDTO codeClassifyTemplateDTO) throws VciBaseException{
+	public R<CodeClassifyTemplateVO> addSave(CodeClassifyTemplateDTO codeClassifyTemplateDTO) throws VciBaseException{
 		VciBaseUtil.alertNotNull(codeClassifyTemplateDTO,"闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄");
 		//灏咲TO杞崲涓篋O
-		CodeClstemplateEntity codeClassifyTemplateDO = new CodeClstemplateEntity();
+		CodeClassifyTemplate codeClassifyTemplateDO = new CodeClassifyTemplate();
 		BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyTemplateDTO,codeClassifyTemplateDO);
 
 		//鏌ヨ鍒嗙被浠ュ強涓婄骇鍒嗙被鐨勪笟鍔$被鍨媌tmtypeid銆乥tmtypename
-		List<CodeClassify> codeClassifyDOList = codeClassifyService.selectAllLevelParents(codeClassifyTemplateDTO.getCodeClassifyOid());
+		List<CodeClassify> codeClassifyDOList = codeClassifyService.selectAllLevelParents(codeClassifyTemplateDTO.getCodeclassifyoid());
 
 		//鎵�鏈夊垎绫婚兘娌℃湁涓氬姟绫诲瀷锛岃繑鍥炴彁绀�
 		if(codeClassifyDOList.size()==0){
@@ -991,12 +1024,12 @@
 	 * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
 	 */
 	@Override
-	public R editSave(CodeClstemplateDTO codeClassifyTemplateDTO) throws VciBaseException{
+	public R editSave(CodeClassifyTemplateDTO codeClassifyTemplateDTO) throws VciBaseException{
 		VciBaseUtil.alertNotNull(codeClassifyTemplateDTO,"鏁版嵁瀵硅薄",codeClassifyTemplateDTO.getOid(),"鍒嗙被妯℃澘瀵硅薄涓婚敭");
 		//妫�鏌s
-		CodeClstemplateEntity codeClassifyTemplateDOCopyFromDTO = new CodeClstemplateEntity();
+		CodeClassifyTemplate codeClassifyTemplateDOCopyFromDTO = new CodeClassifyTemplate();
 		BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyTemplateDTO,codeClassifyTemplateDOCopyFromDTO);
-		CodeClstemplateEntity codeClassifyTemplateDO = null;
+		CodeClassifyTemplate codeClassifyTemplateDO = null;
 		if(codeClassifyTemplateDOCopyFromDTO.getOid() == null){
 			baseMapper.insert(codeClassifyTemplateDOCopyFromDTO);
 			return R.data(codeClassifyTemplateDOCopyFromDTO);
@@ -1004,7 +1037,7 @@
 //			Map<String,Object> condition = new HashMap<>(2);
 //			condition.put("oid",codeClassifyTemplateDOCopyFromDTO.getOid());
 //			condition.put("ts",codeClassifyTemplateDOCopyFromDTO.getTs());
-			CodeClstemplateEntity detail = baseMapper
+			CodeClassifyTemplate detail = baseMapper
 				.selectById(codeClassifyTemplateDOCopyFromDTO.getOid());
 	//		boolean tsBoolean = boService.checkTs(codeClassifyTemplateAttrDOListemplateDOCopyFromDTO);
 			if(detail.getTs().compareTo(codeClassifyTemplateDOCopyFromDTO.getTs()) != 0){//涓嶆槸鏈�鏂扮殑涓嶈鏀�
@@ -1038,8 +1071,8 @@
 	 * @return
 	 */
 	@Override
-	public List<CodeClstemplateVO> childTemplates(String codeClassifyOid){
-		List<CodeClstemplateVO> codeClassifyTemplateVOList=new ArrayList<>();
+	public List<CodeClassifyTemplateVO> childTemplates(String codeClassifyOid){
+		List<CodeClassifyTemplateVO> codeClassifyTemplateVOList=new ArrayList<>();
 //		Map<String/**妯℃澘鐨勪富閿�**/,String/**鍒嗙被鐨勪富閿�**/> childHasTemplateMap =baseMapper
 //			.selectChildHasReleaseTemplate(FrameWorkDefaultValueConstant.FRAMEWORK_DATA_ENABLED,
 //				codeClassifyOid,CodeClassifyTemplateLC.RELEASED.getValue());
@@ -1054,13 +1087,13 @@
 		}
 
 		Set<String> templateOid = childHasTemplateMap.keySet();
-		List<CodeClstemplateEntity>  classifyTemplateDOS=new ArrayList<>();
+		List<CodeClassifyTemplate>  classifyTemplateDOS=new ArrayList<>();
 		if(!CollectionUtils.isEmpty(templateOid)) {
 			classifyTemplateDOS= this.listCodeClassifyTemplateDOByOidCollections(templateOid);
 		}else{
 			classifyTemplateDOS=selectOnlyTemplateByClassifyOid(codeClassifyOid);
 		}
-		List<CodeClstemplateVO> templateVOList = codeClassifyTemplateDO2VOs(classifyTemplateDOS, true);
+		List<CodeClassifyTemplateVO> templateVOList = codeClassifyTemplateDO2VOs(classifyTemplateDOS, true);
 		if(!CollectionUtils.isEmpty(templateVOList)){
 			codeClassifyTemplateVOList.addAll(templateVOList);
 		}
@@ -1073,7 +1106,7 @@
 	 * @param codeClassifyOid 鍒嗙被鐨勪富閿�
 	 * @return 妯℃澘鐨勬暟鎹璞�
 	 */
-	private List<CodeClstemplateEntity> selectOnlyTemplateByClassifyOid(String codeClassifyOid){
+	private List<CodeClassifyTemplate> selectOnlyTemplateByClassifyOid(String codeClassifyOid){
 		//1.鐩存帴鏌ヨ锛岀湅鐪嬭繖涓垎绫讳笅闈㈡湁娌℃湁鍙戝竷鐘舵�佺殑妯℃澘
 		//2.濡傛灉娌℃湁锛屽垯寰�涓婃壘鍒嗙被鐨勫唴瀹癸紝杩欎釜鍒嗙被灞傜骇涓嶄細澶锛屾墍浠ョ洿鎺ラ�掑綊鍗冲彲
 		//3.濡傛灉鍒嗙被涓嬮潰娣诲姞浜嗘ā鏉匡紝浣嗘槸娌℃湁鍙戝竷锛屽垯璇存槑妯℃澘鍙兘杩樺湪缂栬緫鐨勭姸鎬侊紝渚濈劧浣跨敤涓婄骇鍒嗙被
@@ -1081,11 +1114,11 @@
 //		Map<String,String> conditionMap = new HashMap<>();
 //		conditionMap.put("codeClassifyOid",codeClassifyOid);
 //		conditionMap.put("lcstatus",CodeClassifyTemplateLC.RELEASED.getValue());
-		QueryWrapper<CodeClstemplateEntity> wrapper=new QueryWrapper<>();
+		QueryWrapper<CodeClassifyTemplate> wrapper=new QueryWrapper<>();
 		wrapper.eq("codeClassifyOid",codeClassifyOid)
 			.eq("lcstatus",CodeClassifyTemplateLC.RELEASED.getValue());
 
-		List<CodeClstemplateEntity> templateDOS = baseMapper.selectList(wrapper);
+		List<CodeClassifyTemplate> templateDOS = baseMapper.selectList(wrapper);
 		if(CollectionUtils.isEmpty(templateDOS)){
 			//閫掑綊鎵句笂绾х殑妯℃澘
 			CodeClassify classifyDO = codeClassifyMapper.selectById(codeClassifyOid);
@@ -1108,13 +1141,13 @@
 	 * @return 妯℃澘鐨勪俊鎭�
 	 */
 	@Override
-	public List<CodeClstemplateVO> listReleaseTemplateByClassifyOid(String codeClassifyOid, boolean hasAttribute) {
+	public List<CodeClassifyTemplateVO> listReleaseTemplateByClassifyOid(String codeClassifyOid, boolean hasAttribute) {
 		VciBaseUtil.alertNotNull(codeClassifyOid,"涓婚搴撳垎绫讳富閿�");
-		List<CodeClstemplateEntity> templateDOS = selectOnlyTemplateByClassifyOid(codeClassifyOid);
+		List<CodeClassifyTemplate> templateDOS = selectOnlyTemplateByClassifyOid(codeClassifyOid);
 		if(CollectionUtils.isEmpty(templateDOS)){
 			throw new VciBaseException("褰撳墠鍒嗙被锛屼互鍙婂叾涓婄骇鍒嗙被閮芥病鏈夎缃ā鏉�");
 		}
-		List<CodeClstemplateVO> templateVOList = codeClassifyTemplateDO2VOs(templateDOS, true);
+		List<CodeClassifyTemplateVO> templateVOList = codeClassifyTemplateDO2VOs(templateDOS, true);
 		return sortTemplateByRevision(templateVOList);
 	}
 
@@ -1124,7 +1157,7 @@
 	 * @return 鎺掑簭鍚庣殑鍒楄〃
 	 */
 	@Override
-	public List<CodeClstemplateVO> sortTemplateByRevision(List<CodeClstemplateVO> templateVOList){
+	public List<CodeClassifyTemplateVO> sortTemplateByRevision(List<CodeClassifyTemplateVO> templateVOList){
 		if(!CollectionUtils.isEmpty(templateVOList) && templateVOList.size() >1){
 			//鑾峰彇鐗堟湰鍙锋渶澶х殑閭d釜
 			templateVOList = templateVOList.stream().sorted((o1,o2)->
@@ -1142,10 +1175,10 @@
 	 * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父
 	 */
 	@Override
-	public CodeClstemplateVO getObjectHasAttrByOid(String oid) throws VciBaseException {
-		List<CodeClstemplateEntity> doList = new ArrayList<>();
+	public CodeClassifyTemplateVO getObjectHasAttrByOid(String oid) throws VciBaseException {
+		List<CodeClassifyTemplate> doList = new ArrayList<>();
 		doList.add(selectByOid(oid));
-		List<CodeClstemplateVO> templateVOS = codeClassifyTemplateDO2VOs(doList, true);
+		List<CodeClassifyTemplateVO> templateVOS = codeClassifyTemplateDO2VOs(doList, true);
 		return CollectionUtils.isEmpty(templateVOS)?null:templateVOS.get(0);
 	}
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeKeyattrrepeatServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeKeyAttrRepeatServiceImpl.java
similarity index 77%
rename from Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeKeyattrrepeatServiceImpl.java
rename to Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeKeyAttrRepeatServiceImpl.java
index f9873af..269230b 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeKeyattrrepeatServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeKeyAttrRepeatServiceImpl.java
@@ -18,11 +18,11 @@
 
 import com.alibaba.nacos.common.utils.StringUtils;
 import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
-import com.vci.ubcs.code.entity.CodeKeyattrrepeatEntity;
+import com.vci.ubcs.code.entity.CodeKeyAttrRepeat;
 import com.vci.ubcs.code.enumpack.FrameworkDataLCStatus;
-import com.vci.ubcs.code.vo.CodeKeyattrrepeatVO;
-import com.vci.ubcs.code.mapper.CodeKeyattrrepeatMapper;
-import com.vci.ubcs.code.service.ICodeKeyattrrepeatService;
+import com.vci.ubcs.code.vo.CodeKeyAttrRepeatVO;
+import com.vci.ubcs.code.mapper.CodeKeyAttrRepeatMapper;
+import com.vci.ubcs.code.service.ICodeKeyAttrRepeatService;
 import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
 import com.vci.ubcs.code.vo.pagemodel.CodeKeyAttrRepeatRuleVO;
 import com.vci.ubcs.starter.exception.VciBaseException;
@@ -48,13 +48,13 @@
  * @since 2023-04-03
  */
 @Service
-public class CodeKeyattrrepeatServiceImpl implements ICodeKeyattrrepeatService {
+public class CodeKeyAttrRepeatServiceImpl implements ICodeKeyAttrRepeatService {
 
 	@Autowired
-	CodeKeyattrrepeatMapper codeKeyattrrepeatMapper;
+    CodeKeyAttrRepeatMapper codeKeyattrrepeatMapper;
 
 	@Override
-	public IPage<CodeKeyattrrepeatVO> selectPlCodeKeyattrrepeatPage(IPage<CodeKeyattrrepeatVO> page, CodeKeyattrrepeatVO plCodeKeyattrrepeat) {
+	public IPage<CodeKeyAttrRepeatVO> selectPlCodeKeyattrrepeatPage(IPage<CodeKeyAttrRepeatVO> page, CodeKeyAttrRepeatVO plCodeKeyattrrepeat) {
 		return page.setRecords(codeKeyattrrepeatMapper.selectPlCodeKeyattrrepeatPage(page, plCodeKeyattrrepeat));
 	}
 
@@ -67,20 +67,20 @@
 	@Override
 	public List<CodeKeyAttrRepeatRuleVO> listCodeKeyAttrRepeatRuleByOids(Collection<String> oidCollections) {
 		VciBaseUtil.alertNotNull(oidCollections,"鏁版嵁瀵硅薄涓婚敭闆嗗悎");
-		List<CodeKeyattrrepeatEntity> codeKeyAttrRepeatRuleDOList = listCodeKeyAttrRepeatRuleDOByOidCollections(oidCollections);
+		List<CodeKeyAttrRepeat> codeKeyAttrRepeatRuleDOList = listCodeKeyAttrRepeatRuleDOByOidCollections(oidCollections);
 		return codeKeyAttrRepeatRuleDO2VOs(codeKeyAttrRepeatRuleDOList);
 	}
 
 	/**
 	 * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
-	 * @param codeKeyattrrepeatEntityS 鏁版嵁瀵硅薄鍒楄〃
+	 * @param codeKeyAttrRepeats 鏁版嵁瀵硅薄鍒楄〃
 	 * @return 鏄剧ず瀵硅薄
 	 */
 	@Override
-	public List<CodeKeyAttrRepeatRuleVO> codeKeyAttrRepeatRuleDO2VOs(Collection<CodeKeyattrrepeatEntity>  codeKeyattrrepeatEntityS){
+	public List<CodeKeyAttrRepeatRuleVO> codeKeyAttrRepeatRuleDO2VOs(Collection<CodeKeyAttrRepeat> codeKeyAttrRepeats){
 		List<CodeKeyAttrRepeatRuleVO> voList = new ArrayList<CodeKeyAttrRepeatRuleVO>();
-		if(!CollectionUtils.isEmpty(codeKeyattrrepeatEntityS)){
-			for(CodeKeyattrrepeatEntity s: codeKeyattrrepeatEntityS){
+		if(!CollectionUtils.isEmpty(codeKeyAttrRepeats)){
+			for(CodeKeyAttrRepeat s: codeKeyAttrRepeats){
 				CodeKeyAttrRepeatRuleVO vo =  codeKeyAttrRepeatRuleDO2VO(s);
 				if(vo != null){
 					voList.add(vo);
@@ -95,12 +95,12 @@
 	 * @param oidCollections 涓婚敭鐨勯泦鍚�
 	 * @return 鏁版嵁瀵硅薄鍒楄〃
 	 */
-	private List<CodeKeyattrrepeatEntity> listCodeKeyAttrRepeatRuleDOByOidCollections(Collection<String> oidCollections){
-		List<CodeKeyattrrepeatEntity> codeKeyAttrRepeatRuleDOList = new ArrayList<CodeKeyattrrepeatEntity>();
+	private List<CodeKeyAttrRepeat> listCodeKeyAttrRepeatRuleDOByOidCollections(Collection<String> oidCollections){
+		List<CodeKeyAttrRepeat> codeKeyAttrRepeatRuleDOList = new ArrayList<CodeKeyAttrRepeat>();
 		if(!CollectionUtils.isEmpty(oidCollections)){
 			Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
 			for(Collection<String> oids: oidCollectionsList){
-				List<CodeKeyattrrepeatEntity> tempDOList =  codeKeyattrrepeatMapper.selectBatchIds(oids);
+				List<CodeKeyAttrRepeat> tempDOList =  codeKeyattrrepeatMapper.selectBatchIds(oids);
 				if(!CollectionUtils.isEmpty(tempDOList)){
 					codeKeyAttrRepeatRuleDOList.addAll(tempDOList);
 				}
@@ -112,14 +112,14 @@
 
 	/**
 	 * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
-	 * @param  codeKeyattrrepeatEntity 鏁版嵁瀵硅薄
+	 * @param  codeKeyAttrRepeat 鏁版嵁瀵硅薄
 	 * @return 鏄剧ず瀵硅薄
 	 */
 	@Override
-	public  CodeKeyAttrRepeatRuleVO codeKeyAttrRepeatRuleDO2VO(CodeKeyattrrepeatEntity codeKeyattrrepeatEntity) {
+	public  CodeKeyAttrRepeatRuleVO codeKeyAttrRepeatRuleDO2VO(CodeKeyAttrRepeat codeKeyAttrRepeat) {
 		CodeKeyAttrRepeatRuleVO vo = new CodeKeyAttrRepeatRuleVO();
-		if(codeKeyattrrepeatEntity != null) {
-			BeanUtilForVCI.copyPropertiesIgnoreCase(codeKeyattrrepeatEntity, vo);
+		if(codeKeyAttrRepeat != null) {
+			BeanUtilForVCI.copyPropertiesIgnoreCase(codeKeyAttrRepeat, vo);
 			//濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
 			vo.setLcStatusText(FrameworkDataLCStatus.getTextByValue(vo.getLcStatus()));
 		}
@@ -133,7 +133,7 @@
 	 * @return 瑙勫垯鐨勬樉绀哄璞�
 	 */
 	@Override
-	public CodeKeyattrrepeatVO getRuleByClassifyFullInfo(CodeClassifyFullInfoBO classifyFullInfo) {
+	public CodeKeyAttrRepeatVO getRuleByClassifyFullInfo(CodeClassifyFullInfoBO classifyFullInfo) {
 		VciBaseUtil.alertNotNull(classifyFullInfo,"涓婚搴撳垎绫荤殑淇℃伅");
 		String keyAttrRuleOid = classifyFullInfo.getCurrentClassifyVO().getCodekeyattrrepeatoid();
 		if(StringUtils.isBlank(keyAttrRuleOid)){
@@ -153,7 +153,7 @@
 		}
 		if(StringUtils.isNotBlank(keyAttrRuleOid)){
 			CodeKeyAttrRepeatRuleVO objectByOid = getObjectByOid(keyAttrRuleOid);
-			CodeKeyattrrepeatVO codeKeyattrrepeatVO = new CodeKeyattrrepeatVO();
+			CodeKeyAttrRepeatVO codeKeyattrrepeatVO = new CodeKeyAttrRepeatVO();
 			BeanUtils.copyProperties(objectByOid,codeKeyattrrepeatVO);
 			return codeKeyattrrepeatVO;
 		}
@@ -169,7 +169,7 @@
 	@Override
 	public  CodeKeyAttrRepeatRuleVO getObjectByOid(String oid){
 		CodeKeyAttrRepeatRuleVO codeKeyAttrRepeatRuleVO = codeKeyAttrRepeatRuleDO2VO(selectByOid(oid));
-		CodeKeyattrrepeatVO codeKeyattrrepeatVO = new CodeKeyattrrepeatVO();
+		CodeKeyAttrRepeatVO codeKeyattrrepeatVO = new CodeKeyAttrRepeatVO();
 		BeanUtils.copyProperties(codeKeyAttrRepeatRuleVO,codeKeyattrrepeatVO);
 		return codeKeyAttrRepeatRuleVO;
 	}
@@ -179,10 +179,10 @@
 	 * @return  鏁版嵁瀵硅薄
 	 * @throws VciBaseException 鍙傛暟涓虹┖锛屽苟涓旀暟鎹笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
 	 */
-	private CodeKeyattrrepeatEntity selectByOid(String oid) {
+	private CodeKeyAttrRepeat selectByOid(String oid) {
 		VciBaseUtil.alertNotNull(oid,"涓婚敭");
 
-		CodeKeyattrrepeatEntity codeKeyAttrRepeatRuleDO = codeKeyattrrepeatMapper.selectById(oid.trim());
+		CodeKeyAttrRepeat codeKeyAttrRepeatRuleDO = codeKeyattrrepeatMapper.selectById(oid.trim());
 //			.selectByPrimaryKey(oid.trim());
 		if(codeKeyAttrRepeatRuleDO == null || StringUtils.isBlank(codeKeyAttrRepeatRuleDO.getOid())){
 			throw new VciBaseException(DATA_OID_NOT_EXIST);
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
index c5cd59e..9413a55 100644
--- 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
@@ -35,7 +35,6 @@
 import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
 import com.vci.ubcs.code.vo.pagemodel.CodeTemplatePhaseVO;
 import com.vci.ubcs.code.wrapper.CodeTemplatePhaseWapper;
-import com.vci.ubcs.common.utils.PageDO2PageVO;
 import com.vci.ubcs.starter.exception.VciBaseException;
 import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
 import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
@@ -379,8 +378,8 @@
 		String codePhaseOid = conditionMap.getOrDefault("codePhaseOid", null);
 		MPJLambdaWrapper<CodeClassifyTemplateAttr> queryWrapper = new MPJLambdaWrapper<>();
 		queryWrapper.selectAll(CodeClassifyTemplateAttr.class)
-			.selectAs(CodeClstemplateEntity::getName,CodeClassifyTemplateAttr::getClassifyTemplateOidName)
-			.leftJoin(CodeClstemplateEntity.class, CodeClstemplateEntity::getOid, CodeClassifyTemplateAttr::getClassifyTemplateOid)
+			.selectAs(CodeClassifyTemplate::getName,CodeClassifyTemplateAttr::getClassifyTemplateOidName)
+			.leftJoin(CodeClassifyTemplate.class, CodeClassifyTemplate::getOid, CodeClassifyTemplateAttr::getClassifyTemplateOid)
 			.eq(CodeClassifyTemplateAttr::getClassifyTemplateOid,conditionMap.getOrDefault("classifyTemplateOid",null));
 		if(StringUtils.isNotBlank(codePhaseOid)){
 			//鎺掗櫎闃舵涓婁娇鐢ㄧ殑
@@ -418,8 +417,8 @@
 		//杩欏効鏄釜杩炶〃鏌ヨ璇彞
 		MPJLambdaWrapper<CodeClassifyTemplateAttr> mpjLambdaWrapper = new MPJLambdaWrapper<>();
 		mpjLambdaWrapper.selectAll(CodeClassifyTemplateAttr.class)
-			.selectAs(CodeClstemplateEntity::getName,CodeClassifyTemplateAttr::getClassifyTemplateOidName)
-			.leftJoin(CodeClstemplateEntity.class,CodeClstemplateEntity::getOid, CodeClassifyTemplateAttr::getClassifyTemplateOid)
+			.selectAs(CodeClassifyTemplate::getName,CodeClassifyTemplateAttr::getClassifyTemplateOidName)
+			.leftJoin(CodeClassifyTemplate.class, CodeClassifyTemplate::getOid, CodeClassifyTemplateAttr::getClassifyTemplateOid)
 			.eq(CodeClassifyTemplateAttr::getClassifyTemplateOid,phaseDO.getCodeClassifyTemplateOid());
 		if(ids.size()<1000){
 			mpjLambdaWrapper = mpjLambdaWrapper.in(CodeClassifyTemplateAttr::getId, ids);
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/FormulaServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/FormulaServiceImpl.java
new file mode 100644
index 0000000..dccbe4d
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/FormulaServiceImpl.java
@@ -0,0 +1,1165 @@
+package com.vci.ubcs.code.service.impl;
+
+
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.vci.ubcs.code.mapper.CommonsMapper;
+import com.vci.ubcs.starter.web.constant.VciSystemVarConstants;
+import com.vci.ubcs.starter.web.toolmodel.DateConverter;
+import com.vci.ubcs.starter.web.util.Md5;
+import com.vci.ubcs.starter.web.util.VciDateUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.Resource;
+import java.lang.reflect.Method;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.Period;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * 鍏紡澶勭悊
+ * @author weidy
+ * @date 2022-02-11
+ *
+ */
+@Service
+public class FormulaServiceImpl {
+
+	/**
+	 * 鏃ュ織鏂囦欢
+	 */
+	private Logger logger = LoggerFactory.getLogger(getClass());
+	/**
+	 * 閫氱敤鏌ヨ
+	 */
+	@Resource
+	CommonsMapper commonsMapper;
+
+//	/**
+//	 * 涓氬姟鏁版嵁鏈嶅姟
+//	 */
+//	@Autowired
+//	private WebBoServiceI boService;
+
+	/**
+	 * 鏄惁杩愯瀹屾垚
+	 */
+	private Boolean formulaBlag = true;
+	/**
+	 * 杩愮畻绗�
+	 */
+	public static List<String> lc = new ArrayList<String>();
+
+	static {
+		lc.add("+");
+		lc.add("-");
+		lc.add("*");
+		lc.add("/");
+	}
+
+	/**
+	 * 閫昏緫杩愮畻绗�
+	 */
+	public static List<String> lj = new ArrayList<String>();
+	static {
+		lj.add(">");
+		lj.add("<");
+		lj.add("=");
+		lj.add("!");
+	}
+
+	/**
+	 * 鍑芥暟锛宨nt鏁扮粍娉ㄩ噴,绗竴涓爣璇�:0鑷甫鍑芥暟 1鑷畾涔夊嚱鏁�;绗簩涓爣璇�:鍙傛暟涓暟
+	 */
+	public static Map<String, int[]> funMap = new HashMap<String, int[]>();
+	// int鏁扮粍娉ㄩ噴,绗竴涓爣璇�:0鑷甫鍑芥暟 1鑷畾涔夊嚱鏁�;绗簩涓爣璇�:鍙傛暟涓暟
+	static {
+		// 鑷甫鍑芥暟,鍙埄鐢ㄥ弽灏勬満鍒�
+		funMap.put("abs", new int[] { 0, 1 });
+		funMap.put("acos", new int[] { 0, 1 });
+		funMap.put("asin", new int[] { 0, 1 });
+		funMap.put("atan", new int[] { 0, 1 });
+		funMap.put("cbrt", new int[] { 0, 1 });
+		funMap.put("ceil", new int[] { 0, 1 });
+		funMap.put("cos", new int[] { 0, 1 });
+		funMap.put("cosh", new int[] { 0, 1 });
+		funMap.put("exp", new int[] { 0, 1 });
+		funMap.put("expm1", new int[] { 0, 1 });
+		funMap.put("floor", new int[] { 0, 1 });
+		funMap.put("log", new int[] { 0, 1 });
+		funMap.put("log10", new int[] { 0, 1 });
+		funMap.put("log1p", new int[] { 0, 1 });
+		funMap.put("random", new int[] { 0, 0 });
+		funMap.put("rint", new int[] { 0, 1 });
+		funMap.put("round", new int[] { 0, 1 });
+		funMap.put("signum", new int[] { 0, 1 });
+		funMap.put("sin", new int[] { 0, 1 });
+		funMap.put("sinh", new int[] { 0, 1 });
+		funMap.put("sqrt", new int[] { 0, 1 });
+		funMap.put("tan", new int[] { 0, 1 });
+		funMap.put("tanh", new int[] { 0, 1 });
+		funMap.put("max", new int[] { 0, 2 });
+		funMap.put("min", new int[] { 0, 2 });
+
+		// 鑷畾涔夊嚱鏁�
+		funMap.put("if", new int[] { 1, 3 });
+		funMap.put("sum", new int[] { 1, 2 });
+		funMap.put("sub", new int[] { 1, 2 });
+		funMap.put("mul", new int[] { 1, 2 });
+		funMap.put("div", new int[] { 1, 2 });
+		funMap.put("mod", new int[] { 1, 2 });
+		funMap.put("toInt", new int[] { 1, 1 });
+		funMap.put("toDouble", new int[] { 1, 1 });
+		funMap.put("doubleRound", new int[] { 1, 2 });
+		funMap.put("zeroIfNull", new int[] { 1, 1 });
+		funMap.put("endsWith", new int[] { 1, 2 });
+		funMap.put("startsWith", new int[] { 1, 2 });
+		funMap.put("charAt", new int[] { 1, 2 });
+		funMap.put("equalsIgnoreCase", new int[] { 1, 2 });
+		funMap.put("indexOf", new int[] { 1, 2 });
+		funMap.put("isEmpty", new int[] { 1, 1 });
+		funMap.put("lastIndexOf", new int[] { 1, 2 });
+		funMap.put("leftStr", new int[] { 1, 2 });
+		funMap.put("length", new int[] { 1, 1 });
+		funMap.put("mid", new int[] { 1, 3 });
+		funMap.put("right", new int[] { 1, 2 });
+		funMap.put("rightStr", new int[] { 1, 2 });
+		funMap.put("tolowercase", new int[] { 1, 1 });
+		funMap.put("touppercase", new int[] { 1, 1 });
+		funMap.put("trimzero", new int[] { 1, 1 });
+		funMap.put("compareDate", new int[] { 1, 2 });
+		funMap.put("nowDate", new int[] { 1, 0 });
+		funMap.put("chinaDate", new int[] { 1, 1 });
+		funMap.put("dateDdd", new int[] { 1, 2 });
+		funMap.put("dateBalanceYear",new int[] {1,3});
+		funMap.put("dateBalanceDay",new int[] {1,2});
+		funMap.put("dateformat", new int[] { 1, 2 });
+		funMap.put("nowDatetime", new int[] { 1, 0 });
+		funMap.put("dayOf", new int[] { 1, 1 });
+		funMap.put("nowMon", new int[] { 1, 1 });
+		funMap.put("monOf", new int[] { 1, 1 });
+		funMap.put("nowTime", new int[] { 1, 0 });
+		funMap.put("nowYear", new int[] { 1, 0 });
+		funMap.put("yearOf", new int[] { 1, 1 });
+		funMap.put("getChineseCurrency", new int[] { 1, 1 });
+		funMap.put("setThmark", new int[] { 1, 1 });
+		funMap.put("toChinese", new int[] { 1, 1 });
+		funMap.put("getcolvalue", new int[] { 1, 5 });
+		funMap.put("MD5", new int[]{1,1});
+		funMap.put("getValueByMethod", new int[]{1,3});
+	}
+
+	/**
+	 * 鍏紡鍒濆鍖栬浆鎹�
+	 *
+	 * @param str 鍏紡鐨勫唴瀹�
+	 * @return 杞崲鍚庣殑鍐呭
+	 */
+	private  String strCast(String str) {
+		// str = str.toLowerCase();// 鍘婚櫎绌烘牸锛屽彉灏忓啓
+		if (str == null ? true : str.length() == 0) {
+			return "0";
+		}
+		str = str.trim();
+		if (!checkFormula(str)) {
+			formulaError();
+			return str;
+		}
+		str = str.replaceAll("锛�", ",");
+		str = str.replaceAll("\\+-", "-");
+		str = str.replaceAll("-\\+", "-");
+		//str = str.replaceAll(" ", "");
+		return str;
+	}
+
+	/**
+	 * 妫�鏌ュ叕寮忎腑鎷彿鍑虹幇娆℃暟鏄惁姝g‘
+	 *
+	 * @param formulaStr 鍏紡鐨勫唴瀹�
+	 * @return true 琛ㄧず鏍¢獙鎴愬姛
+	 */
+	private  boolean checkFormula(String formulaStr) {
+		formulaBlag = true;
+		int count = 0;
+		for (int i = 0; i < formulaStr.length(); i++) {
+			String s = String.valueOf(formulaStr.charAt(i));
+			if ("(".equals(s)) {
+				count++;
+			} else if (")".equals(s)) {
+				count--;
+			}
+			if (count < 0) {
+				formulaBlag = false;
+				break;
+			}
+		}
+		formulaBlag = count == 0;
+		return formulaBlag;
+	}
+
+	/**
+	 * 鍒嗗壊鍑芥暟
+	 *
+	 * @param str 瀛楃涓�
+	 * @param bs 鍒嗗壊绗�
+	 * @return 杞崲鍚庣殑鍐呭
+	 */
+	private  String[] spliteFun(String str, String bs) {
+		List<String> list = new ArrayList<String>();
+		String bds = "";
+		int bracket = 0;
+		int len = str.length();
+		for (int i = 0; i < len; i++) {
+			String s = String.valueOf(str.charAt(i));
+			if ("(".equals(s)) {
+				bracket++;
+			} else if (")".equals(s)) {
+				bracket--;
+			}
+
+			if (bracket == 0 && bs.equals(s)) {
+				list.add(bds);
+				bds = "";
+				continue;
+			}
+
+			bds += s;
+		}
+
+		list.add(bds);
+
+		String[] ss = new String[list.size()];
+		for (int i = 0; i < list.size(); i++) {
+			ss[i] = list.get(i);
+		}
+
+		return ss;
+	}
+
+	/**
+	 * 鐢ㄦ埛鑷畾涔夊嚱鏁�
+	 *
+	 * @param str 瀛楃涓�
+	 * @param funStr 鍑芥暟鐨勫唴瀹�
+	 * @return
+	 */
+	private  String customFun(String str, String funStr) {
+		String reval = "false";
+		String[] gss = spliteFun(str, ",");
+		//姣忎竴涓弬鏁帮紝鎴戦兘搴旇鍘荤湅鐪嬫槸鍚﹁繕鏈�()銆傝繖璇存槑閲岄潰鏄柟娉�
+		for (int i = 0; i < gss.length; i++) {
+			String record = gss[i];
+			if(StringUtils.isNotBlank(record) && record.contains("(") && record.contains(")")){
+				gss[i] = calculate(gss[i]);
+			}
+		}
+		if ("if".equals(funStr)) {
+			//logger.debug("绗竴涓弬鏁帮細" + gss[0]);
+			if (compare(gss[0])) {
+				reval = calculate(gss[1]);
+			} else {
+				reval = calculate(gss[2]);
+			}
+		} else if ("sum".equals(funStr)) {
+			BigDecimal ln = new BigDecimal(gss[0]);
+			BigDecimal rn = new BigDecimal(gss[1]);
+			reval = ln.add(rn).doubleValue() + "";
+		} else if ("sub".equals(funStr)) {
+			BigDecimal ln = new BigDecimal(gss[0]);
+			BigDecimal rn = new BigDecimal(gss[1]);
+			reval = ln.subtract(rn).doubleValue() + "";
+		} else if ("mul".equals(funStr)) {
+			BigDecimal ln = new BigDecimal(gss[0]);
+			BigDecimal rn = new BigDecimal(gss[1]);
+			reval = ln.multiply(rn).doubleValue() + "";
+		} else if ("div".equals(funStr)) {
+			BigDecimal ln = new BigDecimal(gss[0]);
+			BigDecimal rn = new BigDecimal(gss[1]);
+			if (rn.doubleValue() == 0) {
+				formulaError();
+				//reval = "0";
+				return reval;
+			} else {
+				reval = ln.divide(rn, 10, BigDecimal.ROUND_HALF_UP) + "";
+			}
+
+		} else if ("mod".equals(funStr)) {
+			int rn = Integer.parseInt(gss[1]);
+			if (rn == 0) {
+				formulaError();
+
+				return reval;
+			}
+			int ln = Integer.parseInt(gss[0]);
+			reval = (ln % rn) + "";
+		} else if ("toInt".equals(funStr)) {
+			reval = (int) Math.floor(new Double(calculate(gss[0]))) + "";
+		} else if("toDouble".equals(funStr)){
+			reval = new Double(calculate(gss[0])) + "";
+		}else if("MD5".equals(funStr)){
+			reval = Md5.md5(calculate(gss[0]));
+		}else if ("doubleRound".equals(funStr)) {
+			try {
+				BigDecimal b = new BigDecimal(calculate(gss[0]));
+				reval = b.setScale(Integer.parseInt(gss[1]),
+					BigDecimal.ROUND_HALF_UP).doubleValue()
+					+ "";
+			} catch (Exception e) {
+				e.printStackTrace();
+				formulaError();
+			}
+
+		} else if ("zeroIfNull".equals(funStr)) {
+			logger.debug(gss[0]);
+			if ("null".equals(gss[0]) || gss[0].trim().length() == 0) {
+				reval = "0";
+				return reval;
+			}
+			reval = gss[0];
+		} else if ("endsWith".equals(funStr)) {
+			reval = "false";
+			if (gss[0].endsWith(gss[1])) {
+				reval = "true";
+			}
+
+		} else if ("startsWith".equals(funStr)) {
+			reval = "false";
+			if (gss[0].startsWith(gss[1])) {
+				reval = "true";
+			}
+		} else if ("charAt".equals(funStr)) {
+			try {
+				reval = String.valueOf(gss[0].charAt(Integer.parseInt(gss[1])));
+			} catch (Exception e) {
+				e.printStackTrace();
+				formulaError();
+				reval = "";
+			}
+
+		} else if ("equalsignoreCase".equals(funStr)) {
+			if (gss[0].equalsIgnoreCase(gss[1])) {
+				reval = "true";
+			}
+		} else if ("indexOf".equals(funStr)) {
+			reval = gss[0].indexOf(gss[1]) + "";
+		} else if ("isEmpty".equals(funStr)) {
+			if (gss[0].trim().length() == 0 || "".equals(gss[0])
+				|| "null".equals(gss[0])) {
+				reval = "true";
+			}
+		} else if ("lastIndexOf".equals(funStr)) {
+			reval = gss[0].lastIndexOf(gss[1]) + "";
+		} else if ("leftStr".equals(funStr)) {
+			reval = gss[0].substring(0, Integer.parseInt(gss[1]));
+		} else if ("length".equals(funStr)) {
+			reval = gss[0].length() + "";
+		} else if ("right".equals(funStr)) {
+			reval = String.valueOf(gss[0].charAt(gss[0].length()
+				- Integer.parseInt(gss[1])));
+
+		} else if ("rightStr".equals(funStr)) {
+			reval = gss[0]
+				.substring(gss[0].length() - Integer.parseInt(gss[1]));
+		} else if ("mid".equals(funStr)) {
+			try {
+				reval = gss[0].substring(Integer.parseInt(gss[1]),
+					Integer.parseInt(gss[2]));
+			}catch (Exception e) {
+				e.printStackTrace();
+				formulaError();
+				reval = "";
+			}
+
+		} else if ("tolowercase".equals(funStr)) {
+			reval = gss[0].toLowerCase();
+		} else if ("touppercase".equals(funStr)) {
+			reval = gss[0].toUpperCase();
+		} else if ("trimZero".equals(funStr)) {
+			int len = gss[0].length() - 1;
+			for (int i = len; i >= 0; i--) {
+				if (gss[0].charAt(i) == '0') {
+					gss[0] = gss[0].substring(0, gss[0].length() - 1);
+				} else {
+					reval = gss[0];
+					break;
+				}
+			}
+		} else if ("compareDate".equals(funStr)) {
+			if (gss[0].indexOf("date") != -1) {
+				gss[0] = calculate(gss[0]);
+			}
+			if (gss[1].indexOf("date") != -1) {
+				gss[1] = calculate(gss[1]);
+			}
+			gss[0] = gss[0].replaceAll("`", "-");
+			gss[1] = gss[1].replaceAll("`", "-");
+			String result;
+			try {
+				result = VciDateUtil.compareDate(gss[0], gss[1]);
+				if ("=".equals(result)) {
+					reval = "true";
+				}
+				;
+			} catch (Exception e) {
+				e.printStackTrace();
+				formulaError();
+			}
+
+		} else if ("nowDate".equals(funStr)) {
+			reval = VciDateUtil.getNowString("yyyy-MM-dd");
+		} else if ("chinaDate".equals(funStr)) {
+			try {
+				if (gss[0].indexOf("date") != -1) {
+					gss[0] = calculate(gss[0]);
+				}
+				gss[0] = gss[0].replaceAll("`", "-");
+				reval = VciDateUtil.getChinaDate(gss[0]);
+				return reval;
+			} catch (Exception e) {
+				e.printStackTrace();
+				formulaError();
+			}
+		} else if ("dateAdd".equals(funStr)) {
+			try {
+				if (gss[0].indexOf("date") != -1) {
+					gss[0] = calculate(gss[0]);
+				}
+				gss[0] = gss[0].replaceAll("`", "-");
+				DateConverter dateConverter = new DateConverter();
+				dateConverter.setAsText(gss[0]);
+				Date date = VciDateUtil.getDateAddDay(dateConverter.getValue(),
+					Integer.parseInt(gss[1]));
+				reval = VciDateUtil.date2Str(date, VciDateUtil.DateTimeFormat);
+				return reval;
+			} catch (Exception e) {
+				e.printStackTrace();
+				formulaError();
+			}
+		} else if("dateBalanceYear".equals(funStr)) {
+			//姹傛椂闂寸殑宸
+			//3涓弬鏁帮紝瀵规瘮鐨勬簮鍊硷紝瀵规瘮鐨勭洰鏍囧��,鏄惁杩涗竴
+			String sourceDate = gss[0];
+			String targetDate = gss[1];
+			boolean remainderType = "true".equalsIgnoreCase(gss[2]) ? true : false;
+			DateConverter dateConverter = new DateConverter();
+			dateConverter.setAsText(sourceDate);
+			Date sDate = dateConverter.getValue();
+			Date tDate = new Date();
+			if (StringUtils.isBlank(targetDate)) {
+				dateConverter.setAsText(targetDate);
+				tDate = dateConverter.getValue();
+			}
+
+			Period p = Period.between(LocalDate.parse(VciDateUtil.date2Str(sDate, VciDateUtil.DateTimeMillFormat), DateTimeFormatter.ofPattern(VciDateUtil.DateTimeMillFormat)),
+				LocalDate.parse(VciDateUtil.date2Str(tDate, VciDateUtil.DateTimeMillFormat), DateTimeFormatter.ofPattern(VciDateUtil.DateTimeMillFormat)));
+			reval = String.valueOf((remainderType && (p.getMonths() > 0 || p.getDays() > 0)) ? (p.getYears() + 1) : p.getYears());
+			//鏈堜唤鐩稿樊鏄病鍔炴硶璁$畻
+		}else if("dateBalanceDay".equals(funStr)){
+			String sourceDate = gss[0];
+			String targetDate = gss[1];
+			DateConverter dateConverter = new DateConverter();
+			dateConverter.setAsText(sourceDate);
+			Date sDate = dateConverter.getValue();
+			Date tDate = new Date();
+			if (StringUtils.isNotBlank(targetDate)) {
+				dateConverter.setAsText(targetDate);
+				tDate = dateConverter.getValue();
+			}
+			reval = String.valueOf(TimeUnit.DAYS.convert(Math.abs(sDate.getTime()-tDate.getTime()),TimeUnit.MILLISECONDS));
+		}else if ("dateformat".equals(funStr)) {
+			if (gss[0].indexOf("date") != -1) {
+				gss[0] = calculate(gss[0]);
+			}
+			gss[0] = gss[0].replaceAll("`", "-");
+			gss[1] = gss[1].replaceAll("`", "-");
+			Date date;
+			try {
+				if("''".equalsIgnoreCase(gss[0])) {
+					gss[0] = VciDateUtil.getNowString();
+				}
+				DateConverter dateConverter =new DateConverter();
+				dateConverter.setAsText(gss[0]);
+				date = dateConverter.getValue();
+				reval = VciDateUtil.date2Str(date, gss[1].replace("&"," "));
+				return reval;
+			} catch (Exception e) {
+				e.printStackTrace();
+				formulaError();
+			}
+
+		} else if ("nowDatetime".equals(funStr)) {
+			reval = VciDateUtil.getNowString();
+		} else if ("dayOf".equals(funStr)) {
+			if (gss[0].indexOf("date") != -1) {
+				gss[0] = calculate(gss[0]);
+			}
+			gss[0] = gss[0].replaceAll("`", "-");
+			try {
+				Date date = VciDateUtil.str2Date(gss[0], "yyyy-MM-dd");
+				reval = date.getDate() + "";
+				return reval;
+			} catch (Exception e) {
+				e.printStackTrace();
+				formulaError();
+			}
+		} else if ("nowNon".equals(funStr)) {
+			try {
+				reval = VciDateUtil.getNowString("MM");
+				return reval;
+			} catch (Exception e) {
+				e.printStackTrace();
+				formulaError();
+			}
+		} else if ("monOf".equals(funStr)) {
+			if (gss[0].indexOf("date") != -1) {
+				gss[0] = calculate(gss[0]);
+			}
+			gss[0] = gss[0].replaceAll("`", "-");
+			try {
+				Date date = VciDateUtil.str2Date(gss[0], "yyyy-MM-dd");
+				reval = date.getMonth() + "";
+				return reval;
+			} catch (Exception e) {
+				e.printStackTrace();
+				formulaError();
+			}
+		} else if ("nowTime".equals(funStr)) {
+			reval = VciDateUtil.getNowString("HH:mm:ss");
+			return reval;
+		} else if ("nowYear".equals(funStr)) {
+			reval = VciDateUtil.getNowString("yyyy");
+			return reval;
+		} else if ("yearOf".equals(funStr)) {
+			if (gss[0].indexOf("date") != -1) {
+				gss[0] = calculate(gss[0]);
+			}
+			gss[0] = gss[0].replaceAll("`", "-");
+			try {
+				Date date = VciDateUtil.str2Date(gss[0], "yyyy-MM-dd");
+				reval = date.getYear() + 1900 + "";
+				return reval;
+			} catch (Exception e) {
+				e.printStackTrace();
+				formulaError();
+			}
+		} else if ("getChineseCurrency".equals(funStr)) {
+			gss[0] = calculate(gss[0]);
+			reval = toChineseCurrency(gss[0]);
+		} else if ("setThmark".equals(funStr)) {
+			String numstr = "";
+
+			String[] number = gss[0].split("\\.");
+			//logger.debug(number[0]);
+			for (int i = number[0].length() - 1; i >= 0; i--) {
+				if (i % 3 == 2 && i < number[0].length() - 1) {
+					numstr += ",";
+				}
+				numstr += number[0].charAt(i);
+			}
+			reval = "";
+			for (int i = numstr.toCharArray().length - 1; i >= 0; i--) {
+				reval += numstr.toCharArray()[i];
+			}
+			if (gss[0].indexOf(".") != -1) {
+				reval += "." + number[1];
+			}
+
+		} else if ("toChinese".equals(funStr)) {
+			gss[0] = calculate(gss[0]);
+			//logger.debug(gss[0]);
+			reval = toChinese(gss[0]);
+		} else if ("getcolvalue".equals(funStr)) {
+			if (gss[0].trim().length() == 0 || gss[1].trim().length() == 0
+				|| gss[2].trim().length() == 0
+				|| gss[3].trim().length() == 0
+				|| gss[4].trim().length() == 0) {
+				formulaError();
+				return reval;
+			}
+			reval = getColValue(gss[0], gss[1], gss[2], gss[3], gss[4]);
+		}else if("getValueByMethod".equalsIgnoreCase(funStr)){
+			if (gss[0].trim().length() == 0 || gss[1].trim().length() == 0
+				|| gss[2].trim().length() == 0) {
+				formulaError();
+				return reval;
+			}
+			reval = getValueByMethod(gss[0], gss[1], gss[2]);
+		}
+
+		return reval;
+	}
+
+	// 閫昏緫琛ㄨ揪寮忓垽鏂�
+	private  boolean compare(String str) {
+		if ("true".equals(calculate(str))) {
+			return true;
+		} else if ("false".equals(calculate(str))) {
+			return false;
+		}
+		boolean flag = false;
+		boolean bs = false;
+		int len = str.length();
+		int bracket = 0;
+		String ljbds = "";
+		double d_left = 0;
+		double d_right = 0;
+		for (int i = 0; i < len; i++) {
+			String s = String.valueOf(str.charAt(i));
+			if ("(".equals(s)) {
+				bracket++;
+			} else if (")".equals(s)) {
+				bracket--;
+			}
+
+			if (bracket == 0 && lj.contains(s)) {
+				for (int j = i; j < len; j++) {
+					String ts = String.valueOf(str.charAt(j));
+					if (lj.contains(ts)) {
+						ljbds += ts;
+					} else {
+						bs = true;
+						break;
+					}
+				}
+			}
+			if (bs) {
+				break;
+			}
+		}
+		//logger.debug("閫昏緫琛ㄨ揪寮忥細" + ljbds);
+		String[] s = str.split(ljbds);
+		//logger.debug("宸﹁竟锛�" + (s[0]));
+		//logger.debug("鍙宠竟锛�" + (s[1]));
+		if (isNumber(calculate(s[0])) && isNumber(calculate(s[1]))) {
+			d_left = new Double(calculate(s[0]));
+			d_right = new Double(calculate(s[1]));
+		} else {
+			formulaError();
+			return false;
+		}
+
+		if ("<".equals(ljbds)) {
+			if (d_left < d_right) {
+				return true;
+			}
+		} else if (">".equals(ljbds)) {
+			if (d_left > d_right) {
+				return true;
+			}
+		} else if ("=".equals(ljbds)) {
+			if (d_left == d_right) {
+				return true;
+			}
+		} else if (">=".equals(ljbds)) {
+			if (d_left >= d_right) {
+				return true;
+			}
+		} else if ("<=".equals(ljbds)) {
+			if (d_left <= d_right) {
+				return true;
+			}
+		} else if ("<>".equals(ljbds) || "!=".equals(ljbds)) {
+			if (d_left != d_right) {
+				return true;
+			}
+		} else {
+			formulaError();
+		}
+		return flag;
+	}
+
+	/**
+	 * 浣跨敤鍏紡璁$畻缁撴灉
+	 * @param dataMap 鏈満鏅彉閲忕殑鍊�
+	 * @param calculateString 鍏紡鐨勫唴瀹�
+	 * @return 鎵ц鍚庣殑鍊�
+	 */
+	public String getValueByFormula(Map<String,String> dataMap,String calculateString){
+		final String[] finalRule = new String[]{calculateString};
+		if(!CollectionUtils.isEmpty(dataMap)){
+			dataMap.forEach((key,value)->{
+				if(value == null){
+					value = "";
+				}
+				finalRule[0] = finalRule[0].replace("${" + key + "}",value);
+			});
+		}
+		return calculate(finalRule[0]);
+	}
+
+	/**
+	 * 閫掑綊璋冪敤杩愮畻锛屾敞鎰忓彉閲忛渶瑕佽嚜琛屾浛鎹�
+	 *
+	 * @param str
+	 * @return
+	 */
+	public  String calculate(String str) {
+		str = this.strCast(str);
+		if (!formulaBlag) {
+			//logger.debug("鍏紡涓嶆纭�");
+			return str;
+		}
+		boolean onlyFunction = str.length()>2 && str.startsWith("->");
+		if(onlyFunction){
+			str = str.substring(2);
+		}
+		//闇�瑕佹浛鎹㈢郴缁熷彉閲�
+		Map<String, String> systemVarValueMap = VciSystemVarConstants.getSystemVarValueMap();
+		if(!CollectionUtils.isEmpty(systemVarValueMap)){
+			final String[] finalStr = new String[]{str};
+			systemVarValueMap.forEach((key,value)->{
+				if(value == null){
+					value = "";
+				}
+				finalStr[0] = finalStr[0].replace( key,value);
+			});
+			str = finalStr[0];
+		}
+		String reval = "";
+		String bds = "";
+		int bracket = 0;// 瀵瑰簲鎷彿涓暟
+		int pos = 0;
+		boolean title = false;
+		// 濡傛灉浠ヨ礋鏁板紑澶达紝鍏堝幓鎺夎礋鍙�
+		if (str.substring(0, 1).equals("-")) {
+			str = str.substring(1);
+			title = true;
+		}
+
+		int len = str.length();
+		for (int i = 0; i < len; i++) {
+			String s = String.valueOf(str.charAt(i));
+			pos = i;
+			bracket = 0;
+			if (!lc.contains(s)) {// 濡傛灉娌¢亣鍒拌繍绠楃
+				if ("(".equals(s)) {// 濡傛灉閬囧埌宸︽嫭鍙�
+					if (funMap.containsKey(bds)) {// 濡傛灉宸︽嫭鍙峰墠鏄嚱鏁�
+						for (int j = i + 1; j < len; j++) {// 浠庡乏鎷彿鍚庡紑濮嬪惊鐜�
+							pos++;// 绱绉诲姩瀛楃浣嶆暟
+							String ts = String.valueOf(str.charAt(j));// 鍗曚釜瀛楃
+							// reval+=ts;
+							if ("(".equals(ts))// 濡傛灉鏄乏鎷彿绱
+							{
+								bracket++;
+							} else if (")".equals(ts)) {// 濡傛灉鏄彸鎷彿杩涜鍑忓皯
+								bracket--;
+								if (bracket == -1) {// 濡傛灉鏄�-1,鏍囪瘑鎷彿缁撴潫
+									reval = reval.substring(0, reval.length()
+										- bds.length());// 閲嶆柊鑾峰緱鍘绘帀鍑芥暟澶寸殑琛ㄨ揪寮�
+									reval += this.funCalculate(
+										str.substring(i + 1, j), bds);// 琛ㄨ揪寮忓姞涓婂嚱鏁扮粨鏋�,褰㈡垚鏂拌〃杈惧紡
+									i = pos;// 璁℃暟鍣ㄥ鍔�
+									bds = "";// 鍑芥暟澶存竻绌�
+									break;// 閫�鍑烘湰娆″惊鐜�
+								}
+							}
+						}
+					} else if ("".equals(bds) || lc.contains(bds)) {// 濡傛灉鏄櫘閫氳繍绠�
+						//logger.debug("鏅�氳繍绠�");
+						for (int j = i + 1; j < len; j++) {
+							pos++;
+							String ts = String.valueOf(str.charAt(j));
+							if ("(".equals(ts)) {
+								bracket++;
+							} else if (")".equals(ts)) {
+								bracket--;
+								if (bracket == -1) {
+									logger.debug("褰撳墠璁$畻鐨勫瓧绗︿覆涓猴細"
+										+ str.substring(i + 1, pos));
+									reval += calculate(str
+										.substring(i + 1, pos));
+									i = pos;
+									bds = "";
+									break;
+								}
+							}
+						}
+					} else {
+						logger.debug("娌℃湁姝ゅ嚱鏁�");
+						formulaError();
+					}
+				} else {// 绱姞鎬昏〃杈惧紡鍜屾渶鍚庝竴涓繍绠楁暟(鎴栧嚱鏁�)
+					bds += s;
+					reval += s;
+				}
+			} else {// 閬囧埌杩愮畻绗︽渶鍚庝竴涓繍绠楁暟(鎴栧嚱鏁�)娓呯┖
+				bds = "";
+				reval += s;
+			}
+		}
+		// 濡傛灉涓鸿礋鏁� 鍦ㄥ墠闈㈠姞璐熷彿
+		if (title) {
+			reval = "0-" + reval;
+		}
+		if(onlyFunction){
+
+			return reval;
+		}
+		String result =  basicOperation(reval);
+		logger.debug("璁$畻缁撴灉" + result);
+		return result;
+	}
+
+	/**
+	 * 鍑芥暟杩愮畻
+	 *
+	 * @param gs
+	 * @param funStr
+	 * @return
+	 */
+	private  String funCalculate(String gs, String funStr) {
+		String rval = "0";
+		logger.debug("鍑芥暟鍚嶏細" + funStr);
+		if (funMap.containsKey(funStr)) {
+			int[] csi = funMap.get(funStr);
+			try {
+				if (csi[0] == 0) {// java鍐呴儴鍑芥暟,閫氳繃鍙嶅皠璋冪敤
+					Class[] cs = new Class[csi[1]];
+					Object[] objs = new Object[csi[1]];
+					String[] gss = splitParameter(gs);
+					for (int i = 0; i < csi[1]; i++) {
+						cs[i] = double.class;
+						objs[i] = new Double(calculate(gss[i]));
+					}
+					Class cls = Class.forName("java.lang.Math");
+					Method m = cls.getMethod(funStr, cs);
+					logger.debug("鏂规硶鍚嶏細" + m);
+					rval = String.valueOf(m.invoke(cls, objs));
+				} else if (csi[0] == 1) {// 鑷畾涔夊嚱鏁�
+					rval = customFun(gs, funStr);
+				}
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+		}
+
+		return rval;
+	}
+
+	// 鍏紡閲岀殑鍙傛暟鍒嗗壊
+	public static String[] splitParameter(String str) {
+		int len = str.length();
+		boolean flag = true;
+		String tstr = "";
+
+		for (int i = 0; i < len; i++) {
+			String s = String.valueOf(str.charAt(i));
+			if ("(".equals(s)) {
+				flag = false;
+			} else if (")".equals(s)) {
+				flag = true;
+			}
+			if (flag && ",".equals(s)) {
+				tstr += "@";
+			} else {
+				tstr += s;
+			}
+		}
+		return tstr.split("@");
+
+	}
+
+	/**
+	 * 鍥涘垯杩愮畻琛ㄨ揪寮忓鐞�
+	 *
+	 * @param gs
+	 * @return
+	 */
+	private  String basicOperation(String gs) {
+		gs = gs + "+0"; // 鍥犱负涓嬮潰鐨勮绠楁槸閬囧埌绗﹀彿鎵嶈繘琛�,鎵�浠ュ鍔犲叆涓�涓绠楃鍙�,涓嶅奖鍝嶅��.
+		if(gs.indexOf("-")>-1){//鍖呭惈鏈�-鍙锋垨鑰呮槸璐熸暟
+			if(gs.startsWith("-")) {
+				gs = "0" + gs;
+			}
+//			if(gs.indexOf("-")>0&&lc.contains(gs.substring(gs.indexOf("-")-1,gs.indexOf("-")))){//绱ф尐鐫�鏃佽竟灏辨槸杩愮畻绗�,鎬庝箞鍔炲晩
+//				//gs = gs.substring(0,gs.indexOf("-")-1) + "(0" + gs.substring(gs.indexOf("-"))
+//			}
+		}
+		String c1 = "";// 绗竴涓繍绠楃鍙�
+		String c2 = "";// 绗簩涓繍绠楃鍙�
+		String s1 = "";// 绗竴涓繍绠楁暟
+		String s2 = "";// 绗簩涓繍绠楁暟
+		String s3 = "";// 绗笁涓繍绠楁暟
+
+		int len = gs.length();
+		for (int i = 0; i < len; i++) {
+			String s = String.valueOf(gs.charAt(i));// 鑾峰緱璇ヤ綅缃瓧绗﹀苟杞崲鎴愬瓧绗︿覆鍋氭瘮杈�
+			if (lc.contains(s)) { // 濡傛灉鏄繍绠楃鍙�
+				if (c1.length() == 0)// 濡傛灉绗竴涓繍绠楃鍙蜂负绌�,鍔犲叆
+				{
+					c1 = s;
+				} else if (c2.length() == 0) {// 鍚﹀垯,濡傛灉绗簩涓繍绠楃鍙蜂负绌�,鍔犲叆
+					c2 = s;// 绗簩涓繍绠楃鍙�
+					if ("+".equals(c2) || "-".equals(c2)) {// 濡傛灉绗簩涓繍绠楃鍙风骇鍒綆,閭d箞杩涜璁$畻
+						if(s2.trim().length()>0){
+							s1 = this.operation(s1, c1, s2);// 绗竴涓拰绗簩涓暟璁$畻
+							c1 = c2;// 淇濆瓨绗簩涓繍绠楃,鍏朵粬涓虹┖
+							c2 = "";
+							s2 = "";
+						}else{//s2杩樻病鍑虹幇
+							s2=this.calculate(gs.substring(i));
+							s1 = this.operation(s1, c1, s2);
+							break;
+						}
+					}
+				} else {// 涓婅堪閮戒繚瀛樿繃
+					if ("+".equals(s) || "-".equals(s)) {// 濡傛灉绗笁涓繍绠楃绾у埆浣�,杩涜杩愮畻
+						s2 = this.operation(s2, c2, s3);// 鍏堢畻绗簩涓変釜鏁�,淇濆瓨鑷崇浜屼釜
+						s1 = this.operation(s1, c1, s2);// 鍐嶇畻绗竴浜屼釜,淇濆瓨鑷崇涓�涓�
+						c1 = s;// 淇濆瓨褰撳墠杩愮畻绗�,鍏朵粬涓虹┖
+						s2 = "";
+						c2 = "";
+						s3 = "";
+					} else {// 濡傛灉绗笁涓繍绠楃绾у埆楂�
+						s2 = this.operation(s2, c2, s3);// 鍏堢畻绗簩涓変釜鏁�,淇濆瓨鑷崇浜屼釜
+						c2 = s;// 鍓嶉潰涓嶅姩,淇濆瓨杩愮畻绗�
+						s3 = "";
+					}
+				}
+			} else if (s1.length() > 0 && c1.length() > 0 && c2.length() == 0) {// 濡傛灉绗竴涓暟,绗竴涓繍绠楃宸蹭繚瀛�,绗簩涓繍绠楃鏈繚瀛�,淇濆瓨绗簩鍝ユ暟
+				s2 += s;
+			} else if (c1.length() == 0) {// 濡傛灉娌℃湁杩愮畻绗�,淇濆瓨绗竴涓暟
+				s1 += s;
+			} else if (s1.length() > 0 && s2.length() > 0 && c1.length() > 0
+				&& c2.length() > 0) {// 濡傛灉绗竴浜屼釜鏁板拰杩愮畻绗﹂兘鏈�,淇濆瓨绗笁涓暟
+				s3 += s;
+			}
+		}
+		return s1;
+	}
+
+	/**
+	 * 鍩烘湰鍥涘垯杩愮畻
+	 *
+	 * @param c1
+	 *            杩愮畻鏁�1
+	 * @param s1
+	 *            杩愮畻绗�(鍔犲噺涔橀櫎)
+	 * @param c2
+	 *            杩愮畻鏁�2
+	 * @return
+	 */
+	private  String operation(String c1, String s1, String c2) {
+		String reval = "0";
+		String c22 = "";
+		try {
+			for (int i = 0; i < c2.length(); i++) {
+				String s = String.valueOf(c2.charAt(i));
+				if (lj.contains(s)) {
+					break;
+				}
+				c22 += s;
+			}
+			if (isNumber(c1) && isNumber(c22)) {
+				BigDecimal ln = new BigDecimal(c1.trim());
+				BigDecimal rn = new BigDecimal(c2.trim());
+				if ("+".equals(s1)) {
+					return ln.add(rn).doubleValue() + "";
+				} else if ("-".equals(s1)) {
+					return ln.subtract(rn).doubleValue() + "";
+				} else if ("*".equals(s1)) {
+					return ln.multiply(rn).doubleValue() + "";
+				} else if ("/".equals(s1)) {
+					if (rn.doubleValue() == 0) {
+						return reval;
+					}
+					else {
+						return ln.divide(rn, 10, BigDecimal.ROUND_HALF_UP) + "";
+					}
+				}
+			} else {
+				this.formulaError();
+				return c1+s1+c2;
+			}
+
+		} catch (Exception e) {
+			this.formulaError();
+			e.printStackTrace();
+		} finally {
+		}
+
+		return reval;
+	}
+
+	private  Boolean isNumber(String str) {
+		return StringUtils.isNotBlank(str) && str.matches("(-)?([1-9]+[0-9]*|0)(\\.[\\d]+)?");
+	}
+
+	private  String formulaError() {
+		formulaBlag = false;
+		//logger.debug("鍏紡楠岃瘉澶辫触锛岃閲嶆柊杈撳叆");
+		return "fail";
+	}
+
+	public  String toChineseCurrency(String value) {
+		String doubleValue = this.calculate("doubleround(" + value + ",2)");
+		String fushu = "";
+		if (doubleValue.indexOf("-") == 0) {
+			fushu = "璐�";
+			doubleValue = doubleValue.substring(1);
+//			formulaError();
+//			return "";
+		}
+		char[] hunit = { '鎷�', '浣�', '浠�' }; // 娈靛唴浣嶇疆琛ㄧず
+		char[] vunit = { '涓�', '浜�' }; // 娈靛悕琛ㄧず
+		char[] digit = { '闆�', '澹�', '璐�', '鍙�', '鑲�', '浼�', '闄�', '鏌�', '鎹�', '鐜�' }; // 鏁板瓧琛ㄧず
+		//double midVal =  (Double.parseDouble(doubleValue) * 100); // 杞寲鎴愭暣褰�
+		//String valStr = String.valueOf(midVal); // 杞寲鎴愬瓧绗︿覆
+		//String head = valStr.substring(0, valStr.length() - 2); // 鍙栨暣鏁伴儴鍒�
+		//String rail = valStr.substring(valStr.length() - 2); // 鍙栧皬鏁伴儴鍒�
+		String head = "";
+		String rail = "00";
+		if(doubleValue.indexOf(".")>-1){
+			head = doubleValue.substring(0,doubleValue.indexOf("."));
+			rail = doubleValue.substring(doubleValue.indexOf(".")+1);
+			if(rail.trim().length() == 1) {
+				rail += "0";//蹇呴』瑕佷繚璇佹湁鍒�
+			}
+		}
+		else {
+			head = doubleValue;
+		}
+		String prefix = ""; // 鏁存暟閮ㄥ垎杞寲鐨勭粨鏋�
+		String suffix = ""; // 灏忔暟閮ㄥ垎杞寲鐨勭粨鏋�
+		// 澶勭悊灏忔暟鐐瑰悗闈㈢殑鏁�
+		if (rail.equals("00")) { // 濡傛灉灏忔暟閮ㄥ垎涓�0
+			suffix = "鏁�";
+		} else {
+			suffix = digit[rail.charAt(0) - '0'] + "瑙�"
+				+ digit[rail.charAt(1) - '0'] + "鍒�"; // 鍚﹀垯鎶婅鍒嗚浆鍖栧嚭鏉�
+		}
+		// 澶勭悊灏忔暟鐐瑰墠闈㈢殑鏁�
+		char[] chDig = head.toCharArray(); // 鎶婃暣鏁伴儴鍒嗚浆鍖栨垚瀛楃鏁扮粍
+		char zero = '0'; // 鏍囧織'0'琛ㄧず鍑虹幇杩�0
+		byte zeroSerNum = 0; // 杩炵画鍑虹幇0鐨勬鏁�
+		for (int i = 0; i < chDig.length; i++) { // 寰幆澶勭悊姣忎釜鏁板瓧
+			int idx = (chDig.length - i - 1) % 4; // 鍙栨鍐呬綅缃�
+			int vidx = (chDig.length - i - 1) / 4; // 鍙栨浣嶇疆
+			if (chDig[i] == '0') { // 濡傛灉褰撳墠瀛楃鏄�0
+				zeroSerNum++; // 杩炵画0娆℃暟閫掑
+				if (zero == '0') { // 鏍囧織
+					zero = digit[0];
+				} else if (idx == 0 && vidx > 0 && zeroSerNum < 4) {
+					prefix += vunit[vidx - 1];
+					zero = '0';
+				}
+				continue;
+			}
+			zeroSerNum = 0; // 杩炵画0娆℃暟娓呴浂
+			if (zero != '0') { // 濡傛灉鏍囧織涓嶄负0,鍒欏姞涓�,渚嬪涓�,浜夸粈涔堢殑
+				prefix += zero;
+				zero = '0';
+			}
+			prefix += digit[chDig[i] - '0']; // 杞寲璇ユ暟瀛楄〃绀�
+			if (idx > 0) {
+				prefix += hunit[idx - 1];
+			}
+			if (idx == 0 && vidx > 0) {
+				prefix += vunit[vidx - 1]; // 娈电粨鏉熶綅缃簲璇ュ姞涓婃鍚嶅涓�,浜�
+			}
+		}
+
+		if (prefix.length() > 0) {
+			prefix += '鍦�'; // 濡傛灉鏁存暟閮ㄥ垎瀛樺湪,鍒欐湁鍦嗙殑瀛楁牱
+		}
+		return fushu + prefix + suffix; // 杩斿洖姝g‘琛ㄧず
+	}
+
+	private String toChinese(String value) {
+		if (!isNumber(value)) {
+			this.formulaError();
+			return "";
+		}
+		String fu = "";
+		// 濡傛灉鏄礋鏁板墠闈㈠姞璐�
+		if (value.indexOf("-") == 0) {
+			value = value.substring(1);
+			fu += "璐�";
+		}
+		char[] hunit = { '鎷�', '浣�', '浠�' }; // 娈靛唴浣嶇疆琛ㄧず
+		char[] vunit = { '涓�', '浜�' }; // 娈靛悕琛ㄧず
+		char[] digit = { '闆�', '涓�', '浜�', '涓�', '鍥�', '浜�', '鍏�', '涓�', '鍏�', '涔�' }; // 鏁板瓧琛ㄧず
+		String head = "";
+		String rail = "";
+		String prefix = ""; // 鏁存暟閮ㄥ垎杞寲鐨勭粨鏋�
+		String suffix = ""; // 灏忔暟閮ㄥ垎杞寲鐨勭粨鏋�
+		if (value.indexOf(".") != -1 && value.indexOf(".") < value.length() - 1) {
+			String[] number = value.split("\\.");
+			head = number[0]; // 鍙栨暣鏁伴儴鍒�
+			rail = number[1];
+			suffix += "鐐�";
+		} else {
+			head = value;
+		}
+		// 澶勭悊灏忔暟鐐瑰悗闈㈢殑鏁�
+		for (int i = 0; i < rail.length(); i++) {
+			suffix += digit[rail.charAt(i) - '0'];
+		}
+
+		// 澶勭悊灏忔暟鐐瑰墠闈㈢殑鏁�
+		char[] chDig = head.toCharArray(); // 鎶婃暣鏁伴儴鍒嗚浆鍖栨垚瀛楃鏁扮粍
+		char zero = '0'; // 鏍囧織'0'琛ㄧず鍑虹幇杩�0
+		byte zeroSerNum = 0; // 杩炵画鍑虹幇0鐨勬鏁�
+		for (int i = 0; i < chDig.length; i++) { // 寰幆澶勭悊姣忎釜鏁板瓧
+			int idx = (chDig.length - i - 1) % 4; // 鍙栨鍐呬綅缃�
+			int vidx = (chDig.length - i - 1) / 4; // 鍙栨浣嶇疆
+			if (chDig[i] == '0') { // 濡傛灉褰撳墠瀛楃鏄�0
+				zeroSerNum++; // 杩炵画0娆℃暟閫掑
+				if (zero == '0') { // 鏍囧織
+					zero = digit[0];
+				} else if (idx == 0 && vidx > 0 && zeroSerNum < 4) {
+					prefix += vunit[vidx - 1];
+					zero = '0';
+				}
+				continue;
+			}
+			zeroSerNum = 0; // 杩炵画0娆℃暟娓呴浂
+			if (zero != '0') { // 濡傛灉鏍囧織涓嶄负0,鍒欏姞涓�,渚嬪涓�,浜夸粈涔堢殑
+				prefix += zero;
+				zero = '0';
+			}
+			prefix += digit[chDig[i] - '0']; // 杞寲璇ユ暟瀛楄〃绀�
+			if (idx > 0) {
+				prefix += hunit[idx - 1];
+			}
+			if (idx == 0 && vidx > 0) {
+				prefix += vunit[vidx - 1]; // 娈电粨鏉熶綅缃簲璇ュ姞涓婃鍚嶅涓�,浜�
+			}
+		}
+		return fu + prefix + suffix; // 杩斿洖姝g‘琛ㄧず
+	}
+
+	private  String getColValue(String servername, String tableName,
+								String fieldname, String pkfield, String pkvalue) {
+		//鏆傛椂涓嶆敮鎸乻erver鐨勬柟寮�
+		String sql = "select " + fieldname.trim() + " from " +  tableName.trim() + " where " + pkfield + " = '" + pkvalue+"'";
+//		Map<String,String> param = new HashMap<String, String>();
+//		param.put(pkfield, pkvalue);
+		String str = "";
+		try{
+			List data = commonsMapper.selectById(sql);
+			if(data != null || data.size() > 0) {
+				str = (String) ((HashMap) data.get(0)).get(fieldname.trim());
+			}
+		}catch(Exception e){
+
+		}
+		return str;
+
+	}
+
+	private String getValueByMethod(String serviceName,String methods,String paramsString){
+		//鏆傛椂涓嶆敮鎸侀�氳繃鏂规硶鏉ヨ幏鍙栧��
+		return paramsString;
+	}
+
+	public static void main(String[] args) {
+
+	}
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
index d99f7e4..83a94ca 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
@@ -1,57 +1,10 @@
 package com.vci.ubcs.code.service.impl;
 
-import com.alibaba.fastjson.JSONObject;
-import com.alibaba.nacos.common.utils.StringUtils;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.sun.corba.se.impl.orbutil.ObjectUtility;
-import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
-import com.vci.ubcs.code.dto.CodeOrderDTO;
-import com.vci.ubcs.code.dto.datapush.BaseModelDTO;
 import com.vci.ubcs.code.entity.CodeAllCode;
-import com.vci.ubcs.code.entity.CodeOsbtmtypeEntity;
-import com.vci.ubcs.code.entity.CodeRule;
-import com.vci.ubcs.code.entity.CodeWupinEntity;
-import com.vci.ubcs.code.enumpack.CodeDefaultLC;
-import com.vci.ubcs.code.enumpack.CodeLevelTypeEnum;
-import com.vci.ubcs.code.enumpack.CodeSecTypeEnum;
 import com.vci.ubcs.code.mapper.CodeAllCodeMapper;
-import com.vci.ubcs.code.mapper.CodeOsbtmtypeMapper;
-import com.vci.ubcs.code.mapper.CodeRuleMapper;
 import com.vci.ubcs.code.service.*;
-import com.vci.ubcs.code.vo.CodeClstemplateVO;
-import com.vci.ubcs.code.vo.CodeKeyattrrepeatVO;
-import com.vci.ubcs.code.vo.pagemodel.CodeBasicSecVO;
-import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
-import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
-import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
-import com.vci.ubcs.omd.entity.Dict;
-import com.vci.ubcs.starter.exception.VciBaseException;
-import com.vci.ubcs.starter.revision.model.BaseModel;
-import com.vci.ubcs.starter.web.enumpck.UserSecretEnum;
-import com.vci.ubcs.starter.web.pagemodel.KeyValue;
-import com.vci.ubcs.starter.web.toolmodel.DateConverter;
-import com.vci.ubcs.starter.web.util.VciBaseUtil;
-import com.vci.ubcs.starter.web.util.VciDateUtil;
-import com.vci.ubcs.starter.web.util.VciQueryWrapperForDO;
-import com.vci.ubcs.starter.web.util.WebUtil;
-import com.vci.ubcs.system.entity.DictBiz;
-import com.vci.ubcs.system.feign.IDictBizClient;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springblade.core.mp.support.Query;
-import org.springblade.core.secure.utils.AuthUtil;
-import org.springblade.core.tool.api.R;
-import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
-
-import javax.annotation.Resource;
-import java.util.*;
-import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.stream.Collectors;
 
 /**
  * 涓绘暟鎹紩鎿庢湇鍔�
@@ -62,395 +15,455 @@
 @Service
 public class MdmEngineServiceImpl extends ServiceImpl<CodeAllCodeMapper, CodeAllCode> implements MdmEngineService {
 
-	/**
-	 * 妯℃澘鐨勬湇鍔�
-	 */
-	@Resource
-	private CodeClstemplateServiceImpl templateService;
-	/**
-	 * 妯℃澘鐨勬湇鍔�
-	 */
-	@Resource
-	private CodeOsbtmtypeMapper codeOsbtmtypeMapper;
-	/**
-	 * 鐢熸垚缂栫爜鐨勬湇鍔�
-	 */
-	@Resource
-	private MdmProductCodeService productCodeService;
-	/**
-	 * 瀛楀吀鐨勬湇鍔�
-	 */
-	@Resource
-	IDictBizClient iDictBizClient;
 
-	/**
-	 * 缂栫爜瑙勫垯鐨勬湇鍔�
-	 */
-	@Autowired
-	private ICodeRuleService ruleService;
-
-	/**
-	 * 鍒嗙被鐨勬湇鍔�
-	 */
-	@Resource
-	private ICodeClassifyService classifyService;
-
-	/**
-	 * 鍏抽敭灞炴�х殑閰嶇疆
-	 */
-	@Autowired
-	private ICodeKeyattrrepeatService keyRuleService;
-	/**
-	 * 鏃ュ織
-	 */
-	private Logger logger = LoggerFactory.getLogger(getClass());
-
-	//	@Autowired
-	//	private CodeOsbtmtypeMapper codeOsbtmtypeMapper;
-
-	/**
-	 * 浣跨敤鍒嗙被鐨勪富閿幏鍙栧彲浠ヤ娇鐢ㄧ殑妯℃澘瀵硅薄
-	 *
-	 * @param codeClassifyOid 鍒嗙被鐨勪富閿�
-	 * @return 妯℃澘鐨勬樉绀哄璞�
-	 */
-	@Override
-	public CodeClstemplateVO getUsedTemplateByClassifyOid(String codeClassifyOid) {
-		return getUsedTemplateByClassifyOid(codeClassifyOid, true);
-	}
-
-	/**
-	 * 浣跨敤鍒嗙被鐨勪富閿幏鍙栧彲浠ヤ娇鐢ㄧ殑妯℃澘瀵硅薄
-	 *
-	 * @param codeClassifyOid 鍒嗙被鐨勪富閿�
-	 * @param hasAttr         鍖呭惈灞炴��
-	 * @return 妯℃澘鐨勬樉绀哄璞�
-	 */
-	@Override
-	public CodeClstemplateVO getUsedTemplateByClassifyOid(String codeClassifyOid, boolean hasAttr) {
-		List<CodeClstemplateVO> templateVOs = templateService.listReleaseTemplateByClassifyOid(codeClassifyOid, hasAttr);
-		return templateVOs.get(templateVOs.size() - 1);
-	}
-
-	/**
-	 * 鑾峰彇鏋氫妇鐨勪笅鎷夐�夐」
-	 *
-	 * @param attrVO 妯℃澘灞炴�х殑瀵硅薄
-	 * @return 涓嬫媺閫夐」
-	 */
-	@Override
-	public List<KeyValue> listComboboxItems(CodeClassifyTemplateAttrVO attrVO) {
-		List<KeyValue> comboboxKVs = null;
-		if (StringUtils.isNotBlank(attrVO.getEnumString())) {
-			comboboxKVs = JSONObject.parseArray(attrVO.getEnumString(), KeyValue.class);
-		} else {
-//			comboboxKVs = enumService.getEnum(attrVO.getEnumid());
-//		 	Dict dict = new Dict();
-//			dict.setParentId(Long.valueOf(attrVO.getEnumid()));
-			R<List<DictBiz>> list = iDictBizClient.getList(attrVO.getEnumId());
-			if(list.isSuccess()){
-				for (DictBiz datum : list.getData()) {
-					KeyValue keyValue = new KeyValue();
-					keyValue.setKey(datum.getDictKey());
-					keyValue.setValue(datum.getDictValue());
-					comboboxKVs.add(keyValue);
-				}
-			}
-		}
-		return comboboxKVs;
-	}
-	/**
-	 * 淇敼鐘舵��
-	 *
-	 * @param baseModelDTO 鏁版嵁浼犺緭瀵硅薄
-	 */
-	@Override
-	public void changeStatus(BaseModelDTO baseModelDTO) {
-		VciBaseUtil.alertNotNull(baseModelDTO, "鏁版嵁淇℃伅", baseModelDTO.getOid(), "涓婚敭", baseModelDTO.getBtmname(), "涓氬姟绫诲瀷", baseModelDTO.getLcStatus(), "鐩爣鐘舵��");
-		List<String> oids = VciBaseUtil.str2List(baseModelDTO.getOid());
-//		List<ClientBusinessObject> cboList = boService.selectCBOByOidCollection(oids, baseModelDTO.getBtmname());
-		//鎻掍釜鐐� 涓氬姟绫诲瀷瀹屾垚鍚庨渶瑕佷慨鏀�
-		QueryWrapper<CodeOsbtmtypeEntity> wrapper = new QueryWrapper<>();
-		wrapper.eq("BTMNAME",baseModelDTO.getBtmname());
-		wrapper.in("OID",oids);
-		List<CodeOsbtmtypeEntity> cboList = codeOsbtmtypeMapper.selectList(wrapper);
-		//杩橀渶瑕佷慨鏀筧llCode鐨勭敓鍛藉懆鏈�
-//		Map<String, String> conditionMap = new HashMap<>();
-		QueryWrapper<CodeAllCode> allCodeWrapper = new QueryWrapper<>();
-		allCodeWrapper.eq("createcodebtm",baseModelDTO.getBtmname());
-		allCodeWrapper.in("createcodeoid",oids);
-//		conditionMap.put("createcodeoid", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(oids.toArray(new String[0])) + ")");
-//		conditionMap.put("createcodebtm", baseModelDTO.getBtmname());
-		List<CodeAllCode> codeCbos = baseMapper.selectList(allCodeWrapper);
-//		List<ClientBusinessObject> codeCbos = boService.queryCBO(MdmBtmTypeConstant.CODE_ALL_CODE, conditionMap);
-		// 鍥炴敹闇�瑕佷笟鍔℃暟鎹垹闄�
+//	/**
+//	 * 妯℃澘鐨勬湇鍔�
+//	 */
+//	@Resource
+//	private CodeClstemplateServiceImpl templateService;
+//	/**
+//	 * 妯℃澘鐨勬湇鍔�
+//	 */
+//	@Resource
+//	private CodeOsbtmtypeMapper codeOsbtmtypeMapper;
+//	/**
+//	 * 鐢熸垚缂栫爜鐨勬湇鍔�
+//	 */
+//	@Resource
+//	private MdmProductCodeService productCodeService;
+//	/**
+//	 * 瀛楀吀鐨勬湇鍔�
+//	 */
+//	@Resource
+//	IDictBizClient iDictBizClient;
+//	/**
+//	 * 鍏紡鐨勬湇鍔�
+//	 */
+//	@Autowired
+//	private FormulaServiceImpl formulaService;
+//
+//	/**
+//	 * 閫氱敤鏌ヨ
+//	 */
+//	@Resource
+//	CommonsMapper commonsMapper;
+//	/**
+//	 * 缂栫爜瑙勫垯鐨勬湇鍔�
+//	 */
+//	@Autowired
+//	private ICodeRuleService ruleService;
+//
+//	/**
+//	 * 鍒嗙被鐨勬湇鍔�
+//	 */
+//	@Resource
+//	private ICodeClassifyService classifyService;
+//
+//	/**
+//	 * 鍏抽敭灞炴�х殑閰嶇疆
+//	 */
+//	@Autowired
+//	private ICodeKeyattrrepeatService keyRuleService;
+//	/**
+//	 * 鏃ュ織
+//	 */
+//	private Logger logger = LoggerFactory.getLogger(getClass());
+//
+//	/**
+//	 * 绌烘牸
+//	 */
+//	public static final String SPACE = " ";
+//
+//	/**
+//	 * 瀵嗙骇鐨勫瓧娈�
+//	 */
+//	public static final String SECRET_FILED = "secretgrade";
+//	/**
+//	 * 鐢ㄦ埛鏂板鏁版嵁鐨勬椂鍊欏彲浠ユ煡鐪嬬殑瀵嗙骇
+//	 */
+//	public static final String MY_DATA_SECRET = "myDataSecret";
+//	/**
+//	 * 鎷疯礉鐨勭増鏈�
+//	 */
+//	public static final String COPY_FROM_VERSION = "copyfromversion";
+//	/**
+//	 * 鍙槸sql
+//	 */
+//	public static final String ONLY = "${vcionly}";
+//
+//	/**
+//	 * 榛樿鐨勬椂闂存牸寮�
+//	 */
+//	private static final String DATETIME_FORMAT = "yyyy-mm-dd hh24:mi:ss";
+//
+//	/**
+//	 * 鏃ユ湡鏍煎紡
+//	 */
+//	private static final String DATE_FORMAT = "yyyy-mm-dd";
+//
+//	/**
+//	 * 蹇呰緭
+//	 */
+//	public static final String REQUIRED_CHAR = "*";
+//	/**
+//	 * 鏇挎崲瀛楃
+//	 */
+//	public static final String SPECIAL_CHAR  = "VCI";
+////	@Autowired
+////	private CodeOsbtmtypeMapper codeOsbtmtypeMapper;
+//
+//
+//
+//	/**
+//	 * 浣跨敤鍒嗙被鐨勪富閿幏鍙栧彲浠ヤ娇鐢ㄧ殑妯℃澘瀵硅薄
+//	 *
+//	 * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+//	 * @return 妯℃澘鐨勬樉绀哄璞�
+//	 */
+//	@Override
+//	public CodeClstemplateVO getUsedTemplateByClassifyOid(String codeClassifyOid) {
+//		return getUsedTemplateByClassifyOid(codeClassifyOid, true);
+//	}
+//
+//	/**
+//	 * 浣跨敤鍒嗙被鐨勪富閿幏鍙栧彲浠ヤ娇鐢ㄧ殑妯℃澘瀵硅薄
+//	 *
+//	 * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+//	 * @param hasAttr         鍖呭惈灞炴��
+//	 * @return 妯℃澘鐨勬樉绀哄璞�
+//	 */
+//	@Override
+//	public CodeClstemplateVO getUsedTemplateByClassifyOid(String codeClassifyOid, boolean hasAttr) {
+//		List<CodeClstemplateVO> templateVOs = templateService.listReleaseTemplateByClassifyOid(codeClassifyOid, hasAttr);
+//		return templateVOs.get(templateVOs.size() - 1);
+//	}
+//
+//	/**
+//	 * 鑾峰彇鏋氫妇鐨勪笅鎷夐�夐」
+//	 *
+//	 * @param attrVO 妯℃澘灞炴�х殑瀵硅薄
+//	 * @return 涓嬫媺閫夐」
+//	 */
+//	@Override
+//	public List<KeyValue> listComboboxItems(CodeClassifyTemplateAttrVO attrVO) {
+//		List<KeyValue> comboboxKVs = null;
+//		if (StringUtils.isNotBlank(attrVO.getEnumString())) {
+//			comboboxKVs = JSONObject.parseArray(attrVO.getEnumString(), KeyValue.class);
+//		} else {
+////			comboboxKVs = enumService.getEnum(attrVO.getEnumid());
+////		 	Dict dict = new Dict();
+////			dict.setParentId(Long.valueOf(attrVO.getEnumid()));
+//			R<List<DictBiz>> list = iDictBizClient.getList(attrVO.getEnumId());
+//			if(list.isSuccess()){
+//				for (DictBiz datum : list.getData()) {
+//					KeyValue keyValue = new KeyValue();
+//					keyValue.setKey(datum.getDictKey());
+//					keyValue.setValue(datum.getDictValue());
+//					comboboxKVs.add(keyValue);
+//				}
+//			}
+//		}
+//		return comboboxKVs;
+//	}
+//	/**
+//	 * 淇敼鐘舵��
+//	 *
+//	 * @param baseModelDTO 鏁版嵁浼犺緭瀵硅薄
+//	 */
+//	@Override
+//	public void changeStatus(BaseModelDTO baseModelDTO) {
+//		VciBaseUtil.alertNotNull(baseModelDTO, "鏁版嵁淇℃伅", baseModelDTO.getOid(), "涓婚敭", baseModelDTO.getBtmname(), "涓氬姟绫诲瀷", baseModelDTO.getLcStatus(), "鐩爣鐘舵��");
+//		List<String> oids = VciBaseUtil.str2List(baseModelDTO.getOid());
+////		List<ClientBusinessObject> cboList = boService.selectCBOByOidCollection(oids, baseModelDTO.getBtmname());
+//		//鎻掍釜鐐� 涓氬姟绫诲瀷瀹屾垚鍚庨渶瑕佷慨鏀�
+//		QueryWrapper<CodeOsbtmtypeEntity> wrapper = new QueryWrapper<>();
+//		wrapper.eq("BTMNAME",baseModelDTO.getBtmname());
+//		wrapper.in("OID",oids);
+//		List<CodeOsbtmtypeEntity> cboList = codeOsbtmtypeMapper.selectList(wrapper);
+//		//杩橀渶瑕佷慨鏀筧llCode鐨勭敓鍛藉懆鏈�
+////		Map<String, String> conditionMap = new HashMap<>();
+//		QueryWrapper<CodeAllCode> allCodeWrapper = new QueryWrapper<>();
+//		allCodeWrapper.eq("createcodebtm",baseModelDTO.getBtmname());
+//		allCodeWrapper.in("createcodeoid",oids);
+////		conditionMap.put("createcodeoid", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(oids.toArray(new String[0])) + ")");
+////		conditionMap.put("createcodebtm", baseModelDTO.getBtmname());
+//		List<CodeAllCode> codeCbos = baseMapper.selectList(allCodeWrapper);
+////		List<ClientBusinessObject> codeCbos = boService.queryCBO(MdmBtmTypeConstant.CODE_ALL_CODE, conditionMap);
+//		// 鍥炴敹闇�瑕佷笟鍔℃暟鎹垹闄�
 //		if (CodeDefaultLC.TASK_BACK.getValue().equals(baseModelDTO.getLcStatus())) {
 ////			BatchCBO batchCBO = new BatchCBO();
 ////			batchCBO.getDeleteCbos().addAll(cboList);
 //			codeOsbtmtypeMapper.deleteBatchIds(cboList);
 ////			boService.persistenceBatch(batchCBO);
 //		} else {
-//			lifeCycleService.transCboStatus(cboList, baseModelDTO.getLcStatus());
+////			lifeCycleService.transCboStatus(cboList, baseModelDTO.getLcStatus());
 //		}
-//		lifeCycleService.transCboStatus(codeCbos, baseModelDTO.getLcStatus());
-	}
-
-
-	/**
-	 * 鐢宠鍗曚竴缂栫爜
-	 *
-	 * @param orderDTO 鐢宠鐨勪俊鎭紝闇�瑕佸寘鍚睘鎬х殑鍐呭鍜岀爜娈电浉鍏崇殑鍐呭
-	 * @return 杩斿洖缂栫爜鐨勫唴瀹�
-	 */
-	@Override
-	public String addSaveCode(CodeOrderDTO orderDTO) {
-		VciBaseUtil.alertNotNull(orderDTO, "缂栫爜鐢宠鐩稿叧鐨勫睘鎬у拰鐮佹鐨勫唴瀹归兘涓虹┖", orderDTO.getCodeClassifyOid(), "涓婚搴撳垎绫荤殑涓婚敭",
-			orderDTO.getTemplateOid(), "妯℃澘鐨勪富閿�", orderDTO.getCodeRuleOid(), "缂栫爜瑙勫垯鐨勪富閿�");
-		CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
-		CodeClstemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid());
-		CodeRuleVO ruleVO = ruleService.getObjectHasSecByOid(orderDTO.getCodeRuleOid());
-		//1.鍒ゆ柇瑙勫垯涓櫎浜嗘祦姘寸爜娈碉紝鏄惁鏈夊叾浠栫爜娈�
-		checkSecValueOnOrder(ruleVO, orderDTO);
-		//2.鍒ゆ柇蹇呰緭椤�
-		checkRequiredAttrOnOrder(templateVO, orderDTO);
-		//3.鍏堟敞鍏ワ紝鍐嶇粍鍚堬紝鏈�鍚庢牎楠�
-		switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO);
-		//4.澶勭悊缁勫悎瑙勫垯銆傜粍鍚堣鍒欎笉鑳戒娇鐢ㄧ紪鐮佺殑灞炴�э紝鍥犱负缂栫爜鐨勭敓鎴愬彲鑳芥槸闇�瑕佸睘鎬х殑
-		switchComponentAttrOnOrder(templateVO, orderDTO);
-		//5.鏍¢獙瑙勫垯
-		checkVerifyOnOrder(templateVO, orderDTO);
-		//6.鍏抽敭灞炴��
-		checkKeyAttrOnOrder(classifyFullInfo, templateVO, orderDTO);
-		//7.鏋氫妇杞崲
-		checkEnumOnOrder(templateVO, orderDTO);
-		//8.澶勭悊鏃堕棿鏍煎紡锛屽湪鏁版嵁搴撻噷闈笉璁烘槸瀛楃涓茶繕鏄棩鏈熸牸寮忥紝閮戒娇鐢ㄧ浉鍚岀殑鏍煎紡瀛樺偍
-		switchDateAttrOnOrder(templateVO, orderDTO);
-		//9.鐢熸垚缂栫爜鐨勪俊鎭�
-//		ClientBusinessObject cbo = boService.createCBOByBtmName(classifyFullInfo.getTopClassifyVO().getBtmtypeid());
+////		lifeCycleService.transCboStatus(codeCbos, baseModelDTO.getLcStatus());
+//	}
+//
+//
+//	/**
+//	 * 鐢宠鍗曚竴缂栫爜
+//	 *
+//	 * @param orderDTO 鐢宠鐨勪俊鎭紝闇�瑕佸寘鍚睘鎬х殑鍐呭鍜岀爜娈电浉鍏崇殑鍐呭
+//	 * @return 杩斿洖缂栫爜鐨勫唴瀹�
+//	 */
+//	@Override
+//	public String addSaveCode(CodeOrderDTO orderDTO) {
+//		VciBaseUtil.alertNotNull(orderDTO, "缂栫爜鐢宠鐩稿叧鐨勫睘鎬у拰鐮佹鐨勫唴瀹归兘涓虹┖", orderDTO.getCodeClassifyOid(), "涓婚搴撳垎绫荤殑涓婚敭",
+//			orderDTO.getTemplateOid(), "妯℃澘鐨勪富閿�", orderDTO.getCodeRuleOid(), "缂栫爜瑙勫垯鐨勪富閿�");
+//		CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
+//		CodeClstemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid());
+//		CodeRuleVO ruleVO = ruleService.getObjectHasSecByOid(orderDTO.getCodeRuleOid());
+//		//1.鍒ゆ柇瑙勫垯涓櫎浜嗘祦姘寸爜娈碉紝鏄惁鏈夊叾浠栫爜娈�
+//		checkSecValueOnOrder(ruleVO, orderDTO);
+//		//2.鍒ゆ柇蹇呰緭椤�
+//		checkRequiredAttrOnOrder(templateVO, orderDTO);
+//		//3.鍏堟敞鍏ワ紝鍐嶇粍鍚堬紝鏈�鍚庢牎楠�
+//		switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO);
+//		//4.澶勭悊缁勫悎瑙勫垯銆傜粍鍚堣鍒欎笉鑳戒娇鐢ㄧ紪鐮佺殑灞炴�э紝鍥犱负缂栫爜鐨勭敓鎴愬彲鑳芥槸闇�瑕佸睘鎬х殑
+//		switchComponentAttrOnOrder(templateVO, orderDTO);
+//		//5.鏍¢獙瑙勫垯
+//		checkVerifyOnOrder(templateVO, orderDTO);
+//		//6.鍏抽敭灞炴��
+//		checkKeyAttrOnOrder(classifyFullInfo, templateVO, orderDTO);
+//		//7.鏋氫妇杞崲
+//		checkEnumOnOrder(templateVO, orderDTO);
+//		//8.澶勭悊鏃堕棿鏍煎紡锛屽湪鏁版嵁搴撻噷闈笉璁烘槸瀛楃涓茶繕鏄棩鏈熸牸寮忥紝閮戒娇鐢ㄧ浉鍚岀殑鏍煎紡瀛樺偍
+//		switchDateAttrOnOrder(templateVO, orderDTO);
+//		//9.鐢熸垚缂栫爜鐨勪俊鎭�
+////		ClientBusinessObject cbo = boService.createCBOByBtmName(classifyFullInfo.getTopClassifyVO().getBtmtypeid());
 //		CodeWupinEntity cbo = createCBOByBtmName(classifyFullInfo.getTopClassifyVO().getBtmtypeid());
-//		//榛樿鐨勫睘鎬ч兘涓嶇敤浠庡墠绔嫹璐�
-//		//璁剧疆缂栫爜闇�瑕佺殑榛樿灞炴�х殑鍐呭
+////		//榛樿鐨勫睘鎬ч兘涓嶇敤浠庡墠绔嫹璐�
+////		//璁剧疆缂栫爜闇�瑕佺殑榛樿灞炴�х殑鍐呭
 //		copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, false);
-//		//TODO:鍥犱负榛樿鐨勫睘鎬ч兘涓嶆嫹璐濓紝鐩墠闆嗗洟鐮佸彨name锛屽苟娌℃湁浠嶥TO鎷疯礉鍒癱bo閲屻�傚鍔犱竴涓崟鐙鐞嗭紝浠ュ悗鍐嶇湅瑕佷笉瑕佽皟鏁�
+////		//TODO:鍥犱负榛樿鐨勫睘鎬ч兘涓嶆嫹璐濓紝鐩墠闆嗗洟鐮佸彨name锛屽苟娌℃湁浠嶥TO鎷疯礉鍒癱bo閲屻�傚鍔犱竴涓崟鐙鐞嗭紝浠ュ悗鍐嶇湅瑕佷笉瑕佽皟鏁�
 //		cbo.setName(orderDTO.getName() == null ? "" : orderDTO.getName());
-//		//end -- modify by lihang @20220407
+////		//end -- modify by lihang @20220407
 //		List<CodeWupinEntity> cboList = new ArrayList<>();
 //
 //		//澶囨敞
 //		cbo.setDescription(orderDTO.getDescription());
-//
 //		cboList.add(cbo);
+////
+////		cboList.add(cbo);
 //		List<String> codeList = productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(),cboList);
-////		batchSaveSelectChar(templateVO, cboList);
+//
+//
+//		List<String> charList = new ArrayList<>();
+//		for (CodeWupinEntity wupinEntity : cboList) {
+//			charList.add(wupinEntity.getId());
+//		}
+//		batchSaveSelectChar(templateVO, charList);
 //		return codeList.size() > 0 ? codeList.get(0) : "";
-		return null;
-	}
-
-	/**
-	 * 澶勭悊鍒嗙被娉ㄥ叆鐨勪俊鎭�
-	 *
-	 * @param templateVO         妯℃澘鐨勬樉绀哄璞★紝蹇呴』瑕佸悗妯℃澘鐨勫睘鎬�
-	 * @param classifyFullInfoBO 鍒嗙被鐨勫叏璺緞
-	 * @param orderDTO           缂栫爜鐢宠鐨勪俊鎭�
-	 */
-	private void switchClassifyLevelOnOrder(CodeClstemplateVO templateVO, CodeClassifyFullInfoBO classifyFullInfoBO, CodeOrderDTO orderDTO) {
-		Map<String,CodeClassifyTemplateAttrVO> classifyAttrVOMap = templateVO.getAttributes().stream().filter(
-			s -> StringUtils.isNotBlank(s.getClassifyInvokeAttr()) && StringUtils.isNotBlank(s.getClassifyInvokeLevel())
-		).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
-		if (classifyFullInfoBO.getTopClassifyVO() == null) {
-			//闇�瑕侀噸鏂版煡璇竴涓嬶紝鍥犱负杩欎釜鏄寚瀹氱殑鍒嗙被杩涙潵鐨�
-
-		}
-		if (!CollectionUtils.isEmpty(classifyAttrVOMap)) {
-			classifyAttrVOMap.forEach((attrId, attrVO) -> {
-				//鍒嗙被娉ㄥ叆鐨勭紪鍙锋垨鑰呭悕绉帮紝
-				//灞傜骇鍖呭惈鎸囧畾灞傚拰鏈�灏忓眰
-				CodeClassifyVO classifyVO = null;
-				if (!CodeLevelTypeEnum.MIN.getValue().equalsIgnoreCase(attrVO.getClassifyInvokeLevel()) && !"min".equalsIgnoreCase(attrVO.getClassifyInvokeLevel())) {
-					//鎸囧畾浜嗗眰绾х殑
-					//娉ㄦ剰锛屽洜涓烘煡璇笂绾у垎绫诲嚭鏉ョ殑灞傜骇鏄�掑簭鐨勶紝鍗抽《灞傝妭鐐规槸鏈�澶х殑鍊�
-					List<CodeClassifyVO> classifyVOS = classifyFullInfoBO.getParentClassifyVOs().stream().sorted(((o1, o2) -> o2.getDataLevel().compareTo(o1.getDataLevel()))).collect(Collectors.toList());
-					int level = VciBaseUtil.getInt(attrVO.getClassifyInvokeLevel());
-					if (classifyVOS.size() >= level && level > 0) {
-						classifyVO = classifyVOS.get(level - 1);
-					}
-				} else {
-					//褰撳墠鐨勫垎绫�
-					classifyVO = classifyFullInfoBO.getCurrentClassifyVO();
-				}
-				if (classifyVO == null) {
-					//璇存槑灞傜骇鏈夎
-					orderDTO.getData().put(attrId, "鍒嗙被鏍戜笂娌℃湁灞傜骇[" + attrVO.getClassifyInvokeLevel() + "]");
-					// classifyVO = classifyFullInfoBO.getCurrentClassifyVO();
-				} else {
-					Map<String, String> classifyDataMap = VciBaseUtil.objectToMapString(classifyVO);
-					String value = classifyDataMap.getOrDefault(attrVO.getClassifyInvokeAttr(), "");
-					orderDTO.getData().put(attrId, value);
-				}
-			});
-		}
-	}
-
-
-	/**
-	 * 鍒ゆ柇缂栫爜鐨勭爜娈垫槸鍚﹁緭鍏ユ垨鑰呴�夋嫨浜嗙爜鍊�
-	 *
-	 * @param ruleVO   瑙勫垯鐨勬樉绀哄璞�
-	 * @param orderDTO 缂栫爜鐢宠鐨勫唴瀹�
-	 */
-	@Override
-	public void checkSecValueOnOrder(CodeRuleVO ruleVO, CodeOrderDTO orderDTO) {
-		List<String> unSerialSecOidList = ruleVO.getSecVOList().stream().filter(
-			s -> !(CodeSecTypeEnum.CODE_SERIAL_SEC.getValue().equalsIgnoreCase(s.getSecType())
-				|| CodeSecTypeEnum.CODE_ATTR_SEC.getValue().equalsIgnoreCase(s.getSecType())
-				|| CodeSecTypeEnum.CODE_DATE_SEC.getValue().equalsIgnoreCase(s.getSecType())
-				|| CodeSecTypeEnum.CODE_LEVEL_SEC.getValue().equalsIgnoreCase(s.getSecType())
-				|| VciBaseUtil.getBoolean(s.getNullableFlag()))
-		).map(CodeBasicSecVO::getOid).collect(Collectors.toList());
-		if (!CollectionUtils.isEmpty(unSerialSecOidList)) {
-			if (CollectionUtils.isEmpty(orderDTO.getSecDTOList())) {
-				throw new VciBaseException("闈炴祦姘寸爜娈�(鎴栬�呭繀杈撶爜娈碉級蹇呴』瑕佽緭鍏�(鎴栭�夋嫨)鐮佸��");
-			}
-			if (orderDTO.getSecDTOList().stream().anyMatch(s -> !unSerialSecOidList.contains(s.getSecOid())
-				&& StringUtils.isBlank(s.getSecValue()))) {
-				throw new VciBaseException("闈炴祦姘寸爜娈�(鎴栬�呭繀杈撶爜娈碉級蹇呴』瑕佽緭鍏�(鎴栭�夋嫨)鐮佸��");
-			}
-		}
-	}
-
-	/**
-	 * 鏍¢獙灞炴�ф槸鍚︿负蹇呰緭
-	 *
-	 * @param templateVO 妯℃澘鐨勬樉绀哄璞★紝闇�瑕佸寘鍚ā鏉垮睘鎬�
-	 * @param orderDTO   缂栫爜鐢宠鐨勪俊鎭�
-	 */
-	private void checkRequiredAttrOnOrder(CodeClstemplateVO templateVO, CodeOrderDTO orderDTO) {
-		Map<String, CodeClassifyTemplateAttrVO> requiredAttrMap = templateVO.getAttributes().stream().filter(
-				s -> VciBaseUtil.getBoolean(s.getRequireFlag()) && StringUtils.isBlank(s.getComponentRule())
-					&& StringUtils.isBlank(s.getClassifyInvokeAttr()))
-			.collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
-		if (!CollectionUtils.isEmpty(requiredAttrMap)) {
-			requiredAttrMap.forEach((attrId, attrVO) -> {
-				//鍙湁浼佷笟缂栫爜锛岀姸鎬侊紝澶囨敞锛屾ā鏉夸富閿紝鍒嗙被涓婚敭杩欏嚑涓槸鍥哄畾鐨勶紝鍏朵綑閮芥槸鑷閰嶇疆鐨�
-				if (StringUtils.isBlank(getValueFromOrderDTO(orderDTO, attrId))) {
-					throw new VciBaseException("灞炴�с�恵0}銆戝繀椤昏杈撳叆(閫夋嫨)鍐呭", new String[]{attrVO.getName()});
-				}
-			});
-		}
-	}
-
-	/**
-	 * 浠庣紪鐮佺敵璇蜂俊鎭璞′笂鑾峰彇鏌愪釜灞炴�х殑鍊�
-	 *
-	 * @param orderDTO 缂栫爜鐢宠瀵硅薄
-	 * @param attrId   灞炴�х殑缂栧彿
-	 * @return 鍊�
-	 */
-	private String getValueFromOrderDTO(CodeOrderDTO orderDTO, String attrId) {
-		attrId = attrId.toLowerCase(Locale.ROOT);
-		String value = null;
-		if (VciQueryWrapperForDO.BASIC_FIELD_MAP.containsKey(attrId)) {
-			value = WebUtil.getStringValueFromObject(WebUtil.getValueFromField(WebUtil.getFieldForObject(attrId, orderDTO.getClass()).getName(), orderDTO));
-		} else {
-			//璇存槑鏄嚜琛岄厤缃殑
-			//鍓嶇蹇呴』瑕佷紶閫掑皬鍐欑殑灞炴��
-			value = orderDTO.getData().getOrDefault(attrId, "");
-		}
-		return value;
-	}
-
-	/**
-	 * 杞崲缁勫悎瑙勫垯鐨勫��
-	 *
-	 * @param templateVO 妯℃澘鐨勬樉绀哄璞★紝闇�瑕佸寘鍚ā鏉垮睘鎬�
-	 * @param orderDTO   缂栫爜鐢宠鐨勪俊鎭�
-	 */
-	private void switchComponentAttrOnOrder(CodeClstemplateVO templateVO, CodeOrderDTO orderDTO) {
-		Map<String, CodeClassifyTemplateAttrVO> compAttrVOMap = templateVO.getAttributes().stream().filter(s -> StringUtils.isNotBlank(s.getComponentRule())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
-		if (!CollectionUtils.isEmpty(compAttrVOMap)) {
-			Map<String, String> dataMap = WebUtil.objectToMapString(orderDTO);
-
-			Map<String, String> dataLowMap = new HashMap<>();
-			if (!CollectionUtils.isEmpty(dataMap)) {
-				dataMap.forEach((key, value) -> {
-					dataLowMap.put(key.toLowerCase(Locale.ROOT), value);
-				});
-			}
-			dataLowMap.putAll(orderDTO.getData());
-			compAttrVOMap.forEach((attrId, attrVO) -> {
+////		return null;
+//	}
+//
+//	/**
+//	 * 澶勭悊鍒嗙被娉ㄥ叆鐨勪俊鎭�
+//	 *
+//	 * @param templateVO         妯℃澘鐨勬樉绀哄璞★紝蹇呴』瑕佸悗妯℃澘鐨勫睘鎬�
+//	 * @param classifyFullInfoBO 鍒嗙被鐨勫叏璺緞
+//	 * @param orderDTO           缂栫爜鐢宠鐨勪俊鎭�
+//	 */
+//	private void switchClassifyLevelOnOrder(CodeClstemplateVO templateVO, CodeClassifyFullInfoBO classifyFullInfoBO, CodeOrderDTO orderDTO) {
+//		Map<String,CodeClstempattrVO> classifyAttrVOMap = templateVO.getAttributes().stream().filter(
+//			s -> StringUtils.isNotBlank(s.getClassifyinvokeattr()) && StringUtils.isNotBlank(s.getClassifyinvokelevel())
+//		).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+//		if (classifyFullInfoBO.getTopClassifyVO() == null) {
+//			//闇�瑕侀噸鏂版煡璇竴涓嬶紝鍥犱负杩欎釜鏄寚瀹氱殑鍒嗙被杩涙潵鐨�
+//
+//		}
+//		if (!CollectionUtils.isEmpty(classifyAttrVOMap)) {
+//			classifyAttrVOMap.forEach((attrId, attrVO) -> {
+//				//鍒嗙被娉ㄥ叆鐨勭紪鍙锋垨鑰呭悕绉帮紝
+//				//灞傜骇鍖呭惈鎸囧畾灞傚拰鏈�灏忓眰
+//				CodeClassifyVO classifyVO = null;
+//				if (!CodeLevelTypeEnum.MIN.getValue().equalsIgnoreCase(attrVO.getClassifyinvokelevel()) && !"min".equalsIgnoreCase(attrVO.getClassifyinvokelevel())) {
+//					//鎸囧畾浜嗗眰绾х殑
+//					//娉ㄦ剰锛屽洜涓烘煡璇笂绾у垎绫诲嚭鏉ョ殑灞傜骇鏄�掑簭鐨勶紝鍗抽《灞傝妭鐐规槸鏈�澶х殑鍊�
+//					List<CodeClassifyVO> classifyVOS = classifyFullInfoBO.getParentClassifyVOs().stream().sorted(((o1, o2) -> o2.getDataLevel().compareTo(o1.getDataLevel()))).collect(Collectors.toList());
+//					int level = VciBaseUtil.getInt(attrVO.getClassifyinvokelevel());
+//					if (classifyVOS.size() >= level && level > 0) {
+//						classifyVO = classifyVOS.get(level - 1);
+//					}
+//				} else {
+//					//褰撳墠鐨勫垎绫�
+//					classifyVO = classifyFullInfoBO.getCurrentClassifyVO();
+//				}
+//				if (classifyVO == null) {
+//					//璇存槑灞傜骇鏈夎
+//					orderDTO.getData().put(attrId, "鍒嗙被鏍戜笂娌℃湁灞傜骇[" + attrVO.getClassifyinvokelevel() + "]");
+//					// classifyVO = classifyFullInfoBO.getCurrentClassifyVO();
+//				} else {
+//					Map<String, String> classifyDataMap = VciBaseUtil.objectToMapString(classifyVO);
+//					String value = classifyDataMap.getOrDefault(attrVO.getClassifyinvokeattr(), "");
+//					orderDTO.getData().put(attrId, value);
+//				}
+//			});
+//		}
+//	}
+//
+//
+//	/**
+//	 * 鍒ゆ柇缂栫爜鐨勭爜娈垫槸鍚﹁緭鍏ユ垨鑰呴�夋嫨浜嗙爜鍊�
+//	 *
+//	 * @param ruleVO   瑙勫垯鐨勬樉绀哄璞�
+//	 * @param orderDTO 缂栫爜鐢宠鐨勫唴瀹�
+//	 */
+//	@Override
+//	public void checkSecValueOnOrder(CodeRuleVO ruleVO, CodeOrderDTO orderDTO) {
+//		List<String> unSerialSecOidList = ruleVO.getSecVOList().stream().filter(
+//			s -> !(CodeSecTypeEnum.CODE_SERIAL_SEC.getValue().equalsIgnoreCase(s.getSecType())
+//				|| CodeSecTypeEnum.CODE_ATTR_SEC.getValue().equalsIgnoreCase(s.getSecType())
+//				|| CodeSecTypeEnum.CODE_DATE_SEC.getValue().equalsIgnoreCase(s.getSecType())
+//				|| CodeSecTypeEnum.CODE_LEVEL_SEC.getValue().equalsIgnoreCase(s.getSecType())
+//				|| VciBaseUtil.getBoolean(s.getNullableFlag()))
+//		).map(CodeBasicSecVO::getOid).collect(Collectors.toList());
+//		if (!CollectionUtils.isEmpty(unSerialSecOidList)) {
+//			if (CollectionUtils.isEmpty(orderDTO.getSecDTOList())) {
+//				throw new VciBaseException("闈炴祦姘寸爜娈�(鎴栬�呭繀杈撶爜娈碉級蹇呴』瑕佽緭鍏�(鎴栭�夋嫨)鐮佸��");
+//			}
+//			if (orderDTO.getSecDTOList().stream().anyMatch(s -> !unSerialSecOidList.contains(s.getSecOid())
+//				&& StringUtils.isBlank(s.getSecValue()))) {
+//				throw new VciBaseException("闈炴祦姘寸爜娈�(鎴栬�呭繀杈撶爜娈碉級蹇呴』瑕佽緭鍏�(鎴栭�夋嫨)鐮佸��");
+//			}
+//		}
+//	}
+//
+//	/**
+//	 * 鏍¢獙灞炴�ф槸鍚︿负蹇呰緭
+//	 *
+//	 * @param templateVO 妯℃澘鐨勬樉绀哄璞★紝闇�瑕佸寘鍚ā鏉垮睘鎬�
+//	 * @param orderDTO   缂栫爜鐢宠鐨勪俊鎭�
+//	 */
+//	private void checkRequiredAttrOnOrder(CodeClstemplateVO templateVO, CodeOrderDTO orderDTO) {
+//		Map<String, CodeClstempattrVO> requiredAttrMap = templateVO.getAttributes().stream().filter(
+//				s -> VciBaseUtil.getBoolean(s.getRequireflag()) && StringUtils.isBlank(s.getComponentrule())
+//					&& StringUtils.isBlank(s.getClassifyinvokeattr()))
+//			.collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+//		if (!CollectionUtils.isEmpty(requiredAttrMap)) {
+//			requiredAttrMap.forEach((attrId, attrVO) -> {
+//				//鍙湁浼佷笟缂栫爜锛岀姸鎬侊紝澶囨敞锛屾ā鏉夸富閿紝鍒嗙被涓婚敭杩欏嚑涓槸鍥哄畾鐨勶紝鍏朵綑閮芥槸鑷閰嶇疆鐨�
+//				if (StringUtils.isBlank(getValueFromOrderDTO(orderDTO, attrId))) {
+//					throw new VciBaseException("灞炴�с�恵0}銆戝繀椤昏杈撳叆(閫夋嫨)鍐呭", new String[]{attrVO.getName()});
+//				}
+//			});
+//		}
+//	}
+//
+//	/**
+//	 * 浠庣紪鐮佺敵璇蜂俊鎭璞′笂鑾峰彇鏌愪釜灞炴�х殑鍊�
+//	 *
+//	 * @param orderDTO 缂栫爜鐢宠瀵硅薄
+//	 * @param attrId   灞炴�х殑缂栧彿
+//	 * @return 鍊�
+//	 */
+//	private String getValueFromOrderDTO(CodeOrderDTO orderDTO, String attrId) {
+//		attrId = attrId.toLowerCase(Locale.ROOT);
+//		String value = null;
+//		if (VciQueryWrapperForDO.BASIC_FIELD_MAP.containsKey(attrId)) {
+//			value = WebUtil.getStringValueFromObject(WebUtil.getValueFromField(WebUtil.getFieldForObject(attrId, orderDTO.getClass()).getName(), orderDTO));
+//		} else {
+//			//璇存槑鏄嚜琛岄厤缃殑
+//			//鍓嶇蹇呴』瑕佷紶閫掑皬鍐欑殑灞炴��
+//			value = orderDTO.getData().getOrDefault(attrId, "");
+//		}
+//		return value;
+//	}
+//
+//	/**
+//	 * 杞崲缁勫悎瑙勫垯鐨勫��
+//	 *
+//	 * @param templateVO 妯℃澘鐨勬樉绀哄璞★紝闇�瑕佸寘鍚ā鏉垮睘鎬�
+//	 * @param orderDTO   缂栫爜鐢宠鐨勪俊鎭�
+//	 */
+//	private void switchComponentAttrOnOrder(CodeClstemplateVO templateVO, CodeOrderDTO orderDTO) {
+//		Map<String, CodeClstempattrVO> compAttrVOMap = templateVO.getAttributes().stream().filter(s -> StringUtils.isNotBlank(s.getComponentrule())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+//		if (!CollectionUtils.isEmpty(compAttrVOMap)) {
+//			Map<String, String> dataMap = WebUtil.objectToMapString(orderDTO);
+//
+//			Map<String, String> dataLowMap = new HashMap<>();
+//			if (!CollectionUtils.isEmpty(dataMap)) {
+//				dataMap.forEach((key, value) -> {
+//					dataLowMap.put(key.toLowerCase(Locale.ROOT), value);
+//				});
+//			}
+//			dataLowMap.putAll(orderDTO.getData());
+//			compAttrVOMap.forEach((attrId, attrVO) -> {
 //				dataLowMap.put(attrId, formulaService.getValueByFormula(dataLowMap, attrVO.getComponentrule()));
-			});
-			dataLowMap.forEach((key, value) -> {
-				setValueToOrderDTO(orderDTO, key, value);
-			});
-		}
-	}
-
-
-	/**
-	 * 璁剧疆鏂扮殑鍊煎埌鐢宠瀵硅薄涓�
-	 *
-	 * @param orderDTO 缂栫爜鐢宠瀵硅薄
-	 * @param attrId   灞炴�х殑缂栧彿
-	 * @param value    鍊�
-	 */
-	private void setValueToOrderDTO(CodeOrderDTO orderDTO, String attrId, String value) {
-		attrId = attrId.toLowerCase(Locale.ROOT);
-		if (VciQueryWrapperForDO.BASIC_FIELD_MAP.containsKey(attrId)) {
-			WebUtil.setValueToField(WebUtil.getFieldForObject(attrId, orderDTO.getClass()).getName(), orderDTO, value);
-		} else {
-			orderDTO.getData().put(attrId, value);
-		}
-	}
-
-	/**
-	 * 鏍¢獙姝e垯琛ㄨ揪寮忔槸鍚︽纭�
-	 *
-	 * @param templateVO 妯℃澘鐨勪俊鎭紝蹇呴』鍖呭惈灞炴�х殑鍐呭
-	 * @param orderDTO   缂栫爜鐢宠鐨勭浉鍏崇殑淇℃伅
-	 */
-	private void checkVerifyOnOrder(CodeClstemplateVO templateVO, CodeOrderDTO orderDTO) {
-		Map<String, CodeClassifyTemplateAttrVO> verifyAttrVOMap = templateVO.getAttributes().stream().filter(s -> StringUtils.isNotBlank(s.getVerifyRule())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
-		if (!CollectionUtils.isEmpty(verifyAttrVOMap)) {
-			verifyAttrVOMap.forEach((attrId, attrVO) -> {
-				String value = getValueFromOrderDTO(orderDTO, attrId);
-				if (StringUtils.isNotBlank(value) && !value.matches(attrVO.getVerifyRule())) {
-					//鏍¢獙姝e垯琛ㄨ揪寮�
-					throw new VciBaseException("灞炴�{0}]鐨勫�间笉绗﹀悎鏍¢獙瑙勫垯鐨勮姹�", new String[]{attrVO.getName()});
-				}
-			});
-		}
-	}
-
-	/**
-	 * 鏍¢獙鍏抽敭灞炴��
-	 *
-	 * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭�
-	 * @param templateVO       妯℃澘鐨勫唴瀹癸紝蹇呴』鍖呭惈妯℃澘灞炴��
-	 * @param orderDTO         缂栫爜鐢宠鐨勭浉鍏崇殑淇℃伅
-	 */
-	private void checkKeyAttrOnOrder(CodeClassifyFullInfoBO classifyFullInfo, CodeClstemplateVO templateVO, CodeOrderDTO orderDTO) {
-		//鍏堣幏鍙栧叧閿睘鎬х殑瑙勫垯锛屼篃鍒╃敤缁ф壙鐨勬柟寮�
-		CodeKeyattrrepeatVO keyRuleVO = keyRuleService.getRuleByClassifyFullInfo(classifyFullInfo);
-		//娉ㄦ剰鐨勬槸keyRuleVO鍙兘涓虹┖锛岃〃绀轰笉浣跨敤瑙勫垯鎺у埗
-		//鑾峰彇鎵�鏈夌殑鍏抽敭灞炴��
-		Map<String, CodeClassifyTemplateAttrVO> ketAttrMap = templateVO.getAttributes().stream().filter(s -> VciBaseUtil.getBoolean(s.getKeyAttrFlag())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
-		Map<String, String> conditionMap = new HashMap<>();
-		boolean trimAll = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnoreallspaceflag());
-		//鍏ㄩ儴鍘荤┖鐨勪紭鍏堢骇澶т簬鍘荤┖
-		boolean trim = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnorespaceflag());
-		boolean ignoreCase = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnorecaseflag());
-		boolean ignoreWidth = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnorewidthflag());
-		ketAttrMap.forEach((attrId, attrVO) -> {
-			String value = getValueFromOrderDTO(orderDTO, attrId);
-			if (value == null) {
-				value = "";
-			}
+//			});
+//			dataLowMap.forEach((key, value) -> {
+//				setValueToOrderDTO(orderDTO, key, value);
+//			});
+//		}
+//	}
+//
+//
+//	/**
+//	 * 璁剧疆鏂扮殑鍊煎埌鐢宠瀵硅薄涓�
+//	 *
+//	 * @param orderDTO 缂栫爜鐢宠瀵硅薄
+//	 * @param attrId   灞炴�х殑缂栧彿
+//	 * @param value    鍊�
+//	 */
+//	private void setValueToOrderDTO(CodeOrderDTO orderDTO, String attrId, String value) {
+//		attrId = attrId.toLowerCase(Locale.ROOT);
+//		if (VciQueryWrapperForDO.BASIC_FIELD_MAP.containsKey(attrId)) {
+//			WebUtil.setValueToField(WebUtil.getFieldForObject(attrId, orderDTO.getClass()).getName(), orderDTO, value);
+//		} else {
+//			orderDTO.getData().put(attrId, value);
+//		}
+//	}
+//
+//	/**
+//	 * 鏍¢獙姝e垯琛ㄨ揪寮忔槸鍚︽纭�
+//	 *
+//	 * @param templateVO 妯℃澘鐨勪俊鎭紝蹇呴』鍖呭惈灞炴�х殑鍐呭
+//	 * @param orderDTO   缂栫爜鐢宠鐨勭浉鍏崇殑淇℃伅
+//	 */
+//	private void checkVerifyOnOrder(CodeClstemplateVO templateVO, CodeOrderDTO orderDTO) {
+//		Map<String, CodeClstempattrVO> verifyAttrVOMap = templateVO.getAttributes().stream().filter(s -> StringUtils.isNotBlank(s.getVerifyrule())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+//		if (!CollectionUtils.isEmpty(verifyAttrVOMap)) {
+//			verifyAttrVOMap.forEach((attrId, attrVO) -> {
+//				String value = getValueFromOrderDTO(orderDTO, attrId);
+//				if (StringUtils.isNotBlank(value) && !value.matches(attrVO.getVerifyrule())) {
+//					//鏍¢獙姝e垯琛ㄨ揪寮�
+//					throw new VciBaseException("灞炴�{0}]鐨勫�间笉绗﹀悎鏍¢獙瑙勫垯鐨勮姹�", new String[]{attrVO.getName()});
+//				}
+//			});
+//		}
+//	}
+//
+//	/**
+//	 * 鏍¢獙鍏抽敭灞炴��
+//	 *
+//	 * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭�
+//	 * @param templateVO       妯℃澘鐨勫唴瀹癸紝蹇呴』鍖呭惈妯℃澘灞炴��
+//	 * @param orderDTO         缂栫爜鐢宠鐨勭浉鍏崇殑淇℃伅
+//	 */
+//	private void checkKeyAttrOnOrder(CodeClassifyFullInfoBO classifyFullInfo, CodeClstemplateVO templateVO, CodeOrderDTO orderDTO) {
+//		//鍏堣幏鍙栧叧閿睘鎬х殑瑙勫垯锛屼篃鍒╃敤缁ф壙鐨勬柟寮�
+//		CodeKeyattrrepeatVO keyRuleVO = keyRuleService.getRuleByClassifyFullInfo(classifyFullInfo);
+//		//娉ㄦ剰鐨勬槸keyRuleVO鍙兘涓虹┖锛岃〃绀轰笉浣跨敤瑙勫垯鎺у埗
+//		//鑾峰彇鎵�鏈夌殑鍏抽敭灞炴��
+//		Map<String, CodeClstempattrVO> ketAttrMap = templateVO.getAttributes().stream().filter(s -> VciBaseUtil.getBoolean(s.getKeyattrflag())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+//		Map<String, String> conditionMap = new HashMap<>();
+//		boolean trimAll = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnoreallspaceflag());
+//		//鍏ㄩ儴鍘荤┖鐨勪紭鍏堢骇澶т簬鍘荤┖
+//		boolean trim = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnorespaceflag());
+//		boolean ignoreCase = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnorecaseflag());
+//		boolean ignoreWidth = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnorewidthflag());
+//		ketAttrMap.forEach((attrId, attrVO) -> {
+//			String value = getValueFromOrderDTO(orderDTO, attrId);
+//			if (value == null) {
+//				value = "";
+//			}
 //			wrapperKeyAttrConditionMap(value, keyRuleVO, attrId, trim, ignoreCase, ignoreWidth, trimAll, conditionMap);
-		});
-
-		//娌℃湁闄愬埗鍒嗙被锛屼絾鏄竴涓ā鏉垮彧鍙兘鍦ㄤ竴涓笟鍔$被鍨嬮噷闈紝鎵�浠ョ洿鎺ユ煡璇㈣繖涓笟鍔$被鍨嬪嵆鍙�
-
+//		});
+//
+//		//娌℃湁闄愬埗鍒嗙被锛屼絾鏄竴涓ā鏉垮彧鍙兘鍦ㄤ竴涓笟鍔$被鍨嬮噷闈紝鎵�浠ョ洿鎺ユ煡璇㈣繖涓笟鍔$被鍨嬪嵆鍙�
+//
 //		if (!CollectionUtils.isEmpty(conditionMap)) {
 //			final String[] sql = {"select count(*) from " + VciBaseUtil.getTableName(classifyFullInfo.getTopClassifyVO().getBtmtypeid()) + " t where 1 = 1 "};
 //			conditionMap.forEach((key, value) -> {
@@ -463,26 +476,27 @@
 //				sql[0] += " and oid != '" + orderDTO.getCopyFromVersion() + "'";
 //			}
 //			sql[0] += " and islastR = '1' and islastV = '1' ";
-//			if (boService.queryCountBySql(sql[0], new HashMap<>()) > 0) {
+////			if (boService.queryCountBySql(sql[0], new HashMap<>()) > 0) {
+//			if (Integer.parseInt(commonsMapper.selectById(sql[0]).get(0)) > 0) {
 //				String ruleInfoMsg = keyRuleVO == null ? "" : "鏌ヨ瑙勫垯锛氬幓闄ょ┖鏍�--{0},蹇界暐澶у皬鍐�--{1},蹇界暐鍏ㄥ崐瑙�--{2},蹇界暐鍏ㄩ儴绌烘牸--{3}";
 //				String[] objs = new String[]{trim ? "鏄�" : "鍚�", ignoreCase ? "鏄�" : "鍚�", ignoreWidth ? "鏄�" : "鍚�", trimAll ? "鏄�" : "鍚�"};
 //				throw new VciBaseException("鏍规嵁鎮ㄥ~鍐欑殑鍏抽敭灞炴�х殑鍐呭锛岀粨鍚堝叧閿睘鎬ф煡璇㈣鍒欙紝鍙戠幇杩欎釜鏁版嵁宸茬粡鍦ㄧ郴缁熶腑瀛樺湪浜嗐�傝淇!銆�" + ruleInfoMsg, objs);
 //			}
 //		}
-	}
-
-	/**
-	 * 灏佽鍏抽敭灞炴�х殑鏌ヨ璇彞
-	 *
-	 * @param value        褰撳墠鐨勫��
-	 * @param keyRuleVO    鍏抽敭灞炴�х殑鎺у埗瑙勫垯锛屽彲浠ヤ负绌�
-	 * @param attrId       灞炴�х殑缂栧彿
-	 * @param trim         鏄惁鍘婚櫎绌烘牸
-	 * @param ignoreCase   鏄惁涓嶅尯鍒嗗ぇ灏忓啓
-	 * @param ignoreWidth  鏄惁蹇界暐鍏ㄥ崐瑙�
-	 * @param trimAll      鏄惁蹇界暐鍏ㄩ儴绌烘牸
-	 * @param conditionMap 鏌ヨ鏉′欢
-	 */
+//	}
+//
+//	/**
+//	 * 灏佽鍏抽敭灞炴�х殑鏌ヨ璇彞
+//	 *
+//	 * @param value        褰撳墠鐨勫��
+//	 * @param keyRuleVO    鍏抽敭灞炴�х殑鎺у埗瑙勫垯锛屽彲浠ヤ负绌�
+//	 * @param attrId       灞炴�х殑缂栧彿
+//	 * @param trim         鏄惁鍘婚櫎绌烘牸
+//	 * @param ignoreCase   鏄惁涓嶅尯鍒嗗ぇ灏忓啓
+//	 * @param ignoreWidth  鏄惁蹇界暐鍏ㄥ崐瑙�
+//	 * @param trimAll      鏄惁蹇界暐鍏ㄩ儴绌烘牸
+//	 * @param conditionMap 鏌ヨ鏉′欢
+//	 */
 //	@Override
 //	public void wrapperKeyAttrConditionMap(String value, CodeKeyattrrepeatVO keyRuleVO, String attrId,
 //										   boolean trim, boolean ignoreCase, boolean ignoreWidth,
@@ -531,132 +545,134 @@
 //			}
 //		}
 //	}
-
-	/**
-	 * 鏍¢獙鏋氫妇鐨勫唴瀹�
-	 *
-	 * @param templateVO 妯℃澘鐨勬樉绀哄璞★紝闇�瑕佸寘鍚睘鎬�
-	 * @param orderDTO   缂栫爜鐢宠鐨勪俊鎭�
-	 */
-	private void checkEnumOnOrder(CodeClstemplateVO templateVO, CodeOrderDTO orderDTO) {
-		//濡傛灉鏋氫妇鍙互淇敼锛屽垯涓嶉渶瑕佹牎楠屾槸鍚︾鍚堟灇涓剧殑閫夐」
-
-		Map<String, CodeClassifyTemplateAttrVO> enumAttrVOMap = templateVO.getAttributes().stream().filter(s -> (StringUtils.isNotBlank(s.getEnumString()) || StringUtils.isNotBlank(s.getEnumId())) && !VciBaseUtil.getBoolean(s.getEnumEditFlag())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
-		if (!CollectionUtils.isEmpty(enumAttrVOMap)) {
-			enumAttrVOMap.forEach((attrId, attrVO) -> {
-				String value = getValueFromOrderDTO(orderDTO, attrId);
-				if (StringUtils.isNotBlank(value)) {
-					//鏈夊�兼墠鑳芥牎楠�
-					List<KeyValue> comboboxKVs = listComboboxItems(attrVO);
-					if (!comboboxKVs.stream().anyMatch(s -> value.equalsIgnoreCase(s.getKey()))) {
-						throw new VciBaseException("灞炴�с�恵0}銆戠殑鍊间笉绗﹀悎鏋氫妇鐨勮姹�", new String[]{attrVO.getName()});
-					}
-				}
-			});
-		}
-	}
-
-	/**
-	 * 杞崲鏃堕棿鐨勬牸寮�
-	 *
-	 * @param templateVO 妯℃澘鐨勬樉绀哄璞★紝闇�瑕佸寘鍚睘鎬�
-	 * @param orderDTO   缂栫爜鐢宠鐨勪俊鎭�
-	 */
-	private void switchDateAttrOnOrder(CodeClstemplateVO templateVO, CodeOrderDTO orderDTO) {
-		Map<String, CodeClassifyTemplateAttrVO> dateAttrVOMap = templateVO.getAttributes().stream().filter(s -> StringUtils.isNotBlank(s.getCodeDateFormat())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
-		if (!CollectionUtils.isEmpty(dateAttrVOMap)) {
-			dateAttrVOMap.forEach((attrId, attrVO) -> {
-				String value = getValueFromOrderDTO(orderDTO, attrId);
-				if (StringUtils.isNotBlank(value)) {
-					DateConverter dateConverter = new DateConverter();
-					dateConverter.setAsText(value);
-					value = VciDateUtil.date2Str(dateConverter.getValue(), VciDateUtil.DateTimeMillFormat);
-					setValueToOrderDTO(orderDTO, attrId, value);
-				}
-			});
-		}
-	}
-
-	/**
-	 * 鎷疯礉鏁版嵁鍒癱bo瀵硅薄涓�
-	 *
-	 * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭�
-	 * @param cbo              涓氬姟鏁版嵁
-	 * @param orderDTO         缂栫爜鐢宠鐨勪俊鎭�
-	 * @param templateVO       妯℃澘鐨勬樉绀哄璞�
-	 * @param edit             鏄惁涓轰慨鏀�
-	 */
-	private void copyValueToCBO(CodeClassifyFullInfoBO classifyFullInfo, CodeWupinEntity cbo,
-								CodeOrderDTO orderDTO, CodeClstemplateVO templateVO,
-								boolean edit) {
-		String fullPath = "";
-		if (!CollectionUtils.isEmpty(classifyFullInfo.getParentClassifyVOs())) {
-			fullPath = classifyFullInfo.getParentClassifyVOs().stream().sorted(((o1, o2) -> o2.getDataLevel().compareTo(o1.getDataLevel())))
-				.map(CodeClassifyVO::getOid).collect(Collectors.joining("##"));
-		} else {
-			fullPath = classifyFullInfo.getCurrentClassifyVO().getOid();
-		}
-
-//		BeanUtils.
-		BeanUtils.copyProperties(orderDTO.getData(),cbo);
-		cbo.setMaterialtype(Short.valueOf("1001"));
-//		orderDTO.getData().forEach((key, value) -> {
-//			if (!edit || (!checkUnAttrUnEdit(key) &&
-//				!VciQueryWrapperForDO.LC_STATUS_FIELD.equalsIgnoreCase(key))) {
-//				try {
-//					cbo.setAttributeValue(key, value);
-//				} catch (Exception e) {
-//					logger.error("璁剧疆灞炴�х殑鍊奸敊璇�", e);
-//				}
-//			}
-//		});
-		try {
-
-			cbo.setCodeclsfid(classifyFullInfo.getCurrentClassifyVO().getOid());
-			cbo.setCodetemplateoid(templateVO.getOid());
-			cbo.setCodeclsfpath(fullPath);
-//			cbo.setMaterialclassify("model_type");
-//			cbo.setMaterialname(orderDTO.getData().get("materialname"));
-//			cbo.setShifoupihaoguanli("true");
-//			cbo.setKucunwl("true");
-//			cbo.setXiaoshouwl("false");
-			if (!edit && StringUtils.isBlank(orderDTO.getLcStatus())) {
-				//鎵剧敓鍛藉懆鏈熺殑璧峰鐘舵�侊紝鎻掍釜鐐癸紝鐪嬬敓鍛藉懆鏈熸槸鍚﹂渶瑕佸垱寤�
-				if (StringUtils.isNotBlank(cbo.getLctid())) {
-//					OsLifeCycleVO lifeCycleVO = lifeCycleService.getLifeCycleById(cbo.getLctid());
-//					if (lifeCycleVO != null) {
-//						cbo.setLcStatus("Editing");
-////						cbo.setLcStatus(lifeCycleVO.getStartStatus());
-//					} else {
-						cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
+//
+//	/**
+//	 * 鏍¢獙鏋氫妇鐨勫唴瀹�
+//	 *
+//	 * @param templateVO 妯℃澘鐨勬樉绀哄璞★紝闇�瑕佸寘鍚睘鎬�
+//	 * @param orderDTO   缂栫爜鐢宠鐨勪俊鎭�
+//	 */
+//	private void checkEnumOnOrder(CodeClstemplateVO templateVO, CodeOrderDTO orderDTO) {
+//		//濡傛灉鏋氫妇鍙互淇敼锛屽垯涓嶉渶瑕佹牎楠屾槸鍚︾鍚堟灇涓剧殑閫夐」
+//
+//		Map<String, CodeClstempattrVO> enumAttrVOMap = templateVO.getAttributes().stream().filter(s -> (StringUtils.isNotBlank(s.getEnumstring()) || StringUtils.isNotBlank(s.getEnumid())) && !VciBaseUtil.getBoolean(s.getEnumeditflag())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+//		if (!CollectionUtils.isEmpty(enumAttrVOMap)) {
+//			enumAttrVOMap.forEach((attrId, attrVO) -> {
+//				String value = getValueFromOrderDTO(orderDTO, attrId);
+//				if (StringUtils.isNotBlank(value)) {
+//					CodeClassifyTemplateAttrVO codeClassifyTemplateAttrVO = new CodeClassifyTemplateAttrVO();
+//					BeanUtils.copyProperties(attrVO,codeClassifyTemplateAttrVO);
+//					//鏈夊�兼墠鑳芥牎楠�
+//					List<KeyValue> comboboxKVs = listComboboxItems(codeClassifyTemplateAttrVO);
+//					if (!comboboxKVs.stream().anyMatch(s -> value.equalsIgnoreCase(s.getKey()))) {
+//						throw new VciBaseException("灞炴�с�恵0}銆戠殑鍊间笉绗﹀悎鏋氫妇鐨勮姹�", new String[]{attrVO.getName()});
 //					}
-				} else {
-					cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
-				}
-
-			}
-
-			int secret = VciBaseUtil.getInt(cbo.getSecretGrade().toString());
-			//鎻掍釜鐐癸紝鍚庣画鐪嬪瘑绾ф湇鍔℃槸鍚﹀彲鐢�
-//			if (secret == 0 || !secretService.checkDataSecret(secret)) {
-			if (secret == 0 ) {
-				Integer userSecret = VciBaseUtil.getCurrentUserSecret();
-//				cbo.setAttributeValue(SECRET_FIELD, String.valueOf((userSecret == null || userSecret == 0) ? UserSecretEnum.NONE.getValue() : userSecret));
-				cbo.setSecretGrade(userSecret == null || userSecret == 0 ? UserSecretEnum.NONE.getValue() : userSecret);
-			}
-		} catch (Throwable e) {
-			logger.error("璁剧疆榛樿鐨勫睘鎬х殑鍊奸敊璇�", e);
-		}
-	}
-
-
-	/**
-	 * 鍒濆鍖栦笟鍔$被鍨�
-	 * --鍒涘缓浜洪粯璁や负褰撳墠鐢ㄦ埛锛屽鏋滈渶瑕佷慨鏀癸紝鍙互鍦ㄨ幏鍙栧悗鑷澶勭悊
-	 * @param btmName 涓氬姟绫诲瀷鐨勫悕绉帮紝浼氳嚜鍔ㄥ彉鎴愬皬鍐�
-	 * @return CodeWupinEntity
-	 * @throws VciBaseException 鍒濆鍖栧嚭閿欑殑鏄細鎶涘嚭寮傚父
-	 */
+//				}
+//			});
+//		}
+//	}
+//
+//	/**
+//	 * 杞崲鏃堕棿鐨勬牸寮�
+//	 *
+//	 * @param templateVO 妯℃澘鐨勬樉绀哄璞★紝闇�瑕佸寘鍚睘鎬�
+//	 * @param orderDTO   缂栫爜鐢宠鐨勪俊鎭�
+//	 */
+//	private void switchDateAttrOnOrder(CodeClstemplateVO templateVO, CodeOrderDTO orderDTO) {
+//		Map<String, CodeClstempattrVO> dateAttrVOMap = templateVO.getAttributes().stream().filter(s -> StringUtils.isNotBlank(s.getCodedateformat())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+//		if (!CollectionUtils.isEmpty(dateAttrVOMap)) {
+//			dateAttrVOMap.forEach((attrId, attrVO) -> {
+//				String value = getValueFromOrderDTO(orderDTO, attrId);
+//				if (StringUtils.isNotBlank(value)) {
+//					DateConverter dateConverter = new DateConverter();
+//					dateConverter.setAsText(value);
+//					value = VciDateUtil.date2Str(dateConverter.getValue(), VciDateUtil.DateTimeMillFormat);
+//					setValueToOrderDTO(orderDTO, attrId, value);
+//				}
+//			});
+//		}
+//	}
+//
+//	/**
+//	 * 鎷疯礉鏁版嵁鍒癱bo瀵硅薄涓�
+//	 *
+//	 * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭�
+//	 * @param cbo              涓氬姟鏁版嵁
+//	 * @param orderDTO         缂栫爜鐢宠鐨勪俊鎭�
+//	 * @param templateVO       妯℃澘鐨勬樉绀哄璞�
+//	 * @param edit             鏄惁涓轰慨鏀�
+//	 */
+//	private void copyValueToCBO(CodeClassifyFullInfoBO classifyFullInfo, CodeWupinEntity cbo,
+//								CodeOrderDTO orderDTO, CodeClstemplateVO templateVO,
+//								boolean edit) {
+//		String fullPath = "";
+//		if (!CollectionUtils.isEmpty(classifyFullInfo.getParentClassifyVOs())) {
+//			fullPath = classifyFullInfo.getParentClassifyVOs().stream().sorted(((o1, o2) -> o2.getDataLevel().compareTo(o1.getDataLevel())))
+//				.map(CodeClassifyVO::getOid).collect(Collectors.joining("##"));
+//		} else {
+//			fullPath = classifyFullInfo.getCurrentClassifyVO().getOid();
+//		}
+//
+////		BeanUtils.
+//		BeanUtils.copyProperties(orderDTO.getData(),cbo);
+//		cbo.setMaterialtype(Short.valueOf("1001"));
+////		orderDTO.getData().forEach((key, value) -> {
+////			if (!edit || (!checkUnAttrUnEdit(key) &&
+////				!VciQueryWrapperForDO.LC_STATUS_FIELD.equalsIgnoreCase(key))) {
+////				try {
+////					cbo.setAttributeValue(key, value);
+////				} catch (Exception e) {
+////					logger.error("璁剧疆灞炴�х殑鍊奸敊璇�", e);
+////				}
+////			}
+////		});
+//		try {
+//
+//			cbo.setCodeclsfid(classifyFullInfo.getCurrentClassifyVO().getOid());
+//			cbo.setCodetemplateoid(templateVO.getOid());
+//			cbo.setCodeclsfpath(fullPath);
+////			cbo.setMaterialclassify("model_type");
+////			cbo.setMaterialname(orderDTO.getData().get("materialname"));
+////			cbo.setShifoupihaoguanli("true");
+////			cbo.setKucunwl("true");
+////			cbo.setXiaoshouwl("false");
+//			if (!edit && StringUtils.isBlank(orderDTO.getLcStatus())) {
+//				//鎵剧敓鍛藉懆鏈熺殑璧峰鐘舵�侊紝鎻掍釜鐐癸紝鐪嬬敓鍛藉懆鏈熸槸鍚﹂渶瑕佸垱寤�
+//				if (StringUtils.isNotBlank(cbo.getLctid())) {
+////					OsLifeCycleVO lifeCycleVO = lifeCycleService.getLifeCycleById(cbo.getLctid());
+////					if (lifeCycleVO != null) {
+////						cbo.setLcStatus("Editing");
+//////						cbo.setLcStatus(lifeCycleVO.getStartStatus());
+////					} else {
+//						cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
+////					}
+//				} else {
+//					cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
+//				}
+//
+//			}
+//
+//			int secret = VciBaseUtil.getInt(cbo.getSecretGrade().toString());
+//			//鎻掍釜鐐癸紝鍚庣画鐪嬪瘑绾ф湇鍔℃槸鍚﹀彲鐢�
+////			if (secret == 0 || !secretService.checkDataSecret(secret)) {
+//			if (secret == 0 ) {
+//				Integer userSecret = VciBaseUtil.getCurrentUserSecret();
+////				cbo.setAttributeValue(SECRET_FIELD, String.valueOf((userSecret == null || userSecret == 0) ? UserSecretEnum.NONE.getValue() : userSecret));
+//				cbo.setSecretGrade(userSecret == null || userSecret == 0 ? UserSecretEnum.NONE.getValue() : userSecret);
+//			}
+//		} catch (Throwable e) {
+//			logger.error("璁剧疆榛樿鐨勫睘鎬х殑鍊奸敊璇�", e);
+//		}
+//	}
+//
+//
+//	/**
+//	 * 鍒濆鍖栦笟鍔$被鍨�
+//	 * --鍒涘缓浜洪粯璁や负褰撳墠鐢ㄦ埛锛屽鏋滈渶瑕佷慨鏀癸紝鍙互鍦ㄨ幏鍙栧悗鑷澶勭悊
+//	 * @param btmName 涓氬姟绫诲瀷鐨勫悕绉帮紝浼氳嚜鍔ㄥ彉鎴愬皬鍐�
+//	 * @return CodeWupinEntity
+//	 * @throws VciBaseException 鍒濆鍖栧嚭閿欑殑鏄細鎶涘嚭寮傚父
+//	 */
 //	@Override
 //	public CodeWupinEntity createCBOByBtmName(String btmName)
 //		throws VciBaseException {
@@ -728,49 +744,1087 @@
 //
 ////		return cbo;
 //	}
-
-	/**
-	 * 鏄惁涓轰慨鏀瑰拷鐣ョ殑灞炴��
-	 * @param attrName 灞炴�х殑鍚嶅瓧
-	 * @return true 琛ㄧず搴旇蹇界暐
-	 */
-	boolean checkUnAttrUnEdit(String attrName){
-		return  (VciQueryWrapperForDO.OID_FIELD.equalsIgnoreCase(attrName)
-			||"ts".equalsIgnoreCase(attrName)
-			|| "lastmodifier".equalsIgnoreCase(attrName)
-			|| "lastmodifytime".equalsIgnoreCase(attrName)
-			|| "createtime".equalsIgnoreCase(attrName)
-			|| "checkintime".equalsIgnoreCase(attrName)
-			||"checkouttime".equalsIgnoreCase(attrName));
-	}
-
-	/**
-	 * 淇濆瓨鍙緭鍙�夌殑淇℃伅
-	 *
-	 * @param templateVO 妯℃澘鐨勫璞�
-	 * @param cboList    鏁版嵁鐨勫唴瀹�
-	 */
+//
+//	/**
+//	 * 鏄惁涓轰慨鏀瑰拷鐣ョ殑灞炴��
+//	 * @param attrName 灞炴�х殑鍚嶅瓧
+//	 * @return true 琛ㄧず搴旇蹇界暐
+//	 */
+//	boolean checkUnAttrUnEdit(String attrName){
+//		return  (VciQueryWrapperForDO.OID_FIELD.equalsIgnoreCase(attrName)
+//			||"ts".equalsIgnoreCase(attrName)
+//			|| "lastmodifier".equalsIgnoreCase(attrName)
+//			|| "lastmodifytime".equalsIgnoreCase(attrName)
+//			|| "createtime".equalsIgnoreCase(attrName)
+//			|| "checkintime".equalsIgnoreCase(attrName)
+//			||"checkouttime".equalsIgnoreCase(attrName));
+//	}
+//
+//	/**
+//	 * 淇濆瓨鍙緭鍙�夌殑淇℃伅
+//	 *
+//	 * @param templateVO 妯℃澘鐨勫璞�
+//	 * @param cboList    鏁版嵁鐨勫唴瀹�
+//	 */
 //	@Override
-//	public void batchSaveSelectChar(CodeClstemplateVO templateVO, List<ClientBusinessObject> cboList) {
+//	public void batchSaveSelectChar(CodeClstemplateVO templateVO, /*List<ClientBusinessObject> cboList*/
+//									List<String> cboList) {
 //		if (templateVO != null && !CollectionUtils.isEmpty(cboList)) {
 //			//鏄紓姝ョ殑锛屾墍浠ョ洿鎺ュ惊鐜�
-//			List<CodeClassifyTemplateAttrVO> selectAttrVOs = templateVO.getAttributes().stream().filter(s -> StringUtils.isNotBlank(s.getLibraryidentification())).collect(Collectors.toList());
+//			List<CodeClstempattrVO> selectAttrVOs = templateVO.getAttributes().stream().filter(s -> StringUtils.isNotBlank(s.getLibraryidentification())).collect(Collectors.toList());
 //
 //			if (!CollectionUtils.isEmpty(selectAttrVOs)) {
 ////				SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
 //				selectAttrVOs.parallelStream().forEach(attrVO -> {
-//					List<String> valuesList = new CopyOnWriteArrayList<>();
-//					cboList.parallelStream().forEach(cbo -> {
-//						String value = cbo.getAttributeValue(attrVO.getId());
-//						if (StringUtils.isNotBlank(value)) {
-//							valuesList.add(value);
-//						}
-//					});
+//					List<String> valuesList = cboList;
+////					cboList.parallelStream().forEach(cbo -> {
+////						String value = cbo.get.getAttributeValue(attrVO.getId());
+////						if (StringUtils.isNotBlank(value)) {
+////							valuesList.add(value);
+////						}
+////					});
 //					if (!CollectionUtils.isEmpty(valuesList)) {
-//						charService.saveBySameNamespaceAndFlag(templateVO.getBtmTypeId(), attrVO.getLibraryIdentification(), valuesList, sessionInfo);
+//						for (String s : valuesList) {
+//							DictBiz dictBiz = new DictBiz();
+//							dictBiz.setCode(templateVO.getBtmTypeId());
+//							dictBiz.setDictKey(s);
+//							dictBiz.setDictValue(s);
+//							//浠庡師鏉ョ殑charService锛堝彲杈撳彲閫夛級鏇存敼涓鸿皟鐢╫md涓殑鎺ュ彛鏉ュ疄鐜�
+//							iDictBizClient.getCheck(dictBiz);
+//						}
+////						charService.saveBySameNamespaceAndFlag(templateVO.getBtmTypeId(), attrVO.getLibraryIdentification(), valuesList, sessionInfo);
 //					}
 //				});
 //			}
 //		}
 //	}
+//
+//    @Override
+//    public MdmUIInfoVO getFormDefineByTemplateOid(String templateOid, String codeClassifyOid) {
+//		CodeClstemplateVO templateVO = templateService.getObjectHasAttrByOid(templateOid);
+//		MdmUIInfoVO uiInfoVO = new MdmUIInfoVO();
+//		uiInfoVO.setTemplateVO(templateVO);
+//		uiInfoVO.setFormDefineVO(wrapperFormDefineByTemplate(templateVO, codeClassifyOid));
+//		wrapperResemble(templateVO, uiInfoVO);
+//		return uiInfoVO;
+//    }
+//
+//
+//	/**
+//	 * 妯℃澘灞炴�ц浆鎹负琛ㄥ崟瀹氫箟鐨勪俊鎭�
+//	 *
+//	 * @param templateVO      妯℃澘鐨勬樉绀哄璞�
+//	 * @param codeClassifyOid 鍒嗙被鐨勪富閿紝涓虹┖鐨勬椂鍊欙紝鑾峰彇妯℃澘鎵�灞炵殑鍒嗙被涓婚敭.鐢ㄤ簬浜х敓鍒嗙被娉ㄥ叆
+//	 * @return 琛ㄦ牸鐨勪俊鎭�
+//	 */
+//	private UIFormDefineVO wrapperFormDefineByTemplate(CodeClstemplateVO templateVO, String codeClassifyOid) {
+//		UIFormDefineVO formDefineVO = new UIFormDefineVO();
+//		formDefineVO.setOid(templateVO.getOid());
+//		formDefineVO.setBtmType(templateVO.getBtmTypeId());
+//		if (StringUtils.isBlank(codeClassifyOid)) {
+//			codeClassifyOid = templateVO.getCodeClassifyOid();
+//		}
+//		CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyOid);
+//
+//		List<UIFormItemVO> itemVOS = new ArrayList<>();
+//		Map<String, List<CodeClstempattrVO>> attrGroupMap = templateVO.getAttributes().stream().
+//			filter(s -> StringUtils.isNotBlank(s.getAttributegroup())).collect(Collectors.groupingBy(s -> s.getAttributegroup()));
+//
+//		templateVO.getAttributes().forEach(attrVO -> {
+//			UIFormItemVO formItemVO = templateAttr2FormField(attrVO, templateVO.getBtmTypeId());
+//			itemVOS.add(formItemVO);
+//		});
+//		//澶勭悊灞炴�у垎缁�
+//		if (!CollectionUtils.isEmpty(attrGroupMap)) {
+//			//鎸夌収鍒嗙粍鐨勫睘鎬ф帓鍒楋紝鎵惧埌姣忎竴涓垎缁勭殑绗竴涓睘鎬�
+//			for (String key : attrGroupMap.keySet()) {
+//				List<CodeClstempattrVO> value = attrGroupMap.get(key);
+//				//鎵惧埌杩欎釜鍒嗙粍鐨勫睘鎬х殑绗竴涓�
+//				CodeClstempattrVO attrVO = value.stream().sorted(((o1, o2) -> o1.getOrdernum().compareTo(o2.getOrdernum()))).findFirst().get();
+//				//鎴戜滑鎵惧埌杩欎釜灞炴�у湪鏈�缁堢殑itemVOs閲岀殑浣嶇疆
+//				UIFormItemVO lineVO = new UIFormItemVO();
+//				lineVO.setField(attrVO.getId() + "_line");
+//				lineVO.setType("line");
+//				lineVO.setText(key);
+//				//鎵句綅缃�
+//				for (int i = 0; i < itemVOS.size(); i++) {
+//					UIFormItemVO record = itemVOS.get(i);
+//					if (record.getField().equalsIgnoreCase(attrVO.getId())) {
+//						itemVOS.add(i, lineVO);
+//						break;
+//					}
+//				}
+//			}
+//		}
+//
+//		CodeOrderDTO orderDTO = new CodeOrderDTO();
+//		switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO);
+//		if (!CollectionUtils.isEmpty(orderDTO.getData())) {
+//			orderDTO.getData().forEach((key, value) -> {
+//				for (int i = 0; i < itemVOS.size(); i++) {
+//					UIFormItemVO itemVO = itemVOS.get(i);
+//					if (itemVO.getField().equalsIgnoreCase(key)) {
+//						itemVO.setDefaultValue(value);
+//						break;
+//					}
+//				}
+//			});
+//		}
+//		formDefineVO.setItems(itemVOS);
+//		//鏌ヨ鏄惁鏈夊垎绫绘敞鍏ョ殑
+//		return formDefineVO;
+//	}
+//	/**
+//	 * 灞炴�х被鍨嬩笌js涓殑瀛楁绫诲瀷鐨勬槧灏�
+//	 */
+//	private static Map<String, String> vciFieldTypeMap = new HashMap<String, String>() {{
+//		put(VciFieldTypeEnum.VTString.name(), "text");
+//		put(VciFieldTypeEnum.VTInteger.name(), "text");
+//		put(VciFieldTypeEnum.VTLong.name(), "text");
+//		put(VciFieldTypeEnum.VTDouble.name(), "text");
+//		put(VciFieldTypeEnum.VTClob.name(), "text");
+//		put(VciFieldTypeEnum.VTBoolean.name(), "truefalse");
+//		put(VciFieldTypeEnum.VTDateTime.name(), "datetime");
+//		put(VciFieldTypeEnum.VTDate.name(), "datetime");
+//		put(VciFieldTypeEnum.VTTime.name(), "datetime");
+//		put(VciFieldTypeEnum.VTFilePath.name(), "file");
+//	}};
+//
+//	/**
+//	 * 妯℃澘灞炴�ц浆鎹负琛ㄥ崟鐨勫瓧娈�
+//	 *
+//	 * @param attrVO  妯℃澘灞炴��
+//	 * @param btmType 涓氬姟绫诲瀷
+//	 * @return 琛ㄥ崟鐨勫瓧娈�
+//	 */
+//	@Override
+//	public UIFormItemVO templateAttr2FormField(CodeClstempattrVO attrVO, String btmType) {
+//
+//		UIFormItemVO itemVO = new UIFormItemVO();
+//		if (SECRET_FILED.equalsIgnoreCase(attrVO.getId())) {
+////			attrVO.setEnumid(OsEnumServiceImpl.MY_DATA_SECRET);
+//			attrVO.setEnumid(MY_DATA_SECRET);
+//		}
+//		itemVO.setField(attrVO.getId());
+//		itemVO.setText(attrVO.getName());
+//		itemVO.setType(vciFieldTypeMap.getOrDefault(attrVO.getAttributedatatype(), "text"));
+//		if (VciBaseUtil.getBoolean(attrVO.getTextareaflag())) {
+//			itemVO.setType("textarea");
+//		}
+//		if (VciFieldTypeEnum.VTLong.name().equalsIgnoreCase(attrVO.getAttributedatatype())
+//			|| VciFieldTypeEnum.VTInteger.name().equalsIgnoreCase(attrVO.getAttributedatatype())
+//			|| VciFieldTypeEnum.VTDouble.name().equalsIgnoreCase(attrVO.getAttributedatatype())) {
+//			itemVO.setVerify("number");
+//		}
+//		itemVO.setReadOnly(VciBaseUtil.getBoolean(attrVO.getReadonlyflag()));
+//		itemVO.setKeyAttr(VciBaseUtil.getBoolean(attrVO.getKeyattrflag()));
+//		itemVO.setRequired(VciBaseUtil.getBoolean(attrVO.getRequireflag()));
+//		itemVO.setDefaultValue(attrVO.getDefaultvalue());
+//		itemVO.setDateFormate(attrVO.getCodedateformat());
+//		itemVO.setHidden(!VciBaseUtil.getBoolean(attrVO.getFormdisplayflag()));
+//		itemVO.setVerify(attrVO.getVerifyrule());
+//		itemVO.setPrefix(attrVO.getPrefixvalue());
+//		itemVO.setSuffix(attrVO.getSuffixvalue());
+//		itemVO.setTooltips(attrVO.getExplain());
+//		itemVO.setSelectLibFlag(attrVO.getLibraryidentification());
+//		//鐪嬬湅鏄惁鏈夋灇涓�
+//		if ((StringUtils.isNotBlank(attrVO.getEnumstring())
+//			&& !"[]".equalsIgnoreCase(attrVO.getEnumstring())) ||
+//			StringUtils.isNotBlank(attrVO.getEnumid())) {
+//			itemVO.setType("combox");
+//			itemVO.setComboxKey(attrVO.getEnumid());
+//			if (StringUtils.isNotBlank(attrVO.getEnumstring())) {
+//				//鎸囧畾鐨勪笅鎷夋鍐呭
+//				itemVO.setData(JSONObject.parseArray(attrVO.getEnumstring(), KeyValue.class));
+//				if (StringUtils.isBlank(attrVO.getEnumid())) {
+//					itemVO.setComboxKey(itemVO.getField() + "_data");
+//				}
+//			}
+//		}
+//		//鐪嬫槸鍚︽湁鍙傜収
+//		if (StringUtils.isNotBlank(attrVO.getReferbtmid()) || StringUtils.isNotBlank(attrVO.getReferconfig())) {
+//			itemVO.setType("refer");
+//			itemVO.setShowField(itemVO.getField() + "name");
+//			if (StringUtils.isNotBlank(attrVO.getReferconfig())) {
+//				//閰嶇疆鐨勫唴瀹�
+//				itemVO.setReferConfig(JSONObject.parseObject(attrVO.getReferconfig(), UIFormReferVO.class));
+//			} else {
+//				UIFormReferVO formReferVO = new UIFormReferVO();
+//				formReferVO.setType("default");
+//				formReferVO.setReferType(attrVO.getReferbtmid());
+//				itemVO.setReferConfig(formReferVO);
+//			}
+//		}
+//
+//		//濡傛灉鏄粍鍚堣鍒欙紝鍒嗙被娉ㄥ叆鐨勶紝鏄剧ず涓哄彧璇�
+//		if (StringUtils.isNotBlank(attrVO.getComponentrule())) {
+//			itemVO.setReadOnly(true);
+//			itemVO.setTooltips("鏈睘鎬т负缁勫悎瑙勫垯");
+//			itemVO.setRequired(false);
+//		}
+//		if (StringUtils.isNotBlank(attrVO.getClassifyinvokeattr())) {
+//			itemVO.setReadOnly(!VciBaseUtil.getBoolean(attrVO.getClassifyinvokeeditflag()));
+//			itemVO.setTooltips("鏈睘鎬ф槸鍒嗙被娉ㄥ叆");
+//			itemVO.setRequired(false);
+//		}
+//
+//		if (VciQueryWrapperForDO.LC_STATUS_FIELD.equalsIgnoreCase(itemVO.getField())) {
+//			//鏄敓鍛藉懆鏈熺姸鎬�
+//			itemVO.setType("combox");
+//			itemVO.setComboxKey(btmType + LC_STATUS_SUBFIX);
+//		}
+//		return itemVO;
+//	}
+//
+//
+//	/**
+//	 * 灏佽鐩镐技椤规煡璇㈢殑鍒楄〃
+//	 *
+//	 * @param templateVO 妯℃澘鐨勬樉绀哄璞�
+//	 * @param uiInfoVO   椤甸潰鐨勪俊鎭�
+//	 */
+//	private void wrapperResemble(CodeClstemplateVO templateVO, MdmUIInfoVO uiInfoVO) {
+//		List<CodeClstempattrVO> resembleAttrList = templateVO.getAttributes().stream().filter(s -> VciBaseUtil.getBoolean(s.getSamerepeatattrflag())
+//			|| VciQueryWrapperForDO.ID_FIELD.equalsIgnoreCase(s.getId())).collect(Collectors.toList());
+//		if (!CollectionUtils.isEmpty(resembleAttrList) && resembleAttrList.size() > 1) {
+//			UITableDefineVO resembleTable = new UITableDefineVO();
+//			resembleTable.setOid(templateVO.getOid());
+//			resembleTable.setBtmType(templateVO.getBtmTypeId());
+//			resembleTable.setDisplayQueryArea(false);
+//			resembleTable.setPageVO(new UITablePageVO());
+//			//澶勭悊鎵�鏈夌殑鍒楋紝杩欎釜妯℃澘娌℃湁鍚堝苟鐨勮〃澶寸殑鎯呭喌
+//			List<UITableFieldVO> fieldVOList = new ArrayList<>();
+//			resembleAttrList.forEach(attrVO -> {
+//				UITableFieldVO tableFieldVO = templateAttr2TableField(attrVO,false);
+//				tableFieldVO.setHidden(false);
+//				fieldVOList.add(tableFieldVO);
+//			});
+//			List<List<UITableFieldVO>> cols = new ArrayList<>();
+//			cols.add(fieldVOList);
+//			resembleTable.setCols(cols);
+//			uiInfoVO.setResembleTableVO(resembleTable);
+//		}
+//	}
+//
+//
+//	/**
+//	 * 妯℃澘灞炴�ц浆鎹负琛ㄦ牸鏄剧ず鐨勯厤缃�
+//	 *
+//	 * @param attrVO 妯℃澘灞炴��
+//	 * @param forEdit 鏄惁鏄紪杈戞墍闇�
+//	 * @return 琛ㄦ牸鐨勫瓧娈�
+//	 */
+//	@Override
+//	public UITableFieldVO templateAttr2TableField(CodeClstempattrVO attrVO,boolean forEdit) {
+//		UITableFieldVO fieldVO = new UITableFieldVO();
+//		if (SECRET_FILED.equalsIgnoreCase(attrVO.getId())) {
+//			attrVO.setEnumid(MY_DATA_SECRET);
+//		}
+//		fieldVO.setField(attrVO.getId());
+//		fieldVO.setTitle(attrVO.getName());
+//		fieldVO.setFieldType(vciFieldTypeMap.getOrDefault(attrVO.getAttributedatatype(), "text"));
+//		fieldVO.setSort(true);
+//		fieldVO.setSortField(fieldVO.getField());
+//		fieldVO.setQueryField(fieldVO.getField());
+//		if (forEdit){
+//			fieldVO.setHidden(!VciBaseUtil.getBoolean(attrVO.getFormdisplayflag()));
+//		}else {
+//			fieldVO.setHidden(!VciBaseUtil.getBoolean(attrVO.getTabledisplayflag()));
+//		}
+//		if (attrVO.getAttrtablewidth() != null && attrVO.getAttrtablewidth() > 0) {
+//			fieldVO.setMinWidth(Integer.valueOf(attrVO.getAttrtablewidth()));
+//			fieldVO.setWidth(Integer.valueOf(attrVO.getAttrtablewidth()));
+//		}
+//		//鐪嬬湅鏄惁鏈夋灇涓�
+//		if ((StringUtils.isNotBlank(attrVO.getEnumstring())
+//			&& !"[]".equalsIgnoreCase(attrVO.getEnumstring())) ||
+//			StringUtils.isNotBlank(attrVO.getEnumid())) {
+//			fieldVO.setFieldType("combox");
+//			fieldVO.setField(fieldVO.getField() + "Text");
+//			fieldVO.setComboxKey(attrVO.getEnumid());
+//			if (StringUtils.isNotBlank(attrVO.getEnumstring())) {
+//				//鎸囧畾鐨勪笅鎷夋鍐呭
+//				fieldVO.setData(JSONObject.parseArray(attrVO.getEnumstring(), KeyValue.class));
+//				if (StringUtils.isBlank(attrVO.getEnumid())) {
+//					fieldVO.setComboxKey(fieldVO.getField() + "_data");
+//				}
+//			}else {
+//				List<KeyValue> osEnumItemVOList= enumService.getEnum(attrVO.getEnumid());
+//				fieldVO.setData(osEnumItemVOList);
+//			}
+//		}
+//		//鐪嬫槸鍚︽湁鍙傜収
+//		if (StringUtils.isNotBlank(attrVO.getReferbtmid()) || StringUtils.isNotBlank(attrVO.getReferconfig())) {
+//			fieldVO.setFieldType("refer");
+//			fieldVO.setQueryField(fieldVO.getField());
+//			fieldVO.setField(fieldVO.getField() + "name");
+//			fieldVO.setShowField(fieldVO.getField());
+//			if (StringUtils.isNotBlank(attrVO.getReferconfig())) {
+//				//閰嶇疆鐨勫唴瀹�
+//				fieldVO.setReferConfig(JSONObject.parseObject(attrVO.getReferconfig(), UIFormReferVO.class));
+//			} else {
+//				UIFormReferVO formReferVO = new UIFormReferVO();
+//				formReferVO.setType("default");
+//				formReferVO.setReferType(attrVO.getReferbtmid());
+//				fieldVO.setReferConfig(formReferVO);
+//			}
+//		}
+//		if (VciQueryWrapperForDO.LC_STATUS_FIELD.equalsIgnoreCase(fieldVO.getSortField())) {
+//			fieldVO.setField("lcstatus_text");
+//		}
+//		Map<String, String> eventJsMap = new HashMap<>();
+//		//瓒呴摼鎺ヤ笌妯℃澘鏄簰鏂�
+//		if (StringUtils.isNotBlank(attrVO.getTablehref())) {
+//			String event = fieldVO.getSortField() + "_href";
+//			eventJsMap.put(event, attrVO.getTablehref());
+//			fieldVO.setTemplet("function(d){ return '<a class=\"layui-btn layui-btn-intable \" lay-event=\"" + event + "\">d." + fieldVO.getField() + "</a>';}");
+//		}
+//		if (StringUtils.isNotBlank(attrVO.getTabledisplayjs())) {
+//			//鐩存帴鍐檉unction(d){ return xxxxx;}
+//			fieldVO.setTemplet(attrVO.getTabledisplayjs());
+//		}
+//		if (StringUtils.isBlank(fieldVO.getTemplet()) && VciFieldTypeEnum.VTBoolean.name().equalsIgnoreCase(attrVO.getAttributedatatype())) {
+//			fieldVO.setTemplet("function(d){return $webUtil.formateBoolean(d." + fieldVO.getField() + ");}");
+//		}
+//		fieldVO.setOptionJsMap(eventJsMap);
+//		fieldVO.setStyle(attrVO.getTabledisplaystyle());
+//		//鍒楄〃閲屼笉鍏佽鐩存帴缂栬緫
+//		fieldVO.setDateFormate(attrVO.getCodedateformat());
+//		return fieldVO;
+//	}
+//
+//
+//	/**
+//	 * 鐩镐技椤规煡璇�
+//	 *
+//	 * @param orderDTO 缂栫爜鐨勭浉鍏充俊鎭�
+//	 * @return 鏁版嵁鍒楄〃
+//	 */
+//	@Override
+//	public DataGrid<Map<String, String>> resembleQuery(CodeOrderDTO orderDTO) {
+//		VciBaseUtil.alertNotNull(orderDTO, "鐢宠鐨勪俊鎭�", orderDTO.getCodeClassifyOid(), "鍒嗙被涓婚敭", orderDTO.getTemplateOid(), "妯℃澘涓婚敭");
+//		CodeClassifyFullInfoBO fullInfoBO = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
+//		CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid());
+//		switchClassifyLevelOnOrder(templateVO, fullInfoBO, orderDTO);
+//		switchDateAttrOnOrder(templateVO, orderDTO);
+//		switchComponentAttrOnOrder(templateVO, orderDTO);
+//		//闇�瑕佽幏鍙栨槸鍚︽湁鐩镐技鏌ヨ灞炴��
+//		Map<String, CodeClassifyTemplateAttrVO> attrVOs = templateVO.getAttributes().stream().filter(s -> VciBaseUtil.getBoolean(s.getSamerepeatattrflag())).collect(Collectors.toMap(s -> s.getId(), t -> t));
+//		if (CollectionUtils.isEmpty(attrVOs)) {
+//			//閮芥病鏈夊睘鎬э紝鑲畾涓嶈兘鏌ヨ浜�
+//			return new DataGrid<>();
+//		}
+//		Map<String, String> conditionMap = new HashMap<>();
+//		//鎴戜滑棣栧厛鑾峰彇鏈夋病鏈夋煡璇㈣鍒�
+//		CodeResembleRuleVO resembleRuleVO = Optional.ofNullable(getUseResembleRule(fullInfoBO, fullInfoBO.getCurrentClassifyVO())).orElseGet(() -> new CodeResembleRuleVO());
+//		attrVOs.forEach((attrId, attrVO) -> {
+//			String value = getValueFromOrderDTO(orderDTO, attrId);
+//			if (value == null) {
+//				value = "";
+//			}
+//			wrapperResembleConditionMap(value, resembleRuleVO, attrId, conditionMap);
+//		});
+//
+//		//娌℃湁闄愬埗鍒嗙被锛屼絾鏄竴涓ā鏉垮彧鍙兘鍦ㄤ竴涓笟鍔$被鍨嬮噷闈紝鎵�浠ョ洿鎺ユ煡璇㈣繖涓笟鍔$被鍨嬪嵆鍙�
+//		if (!CollectionUtils.isEmpty(conditionMap)) {
+//			Map<String, String> andConditionMap = new HashMap<>();
+//			andConditionMap.put("islastr", "1");
+//			andConditionMap.put("islastv", "1");
+//			if (StringUtils.isNotBlank(orderDTO.getOid())) {
+//				andConditionMap.put("oid", QueryOptionConstant.NOTEQUAL + orderDTO.getOid());
+//			}
+//			conditionMap.putAll(andConditionMap);
+//			PageHelper pageHelper = new PageHelper(-1);
+//			pageHelper.addDefaultDesc("id");
+//			return queryGrid(fullInfoBO.getTopClassifyVO().getBtmtypeid(), templateVO, conditionMap, pageHelper);
+//		}
+//		return new DataGrid<>();
+//	}
+//
+//	/**
+//	 * 鑾峰彇浣跨敤鐨勭浉浼兼煡璇㈣鍒�
+//	 *
+//	 * @param fullInfoBO        绫诲叏閮ㄤ俊鎭�
+//	 * @param currentClassifyVO 褰撳墠鐨勫垎绫�
+//	 * @return 瑙勫垯锛屽鏋滀笉瀛樺湪浼氳繑鍥濶ull
+//	 */
+//	@Override
+//	public CodeResembleRuleVO getUseResembleRule(CodeClassifyFullInfoBO fullInfoBO, CodeClassifyVO currentClassifyVO) {
+//		if (currentClassifyVO == null) {
+//			return null;
+//		}
+//		if (currentClassifyVO != null && StringUtils.isNotBlank(currentClassifyVO.getCodeResembleRuleOid())) {
+//			//璇存槑宸茬粡瀛樺湪
+//			return resembleRuleService.getObjectByOid(currentClassifyVO.getCodeResembleRuleOid());
+//		}
+//		if (StringUtils.isBlank(currentClassifyVO.getParentcodeclassifyoid())) {
+//			return null;
+//		}
+//		Map<String, CodeClassifyVO> classifyVOMap = fullInfoBO.getParentClassifyVOs().stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
+//		return getUseResembleRule(fullInfoBO, classifyVOMap.getOrDefault(currentClassifyVO.getParentcodeclassifyoid(), null));
+//	}
+//
+//	/**
+//	 * 灏佽鐩镐技椤规煡璇㈢殑鏌ヨ鏉′欢鐨勬槧灏�
+//	 *
+//	 * @param value          鍊�
+//	 * @param resembleRuleVO 鐩镐技椤硅鍒�
+//	 * @param attrId         灞炴�х殑缂栧彿
+//	 * @param conditionMap   鏌ヨ鏉′欢
+//	 */
+//	@Override
+//	public void wrapperResembleConditionMap(String value, CodeResembleRuleVO resembleRuleVO, String attrId, Map<String, String> conditionMap) {
+//		boolean ignoreSpace = VciBaseUtil.getBoolean(resembleRuleVO.getIgnorespaceflag()) || VciBaseUtil.getBoolean(resembleRuleVO.getIgnoreallspaceflag());
+//		if (StringUtils.isBlank(value)) {
+//			//涓虹┖鐨勬椂鍊欏氨涓嶆煡璇㈠畠灏辨槸
+//		} else {
+//			String queryKey = "";
+//			String queryValue = "";
+//			boolean ignoreCase = VciBaseUtil.getBoolean(resembleRuleVO.getIgnorecaseflag());
+//			boolean ignoreWidth = VciBaseUtil.getBoolean(resembleRuleVO.getIgnorewidthflag());
+//			boolean trimAll = VciBaseUtil.getBoolean(resembleRuleVO.getIgnoreallspaceflag());
+//			boolean trim = VciBaseUtil.getBoolean(resembleRuleVO.getIgnoreallspaceflag());
+//			String temp = "";
+//			if (ignoreCase && ignoreSpace && ignoreWidth) {
+//				//蹇界暐澶у皬鍐欙紝涓斿幓绌猴紝蹇界暐鍏ㄥ崐瑙�
+//				temp = (trimAll ? "REPLACE" : "TRIM") + "(UPPER(to_single_byte('%s')) " + (trimAll ? ",' ','')" : ")");
+//			} else if (ignoreCase && ignoreSpace && !ignoreWidth) {
+//				//蹇界暐澶у皬鍐欍�佸幓绌恒�佷笉蹇界暐鍏ㄥ崐瑙�
+//				temp = (trimAll ? "REPLACE" : "TRIM") + "(UPPER(%s) " + (trimAll ? ",' ','')" : ")");
+//			} else if (ignoreCase && !ignoreSpace && ignoreWidth) {
+//				//蹇界暐澶у皬鍐欍�佷笉鍘荤┖銆佸拷鐣ュ叏鍗婅
+//				temp = "UPPER(to_single_byte('%s'))";
+//			} else if (!ignoreCase && ignoreSpace && ignoreWidth) {
+//				//涓嶅拷鐣ュぇ灏忓啓銆佸幓绌恒�佸拷鐣ュ叏鍗婅
+//				temp = (trimAll ? "REPLACE" : "TRIM") + "(to_single_byte('%s') " + (trimAll ? ",' ','')" : ")");
+//			} else if (ignoreCase && !ignoreSpace && !ignoreWidth) {
+//				//蹇界暐澶у皬鍐欍�佷笉鍘荤┖銆佷笉蹇界暐鍏ㄥ崐瑙�
+//				temp = "UPPER(%s)";
+//			} else if (!ignoreCase && !ignoreCase && ignoreWidth) {
+//				//涓嶅拷鐣ュぇ灏忓啓銆佷笉鍘荤┖銆佸拷鐣ュ叏鍗婅
+//				temp = "to_single_byte('%s')";
+//			} else if (!ignoreCase && ignoreSpace && !ignoreWidth) {
+//				//涓嶅拷鐣ュぇ灏忓啓銆佸幓绌恒�佷笉蹇界暐鍏ㄥ崐瑙�
+//				temp = (trimAll ? "REPLACE" : "TRIM") + "(%s " + (trimAll ? ",' ','')" : ")");
+//			} else if (!ignoreCase && !ignoreSpace && !ignoreWidth) {
+//				//涓嶅拷鐣ュぇ灏忓啓銆佷笉鍘荤┖銆佷笉蹇界暐鍏ㄥ崐瑙�
+//				temp = "%s";
+//			}
+//			if (StringUtils.isNotBlank(resembleRuleVO.getLinkCharacter())) {
+//				List<String> chars = VciBaseUtil.str2List(resembleRuleVO.getLinkCharacter());
+//				for (int i = 0; i < chars.size(); i++) {
+//					String s = chars.get(i);
+//					temp = "replace(" + temp + ",'" + s + "','')";
+//				}
+//			}
+//			queryValue = String.format(temp, (trim ? value.trim() : value));
+//			temp = temp.replace("to_single_byte('%s')","to_single_byte(%s)");
+//			queryKey = String.format(temp, "t."+attrId);
+//			conditionMap.put(queryKey, QueryOptionConstant.OR + queryValue);
+//		}
+//	}
+//
+//
+//	/**
+//	 * 鏌ヨ缂栫爜鏁版嵁鐨勫垪琛�
+//	 *
+//	 * @param btmType      涓氬姟绫诲瀷
+//	 * @param templateVO   妯℃澘鐨勫璞★紝闇�瑕佸寘鍚ā鏉跨殑灞炴��
+//	 * @param conditionMap 鏌ヨ鏉′欢
+//	 * @param pageHelper   鍒嗛〉瀵硅薄
+//	 * @return 鏁版嵁鍒楄〃
+//	 */
+//	@Override
+//	public DataGrid<Map<String, String>> queryGrid(String btmType, CodeClassifyTemplateVO templateVO, Map<String, String> conditionMap, PageHelper pageHelper) {
+//		CodeTemplateAttrSqlBO sqlBO = getSqlByTemplateVO(btmType, templateVO, conditionMap, pageHelper);
+////		List<Map> maps = boService.queryByOnlySqlForMap(sqlBO.getSqlHasPage());
+//		List<Map> maps = commonsMapper.selectBySql(sqlBO.getSqlHasPage());
+//		DataGrid<Map<String, String>> dataGrid = new DataGrid<>();
+//		List<Map<String, String>> dataList = new ArrayList<>();
+//		if (!CollectionUtils.isEmpty(maps)) {
+//			maps.stream().forEach(map -> {
+//				Map<String, String> data = new HashMap<>();
+//				map.forEach((key, value) -> {
+//					data.put(((String) key).toLowerCase(Locale.ROOT), (String) value);
+//				});
+//				dataList.add(data);
+//			});
+//		}
+//		dataGrid.setData(dataList);
+//		if (!CollectionUtils.isEmpty(dataList)) {
+//			wrapperData(dataGrid.getData(), templateVO, sqlBO.getSelectFieldList(), false);
+//			dataGrid.setTotal(Long.parseLong(commonsMapper.selectBySql(sqlBO.getSqlCount()).get(0).values().toArray()[0].toString()););
+//		}
+//		return dataGrid;
+//	}
+//
+//
+//	/**
+//	 * 灏佽鏌ヨ鍑烘潵鐨勬暟鎹�
+//	 *
+//	 * @param dataMap              鏁版嵁鐨勬槧灏�
+//	 * @param templateVO           妯℃澘鐨勫睘鎬�
+//	 * @param onlySelectAttrIdList 浠呬粎鏌ヨ鐨勫睘鎬у瓧娈�
+//	 * @param form 琛ㄥ崟閲屼娇鐢�
+//	 */
+//	@Override
+//	public void wrapperData(List<Map<String, String>> dataMap, CodeClassifyTemplateVO templateVO,
+//							Collection<String> onlySelectAttrIdList, boolean form) {
+//		if (onlySelectAttrIdList == null) {
+//			onlySelectAttrIdList = new ArrayList<>();
+//		}
+//		//鍏堣浆鎹竴涓嬫椂闂存牸寮�
+//		List<String> finalOnlySelectAttrIdList = onlySelectAttrIdList.stream().collect(Collectors.toList());
+//		List<CodeClassifyTemplateAttrVO> dateFormatAttrVOs = templateVO.getAttributes().stream().filter(
+//			s -> StringUtils.isNotBlank(s.getCodeDateFormat()) &&
+//				(finalOnlySelectAttrIdList.size() == 0 || finalOnlySelectAttrIdList.contains(s.getId().toLowerCase(Locale.ROOT)))
+//		).collect(Collectors.toList());
+//		//鏋氫妇鐨勫唴瀹�
+//		List<CodeClassifyTemplateAttrVO> enumAttrVOs = templateVO.getAttributes().stream().filter(
+//			s -> (StringUtils.isNotBlank(s.getEnumId()) || StringUtils.isNotBlank(s.getEnumString()))
+//				&&
+//				(finalOnlySelectAttrIdList.size() == 0 || finalOnlySelectAttrIdList.contains(s.getId().toLowerCase(Locale.ROOT)))
+//		).collect(Collectors.toList());
+//
+//		List<String> userIds = new ArrayList<>();
+//		dataMap.stream().forEach(data -> {
+//			//澶勭悊鏃堕棿
+//			if (!form) {
+//				//琛ㄥ崟鐨勬椂鍊欏彧鑳界敤缁熶竴鐨勬椂闂存牸寮�
+//				wrapperDateFormat(dateFormatAttrVOs, data);
+//			}
+//			//澶勭悊鏋氫妇
+//			wrapperEnum(enumAttrVOs, data);
+//			String lcstatus = data.get(VciQueryWrapperForDO.LC_STATUS_FIELD);
+//			String copyFromVersion = data.getOrDefault(COPY_FROM_VERSION,"");
+//			if ((CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(lcstatus) || CodeDefaultLC.AUDITING.getValue().equalsIgnoreCase(lcstatus))
+//				&& StringUtils.isBlank(copyFromVersion)
+//			) {
+//				data.put(VciQueryWrapperForDO.ID_FIELD, "******");
+//			}
+//			data.put(VciQueryWrapperForDO.LC_STATUS_FIELD_TEXT.toLowerCase(Locale.ROOT), CodeDefaultLC.getTextByValue(lcstatus));
+//			if(CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(lcstatus)
+//				&& StringUtils.isNotBlank(copyFromVersion)){
+//				data.put(VciQueryWrapperForDO.LC_STATUS_FIELD_TEXT.toLowerCase(Locale.ROOT), "淇敼涓�");
+//			}
+//			if (data.containsKey("creator")) {
+//				userIds.add(data.get("creator"));
+//			}
+//			if (data.containsKey("lastmodifier")) {
+//				userIds.add(data.get("lastmodifier"));
+//			}
+//		});
+//		if (!CollectionUtils.isEmpty(userIds)) {
+//			Map<String, SmUserVO> userVOMap = Optional.ofNullable(userQueryService.listUserByUserIds(userIds)).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+//			dataMap.stream().forEach(data -> {
+//				String creator = data.getOrDefault("creator", null);
+//				if (StringUtils.isNotBlank(creator) && userVOMap.containsKey(creator.toLowerCase(Locale.ROOT))) {
+//					data.put("creator", creator + "(" + userVOMap.get(creator.toLowerCase(Locale.ROOT)).getName() + ")");
+//				}
+//				String lastmodifier = data.getOrDefault("lastmodifier", null);
+//				if (StringUtils.isNotBlank(lastmodifier) && userVOMap.containsKey(lastmodifier.toLowerCase(Locale.ROOT))) {
+//					data.put("lastmodifier", lastmodifier + "(" + userVOMap.get(lastmodifier.toLowerCase(Locale.ROOT)).getName() + ")");
+//				}
+//			});
+//		}
+//	}
+//
+//
+//	/**
+//	 * 澶勭悊鏃堕棿鏍煎紡
+//	 *
+//	 * @param dateFormatAttrVOs 鏃堕棿鏍煎紡鐨勫睘鎬�
+//	 * @param data              褰撳墠琛屾暟鎹�
+//	 */
+//	private void wrapperDateFormat(Collection<CodeClassifyTemplateAttrVO> dateFormatAttrVOs, Map<String, String> data) {
+//		if (!CollectionUtils.isEmpty(dateFormatAttrVOs)) {
+//			dateFormatAttrVOs.stream().forEach(dateFormatAttrVO -> {
+//				String attrId = dateFormatAttrVO.getId().toLowerCase(Locale.ROOT);
+//				String oldValue = data.getOrDefault(attrId, null);
+//				if (StringUtils.isNotBlank(oldValue)) {
+//					DateConverter dateConverter = new DateConverter();
+//					try {
+//						dateConverter.setAsText(oldValue);
+//						Date value = dateConverter.getValue();
+//						if (value != null) {
+//							data.put(attrId, VciDateUtil.date2Str(value, dateFormatAttrVO.getCodeDateFormat()));
+//						}
+//					} catch (Throwable e) {
+//						//杞崲鍙兘鏈夐棶棰橈紝杩欏氨浣跨敤鍘熸湰瀛樺偍鐨勫��
+//					}
+//				}
+//			});
+//		}
+//	}
+//
+//
+//	/**
+//	 * 澶勭悊鏋氫妇鐨勫唴瀹癸紝濡傛灉涓嶅湪鏋氫妇涓紝浼氳繑鍥炲師鏈殑鍊�
+//	 *
+//	 * @param enumAttrVOs 鏋氫妇灞炴��
+//	 * @param data        褰撳墠琛屾暟鎹�
+//	 */
+//	private void wrapperEnum(Collection<CodeClassifyTemplateAttrVO> enumAttrVOs, Map<String, String> data) {
+//		//澶勭悊鏋氫妇鐨勫唴瀹癸紝涓轰簡鍏煎浠ュ墠鐨勬暟鎹�,濡傛灉鏁版嵁涓嶈兘浣跨敤鏋氫妇杞崲鐨勮瘽锛岄偅杩樻槸鏄剧ず浠ュ墠鐨勫��
+//		if (!CollectionUtils.isEmpty(enumAttrVOs)) {
+//			enumAttrVOs.stream().forEach(enumAttrVO -> {
+//				String attrId = enumAttrVO.getId().toLowerCase(Locale.ROOT);
+//				String oldValue = data.getOrDefault(attrId, null);
+//				if (StringUtils.isNotBlank(oldValue)) {
+//					List<KeyValue> comboxKVs = listComboboxItems(enumAttrVO);
+//					String newValue = oldValue;
+//					KeyValue keyValue = Optional.ofNullable(comboxKVs).orElseGet(() -> new ArrayList<>()).stream().filter(s -> s.getKey().equalsIgnoreCase(oldValue)).findFirst().orElseGet(() -> null);
+//					if (keyValue != null) {
+//						newValue = keyValue.getValue();
+//					}
+//					data.put(attrId + "Text", newValue);
+//				}
+//			});
+//		}
+//	}
+//
+//
+//	/**
+//	 * 鏍规嵁妯℃澘灞炴�х敓鎴愮浉搴旂殑sql淇℃伅
+//	 *
+//	 * @param btmType      涓氬姟绫诲瀷
+//	 * @param templateVO   妯℃澘鏄剧ず瀵硅薄锛屽繀椤诲寘鍚睘鎬�
+//	 * @param conditionMap 鏌ヨ鏉′欢
+//	 * @param pageHelper   鍒嗛〉鍜屾帓搴忓璞�
+//	 * @return sql鐨勭浉鍏充俊鎭�
+//	 */
+//	@Override
+//	public CodeTemplateAttrSqlBO getSqlByTemplateVO(String btmType, CodeClassifyTemplateVO templateVO, Map<String, String> conditionMap, PageHelper pageHelper) {
+//		//鍥犱负鍙傜収涓嶄竴瀹氭槸鍦ㄥ钩鍙扮殑灞炴�ф睜閲岄潰璁剧疆锛屾墍浠ユ垜浠緱闇�瑕佽嚜琛屽鐞�
+//		//鍙傝�僔ciQueryWrapper鏉ュ鐞�
+//		//1. 鎵惧埌鎵�鏈夌殑瀛楁锛�
+//		Map<String, CodeClassifyTemplateAttrVO> attrVOMap = templateVO.getAttributes().stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+//		List<String> selectFieldList = attrVOMap.keySet().stream().collect(Collectors.toList());
+//
+//		//鎵�鏈夌殑鍙傜収鐨勫瓧娈�
+//		Map<String/**灞炴�у瓧娈�**/, String> joinTableList = new ConcurrentHashMap<>();
+//		List<CodeClassifyTemplateAttrVO> referAttrVOs = templateVO.getAttributes().stream().filter(
+//			s -> StringUtils.isNotBlank(s.getReferBtmId()) || StringUtils.isNotBlank(s.getReferConfig())
+//		).collect(Collectors.toList());
+//		Map<String/**鍙傜収鐨勫睘鎬�**/, String/**瀹為檯鐨勫瓧娈�**/> referFieldMap = new HashMap<>();
+//		if (!CollectionUtils.isEmpty(referAttrVOs)) {
+//			referAttrVOs.parallelStream().forEach(attrVO -> {
+//				UIFormReferVO referVO = null;
+//				if (StringUtils.isNotBlank(attrVO.getReferConfig())) {
+//					referVO = JSONObject.parseObject(attrVO.getReferConfig(), UIFormReferVO.class);
+//				} else {
+//					referVO = new UIFormReferVO();
+//					referVO.setReferType(attrVO.getReferBtmId());
+//					referVO.setValueField(VciQueryWrapperForDO.OID_FIELD);
+//					referVO.setTextField("name");
+//				}
+//
+//				String referTable = VciBaseUtil.getTableName(referVO.getReferType());
+//				String referTableNick = attrVO.getId() + "0";
+//				String left = " left join " + referTable + " " + referTableNick + " on " + referTableNick + "." + referVO.getValueField() + " =  t." + attrVO.getId();
+//				joinTableList.put(attrVO.getId(), left);
+//				String referShowField = attrVO.getId() + "Name";
+//				List<String> textFields = VciBaseUtil.str2List(referVO.getTextField());
+//				String showFieldInSource = "";
+//				if (textFields.contains("name")) {
+//					showFieldInSource = "name";
+//				} else {
+//					showFieldInSource = textFields.get(0);
+//				}
+//				referFieldMap.put(attrVO.getId(), referTableNick + "." + showFieldInSource);
+//				selectFieldList.add(referTableNick + "." + showFieldInSource + " as " + referShowField);
+//			});
+//		}
+//		Optional.ofNullable(attributeService.getDefaultAttributeVOMap()).orElseGet(() -> new HashMap<>()).keySet().stream().forEach(attrId -> {
+//			if (!selectFieldList.contains(attrId) && !"secretgrade".equalsIgnoreCase(attrId)) {
+//				selectFieldList.add(attrId);
+//			}
+//		});
+//		if (!selectFieldList.contains(CODE_FIELD)) {
+//			selectFieldList.add(CODE_FIELD);
+//		}
+//		if (!selectFieldList.contains(CODE_CLASSIFY_OID_FIELD)) {
+//			selectFieldList.add(CODE_CLASSIFY_OID_FIELD);
+//		}
+//		if (!selectFieldList.contains(CODE_TEMPLATE_OID_FIELD)) {
+//			selectFieldList.add(CODE_TEMPLATE_OID_FIELD);
+//		}
+//		if (!selectFieldList.contains(CODE_FULL_PATH_FILED)) {
+//			selectFieldList.add(CODE_FULL_PATH_FILED);
+//		}
+//
+//		//澶勭悊鏌ヨ鏉′欢
+//		//TODO 楠岃瘉sql娉ㄥ叆
+//		List<String> andSql = new ArrayList<>();
+//		List<String> orSql = new ArrayList<>();
+//		if (!CollectionUtils.isEmpty(conditionMap)) {
+//			Map<String, String> orConditionMap = new HashMap<>();
+//			Map<String, String> andCondtionMap = new HashMap<>();
+//			//鍏堝垎绂籵r鐨勬煡璇㈡潯浠讹紝鍙﹀褰撴煡璇㈡潯浠舵槸绌虹殑鏃跺�欎篃涓嶆煡璇�
+//			conditionMap.forEach((k, v) -> {
+//				if (StringUtils.isNotBlank(v)) {
+//					if (v.startsWith(QueryOptionConstant.OR)) {
+//						orConditionMap.put(k, v.substring(QueryOptionConstant.OR.length()));
+//					} else {
+//						andCondtionMap.put(k, v);
+//					}
+//				}
+//			});
+//
+//			andCondtionMap.forEach((k, v) -> {
+//				andSql.add(getConditionSql(k.toLowerCase(), v, referFieldMap, attrVOMap));
+//			});
+//			orConditionMap.forEach((k, v) -> {
+//				orSql.add(getConditionSql(k.toLowerCase(), v, referFieldMap, attrVOMap));
+//			});
+//		}
+//		//缁勫悎璧锋潵
+//		StringBuilder andSb = new StringBuilder();
+//		andSql.stream().forEach(s -> {
+//			andSb.append(s).append(SPACE).append(QueryOptionConstant.AND).append(SPACE);
+//		});
+//
+//		String andString = andSb.toString().trim();
+//		String endWithSql = QueryOptionConstant.AND;
+//		if (andString.endsWith(endWithSql)) {
+//			andString = andString.substring(0, andString.length() - endWithSql.length());
+//		}
+//
+//		String orString = orSql.stream().collect(Collectors.joining(" or "));
+//		String whereSql = "";
+//		if (StringUtils.isNotBlank(orString)) {
+//			if (StringUtils.isBlank(andString)) {
+//				andString = " 1 = 1 ";
+//			}
+//			whereSql = SPACE + "(" + SPACE + andString + SPACE + ") and (" + SPACE + orString + SPACE + ")" + SPACE;
+//		} else {
+//			whereSql = andString + SPACE;
+//		}
+//		if (attrVOMap.keySet().contains("secretgrade")) {
+//			Integer userSecret = VciBaseUtil.getCurrentUserSecret();
+//			if (userSecret == null || userSecret == 0) {
+//				userSecret = secretService.getMinUserSecret();
+//			}
+//			whereSql += " and ( t.secretGrade <= " + userSecret + ") ";
+//		}
+//		String tableName = VciBaseUtil.getTableName(btmType);
+//		String sql = "select " + selectFieldList.stream().map(s -> (s.contains(".") ? s : ("t." + s))).collect(Collectors.joining(","))
+//			+ " from " + tableName + SPACE + "t" + SPACE
+//			+ joinTableList.values().stream().collect(Collectors.joining(SPACE))
+//			+ (StringUtils.isBlank(whereSql) ? "" : " where ") + whereSql;
+//		if (pageHelper == null) {
+//			pageHelper = new PageHelper(-1);
+//		}
+//		//鐪嬬湅鎺掑簭
+//		String orderSql = pageHelper.getOrderSql("t");
+//		sql += (orderSql == null ? "" : orderSql);
+//		String whereSubfixForPage = " ) A where rownum < " + (pageHelper.getLimit() * pageHelper.getPage() + 1) + ") where RN >= "
+//			+ (pageHelper.getLimit() * (pageHelper.getPage() - 1) + 1);
+//		String sqlHasPage = pageHelper.getLimit() > 0 ? ("select * from (select A.*,rownum RN from (" + sql + whereSubfixForPage) : sql;
+//		String sqlCount = "select count(1) from " + tableName + SPACE + "t" + SPACE + joinTableList.values().stream().collect(Collectors.joining(SPACE))
+//			+ (StringUtils.isBlank(whereSql) ? "" : " where ") + whereSql;
+//		CodeTemplateAttrSqlBO sqlBO = new CodeTemplateAttrSqlBO();
+//		sqlBO.setTableName(tableName);
+//		sqlBO.setJoinTable(joinTableList);
+//		sqlBO.setNickName("t");
+////		sqlBO.setPageHelper(pageHelper);
+//		sqlBO.setSqlHasPage(sqlHasPage);
+//		sqlBO.setSqlCount(sqlCount);
+//		sqlBO.setSqlUnPage(sql);
+//		return sqlBO;
+//	}
+//
+//
+//	/**
+//	 * 缁勫悎鏌ヨ鏉′欢鐨剆ql
+//	 *
+//	 * @param key           瀛楁
+//	 * @param value         鍚嶅瓧
+//	 * @param referFieldMap 鍙傜収鐨勫瓧娈�
+//	 * @param attrVOMap     灞炴�х殑鏄犲皠
+//	 * @return Sql璇彞
+//	 */
+//	private String getConditionSql(String key, String value, Map<String/**鍙傜収鐨勫睘鎬�**/, String/**瀹為檯鐨勫睘鎬�**/> referFieldMap, Map<String, CodeClassifyTemplateAttrVO> attrVOMap) {
+//		if (key.endsWith("_begin")) {
+//			//璇存槑鏄�>=鐨勩�傛垜浠渶瑕佸厛鑾峰彇涓�涓�
+//			String field = (key.substring(0, key.length() - 6).toLowerCase().trim());
+//			if (referFieldMap.containsKey(field)) {
+//				//璇存槑杩樻槸鍙傜収閲岄潰鐨勶紝鎴戜滑榛樿杩欑鎯呭喌涓嬮兘鏄瓧绗︿覆鍚э紝鍥犱负鍙傜収鐨勫睘鎬т笉涓�瀹氱敤鐨勫钩鍙扮殑灞炴�ф睜閲岀殑锛屾墍浠ュぇ閮ㄥ垎鎯呭喌涓嬶紝鏄剧ず鐨勫睘鎬ч兘鏄瓧绗︿覆鍚�
+//				return referFieldMap.get(field) + SPACE + " >= '" + value + "'" + SPACE;
+//			} else {
+//				return (field.contains(".") ? "" : "t.") + field + SPACE + " >= " + getStringValueInWhere(value, field, attrVOMap);
+//			}
+//		} else if (key.endsWith("_end")) {
+//			//璇存槑鏄�<=鐨勩�傛垜浠渶瑕佸厛鑾峰彇涓�涓�
+//			String field = (key.substring(0, key.length() - 6).toLowerCase().trim());
+//			if (referFieldMap.containsKey(field)) {
+//				//璇存槑杩樻槸鍙傜収閲岄潰鐨勶紝鎴戜滑榛樿杩欑鎯呭喌涓嬮兘鏄瓧绗︿覆鍚э紝鍥犱负鍙傜収鐨勫睘鎬т笉涓�瀹氱敤鐨勫钩鍙扮殑灞炴�ф睜閲岀殑锛屾墍浠ュぇ閮ㄥ垎鎯呭喌涓嬶紝鏄剧ず鐨勫睘鎬ч兘鏄瓧绗︿覆鍚�
+//				return referFieldMap.get(field) + SPACE + " <= '" + value + "'" + SPACE;
+//			} else {
+//				return (field.contains(".") ? "" : "t.") + field + SPACE + " <= " + getStringValueInWhere(field, value, attrVOMap);
+//			}
+//		} else {
+//			if (referFieldMap.containsKey(key)) {
+//				//璇存槑鏄弬鐓х殑锛屾垜浠弬鐓х殑鏌ヨ閮借涓烘槸瀛楃涓诧紝濡傛灉鏄椂闂存牸寮忕殑鏌ヨ鑲畾鏈夐棶棰橈紝
+//				String selectKey = referFieldMap.get(key);
+//				return getSqlByValue(selectKey, value, null);
+//			} else {
+//				return getSqlByValue(key, value, attrVOMap);
+//			}
+//		}
+//
+//	}
+//
+//	/**
+//	 * 鑾峰彇鏌ヨ鏉′欢涓殑鍊肩殑锛屽鐞嗕笉鍚岀殑绫诲瀷
+//	 *
+//	 * @param value 鍊�
+//	 * @param field 瀛楁鍚嶇О
+//	 * @return 鏃ユ湡鎴栬�呮椂闂存牸寮忎細鍖呮嫭to_date锛屽瓧绗︿覆浼氬姞'
+//	 */
+//	private String getStringValueInWhere(String field, String value, Map<String, CodeClassifyTemplateAttrVO> attrVOMap) {
+//		if ((field.contains(".") && !field.toLowerCase(Locale.ROOT).startsWith("t.")) || attrVOMap == null
+//			|| !field.replace("t.", "").matches(RegExpConstant.LETTER) || value.startsWith(ONLY)) {
+//			//璇存槑鍙兘鏄寚瀹氱殑鏌愪釜鏉′欢锛岀洿鎺ヨ繑鍥�
+//			if (value.startsWith(ONLY)) {
+//				value = value.replace(ONLY, "");
+//			}
+//			if ((value.startsWith("(") && value.endsWith(")")) || (value.startsWith("'") && value.endsWith("'"))) {
+//				return value;
+//			}
+//			if (field.contains(".") && attrVOMap != null && attrVOMap.containsKey(field.split("\\.")[0].toLowerCase(Locale.ROOT))) {
+//				//鏄弬鐓�
+//				return "'" + value + "'";
+//			} else {
+//				return value;
+//			}
+//		} else {
+//			//鐪嬬湅鏄笉鏄繖涓璞¢噷鐨勫睘鎬�
+//			if (attrVOMap.containsKey(field)) {
+//				VciFieldTypeEnum fieldTypeEnum = VciFieldTypeEnum.valueOf(attrVOMap.get(field).getAttributeDataType());
+//				if ("ts".equalsIgnoreCase(field)) {
+//					return "to_timestamp('" + value + "', '" + DATETIME_FORMAT + ".ff')";
+//				}
+//				DateConverter dateConverter = new DateConverter();
+//				if (VciFieldTypeEnum.VTDateTime.equals(fieldTypeEnum)) {
+//					//瀹為檯涓婏紝鏁版嵁搴撻兘鏄痶imestamp鐨勭被鍨�.
+//					dateConverter.setAsText(value);
+//					return "to_date('" + dateConverter.getAsText(VciDateUtil.DateTimeFormat) + "','" + DATETIME_FORMAT + "')";
+//				} else if (VciFieldTypeEnum.VTDate.equals(fieldTypeEnum)) {
+//					dateConverter.setAsText(value);
+//					return "to_date('" + dateConverter.getAsText(VciDateUtil.DateFormat) + "','" + DATE_FORMAT + "')";
+//				} else if (VciFieldTypeEnum.VTDouble.equals(fieldTypeEnum)
+//					|| VciFieldTypeEnum.VTLong.equals(fieldTypeEnum)
+//					|| VciFieldTypeEnum.VTInteger.equals(fieldTypeEnum)) {
+//					return value;
+//				} else {
+//					return "'" + value + "'";
+//				}
+//			} else {
+//				if ((value.startsWith("(") && value.endsWith(")")) || (value.startsWith("'") && value.endsWith("'"))) {
+//					return value;
+//				}
+//				return "'" + value + "'";
+//			}
+//		}
+//
+//	}
+//
+//	/**
+//	 * 灏佽鏈�缁堢殑sql璇彞涓殑鍊奸儴鍒�
+//	 *
+//	 * @param selectKey 鏌ヨ鐨勫瓧娈�
+//	 * @param value     鍊�
+//	 * @param attrVOMap 灞炴�х殑鏄剧ず瀵硅薄鏄犲皠
+//	 * @return sql閲岀殑鍊�
+//	 */
+//	private String getSqlByValue(String selectKey, String value, Map<String, CodeClassifyTemplateAttrVO> attrVOMap) {
+//		StringBuilder sql = new StringBuilder();
+//		if (!selectKey.contains(".") && (attrVOMap.containsKey(selectKey.toLowerCase(Locale.ROOT)) || attributeService.isDefaultAttr(selectKey) || selectKey.matches(RegExpConstant.LETTER))) {
+//			sql.append("t.");
+//		}
+//		if (value.startsWith(QueryOptionConstant.IN)) {
+//			sql.append(selectKey)
+//				.append(SPACE)
+//				.append("in")
+//				.append(SPACE)
+//				.append("(")
+//				.append(value.replace(QueryOptionConstant.IN, ""))
+//				.append(")");
+//		} else if (value.startsWith(QueryOptionConstant.NOTIN)) {
+//			sql.append(selectKey)
+//				.append(SPACE)
+//				.append("not in")
+//				.append(SPACE)
+//				.append("(")
+//				.append(value.replace(QueryOptionConstant.NOTIN, ""))
+//				.append(")");
+//		} else if (value.startsWith(QueryOptionConstant.NOTEQUAL)) {
+//			value = value.replace(QueryOptionConstant.NOTEQUAL, "");
+//			value = getStringValueInWhere(selectKey, value, attrVOMap);
+//			sql.append(selectKey)
+//				.append(SPACE)
+//				.append(QueryOptionConstant.NOTEQUAL)
+//				.append(SPACE)
+//				.append(value);
+//		} else if (value.startsWith(QueryOptionConstant.MORETHAN)) {
+//			value = value.replace(QueryOptionConstant.MORETHAN, "");
+//			value = getStringValueInWhere(selectKey, value, attrVOMap);
+//			sql.append(selectKey)
+//				.append(SPACE)
+//				.append(QueryOptionConstant.MORETHAN)
+//				.append(SPACE)
+//				.append(value);
+//		} else if (value.startsWith(QueryOptionConstant.MORE)) {
+//			value = value.replace(QueryOptionConstant.MORE, "");
+//			value = getStringValueInWhere(selectKey, value, attrVOMap);
+//			sql.append(selectKey)
+//				.append(SPACE)
+//				.append(QueryOptionConstant.MORE)
+//				.append(SPACE)
+//				.append(value);
+//		} else if (value.startsWith(QueryOptionConstant.LESSTHAN)) {
+//			value = value.replace(QueryOptionConstant.LESSTHAN, "");
+//			value = getStringValueInWhere(selectKey, value, attrVOMap);
+//
+//			sql.append(selectKey)
+//				.append(SPACE)
+//				.append(QueryOptionConstant.LESSTHAN)
+//				.append(SPACE)
+//				.append(value);
+//		} else if (value.startsWith(QueryOptionConstant.LESS)) {
+//			value = value.replace(QueryOptionConstant.LESS, "");
+//			value = getStringValueInWhere(selectKey, value, attrVOMap);
+//
+//			sql.append(selectKey)
+//				.append(SPACE)
+//				.append(QueryOptionConstant.LESS)
+//				.append(SPACE)
+//				.append(value);
+//		} else if (value.startsWith(QueryOptionConstant.ISNOTNULL)) {
+//			sql.append(selectKey)
+//				.append(SPACE)
+//				.append(" is not null");
+//		} else if (value.startsWith(QueryOptionConstant.ISNULL)) {
+//			sql.append(selectKey)
+//				.append(SPACE)
+//				.append(" is null");
+//		} else if (value.contains("*")) {
+//			//璇存槑鏄痩ike锛屾垨鑰卨efe like ,right like
+//			value = getStringValueInWhere(selectKey, value, attrVOMap);
+//			sql.append(selectKey)
+//				.append(SPACE)
+//				.append("like")
+//				.append(SPACE)
+//				//   .append("'")
+//				.append(value.replace("*", "%"))
+//				//  .append("'")
+//				.append(SPACE);
+//		} else {
+//			value= value.replace(SPECIAL_CHAR,REQUIRED_CHAR);
+//			value = getStringValueInWhere(selectKey, value, attrVOMap);
+//
+//			sql.append(selectKey)
+//				.append(SPACE)
+//				.append(QueryOptionConstant.EQUAL)
+//				.append(SPACE)
+//				.append(value);
+//		}
+//		sql.append(SPACE);
+//		return sql.toString();
+//	}
+//
+//	/**
+//	 * 淇敼涓婚搴撴暟鎹�
+//	 *
+//	 * @param orderDTO 鏁版嵁鐨勫唴瀹癸紝涓嶇敤鍖呭惈鐮佹鐨勫唴瀹逛簡
+//	 */
+//	@Override
+//	public void editSaveCode(CodeOrderDTO orderDTO) {
+//		VciBaseUtil.alertNotNull(orderDTO, "缂栫爜鐢宠鐩稿叧鐨勫睘鎬х殑鍐呭閮戒负绌�", orderDTO.getOid(), "鏁版嵁涓婚敭",
+//			orderDTO.getCodeClassifyOid(), "涓婚搴撳垎绫荤殑涓婚敭");
+////		CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
+//		CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
+//		//鎵句笟鍔$被鍨嬶紝鐒跺悗浣跨敤涓婚敭鍘昏幏鍙栨暟鎹簱閲岀殑鏁版嵁
+////		List<ClientBusinessObject> cbos = boService.queryCBO(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), WebUtil.getOidQuery(orderDTO.getOid()));
+//
+//		QueryWrapper<CodeOsbtmtypeEntity> btmWrapper = new QueryWrapper<>();
+//		btmWrapper.eq("OID",orderDTO.getOid());
+//		CodeWupinEntity cbo = codeOsbtmtypeMapper.selectOne(btmWrapper);
+//
+////		CodeClstemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid());
+////		CodeRuleVO ruleVO = ruleService.getObjectHasSecByOid(orderDTO.getCodeRuleOid());
+//
+//		if (cbo != null) {
+//			throw new VciBaseException(DATA_OID_NOT_EXIST);
+//		}
+////		ClientBusinessObject cbo = cbos.get(0);
+//		if (!cbo.getTs().toString().contains(VciDateUtil.date2Str(orderDTO.getTs(), VciDateUtil.DateTimeFormat))) {
+//			throw new VciBaseException("鏁版嵁涓嶆槸鏈�鏂扮殑锛屽彲鑳戒粬浜哄凡缁忎慨鏀癸紝璇峰埛鏂板悗鍐嶈瘯");
+//		}
+//		if (!CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(cbo.getLcStatus()) && !orderDTO.isEditInProcess()) {
+//			throw new VciBaseException("鏁版嵁涓嶆槸{0}鐨勭姸鎬侊紝涓嶅厑璁镐慨鏀�", new String[]{CodeDefaultLC.EDITING.getText()});
+//		}
+//
+//		//娉ㄦ剰妯℃澘涓嶈兘浣跨敤鏁版嵁瀛樺偍鐨勬椂鍊欑殑妯℃澘锛屽洜涓哄彲鑳戒細鍙樺寲
+//
+//		//1. 鍒ゆ柇蹇呰緭椤�
+//		CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid());
+//		checkRequiredAttrOnOrder(templateVO, orderDTO);
+//		//2.鍏堟敞鍏ワ紝鍐嶇粍鍚堬紝鏈�鍚庢牎楠�
+//		switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO);
+//		//3.澶勭悊缁勫悎瑙勫垯銆傜粍鍚堣鍒欎笉鑳戒娇鐢ㄧ紪鐮佺殑灞炴�э紝鍥犱负缂栫爜鐨勭敓鎴愬彲鑳芥槸闇�瑕佸睘鎬х殑
+//		switchComponentAttrOnOrder(templateVO, orderDTO);
+//		//4.鏍¢獙瑙勫垯
+//		checkVerifyOnOrder(templateVO, orderDTO);
+//		//5.鍒ゆ柇鍏抽敭灞炴��
+//		checkKeyAttrOnOrder(classifyFullInfo, templateVO, orderDTO);
+//		//6.鏍¢獙鏋氫妇鐨勫唴瀹规槸鍚︽纭�
+//		checkEnumOnOrder(templateVO, orderDTO);
+//		//7.澶勭悊鏃堕棿鏍煎紡锛屽湪鏁版嵁搴撻噷闈笉璁烘槸瀛楃涓茶繕鏄棩鏈熸牸寮忥紝閮戒娇鐢ㄧ浉鍚岀殑鏍煎紡瀛樺偍
+//		switchDateAttrOnOrder(templateVO, orderDTO);
+//		//榛樿鐨勫唴瀹逛笉鑳藉彉锛屾墍浠ュ彧闇�瑕佹嫹璐濊嚜瀹氫箟鐨勭浉鍏冲睘鎬у嵆鍙�
+//		copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, true);
+//		//浼佷笟鐮佸拰闆嗗洟鐮佺殑涓嶄慨鏀�
+//		cbo.setDescription(orderDTO.getDescription());
+//		cbo.setName(orderDTO.getName());
+//		try {
+//			cbo.setDescription(orderDTO.getDescription());
+//			cbo.setName(orderDTO.getName());
+//////			cbo.setAttributeValueWithNoCheck("description", orderDTO.getDescription());
+////			cbo.setAttributeValue("name", orderDTO.getName());
+//		} catch (Exception e) {
+//			e.printStackTrace();
+//		}
+//
+//
+//		List<CodeWupinEntity> cboList = new ArrayList<>();
+//
+//		//澶囨敞
+//		cbo.setDescription(orderDTO.getDescription());
+//		cboList.add(cbo);
+////
+////		cboList.add(cbo);
+//		List<String> codeList = productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(),cboList);
+//
+//
+//		List<String> charList = new ArrayList<>();
+//		for (CodeWupinEntity wupinEntity : cboList) {
+//			charList.add(wupinEntity.getId());
+//		}
+//		batchSaveSelectChar(templateVO, charList);
+//		return codeList.size() > 0 ? codeList.get(0) : "";
+//
+//
+//
+//
+//		//淇敼鐨勬椂鍊欙紝缂栫爜鏄笉鍙樼殑
+////		BatchCBO batchCBO = new BatchCBO();
+////		batchCBO.getUpdateCbos().add(cbo);
+////		List<ClientBusinessObject> cboList = new ArrayList<>();
+////		cboList.add(cbo);
+////		boService.persistenceBatch(batchCBO);
+//		batchSaveSelectChar(templateVO, cboList);
+//	}
+
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
index f313a07..71a98c8 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
@@ -1,419 +1,381 @@
 package com.vci.ubcs.code.service.impl;
 
-import com.alibaba.nacos.common.utils.StringUtils;
-import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
-import com.vci.ubcs.code.dto.CodeOrderDTO;
-import com.vci.ubcs.code.service.ICodeClassifyService;
-import com.vci.ubcs.code.service.MdmEngineService;
 import com.vci.ubcs.code.service.MdmIOService;
-import com.vci.ubcs.code.vo.CodeClstemplateVO;
-import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
-import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
-import com.vci.ubcs.code.vo.pagemodel.CodeImProtRusultVO;
-import com.vci.ubcs.starter.bo.WriteExcelData;
-import com.vci.ubcs.starter.exception.VciBaseException;
-import com.vci.ubcs.starter.poi.bo.ReadExcelOption;
-import com.vci.ubcs.starter.poi.bo.SheetDataSet;
-import com.vci.ubcs.starter.poi.bo.SheetRowData;
-import com.vci.ubcs.starter.poi.bo.WriteExcelOption;
-import com.vci.ubcs.starter.poi.util.ExcelUtil;
-import com.vci.ubcs.starter.util.LocalFileUtil;
-import com.vci.ubcs.starter.web.enumpck.VciFieldTypeEnum;
-import com.vci.ubcs.starter.web.pagemodel.KeyValue;
-import com.vci.ubcs.starter.web.util.VciBaseUtil;
-import com.vci.ubcs.starter.web.util.VciDateUtil;
-import org.apache.poi.hssf.usermodel.HSSFRichTextString;
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;
-import org.apache.poi.hssf.util.HSSFColor;
-import org.apache.poi.ss.usermodel.Font;
-import org.apache.poi.ss.usermodel.RichTextString;
-import org.apache.poi.ss.usermodel.Workbook;
 import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
-
-import javax.annotation.Resource;
-import java.io.File;
-import java.util.*;
-import java.util.stream.Collectors;
-
-import static com.alibaba.druid.util.FnvHash.Constants.LIMIT;
-import static com.vci.ubcs.code.constant.MdmEngineConstant.CODE_FIELD;
-import static com.vci.ubcs.code.constant.MdmEngineConstant.DEFAULT_ATTR_LIST;
-import static com.vci.ubcs.starter.poi.util.ExcelUtil.KEY_ATTR_CHAR;
-import static com.vci.ubcs.starter.poi.util.ExcelUtil.REQUIRED_CHAR;
 
 @Service
 public class MdmIOServiceImpl implements MdmIOService {
 
-
-	/**
-	 * 涓婚搴撳垎绫荤殑鏈嶅姟
-	 */
-	@Resource
-	private ICodeClassifyService classifyService;
-
-	/**
-	 * 妯℃澘鐨勬湇鍔�
-	 */
-	@Resource
-	private CodeClstemplateServiceImpl templateService;
-
-	/**
-	 * 涓绘暟鎹紩鎿庣殑鏈嶅姟
-	 */
-	@Resource
-	private MdmEngineService engineService;
-
-	/**
-	 * 鐢熸垚瀵煎叆鐨勬枃浠�
-	 *
-	 * @param codeClassifyOid 鍒嗙被鐨勪富閿�
-	 * @param isHistory 鏄惁鍘嗗彶鏁版嵁瀵煎叆
-	 * @return excel鐨勬枃浠跺湴鍧�
-	 */
-	@Override
-	public String createImportExcel(String codeClassifyOid, boolean isHistory) {
-		List<CodeClstemplateVO> templateVOList=new ArrayList<>();
-
-		VciBaseUtil.alertNotNull("瀵煎嚭妯℃澘","瀵煎嚭鐨勯厤缃�",codeClassifyOid,"涓婚搴撳垎绫荤殑涓婚敭");
-
-		CodeClassifyVO codeClassifyVO = classifyService.getObjectByOid(codeClassifyOid);
-
-		if(isHistory){
-			templateVOList= templateService.childTemplates(codeClassifyOid);
-		}else{
-			//鎵炬ā鏉�
-			CodeClstemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(codeClassifyOid);
-			templateVOList.add(templateVO);
-		}
-
-		WriteExcelOption eo = new WriteExcelOption();
-		eo.setAppend(true);
-		//澧炲姞妯℃澘鐨勪俊鎭鍏�
-		LinkedList<WriteExcelData> tempEDList = new LinkedList<>();
-		tempEDList.add(new WriteExcelData(0,0,"妯℃澘涓婚敭"));
-		tempEDList.add(new WriteExcelData(0,1,"妯℃澘浠e彿"));
-		tempEDList.add(new WriteExcelData(0,2,"妯℃澘鍚嶇О"));
-		for(int j=0;j<templateVOList.size();j++){
-			CodeClstemplateVO  templateVO=templateVOList.get(j);
-
-			//缁勫悎鏍煎紡鐨勪笉瀵煎叆锛�
-			// 鏋氫妇鐨勬彁渚涘簭鍒楃殑閫夋嫨
-			//鏃堕棿鍏ㄩ儴缁熶竴涓簓yyy-MM-dd HH:mm:ss
-			//鍙傜収鐨勮嚜琛岃緭鍏ュ悕绉�
-			//鍒嗙被娉ㄥ叆鐨勪笉鐢紝閮芥槸瀵煎叆鍚庤嚜鍔ㄥ鐞嗙殑
-			//缂栫爜锛岀姸鎬佺瓑瀛楁涓嶅鍏�
-			List<CodeClassifyTemplateAttrVO> templateAttrVOS = templateVO.getAttributes().stream().filter(s ->
-				!DEFAULT_ATTR_LIST.contains(s.getId())
-					&& StringUtils.isBlank(s.getComponentRule())
-					&& StringUtils.isBlank(s.getClassifyInvokeAttr())
-					&& (isHistory || VciBaseUtil.getBoolean(s.getFormDisplayFlag()))
-			).collect(Collectors.toList());
-
-			if(CollectionUtils.isEmpty(templateAttrVOS)){
-				throw new VciBaseException("妯℃澘娌℃湁閰嶇疆浠讳綍銆愯〃鍗曟樉绀恒�戜负銆愭槸銆戠殑灞炴��");
-			}
-			List<CodeClassifyTemplateAttrVO> idAttrVOList = templateVO.getAttributes().stream().filter(s -> s.getId().equalsIgnoreCase(CODE_FIELD)).collect(Collectors.toList());
-			LinkedList<WriteExcelData> excelDataList = new LinkedList<>();
-			Workbook workbook = new HSSFWorkbook();
-			if(isHistory){
-				excelDataList.add(new WriteExcelData(0,0,"鍒嗙被璺緞"));
-				excelDataList.add(new WriteExcelData(0,1,"鐮佹瀹藉害"));
-				excelDataList.add(new WriteExcelData(0,2,!CollectionUtils.isEmpty(idAttrVOList)?idAttrVOList.get(0).getName():"浼佷笟缂栫爜"));
-			}
-			for (int i = 0; i < templateAttrVOS.size(); i++) {
-				CodeClassifyTemplateAttrVO attrVO = templateAttrVOS.get(i);
-
-				Object text = attrVO.getName();
-				text = exportKeyAndRequired(workbook,attrVO,text);
-				int colIndex = (isHistory?3:0) + i;
-				WriteExcelData excelData = new WriteExcelData(0, colIndex, text);
-				if(StringUtils.isNotBlank(attrVO.getCodeDateFormat())
-					|| VciFieldTypeEnum.VTDateTime.name().equalsIgnoreCase(attrVO.getAttributeDataType())
-					|| VciFieldTypeEnum.VTDate.name().equalsIgnoreCase(attrVO.getAttributeDataType())
-					||VciFieldTypeEnum.VTTime.name().equalsIgnoreCase(attrVO.getAttributeDataType())){
-					excelData.setDateFormat(VciDateUtil.DateTimeFormat);
-				}
-				if(text instanceof RichTextString){
-					excelData.setFontColor(String.valueOf(HSSFColor.HSSFColorPredefined.RED.getIndex()));
-				}
-				excelDataList.add(excelData);
-				if(StringUtils.isNotBlank(attrVO.getEnumString()) || StringUtils.isNotBlank(attrVO.getEnumId())){
-					//娣诲姞鏁版嵁鏈夋晥鎬�
-					List<String> enumValueList = new ArrayList<>();
-					enumValueList.add("");
-					List<KeyValue> valueList = engineService.listComboboxItems(attrVO);
-					if(!CollectionUtils.isEmpty(valueList)){
-						valueList.stream().forEach(kv->{
-							enumValueList.add(kv.getValue());
-						});
-					}
-					//榛樿鍔�1涓囨潯
-					WriteExcelData ed = new WriteExcelData(1,colIndex,"");
-					ed.setRowTo(100);
-					ed.setColTo(colIndex);
-					ed.setValidation(true);
-					ed.setValidationDataList(enumValueList);
-					ed.setValidationErrorMsg("璇峰湪搴忓垪涓�夋嫨姝g‘鐨勫��");
-					excelDataList.add(ed);
-				}
-				if(VciFieldTypeEnum.VTBoolean.name().equalsIgnoreCase(attrVO.getAttributeDataType())){
-					List<String> booleanList = new ArrayList<>();
-
-					booleanList.add("鏄�");
-					booleanList.add("鍚�");
-					//榛樿鍔�1涓囨潯
-					WriteExcelData ed = new WriteExcelData(1,colIndex,"");
-					ed.setRowTo(100);
-					ed.setColTo(colIndex);
-					ed.setValidation(true);
-					ed.setValidationDataList(booleanList);
-					ed.setValidationErrorMsg("璇峰湪搴忓垪涓�夋嫨姝g‘鐨勫��");
-					excelDataList.add(ed);
-				}
-			}
-			eo.addSheetDataList(j+templateVO.getName(),excelDataList);
-			tempEDList.add(new WriteExcelData(j+1,0,templateVO.getOid()));
-			tempEDList.add(new WriteExcelData(j+1,1,templateVO.getId()));
-			tempEDList.add(new WriteExcelData(j+1,2,templateVO.getName()));
-		}
-		String excelName = LocalFileUtil.getDefaultTempFolder() + File.separator + codeClassifyVO.getName() + (isHistory?"_鍘嗗彶鏁版嵁瀵煎叆妯℃澘.xls": "_瀵煎叆妯℃澘.xls");
-		eo.addSheetDataList(templateVOList.size()+"妯℃澘淇℃伅銆愯鍕垮垹闄ゆ垨绉诲姩銆�",tempEDList);
-		ExcelUtil.writeDataToFile(excelName,eo);
-		return excelName;
-	}
-
-	/**
-	 * 瀵煎嚭鐨勬椂鍊欏皝瑁呭繀杈撳拰鍏抽敭灞炴��
-	 * @param attrVO 灞炴�х殑鏄剧ず瀵硅薄
-	 * @param text 鍗曞厓鏍肩殑鍊�
-	 */
-	private Object exportKeyAndRequired(Workbook workbook,CodeClassifyTemplateAttrVO attrVO,Object text){
-		//蹇呰緭鍔�*锛屽叧閿睘鎬т负钃濊壊
-		if (VciBaseUtil.getBoolean(attrVO.getRequireFlag()) || VciBaseUtil.getBoolean(attrVO.getKeyAttrFlag())) {
-			String value = text.toString();
-			if(VciBaseUtil.getBoolean(attrVO.getRequireFlag())) {
-				value += REQUIRED_CHAR;
-			}
-			if(VciBaseUtil.getBoolean(attrVO.getKeyAttrFlag())){
-				value += KEY_ATTR_CHAR;
-			}
-			RichTextString ts = new HSSFRichTextString(value);
-			if(VciBaseUtil.getBoolean(attrVO.getRequireFlag())){
-				Font font =  workbook.createFont();
-				font.setColor(HSSFColor.HSSFColorPredefined.RED.getIndex());
-				ts.applyFont(font);
-			}
-
-			if(VciBaseUtil.getBoolean(attrVO.getKeyAttrFlag())){
-				Font font =  workbook.createFont();
-				font.setColor(HSSFColor.HSSFColorPredefined.BLUE.getIndex());
-				ts.applyFont(font);
-			}
-			return ts;
-		}
-		return text;
-	}
-
-
-	/**
-	 * 鎵归噺鐢宠缂栫爜鏁版嵁
-	 *
-	 * @param orderDTO 缂栫爜鐢宠淇℃伅锛屽繀椤诲寘鍚垎绫讳富閿拰鐮佹鐨勪俊鎭�
-	 * @param file     excel鏂囦欢鐨勪俊鎭�
-	 * @return  鏈夐敊璇俊鎭殑excel鐨勬枃浠�
-	 */
-	@Override
-	public CodeImProtRusultVO batchImportCode(CodeOrderDTO orderDTO, File file) {
-		VciBaseUtil.alertNotNull(orderDTO,"缂栫爜鐢宠鐩稿叧鐨勬暟鎹�",orderDTO.getCodeClassifyOid(),"涓婚搴撳垎绫讳富閿�");
-		ReadExcelOption reo = new ReadExcelOption();
-		reo.setReadAllSheet(true);
-		List<SheetDataSet> sheetDataSetList = ExcelUtil.readDataObjectFromExcel(file,null,reo);
-		if(CollectionUtils.isEmpty(sheetDataSetList) || CollectionUtils.isEmpty(sheetDataSetList.get(0).getRowData())
-			||sheetDataSetList.get(0).getRowData().size()<1){
-			throw new VciBaseException("娌℃湁璇诲彇鍒颁换浣曠殑鏁版嵁");
-		}
-		if(sheetDataSetList.size()>LIMIT+1){
-			throw new VciBaseException("涓轰簡淇濊瘉绯荤粺鐨勭ǔ瀹氭�э紝璇蜂竴娆′笉瑕佸鍏ヨ秴杩�1涓囨潯鐨勬暟鎹�");
-		}
-		//鍏堟壘鍒版瘡涓�琛岀殑鏍囬锛岀劧鍚庢牴鎹爣棰樻潵鑾峰彇瀵瑰簲鐨勫睘鎬�
-		SheetDataSet dataSet = sheetDataSetList.get(0);
-		//鎵剧涓�琛岋紝涓轰簡鎵炬爣棰�
-		CodeClstemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(orderDTO.getCodeClassifyOid());
-
-		//鏍¢獙妯℃澘鏄笉鏄渶鏂扮殑
-		checkTemplateSync(sheetDataSetList,templateVO,0);
-		//鍏堜笉鐢ㄧ灞炴�ф槸鍚﹂兘瀛樺湪锛屽厛杞崲涓�涓嬫暟鎹�
-		Map<String,String> errorMap = new HashMap<>();
-		String redisUUid=batchImportCodes(orderDTO,templateVO,dataSet,errorMap,true);
-		CodeImProtRusultVO codeImProtRusultVO = new CodeImProtRusultVO();
-		List<String> needRowIndexList = new ArrayList<>();
-//		String filePath = returnErrorToExcel(dataSet.getRowData(), errorMap, needRowIndexList, dataSet.getColName());
-//		if(StringUtils.isNotBlank(filePath)) {
-//			codeImProtRusultVO.setFilePath(filePath);
-//		}
-//		if(StringUtils.isNotBlank(redisUUid)){
-//			codeImProtRusultVO.setRedisUuid(redisUUid);
-//		}
-		return null;
-//		return codeImProtRusultVO;
-	}
-
-	/**
-	 * 鏍¢獙妯℃澘鏄惁涓哄悓姝ョ殑
-	 * @param sheetDataSetList excel閲岀殑鍐呭
-	 * @param templateVO 妯℃澘鐨勪俊鎭�
-	 */
-	private void checkTemplateSync(List<SheetDataSet> sheetDataSetList,CodeClstemplateVO templateVO,int i){
-		String templateOidInExcel = "";
-		String templateName="";
-		if(!CollectionUtils.isEmpty(sheetDataSetList)
-			&& sheetDataSetList.size()>1 && !CollectionUtils.isEmpty(sheetDataSetList.get(sheetDataSetList.size()-1).getColName())){
-			List<SheetRowData>  rowData=  sheetDataSetList.get(sheetDataSetList.size()-1).getRowData();
-			templateName=rowData.get(i).getData().get(2);
-			templateOidInExcel=rowData.get(i).getData().get(0);
-			//templateOidInExcel = sheetDataSetList.get(sheetDataSetList.size()-1).getColName().get(sheetDataSetList.size()-i);
-		}
-       /* if(!CollectionUtils.isEmpty(sheetDataSetList)
-                && sheetDataSetList.size()>1 && !CollectionUtils.isEmpty(sheetDataSetList.get(sheetDataSetList.size()-1).getColName())){
-            List<SheetRowData>  rowData=  sheetDataSetList.get(sheetDataSetList.size()-1).getRowData();
-            templateOidInExcel=rowData.get(i).getData().get(0);
-           //templateOidInExcel = sheetDataSetList.get(sheetDataSetList.size()-1).getColName().get(sheetDataSetList.size()-i);
-        }*/
-		if(StringUtils.isBlank(templateOidInExcel) || !templateOidInExcel.equalsIgnoreCase(templateVO.getOid())){
-			throw new VciBaseException("妯℃澘銆�"+templateName+"銆戜腑鐨勬暟鎹幏鍙栫殑妯$増淇℃伅涓庡綋鍓嶆ā鏉夸笉鍖归厤锛岃纭繚excel鏂囦欢閲屾湁銆愭ā鏉夸俊鎭�-璇峰嬁绉诲姩鎴栧垹闄ゃ�戠殑宸ヤ綔琛紝涓旂‘淇濇瘡娆″鍏ラ兘鏄厛涓嬭浇鐨勫鍏ユā鏉垮悗娣诲姞鐨勬暟鎹�");
-		}
-
-	}
-
-
-	/***
-	 * 鎵归噺澶勭悊鐢宠鏁版嵁
-	 * @param orderDTO
-	 * @param templateVO
-	 * @param dataSet
-	 * @return
-	 */
-	private String batchImportCodes(CodeOrderDTO orderDTO,CodeClstemplateVO templateVO,SheetDataSet dataSet,Map<String,String> errorMap,boolean isEnumType){
-		List<String> codeList=new ArrayList<>();
-//		CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
-		//瑙勫垯鐨勪富閿渶瑕佸幓鑾峰彇
-//		CodeRuleVO ruleVO = engineService.getCodeRuleByClassifyFullInfo(classifyFullInfo);
-//		//1.鍒ゆ柇瑙勫垯涓櫎浜嗘祦姘寸爜娈碉紝鏄惁鏈夊叾浠栫爜娈�
-//		engineService.checkSecValueOnOrder(ruleVO,orderDTO);
-//		List<SheetRowData> rowDataList = dataSet.getRowData();
 //
-//		//闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆
-//		List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s ->
-//			!DEFAULT_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormdisplayflag())
-//		).collect(Collectors.toList());
-//		Map<Integer/**鍒楀彿**/,String/**瀛楁鐨勫悕绉�**/> fieldIndexMap = new HashMap<>();
-//		List<String> titleRowData = dataSet.getColName();
-//		Map<String/**涓枃鍚嶇О**/, String/**鑻辨枃鍚嶇О**/> attrNameIdMap = attrVOS.stream().collect(Collectors.toMap(s -> s.getName(), t -> t.getId().toLowerCase(Locale.ROOT),(o1, o2)->o2));
-//		getFieldIndexMap(titleRowData,attrNameIdMap,fieldIndexMap);
+//	/**
+//	 * 涓婚搴撳垎绫荤殑鏈嶅姟
+//	 */
+//	@Resource
+//	private ICodeClassifyService classifyService;
 //
-//		//闇�瑕佸垽鏂槸鍚︽墍鏈夌殑灞炴�ч兘鍦ㄦā鏉夸笂浜�
-//		List<CodeClassifyTemplateAttrVO> unExistAttrVOs = attrVOS.stream().filter(s -> !fieldIndexMap.containsValue(s.getId().toLowerCase(Locale.ROOT))
-//			&& StringUtils.isBlank(s.getComponentrule()) && StringUtils.isBlank(s.getClassifyinvokeattr())//缁勫悎瑙勫垯鍜屽垎绫绘敞鍏ョ‘瀹炴病缁欑敤鎴峰鍑哄幓
-//		).collect(Collectors.toList());
-//		if(!CollectionUtils.isEmpty(unExistAttrVOs)){
-//			throw new VciBaseException("銆�" + unExistAttrVOs.stream().map(CodeClassifyTemplateAttrVO::getName) + "銆戣繖浜涘睘鎬у湪鍒楄〃涓病鏈夋壘鍒�");
-//		}
-//		List<ClientBusinessObject> cboList = new ArrayList<>();
-//		String fullPath = getFullPath(classifyFullInfo);
-//		excelToCbo(classifyFullInfo,fieldIndexMap,rowDataList,templateVO,cboList,fullPath,true);
+//	/**
+//	 * 妯℃澘鐨勬湇鍔�
+//	 */
+//	@Resource
+//	private CodeClstemplateServiceImpl templateService;
 //
-//		//閮借浆鎹㈠畬浜嗐�傞渶瑕佹壒閲忔鏌�
-//		//濡傛灉鍑洪敊浜嗭紝鎴戜滑渚濈劧鎵ц鏈夋晥鐨勬暟鎹紝鏃犳晥鐨勬暟鎹啓鍥炲埌excel涓�
-//		//2.鍒ゆ柇蹇呰緭椤广�傘�傞渶瑕佸叏閮ㄧ殑灞炴�э紝濡傛灉鏄繀杈擄紝浣嗘槸琛ㄥ崟閲岄潰涓嶆樉绀虹殑锛屽彧鑳芥槸鍒嗙被娉ㄥ叆鎴栬�呯粍鍚堣鍒�
-//		batchCheckRequiredAttrOnOrder(templateVO,cboList,errorMap);
-//		//3.鍒ゆ柇鍏抽敭灞炴��
-//		CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList);
-//		Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList();
-//		Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList();
-//		if(!CollectionUtils.isEmpty(selfRepeatRowIndexList)){
-//			selfRepeatRowIndexList.stream().forEach(rowIndex->{
-//				errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍦ㄥ綋鍓嶅鐞嗙殑鏁版嵁鏂囦欢涓叧閿睘鎬ч噸澶�" );
-//			});
-//		}
-//		if(!CollectionUtils.isEmpty(keyAttrRepeatRowIndexList)){
-//			keyAttrRepeatRowIndexList.stream().forEach(rowIndex->{
-//				errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅" );
-//			});
-//		}
-//		//鍒嗙被娉ㄥ叆
-//		batchSwitchClassifyAttrOnOrder(attrVOS,cboList,classifyFullInfo,false);
-//		//boolean
-//		reSwitchBooleanAttrOnOrder(attrVOS,cboList);
-//		//4.鏍¢獙瑙勫垯
-//		batchCheckVerifyOnOrder(attrVOS, cboList,errorMap);
-//		if(isEnumType) {//鏄惁闇�瑕佹牎楠屾灇涓�/鍙傜収
-//			//5.鏍¢獙鏋氫妇鏄惁姝g‘
-//			batchSwitchEnumAttrOnOrder(attrVOS, cboList, errorMap);
-//			//7.澶勭悊鍙傜収鐨勬儏鍐�
-//			batchSwitchReferAttrOnOrder(attrVOS,cboList,errorMap);
-//		}
-//		//6.鏃堕棿鏍煎紡鐨勯獙璇�
-//		//6.鏃堕棿鐨勶紝蹇呴』缁熶竴涓簓yyy-MM-dd HH:mm:ss
-//		batchSwitchDateAttrOnOrder(attrVOS,cboList,errorMap);
-//		//鏈�鍚庡紕缁勫悎瑙勫垯
-//		batchSwitchComponentAttrOnOrder(attrVOS,cboList);
-//		String uuid=redisService.getUUIDEveryDay();
-//		Map<String, ClientBusinessObject> rowIndexCboMap = cboList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getAttributeValue((IMPORT_ROW_INDEX)), t -> t));
+//	/**
+//	 * 涓绘暟鎹紩鎿庣殑鏈嶅姟
+//	 */
+//	@Resource
+//	private MdmEngineService engineService;
 //
-//		if(errorMap.size()>0) {
-//			createRedisDatas(uuid + "-error",templateVO, rowIndexCboMap, dataSet, fieldIndexMap, errorMap,false);
+//	/**
+//	 * 鐢熸垚瀵煎叆鐨勬枃浠�
+//	 *
+//	 * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+//	 * @param isHistory 鏄惁鍘嗗彶鏁版嵁瀵煎叆
+//	 * @return excel鐨勬枃浠跺湴鍧�
+//	 */
+//	@Override
+//	public String createImportExcel(String codeClassifyOid, boolean isHistory) {
+//		List<CodeClstemplateVO> templateVOList=new ArrayList<>();
+//
+//		VciBaseUtil.alertNotNull("瀵煎嚭妯℃澘","瀵煎嚭鐨勯厤缃�",codeClassifyOid,"涓婚搴撳垎绫荤殑涓婚敭");
+//
+//		CodeClassifyVO codeClassifyVO = classifyService.getObjectByOid(codeClassifyOid);
+//
+//		if(isHistory){
+//			templateVOList= templateService.childTemplates(codeClassifyOid);
+//		}else{
+//			//鎵炬ā鏉�
+//			CodeClstemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(codeClassifyOid);
+//			templateVOList.add(templateVO);
 //		}
-//		boolean isCreateUUid=false;
-//		List<ClientBusinessObject> needSaveCboList = cboList.stream().filter(cbo -> {
-//			String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
-//			return !errorMap.containsKey(rowIndex);
-//		}).collect(Collectors.toList());
-//		//鐩镐技鏍¢獙
-//		Map<String,String>resembleMap=new HashMap<>();
-//		List<DataResembleVO> dataResembleVOS=new ArrayList<>();
-//		String btmtypeid= classifyFullInfo.getTopClassifyVO().getBtmtypeid();
-//		bathcResembleQuery(orderDTO.getCodeClassifyOid(),templateVO,needSaveCboList,resembleMap,btmtypeid,dataResembleVOS);
-//		if(resembleMap.size()>0) {
-//			isCreateUUid=true;
-//			if(!CollectionUtils.isEmpty(dataResembleVOS)) {
-//				redisService.setCacheList(uuid + "-resemble-data", dataResembleVOS);
-//				createRedisDatas(uuid + "-resemble",templateVO, rowIndexCboMap, dataSet, fieldIndexMap, resembleMap, false);
+//
+//		WriteExcelOption eo = new WriteExcelOption();
+//		eo.setAppend(true);
+//		//澧炲姞妯℃澘鐨勪俊鎭鍏�
+//		LinkedList<WriteExcelData> tempEDList = new LinkedList<>();
+//		tempEDList.add(new WriteExcelData(0,0,"妯℃澘涓婚敭"));
+//		tempEDList.add(new WriteExcelData(0,1,"妯℃澘浠e彿"));
+//		tempEDList.add(new WriteExcelData(0,2,"妯℃澘鍚嶇О"));
+//		for(int j=0;j<templateVOList.size();j++){
+//			CodeClstemplateVO  templateVO=templateVOList.get(j);
+//			CodeClassifyTemplateVO codeClassifyTemplateVO = new CodeClassifyTemplateVO();
+//			BeanUtils.copyProperties(templateVO,codeClassifyTemplateVO);
+//			//缁勫悎鏍煎紡鐨勪笉瀵煎叆锛�
+//			// 鏋氫妇鐨勬彁渚涘簭鍒楃殑閫夋嫨
+//			//鏃堕棿鍏ㄩ儴缁熶竴涓簓yyy-MM-dd HH:mm:ss
+//			//鍙傜収鐨勮嚜琛岃緭鍏ュ悕绉�
+//			//鍒嗙被娉ㄥ叆鐨勪笉鐢紝閮芥槸瀵煎叆鍚庤嚜鍔ㄥ鐞嗙殑
+//			//缂栫爜锛岀姸鎬佺瓑瀛楁涓嶅鍏�
+//			List<CodeClassifyTemplateAttrVO> templateAttrVOS = codeClassifyTemplateVO.getAttributes().stream().filter(s ->
+//				!DEFAULT_ATTR_LIST.contains(s.getId())
+//					&& StringUtils.isBlank(s.getComponentRule())
+//					&& StringUtils.isBlank(s.getClassifyInvokeAttr())
+//					&& (isHistory || VciBaseUtil.getBoolean(s.getFormDisplayFlag()))
+//			).collect(Collectors.toList());
+//
+//			if(CollectionUtils.isEmpty(templateAttrVOS)){
+//				throw new VciBaseException("妯℃澘娌℃湁閰嶇疆浠讳綍銆愯〃鍗曟樉绀恒�戜负銆愭槸銆戠殑灞炴��");
 //			}
-//		}
-//		//鎺掗櫎閿欒鐨勶紝鍓╀笅姝g‘鐨�
-//		Map<String,String> newErrorMap=new HashMap<>();
-//		newErrorMap.putAll(resembleMap);
-//		newErrorMap.putAll(errorMap);
-//		needSaveCboList = cboList.stream().filter(cbo -> {
-//			String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
-//			return !newErrorMap.containsKey(rowIndex);
-//		}).collect(Collectors.toList());
-//		if((errorMap.size()>0&&needSaveCboList.size()>0)||resembleMap.size()>0){
-//			isCreateUUid=true;
-//		}
-//		createRedisByCodeClassify(uuid + "-class",templateVO,dataSet,fieldIndexMap,false);
-//		if(newErrorMap.size()>0) {
-//			createRedisDatas(uuid + "-ok",templateVO, rowIndexCboMap, dataSet, fieldIndexMap, newErrorMap,true);
-//		}else {
-//			uuid="";
-//			//瑕佹妸浠ヤ笂鐨勯敊璇殑閮芥姏鍑哄悗锛屽啀缁х画澶勭悊鏃堕棿鍜岀粍鍚堣鍒�
-//			needSaveCboList = cboList.stream().filter(cbo -> {
-//				String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
-//				return !newErrorMap.containsKey(rowIndex);
-//			}).collect(Collectors.toList());
-//			if (!CollectionUtils.isEmpty(needSaveCboList)) {
-//				//9.鎴戜滑澶勭悊涓氬姟鏁版嵁
-//				//鐢熸垚缂栫爜鐨勫唴瀹�
-//				codeList = productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(), needSaveCboList);
-//				//濡傛灉鏄紪鐮佺敓鎴愬け璐ワ紝鍒欑洿鎺ュ氨澶辫触浜嗭紝鍏朵粬鐨勫垽鏂嚭鏉ユ湁閿欒鐨勬垜浠兘缁熶竴杩斿洖鍒癳xcel閲岄潰
-//				engineService.batchSaveSelectChar(templateVO, needSaveCboList);
+//			List<CodeClassifyTemplateAttrVO> idAttrVOList = codeClassifyTemplateVO.getAttributes().stream().filter(s -> s.getId().equalsIgnoreCase(CODE_FIELD)).collect(Collectors.toList());
+//			LinkedList<WriteExcelData> excelDataList = new LinkedList<>();
+//			Workbook workbook = new HSSFWorkbook();
+//			if(isHistory){
+//				excelDataList.add(new WriteExcelData(0,0,"鍒嗙被璺緞"));
+//				excelDataList.add(new WriteExcelData(0,1,"鐮佹瀹藉害"));
+//				excelDataList.add(new WriteExcelData(0,2,!CollectionUtils.isEmpty(idAttrVOList)?idAttrVOList.get(0).getName():"浼佷笟缂栫爜"));
 //			}
+//			for (int i = 0; i < templateAttrVOS.size(); i++) {
+//				CodeClassifyTemplateAttrVO attrVO = templateAttrVOS.get(i);
+//
+//				Object text = attrVO.getName();
+//				text = exportKeyAndRequired(workbook,attrVO,text);
+//				int colIndex = (isHistory?3:0) + i;
+//				WriteExcelData excelData = new WriteExcelData(0, colIndex, text);
+//				if(StringUtils.isNotBlank(attrVO.getCodeDateFormat())
+//					|| VciFieldTypeEnum.VTDateTime.name().equalsIgnoreCase(attrVO.getAttributeDataType())
+//					|| VciFieldTypeEnum.VTDate.name().equalsIgnoreCase(attrVO.getAttributeDataType())
+//					||VciFieldTypeEnum.VTTime.name().equalsIgnoreCase(attrVO.getAttributeDataType())){
+//					excelData.setDateFormat(VciDateUtil.DateTimeFormat);
+//				}
+//				if(text instanceof RichTextString){
+//					excelData.setFontColor(String.valueOf(HSSFColor.HSSFColorPredefined.RED.getIndex()));
+//				}
+//				excelDataList.add(excelData);
+//				if(StringUtils.isNotBlank(attrVO.getEnumString()) || StringUtils.isNotBlank(attrVO.getEnumId())){
+//					//娣诲姞鏁版嵁鏈夋晥鎬�
+//					List<String> enumValueList = new ArrayList<>();
+//					enumValueList.add("");
+//					List<KeyValue> valueList = engineService.listComboboxItems(attrVO);
+//					if(!CollectionUtils.isEmpty(valueList)){
+//						valueList.stream().forEach(kv->{
+//							enumValueList.add(kv.getValue());
+//						});
+//					}
+//					//榛樿鍔�1涓囨潯
+//					WriteExcelData ed = new WriteExcelData(1,colIndex,"");
+//					ed.setRowTo(100);
+//					ed.setColTo(colIndex);
+//					ed.setValidation(true);
+//					ed.setValidationDataList(enumValueList);
+//					ed.setValidationErrorMsg("璇峰湪搴忓垪涓�夋嫨姝g‘鐨勫��");
+//					excelDataList.add(ed);
+//				}
+//				if(VciFieldTypeEnum.VTBoolean.name().equalsIgnoreCase(attrVO.getAttributeDataType())){
+//					List<String> booleanList = new ArrayList<>();
+//
+//					booleanList.add("鏄�");
+//					booleanList.add("鍚�");
+//					//榛樿鍔�1涓囨潯
+//					WriteExcelData ed = new WriteExcelData(1,colIndex,"");
+//					ed.setRowTo(100);
+//					ed.setColTo(colIndex);
+//					ed.setValidation(true);
+//					ed.setValidationDataList(booleanList);
+//					ed.setValidationErrorMsg("璇峰湪搴忓垪涓�夋嫨姝g‘鐨勫��");
+//					excelDataList.add(ed);
+//				}
+//			}
+//			eo.addSheetDataList(j+templateVO.getName(),excelDataList);
+//			tempEDList.add(new WriteExcelData(j+1,0,templateVO.getOid()));
+//			tempEDList.add(new WriteExcelData(j+1,1,templateVO.getId()));
+//			tempEDList.add(new WriteExcelData(j+1,2,templateVO.getName()));
 //		}
-//		if(!isCreateUUid){
-//			return uuid="";
+//		String excelName = LocalFileUtil.getDefaultTempFolder() + File.separator + codeClassifyVO.getName() + (isHistory?"_鍘嗗彶鏁版嵁瀵煎叆妯℃澘.xls": "_瀵煎叆妯℃澘.xls");
+//		eo.addSheetDataList(templateVOList.size()+"妯℃澘淇℃伅銆愯鍕垮垹闄ゆ垨绉诲姩銆�",tempEDList);
+//		ExcelUtil.writeDataToFile(excelName,eo);
+//		return excelName;
+//	}
+//
+//	/**
+//	 * 瀵煎嚭鐨勬椂鍊欏皝瑁呭繀杈撳拰鍏抽敭灞炴��
+//	 * @param attrVO 灞炴�х殑鏄剧ず瀵硅薄
+//	 * @param text 鍗曞厓鏍肩殑鍊�
+//	 */
+//	private Object exportKeyAndRequired(Workbook workbook,CodeClassifyTemplateAttrVO attrVO,Object text){
+//		//蹇呰緭鍔�*锛屽叧閿睘鎬т负钃濊壊
+//		if (VciBaseUtil.getBoolean(attrVO.getRequireFlag()) || VciBaseUtil.getBoolean(attrVO.getKeyAttrFlag())) {
+//			String value = text.toString();
+//			if(VciBaseUtil.getBoolean(attrVO.getRequireFlag())) {
+//				value += REQUIRED_CHAR;
+//			}
+//			if(VciBaseUtil.getBoolean(attrVO.getKeyAttrFlag())){
+//				value += KEY_ATTR_CHAR;
+//			}
+//			RichTextString ts = new HSSFRichTextString(value);
+//			if(VciBaseUtil.getBoolean(attrVO.getRequireFlag())){
+//				Font font =  workbook.createFont();
+//				font.setColor(HSSFColor.HSSFColorPredefined.RED.getIndex());
+//				ts.applyFont(font);
+//			}
+//
+//			if(VciBaseUtil.getBoolean(attrVO.getKeyAttrFlag())){
+//				Font font =  workbook.createFont();
+//				font.setColor(HSSFColor.HSSFColorPredefined.BLUE.getIndex());
+//				ts.applyFont(font);
+//			}
+//			return ts;
 //		}
-//		return uuid;
-		return null;
-	}
+//		return text;
+//	}
+//
+//
+//	/**
+//	 * 鎵归噺鐢宠缂栫爜鏁版嵁
+//	 *
+//	 * @param orderDTO 缂栫爜鐢宠淇℃伅锛屽繀椤诲寘鍚垎绫讳富閿拰鐮佹鐨勪俊鎭�
+//	 * @param file     excel鏂囦欢鐨勪俊鎭�
+//	 * @return  鏈夐敊璇俊鎭殑excel鐨勬枃浠�
+//	 */
+//	@Override
+//	public CodeImProtRusultVO batchImportCode(CodeOrderDTO orderDTO, File file) {
+//		VciBaseUtil.alertNotNull(orderDTO,"缂栫爜鐢宠鐩稿叧鐨勬暟鎹�",orderDTO.getCodeClassifyOid(),"涓婚搴撳垎绫讳富閿�");
+//		ReadExcelOption reo = new ReadExcelOption();
+//		reo.setReadAllSheet(true);
+//		List<SheetDataSet> sheetDataSetList = ExcelUtil.readDataObjectFromExcel(file,null,reo);
+//		if(CollectionUtils.isEmpty(sheetDataSetList) || CollectionUtils.isEmpty(sheetDataSetList.get(0).getRowData())
+//			||sheetDataSetList.get(0).getRowData().size()<1){
+//			throw new VciBaseException("娌℃湁璇诲彇鍒颁换浣曠殑鏁版嵁");
+//		}
+//		if(sheetDataSetList.size()>LIMIT+1){
+//			throw new VciBaseException("涓轰簡淇濊瘉绯荤粺鐨勭ǔ瀹氭�э紝璇蜂竴娆′笉瑕佸鍏ヨ秴杩�1涓囨潯鐨勬暟鎹�");
+//		}
+//		//鍏堟壘鍒版瘡涓�琛岀殑鏍囬锛岀劧鍚庢牴鎹爣棰樻潵鑾峰彇瀵瑰簲鐨勫睘鎬�
+//		SheetDataSet dataSet = sheetDataSetList.get(0);
+//		//鎵剧涓�琛岋紝涓轰簡鎵炬爣棰�
+//		CodeClstemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(orderDTO.getCodeClassifyOid());
+//
+//		//鏍¢獙妯℃澘鏄笉鏄渶鏂扮殑
+//		checkTemplateSync(sheetDataSetList,templateVO,0);
+//		//鍏堜笉鐢ㄧ灞炴�ф槸鍚﹂兘瀛樺湪锛屽厛杞崲涓�涓嬫暟鎹�
+//		Map<String,String> errorMap = new HashMap<>();
+//		String redisUUid=batchImportCodes(orderDTO,templateVO,dataSet,errorMap,true);
+//		CodeImProtRusultVO codeImProtRusultVO = new CodeImProtRusultVO();
+//		List<String> needRowIndexList = new ArrayList<>();
+////		String filePath = returnErrorToExcel(dataSet.getRowData(), errorMap, needRowIndexList, dataSet.getColName());
+////		if(StringUtils.isNotBlank(filePath)) {
+////			codeImProtRusultVO.setFilePath(filePath);
+////		}
+////		if(StringUtils.isNotBlank(redisUUid)){
+////			codeImProtRusultVO.setRedisUuid(redisUUid);
+////		}
+//		return null;
+////		return codeImProtRusultVO;
+//	}
+//
+//	/**
+//	 * 鏍¢獙妯℃澘鏄惁涓哄悓姝ョ殑
+//	 * @param sheetDataSetList excel閲岀殑鍐呭
+//	 * @param templateVO 妯℃澘鐨勪俊鎭�
+//	 */
+//	private void checkTemplateSync(List<SheetDataSet> sheetDataSetList,CodeClstemplateVO templateVO,int i){
+//		String templateOidInExcel = "";
+//		String templateName="";
+//		if(!CollectionUtils.isEmpty(sheetDataSetList)
+//			&& sheetDataSetList.size()>1 && !CollectionUtils.isEmpty(sheetDataSetList.get(sheetDataSetList.size()-1).getColName())){
+//			List<SheetRowData>  rowData=  sheetDataSetList.get(sheetDataSetList.size()-1).getRowData();
+//			templateName=rowData.get(i).getData().get(2);
+//			templateOidInExcel=rowData.get(i).getData().get(0);
+//			//templateOidInExcel = sheetDataSetList.get(sheetDataSetList.size()-1).getColName().get(sheetDataSetList.size()-i);
+//		}
+//       /* if(!CollectionUtils.isEmpty(sheetDataSetList)
+//                && sheetDataSetList.size()>1 && !CollectionUtils.isEmpty(sheetDataSetList.get(sheetDataSetList.size()-1).getColName())){
+//            List<SheetRowData>  rowData=  sheetDataSetList.get(sheetDataSetList.size()-1).getRowData();
+//            templateOidInExcel=rowData.get(i).getData().get(0);
+//           //templateOidInExcel = sheetDataSetList.get(sheetDataSetList.size()-1).getColName().get(sheetDataSetList.size()-i);
+//        }*/
+//		if(StringUtils.isBlank(templateOidInExcel) || !templateOidInExcel.equalsIgnoreCase(templateVO.getOid())){
+//			throw new VciBaseException("妯℃澘銆�"+templateName+"銆戜腑鐨勬暟鎹幏鍙栫殑妯$増淇℃伅涓庡綋鍓嶆ā鏉夸笉鍖归厤锛岃纭繚excel鏂囦欢閲屾湁銆愭ā鏉夸俊鎭�-璇峰嬁绉诲姩鎴栧垹闄ゃ�戠殑宸ヤ綔琛紝涓旂‘淇濇瘡娆″鍏ラ兘鏄厛涓嬭浇鐨勫鍏ユā鏉垮悗娣诲姞鐨勬暟鎹�");
+//		}
+//
+//	}
+//
+//
+//	/***
+//	 * 鎵归噺澶勭悊鐢宠鏁版嵁
+//	 * @param orderDTO
+//	 * @param templateVO
+//	 * @param dataSet
+//	 * @return
+//	 */
+//	private String batchImportCodes(CodeOrderDTO orderDTO,CodeClstemplateVO templateVO,SheetDataSet dataSet,Map<String,String> errorMap,boolean isEnumType){
+//		List<String> codeList=new ArrayList<>();
+////		CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
+//		//瑙勫垯鐨勪富閿渶瑕佸幓鑾峰彇
+////		CodeRuleVO ruleVO = engineService.getCodeRuleByClassifyFullInfo(classifyFullInfo);
+////		//1.鍒ゆ柇瑙勫垯涓櫎浜嗘祦姘寸爜娈碉紝鏄惁鏈夊叾浠栫爜娈�
+////		engineService.checkSecValueOnOrder(ruleVO,orderDTO);
+////		List<SheetRowData> rowDataList = dataSet.getRowData();
+////
+////		//闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆
+////		List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s ->
+////			!DEFAULT_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormdisplayflag())
+////		).collect(Collectors.toList());
+////		Map<Integer/**鍒楀彿**/,String/**瀛楁鐨勫悕绉�**/> fieldIndexMap = new HashMap<>();
+////		List<String> titleRowData = dataSet.getColName();
+////		Map<String/**涓枃鍚嶇О**/, String/**鑻辨枃鍚嶇О**/> attrNameIdMap = attrVOS.stream().collect(Collectors.toMap(s -> s.getName(), t -> t.getId().toLowerCase(Locale.ROOT),(o1, o2)->o2));
+////		getFieldIndexMap(titleRowData,attrNameIdMap,fieldIndexMap);
+////
+////		//闇�瑕佸垽鏂槸鍚︽墍鏈夌殑灞炴�ч兘鍦ㄦā鏉夸笂浜�
+////		List<CodeClassifyTemplateAttrVO> unExistAttrVOs = attrVOS.stream().filter(s -> !fieldIndexMap.containsValue(s.getId().toLowerCase(Locale.ROOT))
+////			&& StringUtils.isBlank(s.getComponentrule()) && StringUtils.isBlank(s.getClassifyinvokeattr())//缁勫悎瑙勫垯鍜屽垎绫绘敞鍏ョ‘瀹炴病缁欑敤鎴峰鍑哄幓
+////		).collect(Collectors.toList());
+////		if(!CollectionUtils.isEmpty(unExistAttrVOs)){
+////			throw new VciBaseException("銆�" + unExistAttrVOs.stream().map(CodeClassifyTemplateAttrVO::getName) + "銆戣繖浜涘睘鎬у湪鍒楄〃涓病鏈夋壘鍒�");
+////		}
+////		List<ClientBusinessObject> cboList = new ArrayList<>();
+////		String fullPath = getFullPath(classifyFullInfo);
+////		excelToCbo(classifyFullInfo,fieldIndexMap,rowDataList,templateVO,cboList,fullPath,true);
+////
+////		//閮借浆鎹㈠畬浜嗐�傞渶瑕佹壒閲忔鏌�
+////		//濡傛灉鍑洪敊浜嗭紝鎴戜滑渚濈劧鎵ц鏈夋晥鐨勬暟鎹紝鏃犳晥鐨勬暟鎹啓鍥炲埌excel涓�
+////		//2.鍒ゆ柇蹇呰緭椤广�傘�傞渶瑕佸叏閮ㄧ殑灞炴�э紝濡傛灉鏄繀杈擄紝浣嗘槸琛ㄥ崟閲岄潰涓嶆樉绀虹殑锛屽彧鑳芥槸鍒嗙被娉ㄥ叆鎴栬�呯粍鍚堣鍒�
+////		batchCheckRequiredAttrOnOrder(templateVO,cboList,errorMap);
+////		//3.鍒ゆ柇鍏抽敭灞炴��
+////		CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList);
+////		Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList();
+////		Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList();
+////		if(!CollectionUtils.isEmpty(selfRepeatRowIndexList)){
+////			selfRepeatRowIndexList.stream().forEach(rowIndex->{
+////				errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍦ㄥ綋鍓嶅鐞嗙殑鏁版嵁鏂囦欢涓叧閿睘鎬ч噸澶�" );
+////			});
+////		}
+////		if(!CollectionUtils.isEmpty(keyAttrRepeatRowIndexList)){
+////			keyAttrRepeatRowIndexList.stream().forEach(rowIndex->{
+////				errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅" );
+////			});
+////		}
+////		//鍒嗙被娉ㄥ叆
+////		batchSwitchClassifyAttrOnOrder(attrVOS,cboList,classifyFullInfo,false);
+////		//boolean
+////		reSwitchBooleanAttrOnOrder(attrVOS,cboList);
+////		//4.鏍¢獙瑙勫垯
+////		batchCheckVerifyOnOrder(attrVOS, cboList,errorMap);
+////		if(isEnumType) {//鏄惁闇�瑕佹牎楠屾灇涓�/鍙傜収
+////			//5.鏍¢獙鏋氫妇鏄惁姝g‘
+////			batchSwitchEnumAttrOnOrder(attrVOS, cboList, errorMap);
+////			//7.澶勭悊鍙傜収鐨勬儏鍐�
+////			batchSwitchReferAttrOnOrder(attrVOS,cboList,errorMap);
+////		}
+////		//6.鏃堕棿鏍煎紡鐨勯獙璇�
+////		//6.鏃堕棿鐨勶紝蹇呴』缁熶竴涓簓yyy-MM-dd HH:mm:ss
+////		batchSwitchDateAttrOnOrder(attrVOS,cboList,errorMap);
+////		//鏈�鍚庡紕缁勫悎瑙勫垯
+////		batchSwitchComponentAttrOnOrder(attrVOS,cboList);
+////		String uuid=redisService.getUUIDEveryDay();
+////		Map<String, ClientBusinessObject> rowIndexCboMap = cboList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getAttributeValue((IMPORT_ROW_INDEX)), t -> t));
+////
+////		if(errorMap.size()>0) {
+////			createRedisDatas(uuid + "-error",templateVO, rowIndexCboMap, dataSet, fieldIndexMap, errorMap,false);
+////		}
+////		boolean isCreateUUid=false;
+////		List<ClientBusinessObject> needSaveCboList = cboList.stream().filter(cbo -> {
+////			String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
+////			return !errorMap.containsKey(rowIndex);
+////		}).collect(Collectors.toList());
+////		//鐩镐技鏍¢獙
+////		Map<String,String>resembleMap=new HashMap<>();
+////		List<DataResembleVO> dataResembleVOS=new ArrayList<>();
+////		String btmtypeid= classifyFullInfo.getTopClassifyVO().getBtmtypeid();
+////		bathcResembleQuery(orderDTO.getCodeClassifyOid(),templateVO,needSaveCboList,resembleMap,btmtypeid,dataResembleVOS);
+////		if(resembleMap.size()>0) {
+////			isCreateUUid=true;
+////			if(!CollectionUtils.isEmpty(dataResembleVOS)) {
+////				redisService.setCacheList(uuid + "-resemble-data", dataResembleVOS);
+////				createRedisDatas(uuid + "-resemble",templateVO, rowIndexCboMap, dataSet, fieldIndexMap, resembleMap, false);
+////			}
+////		}
+////		//鎺掗櫎閿欒鐨勶紝鍓╀笅姝g‘鐨�
+////		Map<String,String> newErrorMap=new HashMap<>();
+////		newErrorMap.putAll(resembleMap);
+////		newErrorMap.putAll(errorMap);
+////		needSaveCboList = cboList.stream().filter(cbo -> {
+////			String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
+////			return !newErrorMap.containsKey(rowIndex);
+////		}).collect(Collectors.toList());
+////		if((errorMap.size()>0&&needSaveCboList.size()>0)||resembleMap.size()>0){
+////			isCreateUUid=true;
+////		}
+////		createRedisByCodeClassify(uuid + "-class",templateVO,dataSet,fieldIndexMap,false);
+////		if(newErrorMap.size()>0) {
+////			createRedisDatas(uuid + "-ok",templateVO, rowIndexCboMap, dataSet, fieldIndexMap, newErrorMap,true);
+////		}else {
+////			uuid="";
+////			//瑕佹妸浠ヤ笂鐨勯敊璇殑閮芥姏鍑哄悗锛屽啀缁х画澶勭悊鏃堕棿鍜岀粍鍚堣鍒�
+////			needSaveCboList = cboList.stream().filter(cbo -> {
+////				String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
+////				return !newErrorMap.containsKey(rowIndex);
+////			}).collect(Collectors.toList());
+////			if (!CollectionUtils.isEmpty(needSaveCboList)) {
+////				//9.鎴戜滑澶勭悊涓氬姟鏁版嵁
+////				//鐢熸垚缂栫爜鐨勫唴瀹�
+////				codeList = productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(), needSaveCboList);
+////				//濡傛灉鏄紪鐮佺敓鎴愬け璐ワ紝鍒欑洿鎺ュ氨澶辫触浜嗭紝鍏朵粬鐨勫垽鏂嚭鏉ユ湁閿欒鐨勬垜浠兘缁熶竴杩斿洖鍒癳xcel閲岄潰
+////				engineService.batchSaveSelectChar(templateVO, needSaveCboList);
+////			}
+////		}
+////		if(!isCreateUUid){
+////			return uuid="";
+////		}
+////		return uuid;
+//		return null;
+//	}
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java
index 6e6559a..9c28997 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java
@@ -11,22 +11,19 @@
 import com.vci.ubcs.code.enumpack.CodeGetValueTypeEnum;
 import com.vci.ubcs.code.enumpack.CodeLevelTypeEnum;
 import com.vci.ubcs.code.enumpack.CodeSecTypeEnum;
-import com.vci.ubcs.code.mapper.CodeAllCodeMapper;
 import com.vci.ubcs.code.mapper.CodeSerialValueMapper;
 import com.vci.ubcs.code.service.ICodeWupinService;
 import com.vci.ubcs.code.service.MdmProductCodeService;
-import com.vci.ubcs.code.vo.CodeClstemplateVO;
 import com.vci.ubcs.code.vo.pagemodel.CodeBasicSecVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO;
 import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
 import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
 import com.vci.ubcs.starter.exception.VciBaseException;
 import com.vci.ubcs.starter.web.constant.QueryOptionConstant;
 import com.vci.ubcs.starter.web.constant.RegExpConstant;
 import com.vci.ubcs.starter.web.enumpck.OsCodeFillTypeEnum;
-import com.vci.ubcs.starter.web.pagemodel.PageHelper;
 import com.vci.ubcs.starter.web.util.VciBaseUtil;
 import com.vci.ubcs.starter.web.util.VciDateUtil;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
@@ -57,7 +54,7 @@
 	private ICodeWupinService iCodeWupinService;
 
 	@Override
-	public List<String> productCodeAndSaveData(CodeClassifyFullInfoBO classifyFullInfoBO, CodeClstemplateVO templateVO, CodeRuleVO ruleVO, List<CodeOrderSecDTO> secDTOList, List<CodeWupinEntity> dataCBOList) {
+	public List<String> productCodeAndSaveData(CodeClassifyFullInfoBO classifyFullInfoBO, CodeClassifyTemplateVO templateVO, CodeRuleVO ruleVO, List<CodeOrderSecDTO> secDTOList, List<CodeWupinEntity> dataCBOList) {
 //		BatchCBO batchCBO = new BatchCBO();
 //		WebUtil.setPersistence(false);
 //		dataCBOList = dataCBOList.stream().sorted(((o1, o2) -> o1.getCreateTime().compareTo(o2.getCreateTime()))).collect(Collectors.toList());
@@ -588,7 +585,7 @@
 	 * @param allCodeDOList 鎵�鏈夌殑鐮佸�肩殑瀵硅薄鍒楄〃
 	 */
 	private void wrapperAllCode(CodeClassifyFullInfoBO classifyFullInfoBO,CodeRuleVO ruleVO,
-								CodeWupinEntity cbo,CodeClstemplateVO templateVO,
+								CodeWupinEntity cbo,CodeClassifyTemplateVO templateVO,
 								List<CodeAllCode> allCodeDOList,String serialUnitString,String serialValueString){
 		CodeAllCode allCodeDO = new CodeAllCode();
 		allCodeDO.setCodeClassifyOid(classifyFullInfoBO.getCurrentClassifyVO().getOid());
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeClassifyProcessTempWrapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeClassifyProcessTempWrapper.java
index 04a9cae..c35d782 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeClassifyProcessTempWrapper.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeClassifyProcessTempWrapper.java
@@ -1,11 +1,8 @@
 package com.vci.ubcs.code.wrapper;
 
 import com.vci.ubcs.code.entity.CodeClassifyProcessTemp;
-import com.vci.ubcs.code.entity.CodeClassifyValue;
 import com.vci.ubcs.code.enumpack.CodeClassifyProcessUseEnum;
-import com.vci.ubcs.code.vo.CodeClsflowtempVO;
 import com.vci.ubcs.code.vo.pagemodel.CodeClassifyProcessTempVO;
-import com.vci.ubcs.code.vo.pagemodel.CodeClassifyValueVO;
 import org.springblade.core.mp.support.BaseEntityWrapper;
 import org.springblade.core.tool.utils.BeanUtil;
 
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/CodeClassifyTemplateAttrWrapper.java
similarity index 87%
rename from Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeClstempattrWrapper.java
rename to Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeClassifyTemplateAttrWrapper.java
index 101088c..e6f4d47 100644
--- 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/CodeClassifyTemplateAttrWrapper.java
@@ -29,10 +29,10 @@
  * @author yuxc
  * @since 2023-04-19
  */
-public class CodeClstempattrWrapper extends BaseEntityWrapper<CodeClassifyTemplateAttr, CodeClassifyTemplateAttrVO>  {
+public class CodeClassifyTemplateAttrWrapper extends BaseEntityWrapper<CodeClassifyTemplateAttr, CodeClassifyTemplateAttrVO>  {
 
-	public static CodeClstempattrWrapper build() {
-		return new CodeClstempattrWrapper();
+	public static CodeClassifyTemplateAttrWrapper build() {
+		return new CodeClassifyTemplateAttrWrapper();
  	}
 
 	@Override
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/PlCodeClstemplateWrapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeClassifyTemplateWrapper.java
similarity index 72%
rename from Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/PlCodeClstemplateWrapper.java
rename to Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeClassifyTemplateWrapper.java
index e598d48..3688d3a 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/PlCodeClstemplateWrapper.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeClassifyTemplateWrapper.java
@@ -16,10 +16,11 @@
  */
 package com.vci.ubcs.code.wrapper;
 
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO;
 import org.springblade.core.mp.support.BaseEntityWrapper;
 import org.springblade.core.tool.utils.BeanUtil;
-import com.vci.ubcs.code.entity.CodeClstemplateEntity;
-import com.vci.ubcs.code.vo.CodeClstemplateVO;
+import com.vci.ubcs.code.entity.CodeClassifyTemplate;
+
 import java.util.Objects;
 
 /**
@@ -28,15 +29,15 @@
  * @author yuxc
  * @since 2023-04-10
  */
-public class PlCodeClstemplateWrapper extends BaseEntityWrapper<CodeClstemplateEntity, CodeClstemplateVO>  {
+public class CodeClassifyTemplateWrapper extends BaseEntityWrapper<CodeClassifyTemplate, CodeClassifyTemplateVO>  {
 
-	public static PlCodeClstemplateWrapper build() {
-		return new PlCodeClstemplateWrapper();
+	public static CodeClassifyTemplateWrapper build() {
+		return new CodeClassifyTemplateWrapper();
  	}
 
 	@Override
-	public CodeClstemplateVO entityVO(CodeClstemplateEntity plCodeClstemplate) {
-		CodeClstemplateVO plCodeClstemplateVO = Objects.requireNonNull(BeanUtil.copy(plCodeClstemplate, CodeClstemplateVO.class));
+	public CodeClassifyTemplateVO entityVO(CodeClassifyTemplate plCodeClstemplate) {
+		CodeClassifyTemplateVO plCodeClstemplateVO = Objects.requireNonNull(BeanUtil.copy(plCodeClstemplate, CodeClassifyTemplateVO.class));
 
 		//User createUser = UserCache.getUser(plCodeClstemplate.getCreateUser());
 		//User updateUser = UserCache.getUser(plCodeClstemplate.getUpdateUser());
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
deleted file mode 100644
index 571b1af..0000000
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeClsflowtempWrapper.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- *      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/PlCodeKeyattrrepeatWrapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeKeyAttrRepeatWrapper.java
similarity index 73%
rename from Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/PlCodeKeyattrrepeatWrapper.java
rename to Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeKeyAttrRepeatWrapper.java
index a427bd5..1d140ed 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/PlCodeKeyattrrepeatWrapper.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeKeyAttrRepeatWrapper.java
@@ -16,10 +16,10 @@
  */
 package com.vci.ubcs.code.wrapper;
 
-import com.vci.ubcs.code.entity.CodeKeyattrrepeatEntity;
+import com.vci.ubcs.code.entity.CodeKeyAttrRepeat;
 import org.springblade.core.mp.support.BaseEntityWrapper;
 import org.springblade.core.tool.utils.BeanUtil;
-import com.vci.ubcs.code.vo.CodeKeyattrrepeatVO;
+import com.vci.ubcs.code.vo.CodeKeyAttrRepeatVO;
 import java.util.Objects;
 
 /**
@@ -28,15 +28,15 @@
  * @author yuxc
  * @since 2023-04-03
  */
-public class PlCodeKeyattrrepeatWrapper extends BaseEntityWrapper<CodeKeyattrrepeatEntity, CodeKeyattrrepeatVO>  {
+public class CodeKeyAttrRepeatWrapper extends BaseEntityWrapper<CodeKeyAttrRepeat, CodeKeyAttrRepeatVO>  {
 
-	public static PlCodeKeyattrrepeatWrapper build() {
-		return new PlCodeKeyattrrepeatWrapper();
+	public static CodeKeyAttrRepeatWrapper build() {
+		return new CodeKeyAttrRepeatWrapper();
  	}
 
 	@Override
-	public CodeKeyattrrepeatVO entityVO(CodeKeyattrrepeatEntity plCodeKeyattrrepeat) {
-		CodeKeyattrrepeatVO codeKeyattrrepeatVO = Objects.requireNonNull(BeanUtil.copy(plCodeKeyattrrepeat, CodeKeyattrrepeatVO.class));
+	public CodeKeyAttrRepeatVO entityVO(CodeKeyAttrRepeat plCodeKeyattrrepeat) {
+		CodeKeyAttrRepeatVO codeKeyattrrepeatVO = Objects.requireNonNull(BeanUtil.copy(plCodeKeyattrrepeat, CodeKeyAttrRepeatVO.class));
 
 		//User createUser = UserCache.getUser(plCodeKeyattrrepeat.getCreateUser());
 		//User updateUser = UserCache.getUser(plCodeKeyattrrepeat.getUpdateUser());
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/CodeClassifyTemplateMapper.xml
similarity index 98%
rename from Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeClstemplateMapper.xml
rename to Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeClassifyTemplateMapper.xml
index f3c03fa..ff8c8b0 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/CodeClassifyTemplateMapper.xml
@@ -1,9 +1,9 @@
 <?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.CodeClstemplateMapper">
+<mapper namespace="com.vci.ubcs.code.mapper.CodeClassifyTemplateMapper">
 
     <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
-    <resultMap id="plCodeClstemplateResultMap" type="com.vci.ubcs.code.entity.CodeClstemplateEntity">
+    <resultMap id="plCodeClstemplateResultMap" type="com.vci.ubcs.code.entity.CodeClassifyTemplate">
         <result column="OID" property="oid"/>
         <result column="REVISIONOID" property="revisionOid"/>
         <result column="NAMEOID" property="nameOid"/>
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
deleted file mode 100644
index ca09a93..0000000
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeClsflowtempMapper.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?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="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="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
deleted file mode 100644
index 39256e3..0000000
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeClstempattrMapper.xml
+++ /dev/null
@@ -1,104 +0,0 @@
-<?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 1=1
-    </select>
-
-    <select id="selectByClassifytemplateoid" resultMap="CodeClstempattrResultMap">
-        select * from PL_CODE_CLSTEMPATTR where classifytemplateoid in (${classifytemplateoid})
-    </select>
-
-    <select id="selectRefByOid" resultMap="CodeClstempattrResultMap">
-        select  codeclstempattr0.OID                    as oid
-        from PL_CODE_CLSTEMPATTR codeclstempattr0
-                 left join PL_CODE_CLSTEMPLATE 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/CodeKeyattrrepeatMapper.xml b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeKeyAttrRepeatMapper.xml
similarity index 95%
rename from Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeKeyattrrepeatMapper.xml
rename to Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeKeyAttrRepeatMapper.xml
index b5ff8b4..06f54ca 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeKeyattrrepeatMapper.xml
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeKeyAttrRepeatMapper.xml
@@ -1,9 +1,9 @@
 <?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.CodeKeyattrrepeatMapper">
+<mapper namespace="com.vci.ubcs.code.mapper.CodeKeyAttrRepeatMapper">
 
     <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
-    <resultMap id="plCodeKeyattrrepeatResultMap" type="com.vci.ubcs.code.entity.CodeKeyattrrepeatEntity">
+    <resultMap id="plCodeKeyattrrepeatResultMap" type="com.vci.ubcs.code.entity.CodeKeyAttrRepeat">
         <result column="OID" property="oid"/>
         <result column="REVISIONOID" property="revisionoid"/>
         <result column="NAMEOID" property="nameoid"/>
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CommonsMapper.xml b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CommonsMapper.xml
index 34a7318..4cbd321 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CommonsMapper.xml
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CommonsMapper.xml
@@ -18,5 +18,9 @@
         ${inSql}
     </select>
 
+    <select id="selectBySql" resultType="java.util.Map">
+        ${inSql}
+    </select>
+
 
 </mapper>

--
Gitblit v1.9.3