From 504dcb79430e0010e6b443e1ae2ef7f35b86e1a7 Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期五, 01 十二月 2023 14:35:59 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeRuleCharacterVO.java  |    4 +
 Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/service/impl/LogLocalServiceImpl.java                |   72 +++++++++--------
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeRuleCharacterService.java         |    3 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java             |    2 
 Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/SpecialCharacterConverter.java |   35 ++++++++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java         |    7 +
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleCharacterServiceImpl.java |   70 ++++++++++++----
 Source/UBCS-WEB/src/views/monitor/log/operateLog.vue                                                              |    8 +-
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java            |   22 +++++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeRuleCharacterController.java    |    6 
 10 files changed, 164 insertions(+), 65 deletions(-)

diff --git a/Source/UBCS-WEB/src/views/monitor/log/operateLog.vue b/Source/UBCS-WEB/src/views/monitor/log/operateLog.vue
index 0a8653f..f8aee43 100644
--- a/Source/UBCS-WEB/src/views/monitor/log/operateLog.vue
+++ b/Source/UBCS-WEB/src/views/monitor/log/operateLog.vue
@@ -63,18 +63,18 @@
               label: "鐢ㄦ埛鍚�",
               prop: "userName",
               search: true,
-              width:'100'
+              width:'120'
             },
             {
               label: "濮撳悕",
               prop: "realName",
               search: true,
-              width:'100'
+              width:'120'
             },
             {
               label: "鐢ㄦ埛ip",
               prop: "ip",
-              width:'100'
+              width:'130'
             },
             {
               label: "妯″潡",
@@ -89,7 +89,7 @@
             {
               label: "鎿嶄綔缁撴灉",
               prop: "operateResult",
-              width:'100'
+              width:'110'
             },
             {
               label: "鎻忚堪",
diff --git a/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/service/impl/LogLocalServiceImpl.java b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/service/impl/LogLocalServiceImpl.java
index fe14f86..0a2e420 100644
--- a/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/service/impl/LogLocalServiceImpl.java
+++ b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/service/impl/LogLocalServiceImpl.java
@@ -82,7 +82,7 @@
 	 * @param logParentPath
 	 * @return
 	 */
-	//@Override
+	@Override
 	public List<LocalLogVO> getSystemLogList(String logParentPath) {
 		List<LocalLogVO> localLogsVO = new ArrayList<>();
 		// 涓嶄负绌鸿鏄庢槸鍔犺浇褰撳墠杩欎釜鏈嶅姟璺緞涓嬬殑鏃ュ織鏂囦欢
@@ -90,44 +90,48 @@
 			File file = new File(logParentPath);
 			if (file.isDirectory()) {
 				File[] files = file.listFiles();
-				Arrays.stream(files).forEach(item->{
-					// 缁勫缓鏃ュ織鏂囦欢瀵硅薄
-					LocalLogVO localLog = new LocalLogVO();
-					localLog.setLogName(item.getName());
-					localLog.setLogType(getLogType(item.getName()));
-					localLog.setCreateTime(getLastModifiedOrCreatTime(false,logParentPath));
-					localLog.setLastModifier(getLastModifiedOrCreatTime(true,logParentPath));
-					localLog.setLogPath(logParentPath);
-					String serviceId = getServiceId(logParentPath);
-					localLog.setServiceId(serviceId);
-					localLog.setServiceName(getServiceName(serviceId));
-					localLog.setHasChildren(false);
-					localLogsVO.add(localLog);
-				});
+				if(Func.isNotEmpty(files) && files.length>0){
+					Arrays.stream(files).forEach(item->{
+						// 缁勫缓鏃ュ織鏂囦欢瀵硅薄
+						LocalLogVO localLog = new LocalLogVO();
+						localLog.setLogName(item.getName());
+						localLog.setLogType(getLogType(item.getName()));
+						localLog.setCreateTime(getLastModifiedOrCreatTime(false,logParentPath));
+						localLog.setLastModifier(getLastModifiedOrCreatTime(true,logParentPath));
+						localLog.setLogPath(logParentPath);
+						String serviceId = getServiceId(logParentPath);
+						localLog.setServiceId(serviceId);
+						localLog.setServiceName(getServiceName(serviceId));
+						localLog.setHasChildren(false);
+						localLogsVO.add(localLog);
+					});
+				}
 			}
 		}else {
 			File fileDir = new File(PARENTPATH);
 			File[] childDir = fileDir.listFiles();
-			Arrays.stream(childDir).forEach(dir->{
-				if(dir.getName().contains("ubcs_")){
-					String fullPath = dir.getPath() + LOGPATH;
-					File file = new File(fullPath);
-					if(file.exists()){
-						LocalLogVO localLogVO = new LocalLogVO();
-						localLogVO.setLastModifier(getLastModifiedOrCreatTime(true,fullPath));
-						localLogVO.setCreateTime(getLastModifiedOrCreatTime(false,fullPath));
-						localLogVO.setLogPath(fullPath);
-						String serviceId = getServiceId(file.getPath());
-						localLogVO.setServiceId(serviceId);
-						String serviceName = getServiceName(serviceId);
-						localLogVO.setServiceName(serviceName);
-						localLogVO.setLogType(serviceName+"鏃ュ織鐖剁洰褰�");
-						localLogVO.setLogName(serviceName+"鏃ュ織鐖剁洰褰�");
-						localLogVO.setHasChildren(true);
-						localLogsVO.add(localLogVO);
+			if(Func.isNotEmpty(childDir) && childDir.length > 0){
+				Arrays.stream(childDir).forEach(dir->{
+					if(dir.getName().contains("ubcs_")){
+						String fullPath = dir.getPath() + LOGPATH;
+						File file = new File(fullPath);
+						if(file.exists()){
+							LocalLogVO localLogVO = new LocalLogVO();
+							localLogVO.setLastModifier(getLastModifiedOrCreatTime(true,fullPath));
+							localLogVO.setCreateTime(getLastModifiedOrCreatTime(false,fullPath));
+							localLogVO.setLogPath(fullPath);
+							String serviceId = getServiceId(file.getPath());
+							localLogVO.setServiceId(serviceId);
+							String serviceName = getServiceName(serviceId);
+							localLogVO.setServiceName(serviceName);
+							localLogVO.setLogType(serviceName+"鏃ュ織鐖剁洰褰�");
+							localLogVO.setLogName(serviceName+"鏃ュ織鐖剁洰褰�");
+							localLogVO.setHasChildren(true);
+							localLogsVO.add(localLogVO);
+						}
 					}
-				}
-			});
+				});
+			}
 		}
 		return localLogsVO;
 	}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeRuleCharacterVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeRuleCharacterVO.java
index 74ce347..bad7da2 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeRuleCharacterVO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeRuleCharacterVO.java
@@ -23,6 +23,10 @@
 	 * 瀛楃闆�
 	 */
 	private String chartValue;
+	/**
+	 * 闇�鏇挎崲鐨勫瓧绗�
+	 */
+	private String oldChartValue;
 	/***
 	 * 瀛楃绫诲瀷
 	 */
diff --git a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/SpecialCharacterConverter.java b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/SpecialCharacterConverter.java
new file mode 100644
index 0000000..f5e9c38
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/SpecialCharacterConverter.java
@@ -0,0 +1,35 @@
+package com.vci.ubcs.starter.util;
+
+import net.logstash.logback.encoder.org.apache.commons.lang3.StringEscapeUtils;
+
+/**
+ *
+ * @author ludc
+ * @date 2023/12/1 9:16
+ */
+public class SpecialCharacterConverter {
+
+	/**
+	 * 鐗规畩瀛楃杞箟
+	 * @param input
+	 * @return
+	 */
+	public static String escapeSpecialCharacters(String input) {
+		input = input.replace("'", "''"); // 杞箟鍗曞紩鍙�
+		input = input.replace("\"", "\\\""); // 杞箟鍙屽紩鍙�
+		input = input.replace("%", "\\%"); // 杞箟鐧惧垎鍙�
+		input = input.replace("_", "\\_"); // 杞箟涓嬪垝绾�
+		input = input.replace("\\", "\\\\"); // 杞箟鍙嶆枩鏉�
+		return input;
+	}
+
+	public static String unescapeSpecialCharacters(String input) {
+		input = input.replace("''", "'"); // 鍙嶈浆涔夊崟寮曞彿
+		input = input.replace("\\\"", "\""); // 鍙嶈浆涔夊弻寮曞彿
+		input = input.replace("\\%", "%"); // 鍙嶈浆涔夌櫨鍒嗗彿
+		input = input.replace("\\_", "_"); // 鍙嶈浆涔変笅鍒掔嚎
+		input = input.replace("\\\\", "\\"); // 鍙嶈浆涔夊弽鏂滄潬
+		return input;
+	}
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeRuleCharacterController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeRuleCharacterController.java
index a7f08a7..5d6b29a 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeRuleCharacterController.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeRuleCharacterController.java
@@ -35,7 +35,7 @@
 	 */
 	@PostMapping("/addSave")
 	public R addSave(@RequestBody CodeRuleCharacterVO codeRuleCharacterVO){
-		return iCodeRuleCharacterService.saveOrUpdate(codeRuleCharacterVO);
+		return iCodeRuleCharacterService.saveOrUpdate(codeRuleCharacterVO,1);
 	}
 	/**
 	 * 淇敼瑙勫垯瀵硅薄
@@ -44,7 +44,7 @@
 	 */
 	@PostMapping("/editSave")
 	public R editSave(@RequestBody CodeRuleCharacterVO codeRuleCharacterVO){
-		return iCodeRuleCharacterService.saveOrUpdate(codeRuleCharacterVO);
+		return iCodeRuleCharacterService.saveOrUpdate(codeRuleCharacterVO,2);
 	}
 
 	/**
@@ -54,6 +54,6 @@
 	 */
 	@PostMapping("/delete")
 	public R delete(@RequestBody CodeRuleCharacterVO codeRuleCharacterVO){
-		return iCodeRuleCharacterService.saveOrUpdate(codeRuleCharacterVO);
+		return iCodeRuleCharacterService.saveOrUpdate(codeRuleCharacterVO,3);
 	}
 }
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 dd8b910..f456e51 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
@@ -769,4 +769,26 @@
 	public R addSaveBZ (@RequestBody CodeBZApplyDTO codeBZApplyDTO) throws Exception {
 		return R.success(engineService.addSaveBZ(codeBZApplyDTO));
 	}
+
+	/**
+	 * 涓嬭浇鎵归噺鐢宠鐨勫鍏ユā鏉�
+	 * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+	 * @param response 鍝嶅簲瀵硅薄
+	 * @throws IOException 鎶涘嚭寮傚父
+	 */
+	@GetMapping("/exportGroupCodeExcel")
+	@VciBusinessLog(operateName = "瀵煎嚭闆嗗洟鐮�")
+	public void exportGroupCodeExcel(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);
+		}
+	}
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeRuleCharacterService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeRuleCharacterService.java
index f96aada..f91c7cd 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeRuleCharacterService.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeRuleCharacterService.java
@@ -32,8 +32,9 @@
 	/***
 	 * 淇濆瓨缂栫爜瑙勫垯瀛楃闆�
 	 * @param codeRuleCharacterVO
+	 * @param operationType
 	 * @return
 	 */
