From 373210bde9db79e6cf69ed23b433711d218af846 Mon Sep 17 00:00:00 2001
From: xiejun <xj@2023>
Date: 星期四, 30 十一月 2023 18:32:26 +0800
Subject: [PATCH] 字符集功能添加

---
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeRuleCharacterVO.java  |   35 +++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeRuleCharacterService.java         |   39 +++
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/字符集.json    |    5 
 Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/constant/CodeTableNameConstant.java |    5 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleCharacterServiceImpl.java |  113 +++++++++++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeRuleCharacterWapper.java           |   73 +++++++
 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeRuleCharacterMapper.xml                          |   36 +++
 Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/constant/MdmEnumIdConstant.java |    5 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeRuleCharacterEnum.java            |  135 +++++++++++++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeRuleCharacterMapper.java            |    7 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeRuleCharacterController.java    |   59 +++++
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeRuleCharacter.java          |   53 +++++
 12 files changed, 565 insertions(+), 0 deletions(-)

diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeRuleCharacter.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeRuleCharacter.java
new file mode 100644
index 0000000..a161963
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeRuleCharacter.java
@@ -0,0 +1,53 @@
+package com.vci.ubcs.code.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.vci.ubcs.starter.constant.CodeTableNameConstant;
+import com.vci.ubcs.starter.revision.model.BaseModel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * 鐩镐技鏌ヨ瑙勫垯鏄剧ず瀵硅薄
+ *
+ * @author xj
+ * @date 2023-11-30
+ */
+@TableName(CodeTableNameConstant.PL_CODE_RULE_CHARACTER)
+@ApiModel(value = "CodeRuleCharacter瀵硅薄", description = "缂栫爜瑙勫垯瀛楃闆�")
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class CodeRuleCharacter extends BaseModel{
+	/**
+	 * 绂佹淇敼杩欎釜鍊�
+	 */
+	private static final long serialVersionUID = 4615707119066298941L;
+	/***
+	 * 鍙樿鍒檕id
+	 */
+	@NotBlank(message = "瑙勫垯鐨勪富閿笉鑳戒负绌�")
+	@ApiModelProperty(value = "瑙勫垯鐨勪富閿笉鑳戒负绌�")
+	private String codeRuleId;
+	/**
+	 * 瀛楃闆�
+	 */
+	@ApiModelProperty(value = "瀛楃闆�")
+	private String chartValue;
+	/***
+	 * 瀛楃绫诲瀷
+	 */
+	@ApiModelProperty(value = "瀛楃绫诲瀷")
+	@NotBlank(message = "瀛楃绫诲瀷涓嶈兘涓虹┖")
+	private String chartType;
+
+	/***
+	 * 瀛楃绫诲瀷鏄剧ず鍊�
+	 */
+	@ApiModelProperty(value = "瀛楃绫诲瀷鏄剧ず鍊�")
+	@TableField(exist = false)
+	private String chartTypeText;
+}
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
new file mode 100644
index 0000000..74ce347
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeRuleCharacterVO.java
@@ -0,0 +1,35 @@
+package com.vci.ubcs.code.vo.pagemodel;
+
+import com.vci.ubcs.starter.revision.model.BaseModel;
+import lombok.Data;
+
+/**
+ * 鐩镐技鏌ヨ瑙勫垯鏄剧ず瀵硅薄
+ *
+ * @author xj
+ * @date 2023-11-30
+ */
+@Data
+public class CodeRuleCharacterVO extends BaseModel {
+	/**
+	 * 绂佹淇敼杩欎釜鍊�
+	 */
+	private static final long serialVersionUID = 4615707119066298949L;
+	/***
+	 * 瑙勫垯oid
+	 */
+	private String codeRuleId;
+	/**
+	 * 瀛楃闆�
+	 */
+	private String chartValue;
+	/***
+	 * 瀛楃绫诲瀷
+	 */
+	private String chartType;
+	/***
+	 * 瀛楃绫诲瀷鏄剧ず鍊�
+	 */
+	private String chartTypeText;
+
+}
diff --git "a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/\345\255\227\347\254\246\351\233\206.json" "b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/\345\255\227\347\254\246\351\233\206.json"
new file mode 100644
index 0000000..2f0428d
--- /dev/null
+++ "b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/webserviceModel/attrmap/\345\255\227\347\254\246\351\233\206.json"
@@ -0,0 +1,5 @@
+{
+  "codeRuleId": "1729702446013485056",
+  "chartValue": "abckzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz",
+  "chartType": "charset"
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/constant/CodeTableNameConstant.java b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/constant/CodeTableNameConstant.java
index b227b64..74a8a3f 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/constant/CodeTableNameConstant.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/constant/CodeTableNameConstant.java
@@ -78,6 +78,11 @@
 	public static final String PL_CODE_RULE = "PL_CODE_RULE";
 
 	/**
+	 * 缂栫爜瑙勫垯瀛楃闆�
+	 */
+	public static final String PL_CODE_RULE_CHARACTER = "PL_CODE_RULE_CHARACTER";
+
+	/**
 	 * 缂栫爜瑙勫垯鐨勬祦姘村��
 	 */
 	public static final String PL_CODE_SERIALVALUE = "PL_CODE_SERIALVALUE";
diff --git a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/constant/MdmEnumIdConstant.java b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/constant/MdmEnumIdConstant.java
index b6b2664..cb5d649 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/constant/MdmEnumIdConstant.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/constant/MdmEnumIdConstant.java
@@ -80,4 +80,9 @@
 	 * 绯荤粺鎺ュ彛绫诲瀷
 	 */
 	public static  final  String SYS_INTEGRATION_LOG_TYPE="sysIntegrationLogType";
+
+	/***
+	 * 绯荤粺鎺ュ彛绫诲瀷
+	 */
+	public static  final  String CODE_RULE_CHARACTER_TYPE="code_rule_character_type";
 }
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
new file mode 100644
index 0000000..a7f08a7
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeRuleCharacterController.java
@@ -0,0 +1,59 @@
+package com.vci.ubcs.code.controller;
+
+import com.vci.ubcs.code.service.ICodeRuleCharacterService;
+import com.vci.ubcs.code.vo.pagemodel.CodeRuleCharacterVO;
+import org.springblade.core.tool.api.R;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+
+/***
+ * 瑙勫垯瀛楃闆嗛厤缃�
+ * @author xj
+ * @date 2023-11-30
+ */
+@RestController
+@RequestMapping("/codeRuleCharacterController")
+public class CodeRuleCharacterController {
+	@Resource
+	 private ICodeRuleCharacterService iCodeRuleCharacterService;
+	/**
+	 * 浣跨敤缂栫爜瑙勫垯oid鑾峰彇鏁版嵁
+	 * @param codeRuleId 瑙勫垯oid
+	 * @return 鏁版嵁鍐呭
+	 */
+	@GetMapping("/list")
+	public R<List<Map<String,String>>> getDataByOid(@RequestParam("codeRuleId")String codeRuleId,@RequestParam("chartType")String chartType){
+		return R.data(iCodeRuleCharacterService.getDataByRuleId(codeRuleId,chartType));
+	}
+	/**
+	 * 淇濆瓨瑙勫垯瀵硅薄
+	 * @param codeRuleCharacterVO 瑙勫垯瀛楃瀵硅薄
+	 * @return 鏁版嵁鍐呭
+	 */
+	@PostMapping("/addSave")
+	public R addSave(@RequestBody CodeRuleCharacterVO codeRuleCharacterVO){
+		return iCodeRuleCharacterService.saveOrUpdate(codeRuleCharacterVO);
+	}
+	/**
+	 * 淇敼瑙勫垯瀵硅薄
+	 * @param codeRuleCharacterVO 瑙勫垯瀛楃瀵硅薄
+	 * @return 鏁版嵁鍐呭
+	 */
+	@PostMapping("/editSave")
+	public R editSave(@RequestBody CodeRuleCharacterVO codeRuleCharacterVO){
+		return iCodeRuleCharacterService.saveOrUpdate(codeRuleCharacterVO);
+	}
+
+	/**
+	 * 淇敼瑙勫垯瀵硅薄
+	 * @param codeRuleCharacterVO 瑙勫垯瀛楃瀵硅薄
+	 * @return 鏁版嵁鍐呭
+	 */
+	@PostMapping("/delete")
+	public R delete(@RequestBody CodeRuleCharacterVO codeRuleCharacterVO){
+		return iCodeRuleCharacterService.saveOrUpdate(codeRuleCharacterVO);
+	}
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeRuleCharacterEnum.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeRuleCharacterEnum.java
new file mode 100644
index 0000000..e48ba2b
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/CodeRuleCharacterEnum.java
@@ -0,0 +1,135 @@
+package com.vci.ubcs.code.enumpack;
+
+import com.vci.ubcs.starter.annotation.VciEnum;
+import com.vci.ubcs.starter.web.constant.MdmEnumIdConstant;
+import com.vci.ubcs.starter.web.enumpck.BaseEnum;
+
+/**
+ * 缂栫爜瑙勫垯鐮佹瀛楃鎺у埗绫诲瀷
+ * @author weidy
+ * @date 2022-1-17
+ */
+@VciEnum(name = MdmEnumIdConstant.CODE_RULE_CHARACTER_TYPE,text = "缂栫爜瑙勫垯鐮佹瀛楃鎺у埗绫诲瀷",description = "")
+public enum CodeRuleCharacterEnum implements BaseEnum {
+	/**
+	 * 鍙敤瀛楃闆�
+	 */
+	CODE_RULE_CHARACTER_CHARSET("charset","鍙敤瀛楃闆�"),
+
+	/**
+	 * 鍙敤瀛楃闆�
+	 */
+	CODE_RULE_CHARACTER_FILLERCHAR("fillerChar","鍙敤瀛楃闆�"),
+
+	/**
+	 * 琛ヤ綅瀛楃
+	 */
+	CODE_RULE_CHARACTER_SEPARATOR("separator","琛ヤ綅瀛楃"),
+	/**
+	 *鍓嶅悗缂�瀛楃
+	 */
+	CODE_RULE_CHARACTER_PREFIX("prefix","鍓嶅悗缂�瀛楃");
+	/**
+	 * 鏋氫妇鐨勫��
+	 */
+	private String value;
+
+	/**
+	 * 鏋氫妇鏄剧ず鏂囨湰
+	 */
+	private String text;
+
+	/**
+	 * 鑾峰彇鏋氫妇鍊�
+	 *
+	 * @return 鏋氫妇鍊�
+	 */
+	@Override
+	public String getValue() {
+		return value;
+	}
+
+	/**
+	 * 璁剧疆鏋氫妇鍊�
+	 *
+	 * @param value 鏋氫妇鍊�
+	 */
+	public void setValue(String value) {
+		this.value = value;
+	}
+
+	/**
+	 * 鑾峰彇鏋氫妇鏄剧ず鏂囨湰
+	 *
+	 * @return 鏄剧ず鏂囨湰
+	 */
+	@Override
+	public String getText() {
+		return text;
+	}
+
+	/**
+	 * 璁剧疆鏄剧ず鏂囨湰
+	 *
+	 * @param text 鏄剧ず鏂囨湰
+	 */
+	public void setText(String text) {
+		this.text = text;
+	}
+
+	/**
+	 * 鏋勯�犲嚱鏁�
+	 *
+	 * @param value 鍊�
+	 * @param text  鏄剧ず鏂囨湰
+	 */
+	private CodeRuleCharacterEnum(String value, String text) {
+		this.value = value;
+		this.text = text;
+	}
+
+	/**
+	 * 鏍规嵁鍚嶇О鑾峰彇瀵瑰簲鐨勬灇涓惧��
+	 *
+	 * @param text 鍚嶇О
+	 * @return 鏋氫妇鍊�
+	 */
+	public static String getValueByText(String text) {
+		for (CodeRuleCharacterEnum wenum : CodeRuleCharacterEnum.values()) {
+			if (wenum.getText().equalsIgnoreCase(text)) {
+				return wenum.getValue();
+			}
+		}
+		return "";
+	}
+
+	/**
+	 * 鏍规嵁鏋氫妇鍊艰幏鍙栧悕绉�
+	 *
+	 * @param value 鏋氫妇鍊�
+	 * @return 鍚嶇О
+	 */
+	public static String getTextByValue(String value) {
+		for (CodeRuleCharacterEnum wenum : CodeRuleCharacterEnum.values()) {
+			if (wenum.getValue().equalsIgnoreCase(value)) {
+				return wenum.getText();
+			}
+		}
+		return "";
+	}
+
+	/**
+	 * 鏍规嵁鏋氫妇鍊艰幏鍙栨灇涓惧璞�
+	 *
+	 * @param value 鏋氫妇鍊�
+	 * @return 鏋氫妇瀵硅薄锛屼笉瀛樺湪鏃跺�欒繑鍥瀗ull
+	 */
+	public static CodeRuleCharacterEnum forValue(String value) {
+		for (CodeRuleCharacterEnum wenum : CodeRuleCharacterEnum.values()) {
+			if (wenum.getValue().equalsIgnoreCase(value)) {
+				return wenum;
+			}
+		}
+		return null;
+	}
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeRuleCharacterMapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeRuleCharacterMapper.java
new file mode 100644
index 0000000..164f486
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeRuleCharacterMapper.java
@@ -0,0 +1,7 @@
+package com.vci.ubcs.code.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.vci.ubcs.code.entity.CodeRuleCharacter;
+
+public interface CodeRuleCharacterMapper extends BaseMapper<CodeRuleCharacter>{
+}
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
new file mode 100644
index 0000000..f96aada
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeRuleCharacterService.java
@@ -0,0 +1,39 @@
+package com.vci.ubcs.code.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.yulichang.base.MPJBaseService;
+import com.vci.ubcs.code.entity.CodeAllCode;
+import com.vci.ubcs.code.entity.CodeClassify;
+import com.vci.ubcs.code.entity.CodeResembleRule;
+import com.vci.ubcs.code.entity.CodeRuleCharacter;
+import com.vci.ubcs.code.vo.pagemodel.CodeRuleCharacterVO;
+import com.vci.ubcs.starter.exception.VciBaseException;
+import org.springblade.core.tool.api.R;
+
+import java.util.List;
+import java.util.Map;
+
+/***
+ * 瑙勫垯瀛楃闆嗛厤缃�
+ * @author xj
+ * @date 2023-11-30
+ */
+public interface ICodeRuleCharacterService  extends IService<CodeRuleCharacter> {
+
+	/**
+	 * 浣跨敤缂栫爜瑙勫垯oid鑾峰彇鏁版嵁
+	 * @param codeRuleId
+	 * @param chartType
+	 * @return
+	 * @throws VciBaseException
+	 */
+	List<Map<String,String>> getDataByRuleId(String codeRuleId,String chartType)throws VciBaseException;
+
+	/***
+	 * 淇濆瓨缂栫爜瑙勫垯瀛楃闆�
+	 * @param codeRuleCharacterVO
+	 * @return
+	 */
+	R saveOrUpdate(CodeRuleCharacterVO codeRuleCharacterVO)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
new file mode 100644
index 0000000..aaabd6f
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleCharacterServiceImpl.java
@@ -0,0 +1,113 @@
+package com.vci.ubcs.code.service.impl;
+
+import com.alibaba.nacos.common.utils.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.base.Joiner;
+import com.vci.ubcs.code.entity.CodeRuleCharacter;
+import com.vci.ubcs.code.mapper.CodeRuleCharacterMapper;
+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.util.DefaultAttrAssimtUtil;
+import com.vci.ubcs.starter.web.util.VciBaseUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/***
+ * 缂栫爜瑙勫垯瀛楃闆嗘湇鍔�
+ * @author xj
+ * @date 2023-11-30
+ */
+@Service
+public class CodeRuleCharacterServiceImpl extends ServiceImpl<CodeRuleCharacterMapper, CodeRuleCharacter> implements ICodeRuleCharacterService {
+
+	@Autowired
+	private CodeRuleCharacterMapper codeRuleCharacterMapper;
+	/***
+	 * 浣跨敤缂栫爜瑙勫垯oid鑾峰彇鏁版嵁
+	 * @param codeRuleId
+	 * @param chartType
+	 * @return
+	 * @throws VciBaseException
+	 */
+	@Override
+	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));
+			}
+			charValueList.add(chartMap);
+		}
+		return charValueList;
+	}
+	/***
+	 * 瀛楃闆嗘暟鎹繚瀛�
+	 * @param codeRuleCharacterVO
+	 * @return
+	 * @throws VciBaseException
+	 */
+	@Override
+	public R saveOrUpdate(CodeRuleCharacterVO codeRuleCharacterVO) 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 + "銆�");
+			}
+			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();
+			DefaultAttrAssimtUtil.addDefaultAttrAssimt(codeRuleCharacter,"character");
+			codeRuleCharacter.setCodeRuleId(codeRuleCharacterVO.getCodeRuleId());
+			codeRuleCharacter.setChartType(codeRuleCharacterVO.getChartType());
+			codeRuleCharacter.setChartValue(codeRuleCharacterVO.getChartValue());
+			codeRuleCharacterMapper.insert(codeRuleCharacter);
+		}
+		return R.status(true);
+	}
+	/**
+	 * 浜ら泦
+	 * @param list1
+	 * @param list2
+	 * @return
+	 */
+	private static List<Character> intersect(List<Character> list1, List<Character> list2) {
+		List<Character> intersect = list1.stream().filter(item -> list2.contains(item)).collect(Collectors.toList());
+		return intersect;
+	}
+
+	/**
+	 * 骞堕泦锛堝幓閲嶏級
+	 * @param list1
+	 * @param list2
+	 * @return
+	 */
+	private static List<Character> union(List<Character> list1, List<Character> list2) {
+		list1.addAll(list2);
+		return list1.stream().distinct().collect(Collectors.toList());
+	}
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeRuleCharacterWapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeRuleCharacterWapper.java
new file mode 100644
index 0000000..70acd48
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeRuleCharacterWapper.java
@@ -0,0 +1,73 @@
+package com.vci.ubcs.code.wrapper;
+
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.vci.ubcs.code.entity.CodeRuleCharacter;
+import com.vci.ubcs.code.enumpack.CodeRuleCharacterEnum;
+import com.vci.ubcs.code.vo.pagemodel.CodeRuleCharacterVO;
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.utils.BeanUtil;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 缂栫爜瀛楃鍖呰绫�,杩斿洖瑙嗗浘灞傛墍闇�鐨勫瓧娈�
+ * @author xj
+ * @date 2023-11-30
+ */
+public class CodeRuleCharacterWapper extends BaseEntityWrapper<CodeRuleCharacter, CodeRuleCharacterVO> {
+	public static CodeRuleCharacterWapper build() {
+		return new CodeRuleCharacterWapper();
+	}
+	@Override
+	public CodeRuleCharacterVO entityVO(CodeRuleCharacter entity) {
+		entity.setChartTypeText(CodeRuleCharacterEnum.getTextByValue(entity.getChartType()));
+		CodeRuleCharacterVO VO = Objects.requireNonNull(BeanUtil.copy(entity, CodeRuleCharacterVO.class));
+		return VO;
+	}
+
+	/***
+	 * 鏁扮粍瀵硅薄杞崲
+	 * @param entitys
+	 * @return
+	 */
+	public List<CodeRuleCharacterVO> entityVOs(Collection<CodeRuleCharacter> entitys) {
+		if(CollectionUtils.isEmpty(entitys)) {return new ArrayList<>();}
+		List<CodeRuleCharacterVO> vos=new ArrayList<>();
+		if(!CollectionUtils.isEmpty(entitys)) {
+			entitys.stream().forEach(vo -> {
+				vos.add(entityVO(vo));
+			});
+		}
+		return vos;
+	}
+
+
+	/***
+	 * 鏁扮粍瀵硅薄杞崲
+	 * @param vos
+	 * @return
+	 */
+	public List<CodeRuleCharacter> voentitys(Collection<CodeRuleCharacterVO> vos) {
+		if(CollectionUtils.isEmpty(vos)) {return new ArrayList<>();}
+		List<CodeRuleCharacter>entitys =new ArrayList<>();
+		if(!CollectionUtils.isEmpty(vos)) {
+			vos.stream().forEach(vo -> {
+				entitys.add(voentity(vo));
+			});
+		}
+		return entitys;
+	}
+
+	/***
+	 * 鏁扮粍瀵硅薄杞崲
+	 * @param vo
+	 * @return
+	 */
+	public CodeRuleCharacter voentity( CodeRuleCharacterVO vo) {
+		CodeRuleCharacter entity = Objects.requireNonNull(BeanUtil.copy(vo, CodeRuleCharacter.class));
+		return entity;
+	}
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeRuleCharacterMapper.xml b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeRuleCharacterMapper.xml
new file mode 100644
index 0000000..014cd51
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeRuleCharacterMapper.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.code.mapper.CodeRuleCharacterMapper">
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="CodeResembleRuleResultMap" type="com.vci.ubcs.code.entity.CodeRuleCharacter">
+        <id property="oid" column="OID"/>
+        <result property="btmname" column="BTMNAME"/>
+        <result property="revisionOid" column="REVISIONOID"/>
+        <result property="nameOid" column="NAMEOID"/>
+        <result property="lastR" column="LASTR"/>
+        <result property="firstR" column="FIRSTR"/>
+        <result property="lastV" column="LASTV"/>
+        <result property="firstV" column="FIRSTV"/>
+        <result property="creator" column="CREATOR"/>
+        <result property="createTime" column="CREATETIME"/>
+        <result property="lastModifier" column="LASTMODIFIER"/>
+        <result property="lastModifyTime" column="LASTMODIFYTIME"/>
+        <result property="revisionRule" column="REVISIONVALUE"/>
+        <result property="versionRule" column="VISIONRULE"/>
+        <result property="revisionValue" column="REVISIONRULE"/>
+        <result property="versionValue" column="VERSIONVALUE"/>
+        <result property="revisionSeq" column="REVISIONSEQ"/>
+        <result property="versionSeq" column="VERSIONSEQ"/>
+        <result property="lctid" column="LCTID"/>
+        <result property="lcStatus" column="LCSTATUS"/>
+        <result property="ts" column="TS"/>
+        <result property="id" column="ID"/>
+        <result property="name" column="NAME"/>
+        <result property="description" column="DESCRIPTION"/>
+        <result property="owner" column="OWNER"/>
+        <result property="copyFromVersion" column="COPYFROMVERSION"/>
+        <result property="codeRuleId" column="CODERULEID"/>
+        <result property="chartValue" column="CHARTVALUE"/>
+        <result property="chartType" column="CHARTTYPE"/>
+    </resultMap>
+</mapper>

--
Gitblit v1.9.3