From 39f59f013c74c4a2a5b35df4f4b389659610a219 Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期一, 04 十二月 2023 10:12:27 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/service/impl/DockingPreAttrMappingServiceImpl.java |    3 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyController.java                                              |    7 
 Source/UBCS-WEB/src/views/code/code.vue                                                                                                                |   49 +-
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/ExecGroupCodePortDataDTO.java                                           |   32 +
 Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/service/IDockingPreAttrMappingService.java         |    9 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeAllCodeController.java                                               |   75 ++++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmIOService.java                                                           |   24 +
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java                                                  |  568 +++++++++++++++++++++++++++++++
 Source/UBCS/ubcs-service-api/ubcs-applyjtcodeservice-api/src/main/java/com/vci/ubcs/code/applyjtcodeservice/feign/IMdmInterJtClient.java               |   11 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeFixedValueController.java                                            |    2 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeAndGroupCodeAttrRnageDTO.java                                       |   30 +
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeAllCodeMapper.java                                                       |   11 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/标准修订(跨年).json                                    |    0 
 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeCLassifyMapper.xml                                                                    |    6 
 Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/feigh/MdmInterJtClient.java                        |   22 +
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java                                           |   62 +++
 Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowModelController.java                                              |    4 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/标准系列修订(跨年).json                                  |    0 
 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeALlCodeMapper.xml                                                                     |   12 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java                                              |    4 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/标准系列申请.json                                      |    0 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeAndGroupCodeAttrMappingDTO.java                                     |   50 ++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java                                                 |   72 +++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyService.java                                                   |    4 
 24 files changed, 1,003 insertions(+), 54 deletions(-)

diff --git a/Source/UBCS-WEB/src/views/code/code.vue b/Source/UBCS-WEB/src/views/code/code.vue
index 4b0e705..9455958 100644
--- a/Source/UBCS-WEB/src/views/code/code.vue
+++ b/Source/UBCS-WEB/src/views/code/code.vue
@@ -2779,12 +2779,11 @@
       }
       //console.log(this.form);
       //涓篺orm缁戝畾鍊�
-      this.changeSectypeFormItems(condition == "add" ? null : row);
+      this.changeSectypeFormItems(condition == "add" ? null:row);
       this.addBasicCodeSettingBox = true;
     },
     /** 鏂板鍩虹鐮佹*/
     async saveOrEditBasicCode() {
-      this.isLoadingSecCodeAddBtn = true;
       if (
         this.selectionList[0].oid == null ||
         this.selectionList[0].oid == ""
@@ -2792,26 +2791,28 @@
         this.$message.warning("缂哄け蹇呰鍙傛暟锛岃閲嶆柊閫夋嫨缂栫爜瑙勫垯鍚庡啀璇�!");
         return;
       }
+      if (!this.checkForm()) {
+        return;
+      }
+      this.isLoadingSecCodeAddBtn = true;
       this.form.pkCodeRule = this.selectionList[0].oid;
       if (this.form.oid == "" || this.form.oid == null) {
-        if (this.checkForm()) {
-          await addSave(this.form).then(
-            () => {
-              this.$message({
-                type: "success",
-                message: "鎿嶄綔鎴愬姛!",
-              });
-              console.log(this.form)
-              // 鍏抽棴瀵硅瘽妗�
-              this.addBasicCodeSettingBox = false;
-              // 鐐瑰嚮鏂板鍩虹鐮佹,鍏抽棴绐楀彛涔嬪悗瑙﹀彂閲嶆柊鍔犺浇
-              this.loadBasic(this.selectionList[0]);
-            },
-            (error) => {
-              window.console.log(error);
-            }
-          );
-        }
+        await addSave(this.form).then(
+          () => {
+            this.$message({
+              type: "success",
+              message: "鎿嶄綔鎴愬姛!",
+            });
+            console.log(this.form)
+            // 鍏抽棴瀵硅瘽妗�
+            this.addBasicCodeSettingBox = false;
+            // 鐐瑰嚮鏂板鍩虹鐮佹,鍏抽棴绐楀彛涔嬪悗瑙﹀彂閲嶆柊鍔犺浇
+            this.loadBasic(this.selectionList[0]);
+          },
+          (error) => {
+            window.console.log(error);
+          }
+        );
       } else {
         // 鍙兘鍙傜収寮曠敤鐨勪笟鍔$被鍨嬩細鍙戠敓鏀瑰彉鎵�浠ヨ繖鍎跨洿鎺ュreferConfig鐨刯son杩涜鏀瑰彉
         if (
@@ -2825,7 +2826,7 @@
           // let referValueInfo = JSON.parse(this.form.referValueInfo);
           // referValueInfo.referType = this.form.referBtmId;
         }
-        let oldBasicSec = this.selectionBasicList.at(-1);
+        let oldBasicSec = this.selectionBasicList.slice(-1)[0];
         let secType = this.form.secType;
         Vue.set(this.form, 'isClearValue', false);
         if ((oldBasicSec.secType == "codefixedsec" || oldBasicSec.secType === "codeclassifysec") && oldBasicSec.secType != secType) {
@@ -3066,7 +3067,7 @@
       if (!this.tipsMessage(this.selectionBasicList)) {
         return;
       }
-      if (this.selectionList.at(-1).lcStatus != "Editing") {
+      if (this.selectionList.slice(-1)[0].lcStatus != "Editing") {
         this.$message.warning('缂栫爜瑙勫垯鐘舵�佷笉鏄�"缂栬緫涓�"锛屼笉鍏佽鍒犻櫎鐮佹!');
         return;
       }
@@ -3212,7 +3213,7 @@
     },
     /** 鍩虹鐮佹鍒锋柊鏃舵煡璇�*/
     refreshChangeBasicSec() {
-      this.loadBasic(this.selectionList.at(-1));
+      this.loadBasic(this.selectionList.slice(-1)[0]);
     },
     /** 鎿嶄綔鍩虹鐮佹涓悳绱㈡竻绌虹瓑鎸夐挳鐨勬樉绀�/闅愯棌*/
     hideBasicTable(hideBoolean) {
@@ -3288,7 +3289,7 @@
     },
     /** 鐮佹绫诲瀷鏀瑰彉鏃讹紝澧炲姞瀵瑰簲鐨刦orm琛ㄥ崟涓殑灞炴��*/
     changeSectypeFormItems(row) {
-      console.log(row)
+      //console.log(row)
       if (
         func.isEmpty(this.enumParam.secTypeList) ||
         this.enumParam.secTypeList.length == 0
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowModelController.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowModelController.java
index 2070d62..1f416c8 100644
--- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowModelController.java
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowModelController.java
@@ -18,19 +18,15 @@
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import com.vci.ubcs.flow.core.utils.TaskUtil;
 import com.vci.ubcs.flow.engine.entity.FlowModel;
 import com.vci.ubcs.flow.engine.service.FlowEngineService;
-import com.vci.ubcs.flow.engine.service.FlowTaskUserService;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.AllArgsConstructor;
-import org.springblade.core.launch.constant.FlowConstant;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
-import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
diff --git a/Source/UBCS/ubcs-service-api/ubcs-applyjtcodeservice-api/src/main/java/com/vci/ubcs/code/applyjtcodeservice/feign/IMdmInterJtClient.java b/Source/UBCS/ubcs-service-api/ubcs-applyjtcodeservice-api/src/main/java/com/vci/ubcs/code/applyjtcodeservice/feign/IMdmInterJtClient.java
index 42920c9..ddf5d0c 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-applyjtcodeservice-api/src/main/java/com/vci/ubcs/code/applyjtcodeservice/feign/IMdmInterJtClient.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-applyjtcodeservice-api/src/main/java/com/vci/ubcs/code/applyjtcodeservice/feign/IMdmInterJtClient.java
@@ -2,12 +2,15 @@
 
 
 import com.vci.ubcs.code.applyjtcodeservice.vo.DockingClassifyModelAttrVO;
+import com.vci.ubcs.code.applyjtcodeservice.vo.DockingPreAttrMappingVO;
 import com.vci.ubcs.code.applyjtcodeservice.vo.DockingReturnStoreVO;
 import org.springblade.core.tool.api.R;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
 
 
 /****
@@ -24,6 +27,7 @@
 	String RETURNGROUPCODE = API_PREFIX + "/getApplyGroupCode";
 	String PUBMDMMODEL = API_PREFIX + "/pubMdmModel";
 	String RECEIVE_EDITAPPLY =API_PREFIX + "/receiveEditApply";
+	String LIST_MAPPING=API_PREFIX + "/listMapping";
 
 	/***
 	 * 灏嗛泦鍥㈢敵璇锋垚鍔熺殑缂栫爜瀛樺叆鐩稿叧鏁版嵁涔嬩腑
@@ -34,6 +38,13 @@
 	@GetMapping(APPLYGROUPCODE)
 	public R applyGroupCode(@RequestParam("oids")String oids,@RequestParam("btmName")String btmName);
 
+	/***
+	 *
+	 * @param codeClassifyOid
+	 * @return
+	 */
+	@GetMapping(LIST_MAPPING)
+	public R<List<DockingPreAttrMappingVO>> list_mapping(@RequestParam("codeClassifyOid")String codeClassifyOid);
 
 	/***
 	 * 闆嗗洟缂栫爜鏁版嵁淇敼
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeAndGroupCodeAttrMappingDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeAndGroupCodeAttrMappingDTO.java
new file mode 100644
index 0000000..cc86306
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeAndGroupCodeAttrMappingDTO.java
@@ -0,0 +1,50 @@
+package com.vci.ubcs.code.dto;
+
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/***
+ * 闆嗗洟鍩熷睘鎬ф槧灏勫叧绯�
+ */
+@Data
+public class CodeAndGroupCodeAttrMappingDTO {
+
+	/***
+	 * 榛樿鍊�
+	 */
+	private String defaultValue;
+	/***
+	 *灞炴�d
+	 */
+	private String metaListId;
+
+	/***
+	 * 婧愬睘鎬у唴閮ㄥ悕绉�
+	 */
+	private String sourceAttrKey;
+
+	/***
+	 * 婧愬睘鎬у悕绉�
+	 */
+	private String sourceAttrName;
+
+	/**
+	 * 鐩爣灞炴�id
+	 */
+	private String targetAttrId;
+
+	/***
+	 * 鐩爣灞炴�у唴閮ㄥ悕绉�
+	 */
+	private String targetAttrKey;
+
+	/***
+	 * 鐩爣灞炴�у悕绉�
+	 */
+	private String targetAttrName;
+
+	List<CodeAndGroupCodeAttrRnageDTO> codeAndGroupCodeAttrRnageDTOList;
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeAndGroupCodeAttrRnageDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeAndGroupCodeAttrRnageDTO.java
new file mode 100644
index 0000000..f1818c2
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeAndGroupCodeAttrRnageDTO.java
@@ -0,0 +1,30 @@
+package com.vci.ubcs.code.dto;
+
+import lombok.Data;
+
+@Data
+public class CodeAndGroupCodeAttrRnageDTO {
+
+	/***
+	 *灞炴�d
+	 */
+	private String metaListId;
+
+	/**
+	 * 灞炴�ф灇涓炬樉绀哄悕绉�
+	 */
+	private  String numText;
+	/**
+	 * 灞炴�ф灇涓惧唴閮ㄥ悕绉�
+	 */
+	private String numTextValue;
+
+	/**
+	 * 婧愬睘鎬ф灇涓炬樉绀哄悕绉�
+	 */
+	private  String targetNumText;
+	/**
+	 * 婧愬睘鎬ф灇涓惧唴閮ㄥ悕绉�
+	 */
+	private String targetNumTextValue;
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/ExecGroupCodePortDataDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/ExecGroupCodePortDataDTO.java
new file mode 100644
index 0000000..451b70f
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/ExecGroupCodePortDataDTO.java
@@ -0,0 +1,32 @@
+package com.vci.ubcs.code.dto;
+
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+@Data
+public class ExecGroupCodePortDataDTO {
+	/***
+     * sheet鍚嶇О
+	 */
+	private String sheetName;
+	/***
+     * 鍘熷瀛楁
+	 */
+	private LinkedList<String> fieldList=new LinkedList<>();
+	/**
+	 * 鏁版嵁闆嗘垚
+	 */
+	private List<Map<String,String>> dataList=new ArrayList<>();
+	/***
+     * 鍒楀悕
+	 */
+	private LinkedList<String> colName=new LinkedList<>();
+	/***
+	 * 闆嗗洟灞炴�т笌缂栫爜灞炴�ф槧灏勫叧绯�
+	 */
+	private List<CodeAndGroupCodeAttrMappingDTO> codeAttrMapGroupAttrDTOS=new ArrayList<>();
+}
diff --git "a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/\346\240\207\345\207\206\344\277\256\350\256\242\346\234\210\344\273\275\345\244\247\344\272\2161\347\232\204.json" "b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/\346\240\207\345\207\206\344\277\256\350\256\242\050\350\267\250\345\271\264\051.json"
similarity index 100%
rename from "Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/\346\240\207\345\207\206\344\277\256\350\256\242\346\234\210\344\273\275\345\244\247\344\272\2161\347\232\204.json"
rename to "Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/\346\240\207\345\207\206\344\277\256\350\256\242\050\350\267\250\345\271\264\051.json"
diff --git "a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/\347\263\273\345\210\227\346\265\201\346\260\264\347\224\263\350\257\267\345\244\247\344\272\2161.json" "b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/\346\240\207\345\207\206\347\263\273\345\210\227\344\277\256\350\256\242\357\274\210\350\267\250\345\271\264\357\274\211.json"
similarity index 100%
rename from "Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/\347\263\273\345\210\227\346\265\201\346\260\264\347\224\263\350\257\267\345\244\247\344\272\2161.json"
rename to "Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/\346\240\207\345\207\206\347\263\273\345\210\227\344\277\256\350\256\242\357\274\210\350\267\250\345\271\264\357\274\211.json"
diff --git "a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/\347\263\273\345\210\227\346\265\201\346\260\264.json" "b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/\346\240\207\345\207\206\347\263\273\345\210\227\347\224\263\350\257\267.json"
similarity index 100%
rename from "Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/\347\263\273\345\210\227\346\265\201\346\260\264.json"
rename to "Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/\346\240\207\345\207\206\347\263\273\345\210\227\347\224\263\350\257\267.json"
diff --git a/Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/feigh/MdmInterJtClient.java b/Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/feigh/MdmInterJtClient.java
index 0924909..42e4177 100644
--- a/Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/feigh/MdmInterJtClient.java
+++ b/Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/feigh/MdmInterJtClient.java
@@ -56,8 +56,10 @@
 	 * 闆嗗洟鍒嗙被鐢宠鍗曟湇鍔�
 	 */
 	private final IDockingPreClassifyService dockingPreClassifyService;
-
-
+	/***
+	 * 灞炴�ф槧灏勬湇鍔�
+	 */
+	private final IDockingPreAttrMappingService dockingPreAttrMappingService;
 	/**
 	 * 闆嗗洟鍙栧�艰寖鍥寸敵璇峰崟鏈嶅姟
 	 */
@@ -81,6 +83,22 @@
 			return R.fail("闆嗗洟鐮佺敵璇峰け璐ワ細"+e.getMessage());
 		}
 	}
+
+	/***
+	 * 鏌ヨ闆嗗洟灞炴�ф槧灏�
+	 * @param codeClassifyOid:缂栫爜鍒嗙被oid
+	 * @return
+	 */
+	@Override
+	public R<List<DockingPreAttrMappingVO>> list_mapping(String codeClassifyOid) {
+		List<DockingPreAttrMapping> dockingPreAttrMappings=	dockingPreAttrMappingService.selectByWrapper(Wrappers.<DockingPreAttrMapping>query().lambda().eq(DockingPreAttrMapping::getTargetClassifyId,codeClassifyOid));
+		List<DockingPreAttrMappingVO> dockingPreAttrMappingVOList=new ArrayList<>();
+		if(!CollectionUtils.isEmpty(dockingPreAttrMappings)){
+			dockingPreAttrMappingVOList=dockingPreAttrMappingService.dockingPreAttrMappingDO2VOS(dockingPreAttrMappings,true);
+		}
+		return R.data(dockingPreAttrMappingVOList);
+	}
+
 	/***
 	 * 鐢宠闆嗗洟缂栫爜鏁版嵁缁存姢
 	 * @return
diff --git a/Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/service/IDockingPreAttrMappingService.java b/Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/service/IDockingPreAttrMappingService.java
index 28a6f73..b28d66d 100644
--- a/Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/service/IDockingPreAttrMappingService.java
+++ b/Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/service/IDockingPreAttrMappingService.java
@@ -8,6 +8,7 @@
 import com.vci.ubcs.starter.exception.VciBaseException;
 import org.springblade.core.tool.api.R;
 
+import java.util.Collection;
 import java.util.List;
 
 /**
@@ -51,4 +52,12 @@
 	 * @return
 	 */
 	public R search(DokingAttributeSerchVO dokingAttributeSerchVO);
+
+	/***
+	 * 杞崲闆嗗洟灞炴�ф槧灏勯厤缃�
+	 * @param dockingPreAttrMappings
+	 * @param contain 鏄惁鏌ュ巻鍙叉暟鎹�
+	 * @return
+	 */
+	List<DockingPreAttrMappingVO> dockingPreAttrMappingDO2VOS(Collection<DockingPreAttrMapping> dockingPreAttrMappings, boolean contain);
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/service/impl/DockingPreAttrMappingServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/service/impl/DockingPreAttrMappingServiceImpl.java
index 86a2b9b..0711970 100644
--- a/Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/service/impl/DockingPreAttrMappingServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/service/impl/DockingPreAttrMappingServiceImpl.java
@@ -242,7 +242,8 @@
 	 * @param dockingPreAttrMappings
 	 * @return
 	 */
-	private List<DockingPreAttrMappingVO> dockingPreAttrMappingDO2VOS(Collection<DockingPreAttrMapping> dockingPreAttrMappings,boolean contain) {
+	@Override
+	public List<DockingPreAttrMappingVO> dockingPreAttrMappingDO2VOS(Collection<DockingPreAttrMapping> dockingPreAttrMappings,boolean contain) {
 		List<DockingPreAttrMappingVO> dockingPreAttrMappingVOList=new ArrayList<>();
 			dockingPreAttrMappingVOList=DockingPreAttrMappingWrapper.build().entityVOs(dockingPreAttrMappings);
 			if(CollectionUtils.isEmpty(dockingPreAttrMappingVOList)){
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeAllCodeController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeAllCodeController.java
index c4ec48a..10d5a9d 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeAllCodeController.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeAllCodeController.java
@@ -33,7 +33,12 @@
 import org.springblade.core.tool.utils.Func;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
+import java.rmi.ServerException;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
  * 鍏ㄩ儴鐮佸�� 鎺у埗鍣�
@@ -59,6 +64,76 @@
 		CodeAllCode detail = CodeAllcodeService.getOne(Condition.getQueryWrapper(CodeAllcode));
 		return R.data(CodeAllcodeWrapper.build().entityVO(detail));
 	}
+
+
+	@GetMapping("/testdata")
+	@ResponseBody
+	public Map test(String clientId,String clientSecret) throws Exception {
+		Map<Object,Object> test = new HashMap<>();
+		test.put("success",true);
+		test.put("message","");
+		test.put("show",true);
+		test.put("code",200);
+		Map<Object,Object> test2 = new HashMap<>();
+		test2.put("access_token","168a31ad-6540-4f45-98d9-ec241959c3e4");
+		test2.put("refresh_token","cc554d4c-66ec-469d-9baf-799e579214ff");
+		test2.put("openid","181****6777");
+		test2.put("userNo","zhangsan");
+		test2.put("token_type","bearer");
+		test2.put("expires_in",2801);
+		test2.put("userCode","1fsdsff");
+		test2.put("adUserNo","zhangsan1");
+		test.put("data",test2);
+//		Map<Object,Object> test = new HashMap<>();
+//		test.put("success",true);
+//		test.put("message","");
+//		test.put("show",true);
+//		test.put("code",200);
+//		Map<Object,Object> test2 = new HashMap<>();
+//		test2.put("token","168a31ad-6540-4f45-98d9-ec241959c3e4");
+//		test2.put("expire","3600");
+//		test.put("data",test2);
+		return test;
+	}
+
+	@PostMapping("/todoAdd")
+	@ResponseBody
+	public Map todoAdd(@RequestHeader("token")String token,@RequestBody Map<String,String> map) throws Exception {
+//		Map<Object,Object> test = new HashMap<>();
+//		test.put("success",true);
+//		test.put("message","");
+//		test.put("show",true);
+//		test.put("code",200);
+//		Map<Object,Object> test2 = new HashMap<>();
+//		test2.put("access_token","168a31ad-6540-4f45-98d9-ec241959c3e4");
+//		test2.put("refresh_token","cc554d4c-66ec-469d-9baf-799e579214ff");
+//		test2.put("openid","181****6777");
+//		test2.put("userNo","zhangsan");
+//		test2.put("token_type","bearer");
+//		test2.put("expires_in",2801);
+//		test2.put("userCode","1");
+//		test2.put("adUserNo","zhangsan1");
+//		test.put("data",test2);
+//		Map<Object,Object> test = new HashMap<>();
+//		test.put("success",true);
+//		test.put("message","");
+//		test.put("show",true);
+//		test.put("code",200);
+//		Map<Object,Object> test2 = new HashMap<>();
+//		test2.put("token","168a31ad-6540-4f45-98d9-ec241959c3e4");
+//		test2.put("expire","3600");
+//		test.put("data",test2);
+		Map<Object,Object> test = new HashMap<>();
+		test.put("success",true);
+		test.put("message","");
+		test.put("show",true);
+		test.put("code",200);
+		Map<Object,Object> test2 = new HashMap<>();
+		test2.put("mid","78b57ce0-2222-46b8-81c4-0f661254db97");
+		test2.put("id","437");
+		test.put("data",test2);
+		return test;
+	}
 	/**
 	 * 鍏ㄩ儴鐮佸�� 鍒嗛〉
 	 */
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyController.java
index 5ff26c4..e9d57f0 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyController.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyController.java
@@ -358,4 +358,11 @@
 		CodeClassifyVO codeClassifyVO = codeClassifyService.getObjectByClsfNamePath(clsfNamePath);
 		return R.data(codeClassifyVO);
 	}
+	/**
+	 * 娴佹按渚濊禆鐢熸垚
+	 */
+	@GetMapping("/flowingDependencyGen")
+	public R flowingDependencyGen(String classifyOid)  {
+		return codeClassifyService.flowingDependencyGen(classifyOid);
+	}
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeFixedValueController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeFixedValueController.java
index 7dec639..9b44d22 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeFixedValueController.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeFixedValueController.java
@@ -132,7 +132,7 @@
             dtoList.add(codeFixedValueDTO);
         }
         String codefixedsecoid = (String) param.get("codeFixedSecOid");
-        VciBaseUtil.alertNotNull(dtoList,"鐮佸�煎璞¢泦鍚�",codefixedsecoid,"鍥哄畾鐮佹鐨勪富閿�");
+        VciBaseUtil.alertNotNull(codefixedsecoid,"鍥哄畾鐮佹鐨勪富閿�");
         if (CollectionUtils.isEmpty(dtoList)){
             return R.status(codeFixedValueService.batchDeleteBySecOid(codefixedsecoid));
         }
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 f456e51..e82445c 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
@@ -90,6 +90,72 @@
 	 * @param response 鍝嶅簲瀵硅薄
 	 * @throws IOException 鎶涘嚭寮傚父
 	 */
+	@GetMapping("/downloadExcelBatchEdit")
+	@VciBusinessLog(operateName = "涓嬭浇鎵归噺鐢宠缂栫爜鐨勫鍏ユā鏉�")
+	public void downloadImportExcelBatchEdit(String codeClassifyOid, HttpServletResponse response) throws IOException{
+		String excelName = mdmIOService.downloadImportExcelBatchEdit(codeClassifyOid);
+		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 codeClassifyOid 鍒嗙被鐨勪富閿�
+	 * @param classifyAttr 鍒嗙被璺緞浣跨敤鐨勫睘鎬�
+	 * @param file 鏂囦欢鐨勫唴瀹�
+	 */
+	@VciBusinessLog(operateName = "瀵煎叆鎵归噺缂栬緫鏁版嵁")
+	@PostMapping("/batchImportEdit")
+	public R batchImportEdit(String codeClassifyOid, String classifyAttr,MultipartFile file,HttpServletResponse response) throws Throwable {
+		String excelFileName = LocalFileUtil.getDefaultTempFolder() + File.separator + file.getOriginalFilename();
+		File file1 = new File(excelFileName);
+		try {
+			file.transferTo(new File(excelFileName));
+			CodeImProtRusultVO codeImProtRusultVO =mdmIOService.batchImportEdit(codeClassifyOid, classifyAttr,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 r = R.fail("瀵煎叆澶辫触");
+			r.setData(codeImProtRusultVO);
+			return r;
+		}finally {
+			file1.delete();
+		}
+	}
+
+	/**
+	 * 涓嬭浇鎵归噺鐢宠鐨勫鍏ユā鏉�
+	 * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+	 * @param response 鍝嶅簲瀵硅薄
+	 * @throws IOException 鎶涘嚭寮傚父
+	 */
 	@GetMapping("/downloadTopImportExcel")
 	@VciBusinessLog(operateName = "涓嬭浇鎵归噺鐢宠缂栫爜鐨勫鍏ユā鏉�")
 	public void downloadTopImportExcel(String codeClassifyOid,HttpServletResponse response) throws IOException{
@@ -312,7 +378,7 @@
 			s = engineService.addSaveCode(orderDTO);
 			saveLogUtil.operateLog("缂栫爜鐢宠",false,orderDTO.toString());
 		}catch (Exception e){
-			saveLogUtil.operateLog("缂栫爜鐢宠",true,e.getMessage());
+			saveLogUtil.operateLog("缂栫爜鐢宠",true,e.toString());
 			throw e;
 		}
 		return R.success(s);
@@ -779,9 +845,9 @@
 	@GetMapping("/exportGroupCodeExcel")
 	@VciBusinessLog(operateName = "瀵煎嚭闆嗗洟鐮�")
 	public void exportGroupCodeExcel(String codeClassifyOid, HttpServletResponse response) throws IOException{
-		String excelName = mdmIOService.createImportExcel(codeClassifyOid,false);
+
 		try {
-			ControllerUtil.writeFileToResponse(response,excelName);
+			String excelName = mdmIOService.exportGroupCodeExcel(codeClassifyOid);
 		} catch (Throwable e) {
 			//濡傛灉鍑洪敊,鎶婇敊璇俊鎭啓鍒皌ext
 			String msg = LangBaseUtil.getErrorMsg(e);
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeAllCodeMapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeAllCodeMapper.java
index 8069761..964f2d5 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeAllCodeMapper.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeAllCodeMapper.java
@@ -20,9 +20,11 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.vci.ubcs.code.entity.CodeAllCode;
 import com.vci.ubcs.code.vo.pagemodel.CodeAllCodeVO;
+import org.apache.ibatis.annotations.MapKey;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 鍏ㄩ儴鐮佸�� Mapper 鎺ュ彛
@@ -41,5 +43,14 @@
 	 */
 	List<CodeAllCodeVO> selectCodeAllCodePage(IPage page, CodeAllCodeVO codeAllCode);
 
+	/**
+	 * 鍒嗙粍缁熻鏈�澶ф祦姘村��
+	 *
+	 * @param codeClassifyOid
+	 * @return
+	 */
+//	@MapKey("OID")
+	List<CodeAllCode> selectGroupByClassify(@Param("codeClassifyOid") String codeClassifyOid,@Param("replaceString") String replaceString);
+
 
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyService.java
index 54cc68f..0372041 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyService.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyService.java
@@ -305,4 +305,8 @@
 	 */
 	String selectLeafByParentClassifyOid(String topOid, String currentOid);
 
+	/**
+	 * 娴佹按渚濊禆鐢熸垚
+	 */
+	R flowingDependencyGen(String classifyOid);
 }
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 d063ec2..659128b 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
@@ -1,5 +1,6 @@
 package com.vci.ubcs.code.service;
 
+import com.google.protobuf.ServiceException;
 import com.vci.ubcs.code.dto.CodeExportAttrDTO;
 import com.vci.ubcs.code.dto.CodeOrderDTO;
 import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
@@ -26,6 +27,13 @@
 	 * @return excel鐨勬枃浠跺湴鍧�
 	 */
 	String createImportExcel(String codeClassifyOid,boolean isHistory);
+
+	/**
+	 * 鐢熸垚鎵归噺淇敼瀵煎叆鐨勬枃浠�
+	 * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+	 * @return excel鐨勬枃浠跺湴鍧�
+	 */
+	String downloadImportExcelBatchEdit(String codeClassifyOid);
 
 	/**
 	 * 鐢熸垚瀵煎叆鐨勬枃浠�
@@ -59,6 +67,15 @@
 	 * @return 鏈夐敊璇俊鎭殑excel
 	 */
 	CodeImProtRusultVO batchImportHistoryData(String codeClassifyOid,String classifyAttr, File file) throws Throwable;
+
+	/**
+	 * 瀵煎叆鎵归噺缂栬緫鏁版嵁
+	 * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+	 * @param classifyAttr 鍒嗙被璺緞浣跨敤鐨勫睘鎬�
+	 * @param file excel鏂囦欢鐨勪俊鎭�
+	 * @return 鏈夐敊璇俊鎭殑excel
+	 */
+	CodeImProtRusultVO batchImportEdit(String codeClassifyOid,String classifyAttr, File file) throws Throwable;
 
 	/***
 	 * 浠巖edis缂撳瓨閲岃幏鍙栧埌瀵煎叆鐨勬暟鎹�
@@ -119,4 +136,11 @@
 	 * @param operationType
 	 */
 	void sendApplyGroupcode(List<String> idList,String btmName,String operationType);
+
+	/***
+	 * 瀵煎嚭闆嗗洟鐮佹ā鏉�
+	 * @param classOid
+	 * @return
+	 */
+	String exportGroupCodeExcel(String classOid) throws ServiceException;
 }
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 7e1a226..32c2f3b 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
@@ -10,17 +10,16 @@
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
+import com.sun.org.apache.bcel.internal.generic.NEW;
 import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
-import com.vci.ubcs.code.entity.CodeClassify;
-import com.vci.ubcs.code.entity.CodeClassifyTemplate;
+import com.vci.ubcs.code.entity.*;
 import com.vci.ubcs.code.enumpack.FrameworkDataLCStatus;
-import com.vci.ubcs.code.mapper.CodeClassifyMapper;
-import com.vci.ubcs.code.mapper.CodeClassifyTemplateMapper;
-import com.vci.ubcs.code.mapper.CommonsMapper;
+import com.vci.ubcs.code.mapper.*;
 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.ICodeRuleService;
+import com.vci.ubcs.code.vo.pagemodel.CodeAllCodeVO;
 import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
 import com.vci.ubcs.code.vo.pagemodel.CodeKeyAttrRepeatRuleVO;
 import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
@@ -62,6 +61,7 @@
 import org.springblade.core.tool.utils.Func;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
@@ -106,6 +106,15 @@
 
 	@Resource
 	private ICodeKeyAttrRepeatService iCodeKeyattrrepeatService;
+
+	@Resource
+	private CodeAllCodeMapper codeAllCodeMapper;
+
+	@Resource
+	private CodeSerialValueMapper codeSerialValueMapper;
+
+	@Resource
+	private CodeBasicSecMapper codeBasicSecMapper;
 	/**
 	 * 涓婄骇鑺傜偣鐨勫睘鎬у悕绉�
 	 */
@@ -683,6 +692,49 @@
 		return oids;
 	}
 
+	/**
+	 * 娴佹按渚濊禆鐢熸垚
+	 */
+	@Override
+	public R flowingDependencyGen(String classifyOid) {
+
+		//鏌ヨ姝ゅ垎绫讳笅闈㈢殑鎵�鏈夊垎绫�
+		List<CodeClassify>  codeClassifyList=codeClassifyMapper.selectAllClassifyByOid(classifyOid,AuthUtil.getTenantId(),null);
+		//鏌ヨ鐮佸�艰〃锛岃幏鍙栨渶澶ф祦姘�
+		List<CodeAllCode> codeAllCodeVOS = codeAllCodeMapper.selectGroupByClassify("'" + codeClassifyList.stream()
+			.map(classfiy -> classfiy.getOid()).collect(Collectors.joining("','")) + "'","'${sav}'");
+		//寰�娴佹按琛ㄩ噷闈㈠姞鏁版嵁锛屾湁鍒欐洿鏂帮紝鏃犲垯娣诲姞鏁版嵁銆�
+		for (CodeAllCode codeAllCodeVO : codeAllCodeVOS) {
+			QueryWrapper<CodeBasicSec> secWrapper = new QueryWrapper<>();
+			secWrapper.eq("PKCODERULE",codeAllCodeVO.getCodeRuleOid());
+			secWrapper.eq("SECTYPE","codeserialsec");
+			CodeBasicSec codeBasicSec = codeBasicSecMapper.selectOne(secWrapper);
+			QueryWrapper<CodeSerialValue> wrapper = new QueryWrapper<>();
+			wrapper.eq("codeRuleOid",codeAllCodeVO.getCodeRuleOid());
+			wrapper.eq("serialUnit",codeAllCodeVO.getSerialUnit());
+			wrapper.eq("codeSecOid",codeBasicSec.getOid());
+			CodeSerialValue codeSerialValue = codeSerialValueMapper.selectOne(wrapper);
+			if(codeSerialValue == null){
+				CodeSerialValue newSerialValue = new CodeSerialValue();
+				DefaultAttrAssimtUtil.addDefaultAttrAssimt(newSerialValue,"codeserialvalue");
+				newSerialValue.setCodeRuleOid(codeAllCodeVO.getCodeRuleOid());
+				newSerialValue.setCodeSecOid(codeBasicSec.getOid());
+				newSerialValue.setSerialUnit(codeAllCodeVO.getSerialUnit());
+				newSerialValue.setMaxSerial(codeAllCodeVO.getUnFillSerial());
+				newSerialValue.setLctid("defaultLC");
+				newSerialValue.setLcStatus("Exist");
+				codeSerialValueMapper.insert(newSerialValue);
+			}else{
+				codeSerialValue.setMaxSerial(codeAllCodeVO.getUnFillSerial());
+				codeSerialValue.setLastModifyTime(new Date());
+				codeSerialValue.setLastModifier(String.valueOf(AuthUtil.getUser().getUserId()));
+				codeSerialValue.setTs(new Date());
+				codeSerialValueMapper.updateById(codeSerialValue);
+			}
+		}
+		return R.success("鎿嶄綔鎴愬姛锛�");
+	}
+
 	/***
 	 * 鏍规嵁鍒嗙被鎻忚堪澶囨敞鍜屽簱鑺傜偣鏌ヨ鍒嗙被淇℃伅
 	 * @param desc
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 094677d..2ddc23a 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
@@ -465,7 +465,7 @@
 			);
 		}catch (Exception e){
 			// 鎻掑叆鏇存敼鏃ュ織璁板綍
-			saveLogUtil.operateLog(CodeDefaultLC.getTextByValue(baseModelDTO.getLcStatus()),true,e.getMessage());
+			saveLogUtil.operateLog(CodeDefaultLC.getTextByValue(baseModelDTO.getLcStatus()),true,e.toString());
 			throw e;
 		}
     }
@@ -3113,7 +3113,7 @@
 			saveLogUtil.operateLog("鏁版嵁鏇存敼",false, StringUtil.format("{}\n淇敼涓�:\n{}",JSON.toJSONString(Collections.singletonList(oldCbo)),JSON.toJSONString(Collections.singletonList(cbo))));
 		} catch (Exception vciError) {
 			// 璁板綍鏁版嵁鏇存敼鎶ラ敊鏃剁殑鏃ュ織
-			saveLogUtil.operateLog("鏁版嵁鏇存敼",true,vciError.getMessage());
+			saveLogUtil.operateLog("鏁版嵁鏇存敼",true,vciError.toString());
 			throw new VciBaseException("鏁版嵁鏇存敼淇濆瓨鍑洪敊浜�", new String[0], vciError);
 		}
 
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
index 99278b3..6790d64 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
@@ -3,14 +3,17 @@
 import com.alibaba.fastjson.JSON;
 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.toolkit.Wrappers;
 import com.google.protobuf.ServiceException;
+import com.vci.ubcs.code.applyjtcodeservice.entity.DockingPreAttrMapping;
 import com.vci.ubcs.code.applyjtcodeservice.feign.IMdmInterJtClient;
+import com.vci.ubcs.code.applyjtcodeservice.vo.DockingPreAttrMappingVO;
 import com.vci.ubcs.code.bo.AttributeValue;
 import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
 import com.vci.ubcs.code.bo.CodeTemplateAttrSqlBO;
-import com.vci.ubcs.code.dto.CodeExportAttrDTO;
-import com.vci.ubcs.code.dto.CodeOrderDTO;
+import com.vci.ubcs.code.constant.MdmEngineConstant;
+import com.vci.ubcs.code.dto.*;
 import com.vci.ubcs.code.entity.CodeAllCode;
 import com.vci.ubcs.code.enumpack.CodeDefaultLC;
 import com.vci.ubcs.code.enumpack.CodeLevelTypeEnum;
@@ -48,6 +51,7 @@
 import com.vci.ubcs.starter.web.util.*;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import oracle.sql.TIMESTAMP;
 import org.apache.commons.collections4.map.HashedMap;
 import org.apache.poi.hssf.usermodel.HSSFRichTextString;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
@@ -56,6 +60,7 @@
 import org.apache.poi.ss.usermodel.RichTextString;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.springblade.core.redis.cache.BladeRedis;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.StringUtil;
@@ -66,10 +71,18 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 import javax.annotation.Resource;
+import java.beans.BeanInfo;
+import java.beans.Introspector;
+import java.beans.PropertyDescriptor;
 import java.io.File;
 import java.io.IOException;
+import java.lang.reflect.Method;
+import java.math.BigDecimal;
 import java.text.MessageFormat;
 import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.ZonedDateTime;
 import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CopyOnWriteArrayList;
@@ -484,6 +497,122 @@
 	}
 
 	/**
+	 * 鐢熸垚鎵归噺淇敼瀵煎叆鐨勬枃浠�
+	 *
+	 * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+	 * @return excel鐨勬枃浠跺湴鍧�
+	 */
+	@Override
+	public String downloadImportExcelBatchEdit(String codeClassifyOid) {
+		List<CodeClassifyTemplateVO> templateVOList=new ArrayList<>();
+		VciBaseUtil.alertNotNull("瀵煎嚭妯℃澘","瀵煎嚭鐨勯厤缃�",codeClassifyOid,"涓婚搴撳垎绫荤殑涓婚敭");
+
+		CodeClassifyVO codeClassifyVO = classifyService.getObjectByOid(codeClassifyOid);
+
+		templateVOList= templateService.childTemplates(codeClassifyOid);
+
+		WriteExcelOption eo = new WriteExcelOption();
+		eo.setAppend(true);
+		//澧炲姞妯℃澘鐨勪俊鎭鍏�
+		LinkedList<WriteExcelData> tempEDList = new LinkedList<>();
+		tempEDList.add(new WriteExcelData(0,0,"缂栧彿"));
+		for(int j=0;j<templateVOList.size();j++){
+			CodeClassifyTemplateVO  templateVO=templateVOList.get(j);
+			CodeClassifyTemplateVO codeClassifyTemplateVO = new CodeClassifyTemplateVO();
+			BeanUtils.copyProperties(templateVO,codeClassifyTemplateVO);
+			//缁勫悎鏍煎紡鐨勪笉瀵煎叆锛�
+			// 鏋氫妇鐨勬彁渚涘簭鍒楃殑閫夋嫨
+			//鏃堕棿鍏ㄩ儴缁熶竴涓簓yyy-MM-dd HH:mm:ss
+			//鍙傜収鐨勮嚜琛岃緭鍏ュ悕绉�
+			//鍒嗙被娉ㄥ叆鐨勪笉鐢紝閮芥槸瀵煎叆鍚庤嚜鍔ㄥ鐞嗙殑
+			//缂栫爜锛岀姸鎬佺瓑瀛楁涓嶅鍏�
+			List<CodeClassifyTemplateAttrVO> codeClassifyTemplateAttrVOList=codeClassifyTemplateVO.getAttributes();
+			if(!CollectionUtils.isEmpty(codeClassifyTemplateAttrVOList)) {
+				if (CollectionUtils.isEmpty(codeClassifyTemplateAttrVOList)) {
+					throw new VciBaseException("妯℃澘娌℃湁閰嶇疆灞炴��");
+				}
+			}
+			List<CodeClassifyTemplateAttrVO> templateAttrVOS = codeClassifyTemplateAttrVOList.stream().filter(s ->
+				!DEFAULT_ATTR_LIST.contains(s.getId())
+					&& StringUtils.isBlank(s.getComponentRule())
+					&& StringUtils.isBlank(s.getClassifyInvokeAttr())
+					&& (VciBaseUtil.getBoolean(s.getFormDisplayFlag()))
+			).collect(Collectors.toList());
+
+			if (CollectionUtils.isEmpty(templateAttrVOS)) {
+				throw new VciBaseException("妯℃澘娌℃湁閰嶇疆浠讳綍銆愯〃鍗曟樉绀恒�戜负銆愭槸銆戠殑灞炴��");
+			}
+
+//			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,"缂栫爜(id)",""));
+//				excelDataList.add(new WriteExcelData(0,1,"鐮佹瀹藉害",""));
+//			excelDataList.add(new WriteExcelData(0,1,!CollectionUtils.isEmpty(idAttrVOList)?idAttrVOList.get(0).getName():"浼佷笟缂栫爜",idAttrVOList.get(0).getId()));
+//			}
+			for (int i = 0; i < templateAttrVOS.size(); i++) {
+				CodeClassifyTemplateAttrVO attrVO = templateAttrVOS.get(i);
+
+				Object text = attrVO.getName();
+				text = exportKeyAndRequired(workbook,attrVO,text);
+				int colIndex = 1 + i;
+				WriteExcelData excelData = new WriteExcelData(0, colIndex, text,attrVO.getId());
+				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() + ("_灞炴�ф壒閲忎慨鏀规ā鏉�.xls");
+		eo.addSheetDataList(templateVOList.size()+"妯℃澘淇℃伅銆愯鍕垮垹闄ゆ垨绉诲姩銆�",tempEDList);
+		ExcelUtil.writeDataToFile(excelName,eo);
+		return excelName;
+	}
+	/**
 	 * 鑾峰彇鐮佹瀹藉害
 	 * @param codeClassifyOid
 	 * @return
@@ -843,7 +972,7 @@
 				}
 				// 鍗曟瀵煎叆鏁伴噺闄愬埗
 				if(sheetDataSetList.get(i).getRowData().size() > IMPORT_DATA_LIMIT){
-					throw new ServiceException("涓轰簡淇濊瘉绯荤粺鐨勭ǔ瀹氭�э紝璇蜂竴娆′笉瑕佸鍏ヨ秴杩�"+IMPORT_DATA_LIMIT+"鏉$殑鏁版嵁");
+					throw new ServiceException(StringUtil.format("涓轰簡淇濊瘉绯荤粺鐨勭ǔ瀹氭�э紝璇蜂竴娆′笉瑕佸鍏ヨ秴杩噞}鏉$殑鏁版嵁",IMPORT_DATA_LIMIT));
 				}
 				//鍘嗗彶瀵煎叆鐨勬椂鍊欎笉澶勭悊缂栫爜
 				//----閫昏緫鍐呭----
@@ -1132,7 +1261,7 @@
 			if(StringUtils.isNotBlank(excelFileName)) {
 				codeImProtRusultVO.setFilePath(excelFileName);
 				codeImProtRusultVO.setFileOid("");
-				saveLogUtil.operateLog("鍘嗗彶鏁版嵁瀵煎叆",true, StringUtil.format("閿欒淇℃伅锛歿}",JSON.toJSONString(shetNameMap)) );
+				saveLogUtil.operateLog("鍘嗗彶鏁版嵁瀵煎叆",true, StringUtil.format("閿欒淇℃伅锛歿}",JSON.toJSONString(shetNameMap)));
 			}else{
 				saveLogUtil.operateLog("鍘嗗彶鏁版嵁瀵煎叆",false, StringUtil.format("瀵煎叆鍒板垎绫粄}涓紝瀵煎叆鎴愬姛鎬绘暟涓猴細{}", JSON.toJSONString(classifyFullInfo),importCount.get(0)));
 			}
@@ -1141,11 +1270,145 @@
 			}
 			return codeImProtRusultVO;
 		}catch (Exception e){
-			saveLogUtil.operateLog("鍘嗗彶鏁版嵁瀵煎叆",true,e.getMessage());
+			saveLogUtil.operateLog("鍘嗗彶鏁版嵁瀵煎叆",true,e.toString());
 			throw e;
 		}
 	}
+	/**
+	 * 瀵煎叆鎵归噺缂栬緫鏁版嵁
+	 *
+	 * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+	 * @param classifyAttr 鍒嗙被璺緞浣跨敤鐨勫睘鎬�
+	 * @param file            excel鏂囦欢鐨勪俊鎭�
+	 * @return 鏈夐敊璇俊鎭殑excel
+	 */
+	@Override
+	public CodeImProtRusultVO batchImportEdit(String codeClassifyOid, String classifyAttr,File file) throws  Throwable{
+		VciBaseUtil.alertNotNull(codeClassifyOid,"鍒嗙被鐨勪富閿�");
+		ReadExcelOption reo = new ReadExcelOption();
+		reo.setReadAllSheet(true);
+		List<SheetDataSet> sheetDataSetList = ExcelUtil.readDataObjectFromExcel(file,null,reo);
+		if (sheetDataSetList.size() > LIMIT + 1) {
+			throw new VciBaseException("涓轰簡淇濊瘉绯荤粺鐨勭ǔ瀹氭�э紝璇蜂竴娆′笉瑕佸鍏ヨ秴杩�1涓囨潯鐨勬暟鎹�");
+		}
+		boolean isExport=false;
+		Map<String,List<WriteExcelData>> shetNameMap=new HashMap<>();
+		for(int i=0;i<sheetDataSetList.size()-1;i++) {
+			if (CollectionUtils.isEmpty(sheetDataSetList) || CollectionUtils.isEmpty(sheetDataSetList.get(i).getRowData())
+				|| sheetDataSetList.get(i).getRowData().size() < 1) {
+				continue;
+			}
+			// 鍗曟瀵煎叆鏁伴噺闄愬埗
+			if(sheetDataSetList.get(i).getRowData().size() > IMPORT_DATA_LIMIT){
+				throw new ServiceException("涓轰簡淇濊瘉绯荤粺鐨勭ǔ瀹氭�э紝璇蜂竴娆′笉瑕佸鍏ヨ秴杩�"+IMPORT_DATA_LIMIT+"鏉$殑鏁版嵁");
+			}
+			//鏌ヨ鍒嗙被鍜屾ā鏉�
+			CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyOid);
 
+			//鍏堟壘鍒版瘡涓�琛岀殑鏍囬锛岀劧鍚庢牴鎹爣棰樻潵鑾峰彇瀵瑰簲鐨勫睘鎬�
+			SheetDataSet dataSet = sheetDataSetList.get(i);
+			List<SheetRowData> rowDataList = dataSet.getRowData();
+
+			//鎵剧涓�琛岋紝涓轰簡鎵炬爣棰�
+			CodeClassifyTemplateVO templateVO ;
+			//閮借浆鎹㈠畬浜嗐�傞渶瑕佹壒閲忔鏌�
+			//鎵炬墍鏈夌殑鍒嗙被璺緞,闇�瑕佹牎楠岃矾寰勬槸鍚︽纭紝鏄惁閮藉湪褰撳墠鐨勫垎绫荤殑涓嬬骇
+			List<CodeClassifyVO> childClassifyVOs = classifyService.listChildrenClassify(codeClassifyOid, true, classifyAttr, true);
+			Map<String/**璺緞**/, CodeClassifyVO> pathMap = Optional.ofNullable(childClassifyVOs).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getPath().startsWith("#") ? s.getPath().substring(1) : s.getPath(), t -> t));
+			List<String> titleRowData = dataSet.getColName();
+			Map<String, String> errorMap = new ConcurrentHashMap<>();
+			pathMap.put("#current#",classifyFullInfo.getCurrentClassifyVO());
+
+			try {
+				titleRowData.add("鍒嗙被璺緞");
+				List<CodeClassifyTemplateVO> templateVOList= checkSamesTemplate(titleRowData,sheetDataSetList,i,pathMap,errorMap);
+				titleRowData.remove(titleRowData.size()-1);
+				templateVO= templateVOList.get(0);
+			}catch (Throwable e){
+				throw  new VciBaseException(e.getMessage());
+			}
+
+			CodeClassifyTemplateVO finalTemplateVO = templateVO;
+
+			List<SheetRowData> needowDataList = rowDataList.stream().filter(cbo -> {
+				String rowIndex = cbo.getRowIndex();
+				return !errorMap.containsKey(rowIndex);
+			}).collect(Collectors.toList());
+			//杩欓噷涓嶉櫎鍘婚粯璁ょ殑灞炴��
+			List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes();
+			Map<Integer/**鍒楀彿**/, String/**瀛楁鐨勫悕绉�**/> fieldIndexMap = new HashMap<>();
+
+			Map<String/**涓枃鍚嶇О**/, String/**鑻辨枃鍚嶇О**/> attrNameIdMap = attrVOS.stream().collect(Collectors.toMap(s -> s.getName(), t -> t.getId()));
+			fieldIndexMap.put(0,"id");
+			getFieldIndexMap(titleRowData, attrNameIdMap, fieldIndexMap);
+			//鍏堜笉鐢ㄧ灞炴�ф槸鍚﹂兘瀛樺湪锛屽厛杞崲涓�涓嬫暟鎹�
+			CodeOrderDTO orderDTO = new CodeOrderDTO();
+			for (SheetRowData sheetRowData : needowDataList) {
+				//鏌ヨ鏁版嵁
+				Map<String, String> conditionMap = new HashMap<>();
+				conditionMap.put("t.id", sheetRowData.getData().get(0));
+				conditionMap.put("t.lastv", "1");
+				CodeTemplateAttrSqlBO sqlBO = mdmEngineService.getSqlByTemplateVO(classifyFullInfo.getTopClassifyVO().getBtmTypeId(), templateVO, conditionMap, new PageHelper(-1));
+				//鎴戜滑浣跨敤鍜屼笟鍔$被鍨嬬殑鏉ユ煡璇�
+				List<Map> cbosB = commonsMapper.selectBySql(sqlBO.getSqlUnPage());
+				if(cbosB.size() == 0){
+					throw  new ServiceException("缂栫爜锛�"+ sheetRowData.getData().get(0) + ",鏈兘鏌ヨ鍒扮浉鍏虫暟鎹��");
+				}
+				excelToCboEdit(fieldIndexMap, sheetRowData, orderDTO, cbosB.get(0));
+				orderDTO.setCopyFromVersion(orderDTO.getOid());
+				orderDTO.setOid(null);
+				try {
+					mdmEngineService.upSaveCode(orderDTO);
+					List<Map> newCbos = commonsMapper.selectBySql(sqlBO.getSqlUnPage());
+					//瀵圭爜鍊艰〃杩涜澶勭悊鏇挎崲鍒涘缓鏁版嵁鐨刼id
+					QueryWrapper<CodeAllCode> wrapper = new QueryWrapper<>();
+					wrapper.eq("CREATECODEOID",orderDTO.getCopyFromVersion());
+					List<CodeAllCode> codeAllCodes = codeAllCodeService.selectByWrapper(wrapper);
+					codeAllCodes.get(0).setCreateCodeOid(newCbos.get(0).get("OID").toString());
+					codeAllCodes.get(0).setLastModifyTime(new Date());
+					codeAllCodes.get(0).setTs(new Date());
+					codeAllCodes.get(0).setLastModifier(AuthUtil.getUser().getUserName());
+					codeAllCodeService.updateBatchById(codeAllCodes);
+				} catch (Throwable e) {
+					log.error("鎵归噺浜х敓缂栫爜鐨勬椂鍊欏嚭閿欎簡", e);
+//				thisCbos.stream().forEach(cbo -> {
+//					String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
+					errorMap.put(sheetRowData.getRowIndex(), ";绯荤粺閿欒锛屽瓨鍌ㄦ暟鎹殑鏃跺�欏嚭閿欎簡:"+e.getMessage());
+//				});
+				}
+			}
+
+			if (errorMap.size() > 0) {
+				isExport = true;
+			}
+			createWriteExcelData(rowDataList, errorMap, new ArrayList<>(), titleRowData, shetNameMap, finalTemplateVO);
+
+		}
+		String excelFileName="";
+		if(isExport&&!CollectionUtils.isEmpty(shetNameMap)) {
+			excelFileName = LocalFileUtil.getDefaultTempFolder() + File.separator + "閿欒淇℃伅.xls";
+			WriteExcelOption eo = new WriteExcelOption();
+			shetNameMap.forEach((shetName, errorDataList) -> {
+				eo.addSheetDataList(shetName, errorDataList);
+			});
+			try {
+				new File(excelFileName).createNewFile();
+			} catch (IOException e) {
+				throw new VciBaseException(LangBaseUtil.getErrorMsg(e));
+			}
+			ExcelUtil.writeDataToFile(excelFileName, eo);
+		}
+		CodeImProtRusultVO codeImProtRusultVO=new CodeImProtRusultVO();
+		if(StringUtils.isNotBlank(excelFileName)) {
+			codeImProtRusultVO.setFilePath(excelFileName);
+			codeImProtRusultVO.setFileOid("");
+			saveLogUtil.operateLog("鏁版嵁鎵归噺鏇存敼",true, StringUtil.format("閿欒淇℃伅锛歿}",JSON.toJSONString(shetNameMap)) );
+		}else{
+			saveLogUtil.operateLog("鏁版嵁鎵归噺鏇存敼",false, StringUtil.format("瀵煎叆鎴愬姛鎬绘暟涓猴細{}",
+				sheetDataSetList.size()-1));
+		}
+		return codeImProtRusultVO;
+	}
 	/*private void converBaseModels(List<ClientBusinessObject> clientBusinessObjects,List<BaseModel>dataCBOList){
 		clientBusinessObjects.stream().forEach(clientBusinessObject -> {
 			BaseModel baseModel=new BaseModel();
@@ -1456,7 +1719,7 @@
 			}
 			saveLogUtil.operateLog("鎵归噺鐢宠缂栫爜",false, StringUtil.format("鎵归噺瀵煎叆鐢宠鎴愬姛鍏眥}鏉℃暟鎹紝鐢熸垚鐨勭爜鍊煎涓嬨�恵}銆�",codeList.size(),codeList));
 		}catch (Exception e){
-			saveLogUtil.operateLog("鎵归噺鐢宠缂栫爜",true,e.getMessage());
+			saveLogUtil.operateLog("鎵归噺鐢宠缂栫爜",true,e.toString());
 			throw e;
 		}
 		return uuid;
@@ -3288,6 +3551,106 @@
 	}
 
 	/**
+	 * excel杞崲涓篶bo鐨勫璞�
+	 * @param fieldIndexMap 瀛楁鐨勪綅缃�
+	 * @param rowDataList excel閲岀殑琛屾暟鎹�
+	 * @param orderDTO 鏁寸悊鐨勬暟鎹�
+	 * @param map 鏁版嵁鐨勫垪琛�
+	 */
+	private void excelToCboEdit(Map<Integer,String> fieldIndexMap,SheetRowData rowDataList,
+							CodeOrderDTO orderDTO,
+							Map map){
+		rowDataList.getData().forEach((index,value)->{
+				String field = fieldIndexMap.get(index);
+				if (StringUtils.isBlank(field)) {
+					throw new VciBaseException("绗�" + (index + 1) + "鍒楃殑鏍囬鍦ㄧ郴缁熶腑涓嶅瓨鍦�");
+				}
+				map.put(field,value);
+			});
+
+		try {
+//			for (Map map : cbos) {
+//			Object obj = CodeOrderDTO.class.newInstance();
+			BeanInfo beanInfo = Introspector.getBeanInfo(orderDTO.getClass());
+			PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
+			for (PropertyDescriptor property : propertyDescriptors) {
+				Method setter = property.getWriteMethod();
+				if (setter != null) {
+					//oracle鐨勬椂闂翠负TIMESTAMP鐨勶紝闇�瑕佽繘琛岃浆鎹㈡垚data锛屽惁鍒欏皢鎶ラ敊
+					if (map.get(property.getName().toUpperCase()) instanceof TIMESTAMP) {
+						LocalDateTime localDateTime = ((TIMESTAMP) map.get(property.getName().toUpperCase())).toLocalDateTime();
+						ZoneId zoneId = ZoneId.systemDefault();
+						ZonedDateTime zdt = localDateTime.atZone(zoneId);
+						Date date = Date.from(zdt.toInstant());
+						setter.invoke(orderDTO, date);
+						map.remove(property.getName().toUpperCase());
+					} //oracle鐨勬暟瀛椾负BigDecimal鐨勶紝闇�瑕佽繘琛岃浆鎹㈡垚Integer锛屽惁鍒欏皢鎶ラ敊
+					else if (map.get(property.getName().toUpperCase()) instanceof BigDecimal
+						&& ("Integer").equals(setter.getParameterTypes()[0].getSimpleName())) {
+						setter.invoke(orderDTO, ((BigDecimal) map.get(property.getName().toUpperCase())).intValue());
+						map.remove(property.getName().toUpperCase());
+					} else if (map.containsKey(property.getName().toUpperCase())) {
+						if(setter.getParameterTypes()[0].getSimpleName().equals("String")){
+							setter.invoke(orderDTO, map.get(property.getName().toUpperCase()) == null ? null:String.valueOf(map.get(property.getName().toUpperCase())));
+						}else{
+							setter.invoke(orderDTO, map.get(property.getName().toUpperCase()));
+						}
+						map.remove(property.getName().toUpperCase());
+					}
+				}
+			}
+			for (Object key : map.keySet()) {
+				map.put(key, map.get(key) == null ? null : String.valueOf(map.get(key)));
+			}
+		} catch (Exception e) {
+			throw new VciBaseException("鏌ヨ澶辫触锛�" + e.getMessage());
+		}
+
+
+
+//		Iterator<Map.Entry<String, String>> iterator = cbos.entrySet().iterator();
+//
+//		Map.Entry<String, String> entry;
+//		while (iterator.hasNext()) {
+//			entry = iterator.next();
+////			if (WebUtil.isDefaultField(entry.getKey())) {
+//				Object obj = BaseModel.class.newInstance();
+//				BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
+//				PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
+//				for (PropertyDescriptor property : propertyDescriptors) {
+//					Method setter = property.getWriteMethod();
+//					if (setter != null) {
+//						//oracle鐨勬椂闂翠负TIMESTAMP鐨勶紝闇�瑕佽繘琛岃浆鎹㈡垚data锛屽惁鍒欏皢鎶ラ敊
+//						if (map.get(property.getName().toUpperCase()) instanceof TIMESTAMP) {
+//							LocalDateTime localDateTime = ((TIMESTAMP) map.get(property.getName().toUpperCase())).toLocalDateTime();
+//							ZoneId zoneId = ZoneId.systemDefault();
+//							ZonedDateTime zdt = localDateTime.atZone(zoneId);
+//							Date date = Date.from(zdt.toInstant());
+//							setter.invoke(obj, date);
+//							map.remove(property.getName().toUpperCase());
+//						} //oracle鐨勬暟瀛椾负BigDecimal鐨勶紝闇�瑕佽繘琛岃浆鎹㈡垚Integer锛屽惁鍒欏皢鎶ラ敊
+//						else if (map.get(property.getName().toUpperCase()) instanceof BigDecimal
+//							&& ("Integer").equals(setter.getParameterTypes()[0].getSimpleName())) {
+//							setter.invoke(obj, ((BigDecimal) map.get(property.getName().toUpperCase())).intValue());
+//							map.remove(property.getName().toUpperCase());
+//						} else if (map.containsKey(property.getName().toUpperCase())) {
+//							if(setter.getParameterTypes()[0].getSimpleName().equals("String")){
+//								setter.invoke(obj, map.get(property.getName().toUpperCase()) == null ? null:String.valueOf(map.get(property.getName().toUpperCase())));
+//							}else{
+//								setter.invoke(obj, map.get(property.getName().toUpperCase()));
+//							}
+//							map.remove(property.getName().toUpperCase());
+//						}
+//					}
+//				}
+//				WebUtil.setValueToField(entry.getKey(), orderDTO, entry.getValue());
+//				iterator.remove();
+////			}
+//		}
+		orderDTO.setData(map);
+	}
+
+	/**
 	 * 妫�鏌ユ牎楠岃鍒欐病鏈夐�氳繃鐨勫唴瀹�
 	 * @param attrVOS 闇�瑕佹牎楠岀殑灞炴��
 	 * @param dataList 鏁版嵁鐨勫垪琛�
@@ -3861,6 +4224,7 @@
 						} else {
 							Map<String, String> classifyDataMap = VciBaseUtil.objectToMapString(classifyVO);
 							String value = classifyDataMap.getOrDefault(attrVO.getClassifyInvokeAttr(), "");
+							log.error("================================褰撳墠鍒嗙被娉ㄥ叆鐨剉alue鍊间负锛�==========================",value);
 							cbo.setAttributeValue(attrId, value);
 						}
 					} catch (Throwable e) {
@@ -4605,4 +4969,196 @@
 		}
 	}
 
+	/***
+	 * @param codeClassifyOid
+	 * @return
+	 */
+	@Override
+	public String exportGroupCodeExcel(String codeClassifyOid) throws ServiceException {
+		VciBaseUtil.alertNotNull(codeClassifyOid,"涓婚搴撳垎绫荤殑涓婚敭");
+		CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyOid);
+		CodeClassifyVO codeClassifyVO= classifyFullInfo.getCurrentClassifyVO();
+		//鑾峰彇鏈�鏂扮殑妯℃澘
+		CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(codeClassifyOid);
+		LinkedList<String> colName=new LinkedList<>();//鍒楀ご
+		LinkedList<String> fieldList=new LinkedList<>();//鍒楀瓧娈�
+
+		ExecGroupCodePortDataDTO execGroupCodePortDataDTO=new ExecGroupCodePortDataDTO();
+		createExportGroupCodeMapConfig(templateVO,execGroupCodePortDataDTO);//缁勭粐鏁版嵁
+		if(!CollectionUtils.isEmpty(execGroupCodePortDataDTO.getCodeAttrMapGroupAttrDTOS())){
+			throw new ServiceException("闆嗗洟灞炴�ф槧灏勬湭閰嶇疆");
+		}
+		fieldList=execGroupCodePortDataDTO.getFieldList();
+		List<Map<String,String>>dataList=new ArrayList<>();
+		getDatas(classifyFullInfo,templateVO,fieldList,dataList);
+		execGroupCodePortDataDTO.setDataList(dataList);//鏀炬暟鎹�
+		execGroupCodePortDataDTO.setSheetName(codeClassifyVO.getName()+"闆嗗洟鐮佸鍏ユā鏉�");
+		String tempFolder = LocalFileUtil.getDefaultTempFolder();
+		String excelName = tempFolder + File.separator +
+			classifyFullInfo.getCurrentClassifyVO().getId() + "_" + classifyFullInfo.getCurrentClassifyVO().getName() + "_闆嗗洟鐮佸鍑烘ā鏉�.xls";
+		try {
+			new File(excelName).createNewFile();
+		} catch (Throwable e) {
+			throw new VciBaseException(LangBaseUtil.getErrorMsg(e), new String[]{excelName}, e);
+		}
+		LinkedList<String> finalFieldList = fieldList;
+		Map<String, CodeClassifyTemplateAttrVO> attrVOMap = templateVO.getAttributes().stream().filter(s-> finalFieldList.contains(s.getId().toLowerCase(Locale.ROOT))).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+		List<WriteExcelData> excelDataList = new ArrayList<>();
+		Workbook workbook = new HSSFWorkbook();
+		List<CodeAndGroupCodeAttrMappingDTO>  codeAndGroupCodeAttrMappingDTOList=	execGroupCodePortDataDTO.getCodeAttrMapGroupAttrDTOS();
+
+		Map<String, CodeAndGroupCodeAttrMappingDTO> jAttrVOMap = codeAndGroupCodeAttrMappingDTOList.stream().filter(s-> finalFieldList.contains(s.getTargetAttrKey().toLowerCase(Locale.ROOT))).collect(Collectors.toMap(s -> s.getTargetAttrKey().toLowerCase(Locale.ROOT), t -> t));
+
+		WriteExcelData codeExcelData = new WriteExcelData(0, 0, "浼佷笟缂栫爜");
+		WriteExcelData groupExcelData = new WriteExcelData(0, 1, "闆嗗洟鐮�");
+		excelDataList.add(codeExcelData);
+		excelDataList.add(groupExcelData);
+		for (int i = 0; i < fieldList.size(); i++) {
+			String attrId=fieldList.get(i);
+			if(attrId.equals(CODE_FIELD)||attrId.equals(CODE_GROUP_FIELD)){
+				continue;
+			}
+			if (attrVOMap.containsKey(attrId)) {
+				CodeClassifyTemplateAttrVO attrVO = attrVOMap.get(attrId);
+				//Object text = attrVO.getName();
+				CodeAndGroupCodeAttrMappingDTO codeAttrMappingDTO = jAttrVOMap.get(attrId);
+				Object text = codeAttrMappingDTO.getSourceAttrName();
+				text = exportKeyAndRequired(workbook, attrVO, text);
+				WriteExcelData excelData = new WriteExcelData(0, i, text);
+				if (text instanceof RichTextString) {
+					excelData.setFontColor(String.valueOf(HSSFColor.HSSFColorPredefined.RED.getIndex()));
+				}
+				excelDataList.add(excelData);
+			}
+		}
+		final Integer[] rowIndex = {0};
+		dataList.stream().forEach(data -> {
+			rowIndex[0]++;
+			String id=data.getOrDefault("id", "");
+			excelDataList.add(new WriteExcelData(rowIndex[0], 0, id));
+			String groupCode=data.getOrDefault("groupcode", "");
+			excelDataList.add(new WriteExcelData(rowIndex[0], 1, groupCode));
+			List<String> newFieldList = finalFieldList.stream().filter(e -> !e.equals("id") &&!e.equals("groupcode")).collect(Collectors.toList());
+
+			for (int i = 0; i < newFieldList.size(); i++) {
+				String attrId = newFieldList.get(i).toLowerCase(Locale.ROOT);
+				if(attrId.equals("id")){
+
+				}else if(attrId.equals("groupcode")){
+
+				}else{
+					if (attrVOMap.containsKey(attrId)) {
+						CodeClassifyTemplateAttrVO attrVO = attrVOMap.get(attrId);
+						if (StringUtils.isNotBlank(attrVO.getEnumId()) || StringUtils.isNotBlank(attrVO.getEnumString())) {
+							attrId = attrId + "Text";
+						}
+						if (StringUtils.isNotBlank(attrVO.getReferBtmId()) || StringUtils.isNotBlank(attrVO.getReferConfig())) {
+							attrId = attrId + "name";
+						}
+						if (VciQueryWrapperForDO.LC_STATUS_FIELD.equalsIgnoreCase(attrId)) {
+							attrId = VciQueryWrapperForDO.LC_STATUS_FIELD_TEXT.toLowerCase(Locale.ROOT);
+						}
+						excelDataList.add(new WriteExcelData(rowIndex[0], i+2, data.getOrDefault(attrId, "")));
+					}
+				}
+			}
+		});
+		WriteExcelOption excelOption = new WriteExcelOption();
+		excelOption.addSheetDataList(execGroupCodePortDataDTO.getSheetName(),excelDataList);
+
+		//澧炲姞妯℃澘鐨勪俊鎭鍏�
+		LinkedList<WriteExcelData> tempEDList = new LinkedList<>();
+		tempEDList.add(new WriteExcelData(0,0,"妯℃澘涓婚敭"));
+		tempEDList.add(new WriteExcelData(0,1,"妯℃澘浠e彿"));
+		tempEDList.add(new WriteExcelData(0,2,"妯℃澘鍚嶇О"));
+		tempEDList.add(new WriteExcelData(1,0,templateVO.getOid()));
+		tempEDList.add(new WriteExcelData(1,1,templateVO.getId()));
+		tempEDList.add(new WriteExcelData(1,2,templateVO.getName()));
+		excelOption.addSheetDataList("妯℃澘淇℃伅銆愯鍕垮垹闄ゆ垨绉诲姩銆�",tempEDList);
+		ExcelUtil.writeDataToFile(excelName, excelOption);
+		log.info("鏂囦欢璺緞"+excelName);
+		return excelName;
+	}
+
+	/***
+	 * 闆嗗洟瀵煎嚭妯℃澘灞炴�ф槧灏勪俊鎭幏鍙�
+	 * @param templateVO
+	 * @param execGroupCodePortDataDTO
+	 */
+	private void createExportGroupCodeMapConfig(CodeClassifyTemplateVO templateVO,ExecGroupCodePortDataDTO execGroupCodePortDataDTO){
+		String classOid=templateVO.getCodeclassifyoid();
+		String templateOid=templateVO.getOid();
+		R r=mdmInterJtClient.list_mapping(classOid);
+		if(r.isSuccess()){
+			List<DockingPreAttrMappingVO>dockingPreAttrMappingVOList= (List<DockingPreAttrMappingVO>) r.getData();
+			List<CodeAndGroupCodeAttrMappingDTO> codeAttrMapGroupAttrDTOS=new ArrayList<>();
+			LinkedList<String> fieldList=new LinkedList<>();
+			LinkedList<String> colNameList=new LinkedList<>();
+			dockingPreAttrMappingVOList.stream().forEach(dockingPreAttrMappingVO -> {
+				CodeAndGroupCodeAttrMappingDTO codeAndGroupCodeAttrMappingDTO=new CodeAndGroupCodeAttrMappingDTO();
+				if(StringUtils.isNotBlank(dockingPreAttrMappingVO.getTargetAttrId())){
+					codeAndGroupCodeAttrMappingDTO.setDefaultValue(dockingPreAttrMappingVO.getDefaultValue());
+					codeAndGroupCodeAttrMappingDTO.setMetaListId(dockingPreAttrMappingVO.getMetaListId());
+					codeAndGroupCodeAttrMappingDTO.setSourceAttrKey(dockingPreAttrMappingVO.getSourceAttrKey());
+					codeAndGroupCodeAttrMappingDTO.setSourceAttrName(dockingPreAttrMappingVO.getSourceAttrName());
+					codeAndGroupCodeAttrMappingDTO.setTargetAttrId(dockingPreAttrMappingVO.getTargetAttrId());
+					codeAndGroupCodeAttrMappingDTO.setTargetAttrKey(dockingPreAttrMappingVO.getTargetAttrKey());
+					codeAndGroupCodeAttrMappingDTO.setTargetAttrName(dockingPreAttrMappingVO.getTargetAttrName());
+					fieldList.add(dockingPreAttrMappingVO.getTargetAttrKey());
+					colNameList.add(dockingPreAttrMappingVO.getSourceAttrName());
+				}
+				codeAttrMapGroupAttrDTOS.add(codeAndGroupCodeAttrMappingDTO);
+			});
+			execGroupCodePortDataDTO.setCodeAttrMapGroupAttrDTOS(codeAttrMapGroupAttrDTOS);
+			execGroupCodePortDataDTO.setFieldList(fieldList);
+			execGroupCodePortDataDTO.setColName(colNameList);
+		}
+	}
+
+	/***
+	 * 鏌ヨ鏈湁闆嗗洟鐮佺殑鏁版嵁
+	 * @param classifyFullInfo
+	 * @param templateVO
+	 * @param selectFieldList
+	 * @param dataList
+	 */
+	private void getDatas(CodeClassifyFullInfoBO classifyFullInfo,CodeClassifyTemplateVO templateVO,LinkedList<String> selectFieldList,List<Map<String,String>>dataList){
+		//鍏堟煡璇㈡暟鎹�
+		String btmTypeId = classifyFullInfo.getTopClassifyVO().getBtmTypeId();
+		String codeClassifyOid=classifyFullInfo.getCurrentClassifyVO().getOid();
+		Map<String, String> conditionMap = new HashMap<>();
+		if(conditionMap == null){
+			conditionMap = new HashMap<>();
+		}
+		if(conditionMap.containsKey(VciQueryWrapperForDO.OID_FIELD)){
+			conditionMap.put(VciQueryWrapperForDO.OID_FIELD,QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(conditionMap.get(VciQueryWrapperForDO.OID_FIELD)) + ")");
+		}
+		conditionMap.put("codeclsfpath","*" + codeClassifyOid + "*");
+		conditionMap.put("groupcode_null", "null");
+		conditionMap.put("lastr", "1");
+		conditionMap.put("lastv", "1");
+
+		R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Arrays.asList(btmTypeId));
+		String tableName = "";
+		if(listR.isSuccess() && !listR.getData().isEmpty()){
+			tableName = Func.isNotBlank(listR.getData().get(0).getTableName()) ? listR.getData().get(0).getTableName():VciBaseUtil.getTableName(btmTypeId);
+		}else{
+			tableName = VciBaseUtil.getTableName(btmTypeId);
+		}
+		PageHelper pageHelper = new PageHelper();
+		pageHelper.setLimit(1000000);
+		pageHelper.setPage(1);
+		pageHelper.addDefaultDesc("createTime");
+		DataGrid<Map<String, String>> dataGrid = engineService.queryGrid(btmTypeId, templateVO, conditionMap, pageHelper);
+		//杞崲鏁版嵁
+		if(!CollectionUtils.isEmpty(dataGrid.getData())){
+			dataList.addAll(dataGrid.getData());
+		}
+		//灏佽鏌ヨ鍑烘潵鐨勬暟鎹�
+		engineService.wrapperData(dataList, templateVO, selectFieldList,false);
+		//modify by weidy@2022-09-27
+		//鍥犱负鍦ㄥ垪琛ㄥ拰琛ㄥ崟鐨勬樉绀虹殑鏃跺�欙紝鎴戜滑鐨勫紑鍏崇被鍨嬮〉闈細澶勭悊锛屼絾鏄湪瀵煎嚭鐨勬椂鍊欙紝鎴戜滑闇�瑕佸皢true鍜宖alse閮芥浛鎹㈡垚涓枃
+		engineService.wrapperBoolean(dataList,templateVO);
+		log.info("瀵煎嚭妯℃澘鐨勬暟鎹潯鐩暟:"+dataList.size());
+	}
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeALlCodeMapper.xml b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeALlCodeMapper.xml
index 523d622..1a108c6 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeALlCodeMapper.xml
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeALlCodeMapper.xml
@@ -9,5 +9,17 @@
     <select id="selectCodeAllCodePage" resultMap="CodeAllcodeResultMap">
         select * from PL_CODE_ALLCODE
     </select>
+    <select id="selectGroupByClassify" resultMap="CodeAllcodeResultMap">
+        select codeClassifyOid,
+               codeRuleOid,
+               serialUnit,
+               max(unFillSerial) unFillSerial
+        from (select codeClassifyOid,
+                     codeRuleOid,
+                     serialUnit,
+                     to_number(replace(unFillSerial, ${replaceString}, '')) unFillSerial
+              from PL_CODE_ALLCODE where codeClassifyOid in (${codeClassifyOid}))
+        group by codeClassifyOid, codeRuleOid, serialUnit
+    </select>
 
 </mapper>
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeCLassifyMapper.xml b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeCLassifyMapper.xml
index dd22b32..049f925 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeCLassifyMapper.xml
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeCLassifyMapper.xml
@@ -559,12 +559,6 @@
             connect by prior codeclassify0.PARENTCODECLASSIFYOID = codeclassify0.oid
     </select>
 
-    <select id="selectStartWithCurrentOid" resultMap="plCodeClassifyResultMap">
-        select * from <include refid="tableName"/>
-                          start with oid = #{oid}
-        connect by prior oid = parentcodeclassifyoid;
-    </select>
-
     <update id="batchUpdateLcStatus" parameterType="java.util.List">
         BEGIN
         <foreach collection="records" item="item" index="index" separator=";">

--
Gitblit v1.9.3