-	R saveOrUpdate(CodeRuleCharacterVO codeRuleCharacterVO)throws VciBaseException;
+	R saveOrUpdate(CodeRuleCharacterVO codeRuleCharacterVO,int operationType)throws VciBaseException;
 
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleCharacterServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleCharacterServiceImpl.java
index aaabd6f..edff3be 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleCharacterServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleCharacterServiceImpl.java
@@ -10,6 +10,7 @@
 import com.vci.ubcs.code.service.ICodeRuleCharacterService;
 import com.vci.ubcs.code.vo.pagemodel.CodeRuleCharacterVO;
 import com.vci.ubcs.starter.exception.VciBaseException;
+import com.vci.ubcs.starter.poi.bo.SheetRowData;
 import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
 import com.vci.ubcs.starter.web.util.VciBaseUtil;
 import org.springblade.core.tool.api.R;
@@ -41,19 +42,22 @@
 	public List<Map<String, String>> getDataByRuleId(String codeRuleId,String chartType) throws VciBaseException {
 		List<Map<String,String>> charValueList=new ArrayList<>();
 		CodeRuleCharacter codeRuleCharacter=codeRuleCharacterMapper.selectOne(Wrappers.<CodeRuleCharacter>query().lambda().eq(CodeRuleCharacter::getCodeRuleId,codeRuleId).eq(CodeRuleCharacter::getChartType,chartType));
-		List<Character> characterList=codeRuleCharacter.getChartValue().chars().mapToObj(c -> (char) c).collect(Collectors.toList());
-		for (int i = 0; i < characterList.size(); i += 15) {
-			final int startIndex = i;
-			final int endIndex = Math.min(i + 15, characterList.size());
-			List<Character> subList = characterList.subList(startIndex, endIndex);
-			Map<String, String> chartMap=new HashMap<>();
-			// 璋冪敤鎻掑叆鏁版嵁搴撶殑鏂规硶
-			for (int j=1;j<subList.size()+1;j++){
-				String characterValue=subList.get(j-1)==null?"":subList.get(j-1).toString();
-				chartMap.put(String.valueOf(j),String.valueOf(characterValue));
+		if(codeRuleCharacter!=null&&StringUtils.isNotBlank(codeRuleCharacter.getOid())){
+			List<Character> characterList=codeRuleCharacter.getChartValue().chars().mapToObj(c -> (char) c).collect(Collectors.toList());
+			for (int i = 0; i < characterList.size(); i += 15) {
+				final int startIndex = i;
+				final int endIndex = Math.min(i + 15, characterList.size());
+				List<Character> subList = characterList.subList(startIndex, endIndex);
+				Map<String, String> chartMap=new HashMap<>();
+				// 璋冪敤鎻掑叆鏁版嵁搴撶殑鏂规硶
+				for (int j=1;j<subList.size()+1;j++){
+					String characterValue=subList.get(j-1)==null?"":subList.get(j-1).toString();
+					chartMap.put(String.valueOf(j),String.valueOf(characterValue));
+				}
+				charValueList.add(chartMap);
 			}
-			charValueList.add(chartMap);
 		}
+
 		return charValueList;
 	}
 	/***
@@ -63,20 +67,48 @@
 	 * @throws VciBaseException
 	 */
 	@Override
-	public R saveOrUpdate(CodeRuleCharacterVO codeRuleCharacterVO) throws VciBaseException {
+	public R saveOrUpdate(CodeRuleCharacterVO codeRuleCharacterVO,int operation) throws VciBaseException {
 		VciBaseUtil.alertNotNull(codeRuleCharacterVO.getCodeRuleId(),"缂栫爜瑙勫垯id",codeRuleCharacterVO.getChartType(),"瀛楃闆嗙被鍨�");
 		CodeRuleCharacter codeRuleCharacter=codeRuleCharacterMapper.selectOne(Wrappers.<CodeRuleCharacter>query().lambda().eq(CodeRuleCharacter::getCodeRuleId,codeRuleCharacterVO.getCodeRuleId()).eq(CodeRuleCharacter::getChartType,codeRuleCharacterVO.getChartType()));
 		if(codeRuleCharacter!=null&& StringUtils.isNotBlank(codeRuleCharacter.getOid())) {
 			List<Character> oldCharacterList =  StringUtils.isBlank(codeRuleCharacter.getChartValue())?new ArrayList<>():codeRuleCharacter.getChartValue().chars().mapToObj(c -> (char) c).collect(Collectors.toList());
 			List<Character> newCharacterList = StringUtils.isBlank(codeRuleCharacterVO.getChartValue())?new ArrayList<>():codeRuleCharacterVO.getChartValue().chars().mapToObj(c -> (char) c).collect(Collectors.toList());
-			List<Character> intersectList = intersect(oldCharacterList, newCharacterList);
-			if (intersectList.size() > 0) {
-				String ss = Joiner.on(",").join(intersectList);
-				throw new VciBaseException("绯荤粺涓瓨鍦ㄧ浉搴旂殑瀛楃:銆�" + ss + "銆�");
+			if(operation==1) {//鏂板鏃跺��
+				List<Character> intersectList = intersect(oldCharacterList, newCharacterList);
+				if (intersectList.size() > 0) {
+					String ss = Joiner.on(",").join(intersectList);
+					throw new VciBaseException("绯荤粺涓瓨鍦ㄧ浉搴旂殑瀛楃:銆�" + ss + "銆�");
+				}
+				List<Character> allCharacterList = union(oldCharacterList, newCharacterList);
+				String str = allCharacterList.stream().map(integer -> Func.isNotEmpty(integer) ? integer.toString() : "").collect(Collectors.joining());
+				codeRuleCharacter.setChartValue(str);
+			}else if(operation==2){//淇敼
+				String oldChartValue= codeRuleCharacterVO.getOldChartValue();
+				String chartValue= codeRuleCharacterVO.getChartValue();
+				Map<String,String> oldChartNewChartMap=new HashMap<>();
+				List<Character> chartValueList = StringUtils.isBlank(chartValue)?new ArrayList<>():chartValue.chars().mapToObj(c -> (char) c).collect(Collectors.toList());
+				List<Character> oldChartValueList = StringUtils.isBlank(oldChartValue)?new ArrayList<>():oldChartValue.chars().mapToObj(c -> (char) c).collect(Collectors.toList());
+
+			    if(chartValueList.size()!=oldChartValueList.size()){
+					throw new VciBaseException("鏇挎崲鐨勫�间釜鏁颁笌閫変腑鍊肩殑涓暟涓嶇浉绛�");
+				}
+				/***
+				 * id
+				 */
+				for (int i=0;i<oldChartValueList.size();i++){
+					Character oldValue=oldChartValueList.get(i);
+					if(oldCharacterList.contains(oldValue)){
+						int index =oldCharacterList.indexOf(oldValue);
+						oldCharacterList.set(index,chartValueList.get(i));
+					}
+				}
+				String str = oldCharacterList.stream().map(integer -> Func.isNotEmpty(integer) ? integer.toString() : "").collect(Collectors.joining());
+				codeRuleCharacter.setChartValue(str);
+			}else{//鍒犻櫎
+				oldCharacterList.removeAll(newCharacterList);
+				String str = oldCharacterList.stream().map(integer -> Func.isNotEmpty(integer) ? integer.toString() : "").collect(Collectors.joining());
+				codeRuleCharacter.setChartValue(str);
 			}
-			List<Character> allCharacterList = union(oldCharacterList, newCharacterList);
-			String str = allCharacterList.stream().map(integer -> Func.isNotEmpty(integer)?integer.toString():"").collect(Collectors.joining());
-			codeRuleCharacter.setChartValue(str);
 			codeRuleCharacterMapper.updateById(codeRuleCharacter);
 		}else{
 			codeRuleCharacter=new CodeRuleCharacter();
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 2dd56b5..094677d 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
@@ -44,6 +44,7 @@
 import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
 import com.vci.ubcs.starter.util.MdmBtmTypeConstant;
 import com.vci.ubcs.starter.util.SaveLogUtil;
+import com.vci.ubcs.starter.util.SpecialCharacterConverter;
 import com.vci.ubcs.starter.util.UBCSSqlKeyword;
 import com.vci.ubcs.starter.web.constant.QueryOptionConstant;
 import com.vci.ubcs.starter.web.constant.RegExpConstant;
@@ -791,6 +792,7 @@
                 sql[0] += " and oid != '" + orderDTO.getCopyFromVersion() + "'";
             }
             sql[0] += " and lastR = '1' and lastV = '1' ";
+			// 鑾峰彇涓嶅弬涓庢牎楠岀殑鍒嗙被oid
 			String isParticipateCheckOids = classifyService.selectLeafByParentClassifyOid(classifyFullInfo.getTopClassifyVO().getOid(), classifyFullInfo.getCurrentClassifyVO().getOid());
 			if(Func.isNotEmpty(isParticipateCheckOids)){
 				sql[0] += " and codeclsfid not in(" + isParticipateCheckOids + ")";
@@ -1193,12 +1195,12 @@
                     temp = "%s";
                 }
                 queryKey = String.format(temp, "nvl("+ "t." + attrId +",'/')");
-                queryValue = String.format(temp, "'" + (trim ? value.trim() : value) + "'");
+                queryValue = String.format(temp, "'" + (trim ? SpecialCharacterConverter.escapeSpecialCharacters(value.trim()):SpecialCharacterConverter.escapeSpecialCharacters(value)) + "'");
                 conditionMap.put(queryKey, queryValue);
             } else {
 				if(StringUtils.isNotBlank(value)) {
 					//涓虹┖鐨勬椂鍊欎笉浠h〃涓嶆牎楠岋紝鍙槸涓嶅幓闄ょ浉鍏崇殑淇℃伅
-					conditionMap.put("nvl("+ "t." + attrId+",'/')", "'" + value + "'");
+					conditionMap.put("nvl("+ "t." + attrId+",'/')", "'" + SpecialCharacterConverter.escapeSpecialCharacters(value) + "'");
 				}else{
 					conditionMap.put("t." + attrId, QueryOptionConstant.ISNULL);
 				}
@@ -2472,7 +2474,6 @@
 				return getSqlByValue(key, value, attrVOMap,btmType);
 			}
 		}*/
-
     }
 
     /**
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 371139a..99278b3 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
@@ -3824,7 +3824,7 @@
 	private void batchSwitchClassifyAttrOnOrder(Collection<CodeClassifyTemplateAttrVO> attrVOS,List<ClientBusinessObject> dataList,
 												CodeClassifyFullInfoBO classifyFullInfo,boolean isImPort) {
 		Map<String, CodeClassifyTemplateAttrVO> dateAttrVOMap = attrVOS.stream().filter(
-			s -> StringUtils.isNotBlank(s.getClassifyInvokeAttr()) && StringUtils.isNotBlank(s.getClassifyInvokeAttr())
+			s -> StringUtils.isNotBlank(s.getClassifyInvokeAttr())
 		).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
 		Map<String,CodeClassifyFullInfoBO> classifyFullInfoMap=new HashMap<>();
 		classifyFullInfoMap.put(classifyFullInfo.getCurrentClassifyVO().getOid(),classifyFullInfo);

--
Gitblit v1.9.3