From 274e31b26d5eba7977018048366dde0000588dc7 Mon Sep 17 00:00:00 2001
From: yuxc <653031404@qq.com>
Date: 星期一, 10 四月 2023 11:37:50 +0800
Subject: [PATCH] 近义词维护、编码定义、模板池等功能的代码实现功能

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeButtonController.java           |  156 ++
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeKeyattrrepeatEntity.java    |  203 +++
 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeKeyattrrepeatMapper.xml                          |   45 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeKeyattrrepeatServiceImpl.java |   47 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeButtonService.java                |   60 +
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSynonymServiceImpl.java       |   45 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/PlCodeKeyattrrepeatWrapper.java        |   50 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeClassifyClient.java                  |   57 +
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeButtonVO.java                   |   45 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeKeyattrrepeatMapper.java            |   43 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeSynonymEntity.java          |  190 +++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeButtonServiceImpl.java        |  117 ++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/ICodeClassifyServiceImpl.java     |  222 ++++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeSynonymService.java               |   42 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeButtonClient.java                    |   63 +
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeSynonymController.java          |  133 ++
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeKeyattrrepeatDTO.java          |   34 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeSynonymVO.java                  |   34 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeSynonymClient.java                  |   49 
 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeButtonMapper.xml                                 |   44 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeSynonymWrapper.java                |   50 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyController.java         |  158 ++
 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeSynonymMapper.xml                                |   44 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeButtonClient.java                   |   49 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeButtonEntity.java           |  189 +++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeKeyattrrepeatService.java         |   42 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeSynonymMapper.java                  |   43 
 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeCLassifyMapper.xml                               |   53 +
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/lCodeKeyattrrepeatClient.java            |   49 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeKeyattrrepeatController.java    |  147 ++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeClassifyClient.java                 |   49 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeKeyattrrepeatClient.java             |   58 +
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeSynonymDTO.java                |  122 -
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeButtonWrapper.java                 |   52 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeSynonymClient.java                   |   57 +
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/FrameworkDataLCStatus.java            |  105 +
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyService.java              |   54 +
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeButtonMapper.java                   |   44 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeKeyattrrepeatVO.java            |   34 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyMapper.java                 |   66 +
 40 files changed, 3,039 insertions(+), 105 deletions(-)

diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeKeyattrrepeatDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeKeyattrrepeatDTO.java
new file mode 100644
index 0000000..3f3aee4
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeKeyattrrepeatDTO.java
@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.code.dto;
+
+import com.vci.ubcs.code.entity.CodeKeyattrrepeatEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 鍏抽敭灞炴�ф煡閲嶈鍒� 鏁版嵁浼犺緭瀵硅薄瀹炰綋绫�
+ *
+ * @author yuxc
+ * @since 2023-04-03
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class CodeKeyattrrepeatDTO extends CodeKeyattrrepeatEntity {
+	private static final long serialVersionUID = 1L;
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeSynonymDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeSynonymDTO.java
index c4d6716..6cdb01d 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeSynonymDTO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeSynonymDTO.java
@@ -1,104 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
 package com.vci.ubcs.code.dto;
 
-
-import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
+import com.vci.ubcs.code.entity.CodeSynonymEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 /**
- * 鍚屼箟璇嶉厤缃暟鎹紶杈撳璞�
+ * 杩戜箟璇嶇淮鎶� 鏁版嵁浼犺緭瀵硅薄瀹炰綋绫�
  *
- * @author weidy
- * @date 2022-02-17
+ * @author yuxc
+ * @since 2023-04-04
  */
-public class CodeSynonymDTO extends BaseModelVO {
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class CodeSynonymDTO extends CodeSynonymEntity {
+	private static final long serialVersionUID = 1L;
 
-	/**
-     * 绂佹淇敼杩欎釜鍊�
-     */
-	private static final long serialVersionUID = 4615707117393017144L;
-
-	/**
-	 * 鎵�灞炵紪鐮佽鍒�
-	 */
-	private String codeclassifytemplateoid;
-
-	/**
-	 * 鎵�灞炵紪鐮佽鍒欐樉绀烘枃鏈�
-	 */
-	private String codeclassifytemplateoidName;
-	/**
-	 * 婧愬��
-	 */
-	private String sourcevalue;
-
-	/**
-	 * 鍚屼箟璇�
-	 */
-	private String synonymvalue;
-
-
-	/**
-	 * 鑾峰彇 鎵�灞炵紪鐮佽鍒�
-	 */
-	public String getCodeclassifytemplateoid (){
-		return codeclassifytemplateoid;
-	}
-
-	/**
-	 * 璁剧疆 鎵�灞炵紪鐮佽鍒�
-	 */
-	public void setCodeclassifytemplateoid (String codeclassifytemplateoid){
-		this.codeclassifytemplateoid = codeclassifytemplateoid;
-	}
-
-	/**
-	 * 鑾峰彇鎵�灞炵紪鐮佽鍒欐樉绀烘枃鏈�
-	 */
-	public String getCodeclassifytemplateoidName (){
-		return codeclassifytemplateoidName;
-	}
-
-	/**
-	 * 璁剧疆鎵�灞炵紪鐮佽鍒欐樉绀烘枃鏈�
-	 */
-	public void setCodeclassifytemplateoidName (String codeclassifytemplateoidName){
-		this.codeclassifytemplateoidName = codeclassifytemplateoidName;
-	}
-	/**
-	 * 鑾峰彇 婧愬��
-	 */
-	public String getSourcevalue (){
-		return sourcevalue;
-	}
-
-	/**
-	 * 璁剧疆 婧愬��
-	 */
-	public void setSourcevalue (String sourcevalue){
-		this.sourcevalue = sourcevalue;
-	}
-
-	/**
-	 * 鑾峰彇 鍚屼箟璇�
-	 */
-	public String getSynonymvalue (){
-		return synonymvalue;
-	}
-
-	/**
-	 * 璁剧疆 鍚屼箟璇�
-	 */
-	public void setSynonymvalue (String synonymvalue){
-		this.synonymvalue = synonymvalue;
-	}
-
-
-	@Override
-	public String toString() {
-		return "CodeSynonymDTO{" +
-		"codeclassifytemplateoid='" + codeclassifytemplateoid +"',"+
-		"codeclassifytemplateoidName='" + codeclassifytemplateoidName +"'," +
-		"sourcevalue='" + sourcevalue +"',"+
-		"synonymvalue='" + synonymvalue +"',"+
-		"}" + super.toString();
-	}
 }
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeButtonEntity.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeButtonEntity.java
new file mode 100644
index 0000000..5d4be04
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeButtonEntity.java
@@ -0,0 +1,189 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.code.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 妯℃澘鎵╁睍姹� 瀹炰綋绫�
+ *
+ * @author yuxc
+ * @since 2023-03-29
+ */
+@Data
+@TableName("PL_CODE_BUTTON")
+@ApiModel(value = "codebutton瀵硅薄", description = "妯℃澘鎵╁睍姹�")
+//@EqualsAndHashCode(callSuper = false)
+public class CodeButtonEntity  implements Serializable {
+	@JsonSerialize(
+		using = ToStringSerializer.class
+	)
+	@ApiModelProperty("涓婚敭id")
+	@TableId(
+		value = "oid",
+		type = IdType.ASSIGN_ID
+	)
+	private Long oid;
+	@ApiModelProperty("鎸夐挳缂栫爜")
+	private String id;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String revisionoid;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String nameoid;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String btmname;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String lastr;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String firstr;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String lastv;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String firstv;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String creator;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private Date createtime;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String lastmodifier;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private Date lastmodifytime;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String revisionrule;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String versionrule;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private Short revisionseq;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String revisionvalue;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private Short versionseq;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String versionvalue;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String lctid;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String lcstatus;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private Date ts;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String name;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String description;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String owner;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String copyfromversion;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String iconcls;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String executejs;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String usedpositiontype;
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeKeyattrrepeatEntity.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeKeyattrrepeatEntity.java
new file mode 100644
index 0000000..c97a844
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeKeyattrrepeatEntity.java
@@ -0,0 +1,203 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.code.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import lombok.Data;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.Date;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.tenant.mp.TenantEntity;
+
+/**
+ * 鍏抽敭灞炴�ф煡閲嶈鍒� 瀹炰綋绫�
+ *
+ * @author yuxc
+ * @since 2023-04-03
+ */
+@Data
+@TableName("PL_CODE_KEYATTRREPEAT")
+@ApiModel(value = "PlCodeKeyattrrepeat瀵硅薄", description = "鍏抽敭灞炴�ф煡閲嶈鍒�")
+//@EqualsAndHashCode(callSuper = true)
+public class CodeKeyattrrepeatEntity  implements Serializable {
+
+	/**
+	 *
+	 */
+	@JsonSerialize(
+		using = ToStringSerializer.class
+	)
+	@ApiModelProperty("涓婚敭id")
+	@TableId(
+		value = "oid",
+		type = IdType.ASSIGN_ID
+	)
+	private String oid;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String id;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String revisionoid;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String nameoid;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String btmname;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String lastr;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String firstr;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String lastv;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String firstv;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String creator;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private Date createtime;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String lastmodifier;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private Date lastmodifytime;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String revisionrule;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String versionrule;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private Short revisionseq;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String revisionvalue;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private Short versionseq;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String versionvalue;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String lctid;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String lcstatus;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private Date ts;
+	/**
+	 * 瑙勫垯鍚嶇О
+	 */
+	@ApiModelProperty(value = "瑙勫垯鍚嶇О")
+	private String name;
+	/**
+	 * 鎻忚堪
+	 */
+	@ApiModelProperty(value = "鎻忚堪")
+	private String description;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String owner;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String copyfromversion;
+	/**
+	 * 蹇界暐澶у皬鍐�
+	 */
+	@ApiModelProperty(value = "蹇界暐澶у皬鍐�")
+	private String ignorecaseflag;
+	/**
+	 * 蹇界暐绌烘牸
+	 */
+	@ApiModelProperty(value = "蹇界暐绌烘牸")
+	private String ignorespaceflag;
+	/**
+	 * 蹇界暐鍏ㄩ儴绌烘牸
+	 */
+	@ApiModelProperty(value = "蹇界暐鍏ㄩ儴绌烘牸")
+	private String ignoreallspaceflag;
+	/**
+	 * 蹇界暐鍏ㄥ崐瑙�
+	 */
+	@ApiModelProperty(value = "蹇界暐鍏ㄥ崐瑙�")
+	private String ignorewidthflag;
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeSynonymEntity.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeSynonymEntity.java
new file mode 100644
index 0000000..b8e76c9
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeSynonymEntity.java
@@ -0,0 +1,190 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.code.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import lombok.Data;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 杩戜箟璇嶇淮鎶� 瀹炰綋绫�
+ *
+ * @author yuxc
+ * @since 2023-04-04
+ */
+@Data
+@TableName("PL_CODE_SYNONYM")
+@ApiModel(value = "PlCodeSynonym瀵硅薄", description = "杩戜箟璇嶇淮鎶�")
+//@EqualsAndHashCode(callSuper = true)
+public class CodeSynonymEntity implements Serializable {
+
+	@JsonSerialize(
+		using = ToStringSerializer.class
+	)
+	@ApiModelProperty("涓婚敭id")
+	@TableId(
+		value = "oid",
+		type = IdType.ASSIGN_ID
+	)
+	private String oid;
+	@ApiModelProperty(value = "")
+	private String id;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String revisionoid;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String nameoid;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String btmname;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String lastr;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String firstr;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String lastv;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String firstv;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String creator;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private Date createtime;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String lastmodifier;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private Date lastmodifytime;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String revisionrule;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String versionrule;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private Short revisionseq;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String revisionvalue;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private Short versionseq;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String versionvalue;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String lctid;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String lcstatus;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private Date ts;
+	/**
+	 * 鎵�灞炶涓氬悕绉�
+	 */
+	@ApiModelProperty(value = "鎵�灞炶涓氬悕绉�")
+	private String name;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String description;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String owner;
+	/**
+	 *
+	 */
+	@ApiModelProperty(value = "")
+	private String copyfromversion;
+	/**
+	 * 鎵�灞炴ā鏉�
+	 */
+	@ApiModelProperty(value = "鎵�灞炴ā鏉�")
+	private String codeclassifytemplateoid;
+	/**
+	 * 婧愬��
+	 */
+	@ApiModelProperty(value = "婧愬��")
+	private String sourcevalue;
+	/**
+	 * 鍚屼箟璇�
+	 */
+	@ApiModelProperty(value = "鍚屼箟璇�")
+	private String synonymvalue;
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeButtonVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeButtonVO.java
new file mode 100644
index 0000000..0d2121d
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeButtonVO.java
@@ -0,0 +1,45 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.code.vo;
+
+import com.vci.ubcs.code.entity.CodeButtonEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 妯℃澘鎵╁睍姹� 瑙嗗浘瀹炰綋绫�
+ *
+ * @author yuxc
+ * @since 2023-03-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class CodeButtonVO extends CodeButtonEntity {
+	private static final long serialVersionUID = 1L;
+
+
+	/**
+	 * 浣嶇疆鍚嶇О
+	 */
+	private String usedpositiontypeName;
+	/**
+	 * 鐘舵�佸悕绉�
+	 */
+	private String lcstatusName;
+
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeKeyattrrepeatVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeKeyattrrepeatVO.java
new file mode 100644
index 0000000..060e006
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeKeyattrrepeatVO.java
@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.code.vo;
+
+import com.vci.ubcs.code.entity.CodeKeyattrrepeatEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 鍏抽敭灞炴�ф煡閲嶈鍒� 瑙嗗浘瀹炰綋绫�
+ *
+ * @author yuxc
+ * @since 2023-04-03
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class CodeKeyattrrepeatVO extends CodeKeyattrrepeatEntity {
+	private static final long serialVersionUID = 1L;
+
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeSynonymVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeSynonymVO.java
new file mode 100644
index 0000000..2ac520a
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/CodeSynonymVO.java
@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.code.vo;
+
+import com.vci.ubcs.code.entity.CodeSynonymEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 杩戜箟璇嶇淮鎶� 瑙嗗浘瀹炰綋绫�
+ *
+ * @author yuxc
+ * @since 2023-04-04
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class CodeSynonymVO extends CodeSynonymEntity {
+	private static final long serialVersionUID = 1L;
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeButtonController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeButtonController.java
new file mode 100644
index 0000000..1f47c61
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeButtonController.java
@@ -0,0 +1,156 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.code.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.vci.ubcs.code.entity.CodeButtonEntity;
+import com.vci.ubcs.code.mapper.CodeButtonMapper;
+import com.vci.ubcs.code.service.ICodeButtonService;
+import com.vci.ubcs.code.vo.CodeButtonVO;
+import com.vci.ubcs.code.wrapper.CodeButtonWrapper;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+
+/**
+ * 妯℃澘鎵╁睍姹� 鎺у埗鍣�
+ *
+ * @author yuxc
+ * @since 2023-03-29
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/codebutton")
+@Api(value = "妯℃澘鎵╁睍姹�", tags = "妯℃澘鎵╁睍姹犳帴鍙�")
+public class CodeButtonController extends BladeController {
+
+	private final ICodeButtonService codebuttonService;
+
+	CodeButtonMapper codeButtonMapper;
+
+	/**
+	 * 妯℃澘鎵╁睍姹� 璇︽儏
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "璇︽儏", notes = "浼犲叆codebutton")
+	public R<CodeButtonVO> detail(CodeButtonEntity codebutton) {
+		CodeButtonEntity detail = codeButtonMapper.selectOne(Condition.getQueryWrapper(codebutton));
+		return R.data(CodeButtonWrapper.build().entityVO(detail));
+	}
+	/**
+	 * 妯℃澘鎵╁睍姹� 鍒嗛〉
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "鍒嗛〉", notes = "浼犲叆codebutton")
+	public R<IPage<CodeButtonVO>> list(CodeButtonEntity codebutton, Query query) {
+		IPage<CodeButtonEntity> pages = codeButtonMapper.selectPage(Condition.getPage(query), Condition.getQueryWrapper(codebutton));
+		return R.data(CodeButtonWrapper.build().pageVO(pages));
+	}
+
+	/**
+	 * 妯℃澘鎵╁睍姹� 鑷畾涔夊垎椤�
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "鍒嗛〉", notes = "浼犲叆codebutton")
+	public R<IPage<CodeButtonVO>> page(CodeButtonVO codebutton, Query query) {
+		IPage<CodeButtonVO> pages = codebuttonService.selectcodebuttonPage(Condition.getPage(query), codebutton);
+		return R.data(pages);
+	}
+
+	/**
+	 * 妯℃澘鎵╁睍姹� 鏂板
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "鏂板", notes = "浼犲叆codebutton")
+	public R save(@Valid @RequestBody CodeButtonEntity codebutton) {
+		return R.status(SqlHelper.retBool(codeButtonMapper.insert(codebutton)));
+	}
+
+	/**
+	 * 妯℃澘鎵╁睍姹� 淇敼
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "淇敼", notes = "浼犲叆codebutton")
+	public R update(@Valid @RequestBody CodeButtonEntity codebutton) {
+		return R.status(SqlHelper.retBool(codeButtonMapper.updateById(codebutton)));
+	}
+
+	/**
+	 * 妯℃澘鎵╁睍姹� 鏂板鎴栦慨鏀�
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆codebutton")
+	public R submit(@Valid @RequestBody CodeButtonEntity codebutton) {
+		if(codebutton.getOid() != null){
+			return R.status(SqlHelper.retBool(codeButtonMapper.updateById(codebutton)));
+		}
+		return R.status(SqlHelper.retBool(codeButtonMapper.insert(codebutton)));
+	}
+
+	/**
+	 * 妯℃澘鎵╁睍姹� 鍒犻櫎
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
+	public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
+//		return codebuttonService.deleteCodeButton(ids);
+		return R.status(SqlHelper.retBool(codeButtonMapper.deleteBatchIds(Func.toLongList(ids))));
+	}
+
+
+	/**
+	 * 鍚敤
+	 * @param oid 鏁版嵁浼犺緭瀵硅薄
+	 * @return 鍚敤缁撴灉鍙嶉锛�
+	 */
+	@PostMapping("/enableData")
+	public R enableOrgDuty(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String oid) {
+		return codebuttonService.enableCodeButton(oid);
+	}
+
+	/**
+	 * 鍋滅敤
+	 * @param  oid 闇�瑕佷紶杈�
+	 * @return 鍋滅敤缁撴灉鍙嶉锛�
+	 */
+	@PostMapping("/disableData")
+	public R disableOrgDuty(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String oid) {
+		return codebuttonService.disableOrgDuty(oid);
+	}
+
+
+}
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
new file mode 100644
index 0000000..4c33373
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyController.java
@@ -0,0 +1,158 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.code.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
+import com.vci.ubcs.code.entity.CodeClassify;
+import com.vci.ubcs.code.mapper.CodeClassifyMapper;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+import javax.validation.Valid;
+
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.*;
+import com.vci.ubcs.code.wrapper.CodeClassifyWrapper;
+import com.vci.ubcs.code.service.ICodeClassifyService;
+import org.springblade.core.boot.ctrl.BladeController;
+
+import java.util.Date;
+
+/**
+ * 涓婚搴撳畾涔夎〃 鎺у埗鍣�
+ *
+ * @author yuxc
+ * @since 2023-04-06
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("ubcs-code/codeClassify")
+@Api(value = "涓婚搴撳畾涔夎〃", tags = "涓婚搴撳畾涔夎〃鎺ュ彛")
+public class CodeClassifyController extends BladeController {
+
+	private final ICodeClassifyService codeClassifyService;
+
+	CodeClassifyMapper codeClassifyMapper;
+	/**
+	 * 涓婚搴撳畾涔夎〃 璇︽儏
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "璇︽儏", notes = "浼犲叆plCodeClassify")
+	public R<CodeClassifyVO> detail(CodeClassify codeClassify) {
+		CodeClassify detail = codeClassifyMapper.selectOne(Condition.getQueryWrapper(codeClassify));
+		return R.data(CodeClassifyWrapper.build().entityVO(detail));
+	}
+	/**
+	 * 涓婚搴撳畾涔夎〃 鍒嗛〉
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "鍒嗛〉", notes = "浼犲叆plCodeClassify")
+	public R<IPage<CodeClassifyVO>> list(CodeClassify codeClassify, Query query) {
+		IPage<CodeClassify> pages = codeClassifyMapper.selectPage(Condition.getPage(query), Condition.getQueryWrapper(codeClassify));
+		return R.data(CodeClassifyWrapper.build().pageVO(pages));
+	}
+
+	/**
+	 * 涓婚搴撳畾涔夎〃 鑷畾涔夊垎椤�
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "鍒嗛〉", notes = "浼犲叆plCodeClassify")
+	public R<IPage<CodeClassifyVO>> page(CodeClassifyVO codeClassify, Query query) {
+		IPage<CodeClassifyVO> pages = codeClassifyService.selectPlCodeClassifyPage(Condition.getPage(query), codeClassify);
+		return R.data(pages);
+	}
+
+	/**
+	 * 涓婚搴撳畾涔夎〃 鏂板
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "鏂板", notes = "浼犲叆plCodeClassify")
+	public R save(@Valid @RequestBody CodeClassify codeClassify) {
+		if(codeClassify.getOrderNum() == null){
+			codeClassify.setOrderNum(0);
+		}
+		return codeClassifyService.addSave(codeClassify);
+	}
+
+	/**
+	 * 涓婚搴撳畾涔夎〃 淇敼
+	 */
+	@PostMapping("/editSave")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "淇敼", notes = "浼犲叆plCodeClassify")
+	public R editSave(@Valid @RequestBody CodeClassify codeClassify) {
+		return codeClassifyService.editSave(codeClassify);
+//		return R.status(SqlHelper.retBool(codeClassifyMapper.updateById(codeClassify)));
+	}
+
+	/**
+	 * 涓婚搴撳畾涔夎〃 鏂板鎴栦慨鏀�
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆plCodeClassify")
+	public R submit(@Valid @RequestBody CodeClassify codeClassify) {
+		if(codeClassify.getOid() != null){
+			codeClassify.setLastModifier(AuthUtil.getUser().getUserName());
+			codeClassify.setLastModifyTime(new Date());
+			return R.status(SqlHelper.retBool(codeClassifyMapper.updateById(codeClassify)));
+		}
+		return codeClassifyService.addSave(codeClassify);
+	}
+
+	/**
+	 * 涓婚搴撳畾涔夎〃 鍒犻櫎
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆oids")
+	public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String oids) {
+		return R.status(SqlHelper.retBool(codeClassifyMapper.deleteBatchIds(Func.toLongList(oids))));
+	}
+
+	/**
+	 * 妫�鏌� 涓婚搴撳垎绫绘槸鍚﹀垹闄�
+	 * @param codeClassify 涓婚搴撳垎绫绘暟鎹紶杈撳璞★紝蹇呴』瑕佹湁oid鍜宼s灞炴��
+	 * @return 鎵ц缁撴灉 success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢�
+	 */
+	@PostMapping( "/checkIsCanDelete")
+	public R checkIsCanDelete(CodeClassify codeClassify)  {
+		return codeClassifyService.checkIsCanDelete(codeClassify);
+	}
+
+	/**
+	 * 鍒犻櫎涓婚搴撳垎绫�
+	 * @param  codeClassify锛宱id鍜宼s闇�瑕佷紶杈�
+	 * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+	 */
+	@DeleteMapping( "/deleteData")
+	public R delCodeClassify(CodeClassify codeClassify) {
+		return codeClassifyService.deleteCodeClassify(codeClassify);
+	}
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeKeyattrrepeatController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeKeyattrrepeatController.java
new file mode 100644
index 0000000..f2ec097
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeKeyattrrepeatController.java
@@ -0,0 +1,147 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.code.controller;
+
+import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
+import com.vci.ubcs.code.entity.CodeKeyattrrepeatEntity;
+import com.vci.ubcs.code.mapper.CodeButtonMapper;
+import com.vci.ubcs.code.mapper.CodeKeyattrrepeatMapper;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+import javax.validation.Valid;
+
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.vci.ubcs.code.vo.CodeKeyattrrepeatVO;
+import com.vci.ubcs.code.wrapper.PlCodeKeyattrrepeatWrapper;
+import com.vci.ubcs.code.service.ICodeKeyattrrepeatService;
+import org.springblade.core.boot.ctrl.BladeController;
+
+/**
+ * 鍏抽敭灞炴�ф煡閲嶈鍒� 鎺у埗鍣�
+ *
+ * @author yuxc
+ * @since 2023-04-03
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/plCodeKeyattrrepeat")
+@Api(value = "鍏抽敭灞炴�ф煡閲嶈鍒�", tags = "鍏抽敭灞炴�ф煡閲嶈鍒欐帴鍙�")
+public class CodeKeyattrrepeatController extends BladeController {
+
+	private final ICodeKeyattrrepeatService plCodeKeyattrrepeatService;
+
+
+	CodeKeyattrrepeatMapper codeKeyattrrepeatMapper;
+
+	/**
+	 * 鍏抽敭灞炴�ф煡閲嶈鍒� 璇︽儏
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "璇︽儏", notes = "浼犲叆plCodeKeyattrrepeat")
+	public R<CodeKeyattrrepeatVO> detail(CodeKeyattrrepeatEntity plCodeKeyattrrepeat) {
+		CodeKeyattrrepeatEntity detail = codeKeyattrrepeatMapper.selectOne(Condition.getQueryWrapper(plCodeKeyattrrepeat));
+		return R.data(PlCodeKeyattrrepeatWrapper.build().entityVO(detail));
+	}
+	/**
+	 * 鍏抽敭灞炴�ф煡閲嶈鍒� 鍒嗛〉
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "鍒嗛〉", notes = "浼犲叆plCodeKeyattrrepeat")
+	public R<IPage<CodeKeyattrrepeatVO>> list(CodeKeyattrrepeatEntity plCodeKeyattrrepeat, Query query) {
+		IPage<CodeKeyattrrepeatEntity> pages = codeKeyattrrepeatMapper.selectPage(Condition.getPage(query), Condition.getQueryWrapper(plCodeKeyattrrepeat));
+		return R.data(PlCodeKeyattrrepeatWrapper.build().pageVO(pages));
+	}
+
+	/**
+	 * 鍏抽敭灞炴�ф煡閲嶈鍒� 鑷畾涔夊垎椤�
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "鍒嗛〉", notes = "浼犲叆plCodeKeyattrrepeat")
+	public R<IPage<CodeKeyattrrepeatVO>> page(CodeKeyattrrepeatVO plCodeKeyattrrepeat, Query query) {
+		IPage<CodeKeyattrrepeatVO> pages = plCodeKeyattrrepeatService.selectPlCodeKeyattrrepeatPage(Condition.getPage(query), plCodeKeyattrrepeat);
+		return R.data(pages);
+	}
+
+	/**
+	 * 鍏抽敭灞炴�ф煡閲嶈鍒� 鏂板
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "鏂板", notes = "浼犲叆plCodeKeyattrrepeat")
+	public R save(@Valid @RequestBody CodeKeyattrrepeatEntity plCodeKeyattrrepeat) {
+		return R.status(SqlHelper.retBool(codeKeyattrrepeatMapper.insert(plCodeKeyattrrepeat)));
+	}
+
+	/**
+	 * 鍏抽敭灞炴�ф煡閲嶈鍒� 淇敼
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "淇敼", notes = "浼犲叆plCodeKeyattrrepeat")
+	public R update(@Valid @RequestBody CodeKeyattrrepeatEntity plCodeKeyattrrepeat) {
+		return R.status(SqlHelper.retBool(codeKeyattrrepeatMapper.updateById(plCodeKeyattrrepeat)));
+	}
+
+	/**
+	 * 鍏抽敭灞炴�ф煡閲嶈鍒� 鏂板鎴栦慨鏀�
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆plCodeKeyattrrepeat")
+	public R submit(@Valid @RequestBody CodeKeyattrrepeatEntity plCodeKeyattrrepeat) {
+		if(plCodeKeyattrrepeat.getOid() != null){
+			return R.status(SqlHelper.retBool(codeKeyattrrepeatMapper.updateById(plCodeKeyattrrepeat)));
+		}
+		return R.status(SqlHelper.retBool(codeKeyattrrepeatMapper.insert(plCodeKeyattrrepeat)));
+	}
+
+	/**
+	 * 鍏抽敭灞炴�ф煡閲嶈鍒� 鍒犻櫎
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
+	public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
+		return R.status(SqlHelper.retBool(codeKeyattrrepeatMapper.deleteBatchIds(Func.toLongList(ids))));
+	}
+
+	/**
+	 * 涓婚敭鎵归噺鑾峰彇鍏抽敭鏁版嵁鏌ラ噸瑙勫垯
+	 * @param oids 涓婚敭锛屽涓互閫楀彿鍒嗛殧锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓�
+	 * @return 鍏抽敭鏁版嵁鏌ラ噸瑙勫垯鏄剧ず瀵硅薄
+	 */
+	@PostMapping("/listDataByOids")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "鎵归噺鏌ヨ", notes = "浼犲叆oids")
+	public R listCodeKeyAttrRepeatRuleByOids(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String oids) {
+		return R.data(codeKeyattrrepeatMapper.selectBatchIds(Func.toLongList(oids)));
+	}
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeSynonymController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeSynonymController.java
new file mode 100644
index 0000000..5241479
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeSynonymController.java
@@ -0,0 +1,133 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.code.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
+import com.vci.ubcs.code.entity.CodeSynonymEntity;
+import com.vci.ubcs.code.mapper.CodeSynonymMapper;
+import com.vci.ubcs.code.service.ICodeSynonymService;
+import com.vci.ubcs.code.vo.CodeSynonymVO;
+import com.vci.ubcs.code.wrapper.CodeSynonymWrapper;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+import javax.validation.Valid;
+
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.*;
+import org.springblade.core.boot.ctrl.BladeController;
+
+/**
+ * 杩戜箟璇嶇淮鎶� 鎺у埗鍣�
+ *
+ * @author yuxc
+ * @since 2023-04-04
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/codeSynonym")
+@Api(value = "杩戜箟璇嶇淮鎶�", tags = "杩戜箟璇嶇淮鎶ゆ帴鍙�")
+public class CodeSynonymController extends BladeController {
+
+	private final ICodeSynonymService codeSynonymService;
+
+	CodeSynonymMapper codeSynonymMapper;
+
+	/**
+	 * 杩戜箟璇嶇淮鎶� 璇︽儏
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "璇︽儏", notes = "codeSynonym")
+	public R<CodeSynonymVO> detail(CodeSynonymEntity codeSynonym) {
+		CodeSynonymEntity detail = codeSynonymMapper.selectOne(Condition.getQueryWrapper(codeSynonym));
+		return R.data(CodeSynonymWrapper.build().entityVO(detail));
+	}
+	/**
+	 * 杩戜箟璇嶇淮鎶� 鍒嗛〉
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "鍒嗛〉", notes = "浼犲叆codeSynonym")
+	public R<IPage<CodeSynonymVO>> list(CodeSynonymEntity codeSynonym, Query query) {
+		IPage<CodeSynonymEntity> pages = codeSynonymMapper.selectPage(Condition.getPage(query), Condition.getQueryWrapper(codeSynonym));
+		return R.data(CodeSynonymWrapper.build().pageVO(pages));
+	}
+
+	/**
+	 * 杩戜箟璇嶇淮鎶� 鑷畾涔夊垎椤�
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "鍒嗛〉", notes = "浼犲叆codeSynonym")
+	public R<IPage<CodeSynonymVO>> page(CodeSynonymVO codeSynonym, Query query) {
+		IPage<CodeSynonymVO> pages = codeSynonymService.selectPlCodeSynonymPage(Condition.getPage(query), codeSynonym);
+		return R.data(pages);
+	}
+
+	/**
+	 * 杩戜箟璇嶇淮鎶� 鏂板
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "鏂板", notes = "浼犲叆codeSynonym")
+	public R save(@Valid @RequestBody CodeSynonymEntity codeSynonym) {
+		return R.status(SqlHelper.retBool(codeSynonymMapper.insert(codeSynonym)));
+	}
+
+	/**
+	 * 杩戜箟璇嶇淮鎶� 淇敼
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "淇敼", notes = "浼犲叆codeSynonym")
+	public R update(@Valid @RequestBody CodeSynonymEntity codeSynonym) {
+		return R.status(SqlHelper.retBool(codeSynonymMapper.updateById(codeSynonym)));
+	}
+
+	/**
+	 * 杩戜箟璇嶇淮鎶� 鏂板鎴栦慨鏀�
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆codeSynonym")
+	public R submit(@Valid @RequestBody CodeSynonymEntity codeSynonym) {
+		if(codeSynonym.getOid() != null){
+			return R.status(SqlHelper.retBool(codeSynonymMapper.updateById(codeSynonym)));
+		}
+		return R.status(SqlHelper.retBool(codeSynonymMapper.insert(codeSynonym)));
+//		return R.status(plCodeSynonymService.saveOrUpdate(plCodeSynonym));
+	}
+
+	/**
+	 * 杩戜箟璇嶇淮鎶� 鍒犻櫎
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆oids")
+	public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String oids) {
+		return R.status(SqlHelper.retBool(codeSynonymMapper.deleteBatchIds(Func.toLongList(oids))));
+	}
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/FrameworkDataLCStatus.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/FrameworkDataLCStatus.java
new file mode 100644
index 0000000..1f696d3
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/FrameworkDataLCStatus.java
@@ -0,0 +1,105 @@
+package com.vci.ubcs.code.enumpack;
+
+
+import static com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant.*;
+
+/**
+ * 鐢ㄦ埛锛岃鑹诧紝閮ㄩ棬锛岃亴鍔★紝宀椾綅锛岃亴绾�
+ * @author weidy
+ */
+
+public enum FrameworkDataLCStatus {
+
+
+	/**
+	 * 鍚敤
+	 */
+	ENABLED(FRAMEWORK_DATA_ENABLED,"鍚敤"),
+
+	/**
+	 * 鍋滅敤
+	 */
+	DISABLED(FRAMEWORK_DATA_DISABLED,"鍋滅敤");
+
+	/**
+	 * 鏋氫妇鍊�
+	 */
+	private String value;
+
+	/**
+	 * 鏋氫妇鏄剧ず鍊�
+	 */
+	private String text;
+	/**
+	 * 鑾峰彇鏋氫妇鍊�
+	 * @return 鏋氫妇鍊�
+	 */
+
+	public String getValue() {
+		return value;
+	}
+
+	/**
+	 * 璁剧疆鏋氫妇鍊�
+	 * @param value 鏋氫妇鍊�
+	 */
+	public void setValue(String value) {
+		this.value = value;
+	}
+
+	/**
+	 * 鑾峰彇鏄剧ず鏂囨湰
+	 * @return 鏄剧ず鏂囨湰
+	 */
+
+	public String getText() {
+		return text;
+	}
+
+	/**
+	 * 璁剧疆鏄剧ず鏂囨湰
+	 * @param text 鏄剧ず鏂囨湰
+	 */
+	public void setText(String text) {
+		this.text = text;
+	}
+
+	/**
+	 * 鏋氫妇鍐呴儴鏋勯�犳柟娉�
+	 * @param value 鏋氫妇鍊�
+	 * @param text 鏄剧ず鏂囨湰
+	 */
+	private FrameworkDataLCStatus(String value, String text){
+		this.value = value;
+		this.text = text;
+	}
+
+	/**
+	 * 鏍规嵁鏋氫妇鐨勫�艰幏鍙栨樉绀烘枃鏈�
+	 * @param value 鏋氫妇鍊�
+	 * @return 鏄剧ず鏂囨湰
+	 */
+	public static String getTextByValue(String value){
+		for(FrameworkDataLCStatus eu:FrameworkDataLCStatus.values()){
+			if(eu.value.equalsIgnoreCase(value)){
+				return eu.text;
+			}
+		}
+		return "";
+	}
+
+	/**
+	 * 鏍规嵁鏋氫妇鏄剧ず鏂囨湰鑾峰彇鏋氫妇鍊�
+	 * @param text 鏄剧ず鏂囨湰
+	 * @return 鏋氫妇鍊�
+	 */
+	public static String getValueByText(String text){
+		for(FrameworkDataLCStatus eu:FrameworkDataLCStatus.values()){
+			if(eu.text.equalsIgnoreCase(text)){
+				return eu.value;
+			}
+		}
+		return "";
+	}
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeButtonClient.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeButtonClient.java
new file mode 100644
index 0000000..9170f02
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeButtonClient.java
@@ -0,0 +1,63 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.code.feign;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.vci.ubcs.code.entity.CodeButtonEntity;
+import com.vci.ubcs.code.entity.CodeKeyattrrepeatEntity;
+import com.vci.ubcs.code.mapper.CodeButtonMapper;
+import com.vci.ubcs.code.service.ICodeButtonService;
+import lombok.AllArgsConstructor;
+import org.springblade.core.mp.support.BladePage;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+/**
+ * 妯℃澘鎵╁睍姹� Feign瀹炵幇绫�
+ *
+ * @author yuxc
+ * @since 2023-04-03
+ */
+@ApiIgnore()
+@RestController
+@AllArgsConstructor
+public class CodeButtonClient implements ICodeButtonClient {
+
+    private final ICodeButtonService codebuttonService;
+
+
+	CodeButtonMapper codeButtonMapper;
+
+    @Override
+    @GetMapping(TOP)
+    public BladePage<CodeButtonEntity> top(Integer current, Integer size) {
+        Query query = new Query();
+        query.setCurrent(current);
+        query.setSize(size);
+//		IPage<CodeKeyattrrepeatEntity> page = codeKeyattrrepeatMapper.selectPage(Condition.getPage(query), Wrappers.emptyWrapper());
+
+        IPage<CodeButtonEntity> page = codeButtonMapper.selectPage(Condition.getPage(query), Wrappers.emptyWrapper());
+//		IPage<CodeKeyattrrepeatEntity> page = codebuttonService.page(Condition.getPage(query));
+//        return null;
+        return BladePage.of(page);
+    }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeClassifyClient.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeClassifyClient.java
new file mode 100644
index 0000000..a2f104a
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeClassifyClient.java
@@ -0,0 +1,57 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.code.feign;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.vci.ubcs.code.entity.CodeClassify;
+import com.vci.ubcs.code.mapper.CodeClassifyMapper;
+import lombok.AllArgsConstructor;
+import org.springblade.core.mp.support.BladePage;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import com.vci.ubcs.code.service.ICodeClassifyService;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+/**
+ * 涓婚搴撳畾涔夎〃 Feign瀹炵幇绫�
+ *
+ * @author yuxc
+ * @since 2023-04-06
+ */
+@ApiIgnore()
+@RestController
+@AllArgsConstructor
+public class CodeClassifyClient implements ICodeClassifyClient {
+
+    private final ICodeClassifyService plCodeClassifyService;
+
+	CodeClassifyMapper codeClassifyMapper;
+
+    @Override
+    @GetMapping(TOP)
+    public BladePage<CodeClassify> top(Integer current, Integer size) {
+        Query query = new Query();
+        query.setCurrent(current);
+        query.setSize(size);
+        IPage<CodeClassify> page = codeClassifyMapper.selectPage(Condition.getPage(query), Wrappers.emptyWrapper());
+        return BladePage.of(page);
+    }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeKeyattrrepeatClient.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeKeyattrrepeatClient.java
new file mode 100644
index 0000000..893c286
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeKeyattrrepeatClient.java
@@ -0,0 +1,58 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.code.feign;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.vci.ubcs.code.entity.CodeKeyattrrepeatEntity;
+import com.vci.ubcs.code.entity.CodeSynonymEntity;
+import com.vci.ubcs.code.mapper.CodeKeyattrrepeatMapper;
+import lombok.AllArgsConstructor;
+import org.springblade.core.mp.support.BladePage;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import com.vci.ubcs.code.service.ICodeKeyattrrepeatService;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+/**
+ * 鍏抽敭灞炴�ф煡閲嶈鍒� Feign瀹炵幇绫�
+ *
+ * @author yuxc
+ * @since 2023-04-03
+ */
+@ApiIgnore()
+@RestController
+@AllArgsConstructor
+public class CodeKeyattrrepeatClient implements lCodeKeyattrrepeatClient {
+
+    private final ICodeKeyattrrepeatService plCodeKeyattrrepeatService;
+
+	CodeKeyattrrepeatMapper codeKeyattrrepeatMapper;
+
+    @Override
+    @GetMapping(TOP)
+    public BladePage<CodeKeyattrrepeatEntity> top(Integer current, Integer size) {
+        Query query = new Query();
+        query.setCurrent(current);
+        query.setSize(size);
+        IPage<CodeKeyattrrepeatEntity> page = codeKeyattrrepeatMapper.selectPage(Condition.getPage(query), Wrappers.emptyWrapper());
+        return BladePage.of(page);
+    }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeSynonymClient.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeSynonymClient.java
new file mode 100644
index 0000000..108382b
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/CodeSynonymClient.java
@@ -0,0 +1,57 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.code.feign;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.vci.ubcs.code.entity.CodeSynonymEntity;
+import com.vci.ubcs.code.mapper.CodeSynonymMapper;
+import com.vci.ubcs.code.service.ICodeSynonymService;
+import lombok.AllArgsConstructor;
+import org.springblade.core.mp.support.BladePage;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+/**
+ * 杩戜箟璇嶇淮鎶� Feign瀹炵幇绫�
+ *
+ * @author yuxc
+ * @since 2023-04-04
+ */
+@ApiIgnore()
+@RestController
+@AllArgsConstructor
+public class CodeSynonymClient implements ICodeSynonymClient {
+
+    private final ICodeSynonymService plCodeSynonymService;
+
+	CodeSynonymMapper codeSynonymMapper;
+    @Override
+    @GetMapping(TOP)
+    public BladePage<CodeSynonymEntity> top(Integer current, Integer size) {
+        Query query = new Query();
+        query.setCurrent(current);
+        query.setSize(size);
+        IPage<CodeSynonymEntity> page = codeSynonymMapper.selectPage(Condition.getPage(query), Wrappers.emptyWrapper());
+        return BladePage.of(page);
+//        return null;
+    }
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeButtonClient.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeButtonClient.java
new file mode 100644
index 0000000..7166837
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeButtonClient.java
@@ -0,0 +1,49 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.code.feign;
+
+import com.vci.ubcs.code.entity.CodeButtonEntity;
+import org.springblade.core.mp.support.BladePage;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+/**
+ * 妯℃澘鎵╁睍姹� Feign鎺ュ彛绫�
+ *
+ * @author yuxc
+ * @since 2023-04-03
+ */
+@FeignClient(
+    value = "ubcs-code"
+)
+public interface ICodeButtonClient {
+
+    String API_PREFIX = "/codeButton";
+    String TOP = API_PREFIX + "/top";
+
+    /**
+     * 鑾峰彇妯℃澘鎵╁睍姹犲垪琛�
+     *
+     * @param current   椤靛彿
+     * @param size      椤垫暟
+     * @return BladePage
+     */
+    @GetMapping(TOP)
+    BladePage<CodeButtonEntity> top(@RequestParam("current") Integer current, @RequestParam("size") Integer size);
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeClassifyClient.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeClassifyClient.java
new file mode 100644
index 0000000..3ec61d2
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeClassifyClient.java
@@ -0,0 +1,49 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.code.feign;
+
+import com.vci.ubcs.code.entity.CodeClassify;
+import org.springblade.core.mp.support.BladePage;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+/**
+ * 涓婚搴撳畾涔夎〃 Feign鎺ュ彛绫�
+ *
+ * @author yuxc
+ * @since 2023-04-06
+ */
+@FeignClient(
+    value = "ubcs-code"
+)
+public interface ICodeClassifyClient {
+
+    String API_PREFIX = "/codeClass";
+    String TOP = API_PREFIX + "/top";
+
+    /**
+     * 鑾峰彇涓婚搴撳畾涔夎〃鍒楄〃
+     *
+     * @param current   椤靛彿
+     * @param size      椤垫暟
+     * @return BladePage
+     */
+    @GetMapping(TOP)
+    BladePage<CodeClassify> top(@RequestParam("current") Integer current, @RequestParam("size") Integer size);
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeSynonymClient.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeSynonymClient.java
new file mode 100644
index 0000000..f906fdf
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/ICodeSynonymClient.java
@@ -0,0 +1,49 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.code.feign;
+
+import com.vci.ubcs.code.entity.CodeSynonymEntity;
+import org.springblade.core.mp.support.BladePage;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+/**
+ * 杩戜箟璇嶇淮鎶� Feign鎺ュ彛绫�
+ *
+ * @author yuxc
+ * @since 2023-04-04
+ */
+@FeignClient(
+    value = "ubcs-code"
+)
+public interface ICodeSynonymClient {
+
+    String API_PREFIX = "/codeSynonym";
+    String TOP = API_PREFIX + "/synonymlist";
+
+    /**
+     * 鑾峰彇杩戜箟璇嶇淮鎶ゅ垪琛�
+     *
+     * @param current   椤靛彿
+     * @param size      椤垫暟
+     * @return BladePage
+     */
+    @GetMapping(TOP)
+    BladePage<CodeSynonymEntity> top(@RequestParam("current") Integer current, @RequestParam("size") Integer size);
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/lCodeKeyattrrepeatClient.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/lCodeKeyattrrepeatClient.java
new file mode 100644
index 0000000..797401d
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/feign/lCodeKeyattrrepeatClient.java
@@ -0,0 +1,49 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.code.feign;
+
+import com.vci.ubcs.code.entity.CodeKeyattrrepeatEntity;
+import org.springblade.core.mp.support.BladePage;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+/**
+ * 鍏抽敭灞炴�ф煡閲嶈鍒� Feign鎺ュ彛绫�
+ *
+ * @author yuxc
+ * @since 2023-04-03
+ */
+@FeignClient(
+    value = "ubcs-code"
+)
+public interface lCodeKeyattrrepeatClient {
+
+    String API_PREFIX = "/codekey";
+    String TOP = API_PREFIX + "/keylist";
+
+    /**
+     * 鑾峰彇鍏抽敭灞炴�ф煡閲嶈鍒欏垪琛�
+     *
+     * @param current   椤靛彿
+     * @param size      椤垫暟
+     * @return BladePage
+     */
+    @GetMapping(TOP)
+    BladePage<CodeKeyattrrepeatEntity> top(@RequestParam("current") Integer current, @RequestParam("size") Integer size);
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeButtonMapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeButtonMapper.java
new file mode 100644
index 0000000..4e1a71d
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeButtonMapper.java
@@ -0,0 +1,44 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.code.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.vci.ubcs.code.entity.CodeButtonEntity;
+import com.vci.ubcs.code.vo.CodeButtonVO;
+
+import java.util.List;
+
+/**
+ * 妯℃澘鎵╁睍姹� Mapper 鎺ュ彛
+ *
+ * @author yuxc
+ * @since 2023-03-29
+ */
+public interface CodeButtonMapper extends BaseMapper<CodeButtonEntity> {
+
+	/**
+	 * 鑷畾涔夊垎椤�
+	 *
+	 * @param page
+	 * @param codebutton
+	 * @return
+	 */
+	List<CodeButtonVO> selectcodebuttonPage(IPage page, CodeButtonVO codebutton);
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyMapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyMapper.java
index 0af6656..bc595c2 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyMapper.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyMapper.java
@@ -1,16 +1,64 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
 package com.vci.ubcs.code.mapper;
 
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.vci.ubcs.code.entity.CodeClassify;
-/**
- * 涓婚搴撳垎绫绘暟鎹搷浣滃眰
- *
- * @author ludc
- * @date 2022-01-20
- */
-public interface CodeClassifyMapper  extends BaseMapper<CodeClassify> {
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
+import org.apache.ibatis.annotations.MapKey;
 
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 涓婚搴撳畾涔夎〃 Mapper 鎺ュ彛
+ *
+ * @author yuxc
+ * @since 2023-04-06
+ */
+public interface CodeClassifyMapper extends BaseMapper<CodeClassify> {
+
+	/**
+	 * 鑷畾涔夊垎椤�
+	 *
+	 * @param page
+	 * @param plCodeClassify
+	 * @return
+	 */
+	List<CodeClassifyVO> selectPlCodeClassifyPage(IPage page, CodeClassifyVO plCodeClassify);
+
+	/**
+	 * 鏌ユ壘瀛愮被
+	 *
+	 * @param oid
+	 * @return
+	 */
+	@MapKey("oid")
+	Map<String,String> selectAllLevelChildOid(String oid);
+
+	/**
+	 * 鏍¢獙鏄惁鍖呭惈瀛愯妭鐐�
+	 *
+	 * @param oid 鍒嗙被鐨勪富閿�
+	 * @return true 琛ㄧず鍖呭惈
+	 */
+//	@MapKey("oid")
+	Boolean checkHasChild(String oid);
 
 
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeKeyattrrepeatMapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeKeyattrrepeatMapper.java
new file mode 100644
index 0000000..873435c
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeKeyattrrepeatMapper.java
@@ -0,0 +1,43 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.code.mapper;
+
+import com.vci.ubcs.code.entity.CodeKeyattrrepeatEntity;
+import com.vci.ubcs.code.vo.CodeKeyattrrepeatVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import java.util.List;
+
+/**
+ * 鍏抽敭灞炴�ф煡閲嶈鍒� Mapper 鎺ュ彛
+ *
+ * @author yuxc
+ * @since 2023-04-03
+ */
+public interface CodeKeyattrrepeatMapper extends BaseMapper<CodeKeyattrrepeatEntity> {
+
+	/**
+	 * 鑷畾涔夊垎椤�
+	 *
+	 * @param page
+	 * @param plCodeKeyattrrepeat
+	 * @return
+	 */
+	List<CodeKeyattrrepeatVO> selectPlCodeKeyattrrepeatPage(IPage page, CodeKeyattrrepeatVO plCodeKeyattrrepeat);
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeSynonymMapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeSynonymMapper.java
new file mode 100644
index 0000000..f6f2f45
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeSynonymMapper.java
@@ -0,0 +1,43 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.code.mapper;
+
+import com.vci.ubcs.code.entity.CodeSynonymEntity;
+import com.vci.ubcs.code.vo.CodeSynonymVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import java.util.List;
+
+/**
+ * 杩戜箟璇嶇淮鎶� Mapper 鎺ュ彛
+ *
+ * @author yuxc
+ * @since 2023-04-04
+ */
+public interface CodeSynonymMapper extends BaseMapper<CodeSynonymEntity> {
+
+	/**
+	 * 鑷畾涔夊垎椤�
+	 *
+	 * @param page
+	 * @param plCodeSynonym
+	 * @return
+	 */
+	List<CodeSynonymVO> selectPlCodeSynonymPage(IPage page, CodeSynonymVO plCodeSynonym);
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeButtonService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeButtonService.java
new file mode 100644
index 0000000..abbaf18
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeButtonService.java
@@ -0,0 +1,60 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.code.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.vci.ubcs.code.entity.CodeButtonEntity;
+import com.vci.ubcs.code.vo.CodeButtonVO;
+import org.springblade.core.tool.api.R;
+
+/**
+ * 妯℃澘鎵╁睍姹� 鏈嶅姟绫�
+ *
+ * @author yuxc
+ * @since 2023-03-29
+ */
+public interface ICodeButtonService {
+
+	/**
+	 * 鑷畾涔夊垎椤�
+	 *
+	 * @param page
+	 * @param codebutton
+	 * @return
+	 */
+	IPage<CodeButtonVO> selectcodebuttonPage(IPage<CodeButtonVO> page, CodeButtonVO codebutton);
+
+	/**
+	 * 鍚敤
+	 * @param oid 鏁版嵁浼犺緭
+	 * @return 鎵ц缁撴灉
+	 */
+	R enableCodeButton(String oid);
+
+	/**
+	 * 鍋滅敤
+	 * @param oid 鏁版嵁浼犺緭
+	 * @return 鎵ц缁撴灉
+	 */
+	R disableOrgDuty(String oid);
+	/**
+	 * 鍒犻櫎涓绘暟鎹腑鐨勬寜閽墿灞�
+	 * @param ids 涓绘暟鎹腑鐨勬寜閽墿灞曟暟鎹紶杈�
+	 * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+	 */
+//	R deleteCodeButton(String ids);
+}
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 d283655..b93788d 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
@@ -1,8 +1,11 @@
 package com.vci.ubcs.code.service;
 
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.vci.ubcs.code.entity.CodeClassify;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
+import org.springblade.core.tool.api.R;
 
 import java.util.List;
 
@@ -21,5 +24,56 @@
 	 */
 	List<CodeClassify> selectByWrapper(Wrapper wrapper);
 
+	/**
+	 * 鑷畾涔夊垎椤�
+	 *
+	 * @param page
+	 * @param plCodeClassify
+	 * @return
+	 */
+	IPage<CodeClassifyVO> selectPlCodeClassifyPage(IPage<CodeClassifyVO> page, CodeClassifyVO plCodeClassify);
+
+	/**
+	 * 澧炲姞涓婚搴撳垎绫�
+	 * @param codeClassifyEntity 涓婚搴撳垎绫绘暟鎹紶杈撳璞�
+	 * @return 鎵ц缁撴灉
+	 */
+	R addSave(CodeClassify codeClassifyEntity)  ;
+
+	/**
+	 * 淇敼涓婚搴撳垎绫�
+	 * @param codeClassifyEntity 涓婚搴撳垎绫绘暟鎹紶杈撳璞�
+	 * @return 鎵ц缁撴灉
+	 */
+	R editSave(CodeClassify codeClassifyEntity) ;
+	/**
+	 * 妫�鏌� 涓婚搴撳垎绫绘槸鍚﹀垹闄�
+	 * @param codeClassify 涓婚搴撳垎绫绘暟鎹紶杈撳璞★紝蹇呴』瑕佹湁oid鍜宼s灞炴��
+	 * @return 鎵ц缁撴灉
+	 */
+	R checkIsCanDelete(CodeClassify codeClassify);
+
+	/**
+	 * 妫�鏌ユ槸鍚︽湁涓嬬骇鏄惁鍏宠仈浜嗘暟鎹�
+	 *
+	 * @param oid 涓婚敭
+	 * @return true 琛ㄧず鏈夊紩鐢紝false琛ㄧず娌℃湁寮曠敤
+	 */
+	boolean checkChildIsLinked(String oid) ;
+
+	/**
+	 * 鏍¢獙鏄惁鏈変笅绾ц妭鐐癸紝涓嶆牎楠屾槸鍚﹀叧鑱斾簡鏁版嵁
+	 *
+	 * @param oid 涓婚敭
+	 * @return true琛ㄧず鏈変笅绾э紝false琛ㄧず娌℃湁涓嬬骇
+	 */
+	boolean checkHasChild(String oid) ;
+
+	/**
+	 * 鍒犻櫎涓婚搴撳垎绫�
+	 * @param codeClassify 涓婚搴撳垎绫绘暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+	 * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+	 */
+	R deleteCodeClassify(CodeClassify codeClassify) ;
 
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeKeyattrrepeatService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeKeyattrrepeatService.java
new file mode 100644
index 0000000..538f5ed
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeKeyattrrepeatService.java
@@ -0,0 +1,42 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.code.service;
+
+import com.vci.ubcs.code.entity.CodeKeyattrrepeatEntity;
+import com.vci.ubcs.code.vo.CodeKeyattrrepeatVO;
+import org.springblade.core.mp.base.BaseService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+/**
+ * 鍏抽敭灞炴�ф煡閲嶈鍒� 鏈嶅姟绫�
+ *
+ * @author yuxc
+ * @since 2023-04-03
+ */
+public interface ICodeKeyattrrepeatService  {
+
+	/**
+	 * 鑷畾涔夊垎椤�
+	 *
+	 * @param page
+	 * @param plCodeKeyattrrepeat
+	 * @return
+	 */
+	IPage<CodeKeyattrrepeatVO> selectPlCodeKeyattrrepeatPage(IPage<CodeKeyattrrepeatVO> page, CodeKeyattrrepeatVO plCodeKeyattrrepeat);
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeSynonymService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeSynonymService.java
new file mode 100644
index 0000000..dd86eb2
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeSynonymService.java
@@ -0,0 +1,42 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.code.service;
+
+import com.vci.ubcs.code.entity.CodeSynonymEntity;
+import com.vci.ubcs.code.vo.CodeSynonymVO;
+import org.springblade.core.mp.base.BaseService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+/**
+ * 杩戜箟璇嶇淮鎶� 鏈嶅姟绫�
+ *
+ * @author yuxc
+ * @since 2023-04-04
+ */
+public interface ICodeSynonymService  {
+
+	/**
+	 * 鑷畾涔夊垎椤�
+	 *
+	 * @param page
+	 * @param plCodeSynonym
+	 * @return
+	 */
+	IPage<CodeSynonymVO> selectPlCodeSynonymPage(IPage<CodeSynonymVO> page, CodeSynonymVO plCodeSynonym);
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeButtonServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeButtonServiceImpl.java
new file mode 100644
index 0000000..1b04b5a
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeButtonServiceImpl.java
@@ -0,0 +1,117 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.code.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
+import com.vci.ubcs.code.entity.CodeButtonEntity;
+import com.vci.ubcs.code.enumpack.FrameworkDataLCStatus;
+import com.vci.ubcs.code.mapper.CodeButtonMapper;
+import com.vci.ubcs.code.service.ICodeButtonService;
+import com.vci.ubcs.code.vo.CodeButtonVO;
+import org.springblade.core.tool.api.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * 妯℃澘鎵╁睍姹� 鏈嶅姟瀹炵幇绫�
+ *
+ * @author yuxc
+ * @since 2023-03-29
+ */
+@Service
+public class CodeButtonServiceImpl implements ICodeButtonService {
+
+	@Autowired
+	CodeButtonMapper codeButtonMapper;
+
+	@Override
+	public IPage<CodeButtonVO> selectcodebuttonPage(IPage<CodeButtonVO> page, CodeButtonVO codebutton) {
+		return page.setRecords(codeButtonMapper.selectcodebuttonPage(page, codebutton));
+	}
+
+    @Override
+    public R enableCodeButton(String id) {
+		CodeButtonEntity codebutton = codeButtonMapper.selectById(id);
+		return changeLcStatus(codebutton,true);
+    }
+	/**
+	 * 鍋滅敤
+	 *
+	 * @param oid 鏁版嵁浼犺緭瀵硅薄
+	 * @return 鎵ц缁撴灉
+	 */
+	@Override
+	public R disableOrgDuty(String oid) {
+		CodeButtonEntity codebutton = codeButtonMapper.selectById(oid);
+		return changeLcStatus(codebutton,false);
+	}
+
+//	@Override
+//	public R deleteCodeButton(String ids) {
+////		VciBaseUtil.alertNotNull(codeButtonDTO,"涓绘暟鎹腑鐨勬寜閽墿灞曟暟鎹璞�",codeButtonDTO.getOid(),"涓绘暟鎹腑鐨勬寜閽墿灞曠殑涓婚敭");
+//		if(StringUtils.isEmpty(ids)){
+//			return R.fail("浼犲叆闈炴硶鏁版嵁锛�");
+//		}
+//		CodeButtonEntity codebutton = codeButtonMapper.selectById(ids);
+//
+//		CodeButtonDO codeButtonDO = selectByOid(codeButtonDTO.getOid());
+//		BaseResult baseResult = checkIsCanDeleteForDO(codeButtonDTO,codeButtonDO);
+//		if(baseResult.isSuccess()) {
+//		}else{
+//			return baseResult;
+//		}
+//		//鎵ц鍒犻櫎鎿嶄綔
+//		BatchCBO batchCBO = codeButtonMapper.deleteByPrimaryKey(codeButtonDO.getOid());
+//		return (batchCBO!=null && batchCBO.getDeleteCbos() !=null &&batchCBO.getDeleteCbos().size() > 0)?BaseResult.successMsg(DELETE_SUCCESS):BaseResult.fail(DELETE_FAIL);
+//	}
+
+	/**
+	 * 淇敼鐢熷懡鍛ㄦ湡鐨勭姸鎬侊紝濡傚仠鐢ㄥ拰鍚敤
+	 * @param buttonDTO 鏁版嵁浼犺緭瀵硅薄锛屽繀椤昏鏈塷id鍜宼s
+	 * @param disable 鏄惁涓哄仠鐢�
+	 * @return 鎵ц鐨勭粨鏋�
+	 */
+	private R changeLcStatus(CodeButtonEntity buttonDTO, boolean disable){
+//		VciBaseUtil.alertNotNull(buttonDTO,"鏁版嵁瀵硅薄",buttonDTO.getOid(),"涓婚敭");
+		if(disable){
+			buttonDTO.setLcstatus(FrameworkDataLCStatus.ENABLED.getValue());
+		}else{
+			buttonDTO.setLcstatus(FrameworkDataLCStatus.DISABLED.getValue());
+		}
+		return SqlHelper.retBool(codeButtonMapper.updateById(buttonDTO))?
+			R.success(FrameworkDataLCStatus.ENABLED.getValue()):R.fail(FrameworkDataLCStatus.DISABLED.getValue());
+	}
+
+//	/**
+//	 * 鏍¢獙鏄惁鍙互鍒犻櫎锛屽鏋滃瓨鍦ㄤ笅绾э紝骞朵笖涓嬬骇鏈夋暟鎹紩鐢ㄥ垯涓嶈兘鍒犻櫎
+//	 * @param codeButtonDTO 鏁版嵁浼犺緭瀵硅薄
+//	 * @param codeButtonDO 鏁版嵁搴撲腑鐨勬暟鎹璞�
+//	 * @return success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+//	 */
+//	private R checkIsCanDeleteForDO(CodeButtonEntity codeButtonDTO, CodeButtonVO codeButtonDO) {
+//		CodeButtonVO buttonDO = new CodeButtonVO();
+//		BeanUtil.convert(codeButtonDTO,buttonDO);
+//		boService.checkTs(buttonDO);
+//		if(!checkIsLinked(codeButtonDO.getOid())) {
+//			return BaseResult.success();
+//		}else{
+//			return BaseResult.fail(DATA_LINKED_NOT_DELETE,new String[]{""});
+//		}
+//	}
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeKeyattrrepeatServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeKeyattrrepeatServiceImpl.java
new file mode 100644
index 0000000..8313e52
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeKeyattrrepeatServiceImpl.java
@@ -0,0 +1,47 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.code.service.impl;
+
+import com.vci.ubcs.code.entity.CodeKeyattrrepeatEntity;
+import com.vci.ubcs.code.mapper.CodeButtonMapper;
+import com.vci.ubcs.code.vo.CodeKeyattrrepeatVO;
+import com.vci.ubcs.code.mapper.CodeKeyattrrepeatMapper;
+import com.vci.ubcs.code.service.ICodeKeyattrrepeatService;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+/**
+ * 鍏抽敭灞炴�ф煡閲嶈鍒� 鏈嶅姟瀹炵幇绫�
+ *
+ * @author yuxc
+ * @since 2023-04-03
+ */
+@Service
+public class CodeKeyattrrepeatServiceImpl implements ICodeKeyattrrepeatService {
+
+	@Autowired
+	CodeKeyattrrepeatMapper codeKeyattrrepeatMapper;
+
+	@Override
+	public IPage<CodeKeyattrrepeatVO> selectPlCodeKeyattrrepeatPage(IPage<CodeKeyattrrepeatVO> page, CodeKeyattrrepeatVO plCodeKeyattrrepeat) {
+		return page.setRecords(codeKeyattrrepeatMapper.selectPlCodeKeyattrrepeatPage(page, plCodeKeyattrrepeat));
+	}
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSynonymServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSynonymServiceImpl.java
new file mode 100644
index 0000000..a77c636
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSynonymServiceImpl.java
@@ -0,0 +1,45 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.code.service.impl;
+
+import com.vci.ubcs.code.mapper.CodeSynonymMapper;
+import com.vci.ubcs.code.service.ICodeSynonymService;
+import com.vci.ubcs.code.vo.CodeSynonymVO;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+import javax.annotation.Resource;
+
+/**
+ * 杩戜箟璇嶇淮鎶� 鏈嶅姟瀹炵幇绫�
+ *
+ * @author yuxc
+ * @since 2023-04-04
+ */
+@Service
+public class CodeSynonymServiceImpl implements ICodeSynonymService {
+
+	@Resource
+	CodeSynonymMapper codeSynonymMapper;
+
+	@Override
+	public IPage<CodeSynonymVO> selectPlCodeSynonymPage(IPage<CodeSynonymVO> page, CodeSynonymVO plCodeSynonym) {
+		return page.setRecords(codeSynonymMapper.selectPlCodeSynonymPage(page, plCodeSynonym));
+	}
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/ICodeClassifyServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/ICodeClassifyServiceImpl.java
index bd39008..31cea94 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/ICodeClassifyServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/ICodeClassifyServiceImpl.java
@@ -1,14 +1,28 @@
 package com.vci.ubcs.code.service.impl;
 
+import com.alibaba.nacos.common.utils.StringUtils;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
 import com.vci.ubcs.code.entity.CodeClassify;
 import com.vci.ubcs.code.mapper.CodeClassifyMapper;
 import com.vci.ubcs.code.service.ICodeClassifyService;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
+import com.vci.ubcs.core.log.exception.ServiceException;
+import jodd.bean.BeanUtil;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.api.R;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
+import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 @Service
 public class ICodeClassifyServiceImpl extends ServiceImpl<CodeClassifyMapper, CodeClassify> implements ICodeClassifyService {
@@ -26,5 +40,213 @@
 		return codeClassifyMapper.selectList(wrapper);
 	}
 
+	@Override
+	public IPage<CodeClassifyVO> selectPlCodeClassifyPage(IPage<CodeClassifyVO> page, CodeClassifyVO plCodeClassify) {
+		return page.setRecords(codeClassifyMapper.selectPlCodeClassifyPage(page, plCodeClassify));
+	}
+
+	@Override
+	public R addSave(CodeClassify codeClassifyEntity) {
+
+		if(StringUtils.isNotBlank(codeClassifyEntity.getParentCodeClassifyOid()) && StringUtils.isNotBlank(codeClassifyEntity.getBtmTypeId())){
+			return R.fail("鍙湁鍦ㄩ《灞傜殑涓婚搴撳垎绫绘墠鑳借缃笟鍔$被鍨�");
+		}
+		codeClassifyEntity.setCreator(AuthUtil.getUser().getUserName());
+		codeClassifyEntity.setCreateTime(new Date());
+		codeClassifyEntity.setTs(new Date());
+		codeClassifyEntity.setLastModifier(AuthUtil.getUser().getUserName());
+		codeClassifyEntity.setLastModifyTime(new Date());
+		int insertNumber = codeClassifyMapper.insert(codeClassifyEntity);
+		return R.status(SqlHelper.retBool(insertNumber));
+	}
+
+	/**
+	 * 淇敼涓婚搴撳垎绫�
+	 * @param codeClassifyEntity 涓婚搴撳垎绫绘暟鎹紶杈撳璞�
+	 * @return 鎵ц缁撴灉
+	 */
+	@Override
+	public R editSave(CodeClassify codeClassifyEntity) {
+		if(codeClassifyEntity == null || codeClassifyEntity.getOid() == null){
+			return R.fail("浼犲叆鏁版嵁涓嶈兘涓虹┖锛�");
+		}
+		//妫�鏌s
+		Map<String,Object> condition = new HashMap<>(2);
+		condition.put("oid",codeClassifyEntity.getOid());
+		condition.put("ts",codeClassifyEntity.getTs());
+		CodeClassify detail = codeClassifyMapper
+			.selectOne(Condition.getQueryWrapper(condition,CodeClassify.class));
+		if(detail == null){//涓嶆槸鏈�鏂扮殑涓嶈鏀�
+			return R.fail("褰撳墠鏁版嵁涓嶆槸鏈�鏂帮紝璇峰埛鏂板悗鍐嶄慨鏀癸紒");
+		}
+
+		if(StringUtils.isNotBlank(codeClassifyEntity.getParentCodeClassifyOid()) && StringUtils.isNotBlank(codeClassifyEntity.getBtmTypeId())){
+			return R.fail("鍙湁鍦ㄩ《灞傜殑涓婚搴撳垎绫绘墠鑳借缃笟鍔$被鍨�");
+		}
+		codeClassifyEntity.setLastModifier(AuthUtil.getUser().getUserName());
+		codeClassifyEntity.setLastModifyTime(new Date());
+		int insertNumber = codeClassifyMapper.updateById(codeClassifyEntity);
+
+//         //澶勭悊鏁版嵁闆嗘垚閫昏緫,鎴愬姛鍚庢墽琛岄泦鎴愮涓�姝�,鍒嗙被鏁版嵁鐗规畩澶勭悊銆傚彧鏈夊惎鐢ㄧ姸鎬佺殑鍒嗙被鎵嶆帹閫�
+//         if(FRAMEWORK_DATA_ENABLED.equals(codeClassifyDO.getLcStatus()));
+//         {
+//             codeDuckingServiceI.insertCache1(CACHE_TYPE_CLASSIFY_EDIT,FRAMEWORK_DATA_ENABLED,DOCKING_DEFAULT_CLASSIFY, DOCKING_DEFAULT_CLASSIFYOID, codeClassifyDO.getOid(), codeClassifyDTO.getTs());
+//         }
+		return R.status(SqlHelper.retBool(insertNumber));
+//		return BaseResult.success(codeClassifyDO2VO(codeClassifyDO));
+	}
+
+	/**
+	 * 妫�鏌� 涓婚搴撳垎绫绘槸鍚﹀垹闄�
+	 * @param codeClassifyEntity 涓婚搴撳垎绫绘暟鎹紶杈撳璞★紝蹇呴』瑕佹湁oid鍜宼s灞炴��
+	 * @return 鎵ц缁撴灉 success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+	 */
+	@Override
+	public R checkIsCanDelete(CodeClassify codeClassifyEntity) {
+		if(codeClassifyEntity == null || codeClassifyEntity.getOid() == null){
+			return R.fail("浼犲叆鏁版嵁涓嶈兘涓虹┖锛�");
+		}
+		codeClassifyEntity = selectByOid(codeClassifyEntity.getOid());
+		return checkIsCanDeleteForDO(codeClassifyEntity);
+	}
+
+	/**
+	 * 涓婚敭鏌ヨ鏁版嵁瀵硅薄
+	 * @param oid 涓婚敭
+	 * @return  鏁版嵁瀵硅薄
+	 */
+	private CodeClassify selectByOid(String oid){
+
+		CodeClassify codeClassifyEntity = codeClassifyMapper.selectById(oid.trim());
+		if(codeClassifyEntity == null || StringUtils.isBlank(codeClassifyEntity.getOid())){
+			throw new ServiceException("dataOidNotExist");//鏍规嵁涓婚敭id鏈煡鍒扮浉鍏虫暟鎹�
+		}
+		return codeClassifyEntity;
+	}
+
+	/**
+	 * 鏍¢獙鏄惁鍙互鍒犻櫎锛屽鏋滃瓨鍦ㄤ笅绾э紝骞朵笖涓嬬骇鏈夋暟鎹紩鐢ㄥ垯涓嶈兘鍒犻櫎
+	 * @param codeClassifyEntity 鏁版嵁搴撲腑鐨勬暟鎹璞�
+	 * @return success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾�
+	 */
+	private R checkIsCanDeleteForDO(CodeClassify codeClassifyEntity) {
+
+		//妫�鏌s
+		Map<String,Object> condition = new HashMap<>(2);
+		condition.put("oid",codeClassifyEntity.getOid());
+		condition.put("ts",codeClassifyEntity.getTs());
+		CodeClassify detail = codeClassifyMapper
+			.selectOne(Condition.getQueryWrapper(condition,CodeClassify.class));
+		if(detail == null){//涓嶆槸鏈�鏂扮殑涓嶈鏀�
+			throw new ServiceException("褰撳墠鏁版嵁涓嶆槸鏈�鏂帮紝璇峰埛鏂板悗鍐嶄慨鏀癸紒");
+//			return R.fail("褰撳墠鏁版嵁涓嶆槸鏈�鏂帮紝璇峰埛鏂板悗鍐嶄慨鏀癸紒");
+		}
+		//鏍¢獙涓嬬骇鏄惁鏈夊紩鐢�
+		if(checkChildIsLinked(detail.getOid())){
+			return R.fail("dataCascadeLinkedNotDelete");
+		}
+		return R.data(checkHasChild(detail.getOid()));
+	}
+
+	/**
+	 * 妫�鏌ユ槸鍚︽湁涓嬬骇鏄惁鍏宠仈浜嗘暟鎹�
+	 *
+	 * @param oid 涓婚敭
+	 * @return true 琛ㄧず鏈夊紩鐢紝false琛ㄧず娌℃湁寮曠敤
+	 */
+	@Override
+	public boolean checkChildIsLinked(String oid) {
+
+		Map<String,String> childOids = codeClassifyMapper.selectAllLevelChildOid(oid.trim());
+		if(!CollectionUtils.isEmpty(childOids)){
+			for(String childOid: childOids.keySet()){
+				if(!checkIsLinked(childOid)){
+					return false;
+				}
+			}
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * 鏍¢獙鏄惁琚紩鐢�
+	 * @param oid 涓婚敭
+	 */
+	private boolean checkIsLinked(String oid) {
+		//TODO 娣诲姞闇�瑕佹牎楠屽紩鐢ㄧ殑鍦版柟
+		return false;
+	}
+
+	@Override
+	public boolean checkHasChild(String oid) {
+		if(StringUtils.isBlank(oid)){
+			throw new ServiceException("oid涓嶈兘涓虹┖锛�");
+		}
+		return codeClassifyMapper.checkHasChild(oid.trim());
+	}
+
+
+	/**
+	 * 鍒犻櫎涓婚搴撳垎绫�
+	 * @param codeClassify 涓婚搴撳垎绫绘暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈�
+	 * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+	 */
+	@Override
+	public R deleteCodeClassify(CodeClassify codeClassify) {
+
+		if(codeClassify == null || codeClassify.getOid() == null){
+			throw new ServiceException("浼犲叆鍙傛暟涓嶈兘涓虹┖锛�");
+		}
+		codeClassify = codeClassifyMapper.selectById(codeClassify.getOid());
+
+		R result = checkIsCanDeleteForDO(codeClassify);
+
+		//鍏堢畝绉版槸鍚︽湁鍏宠仈妯℃澘锛屾湁妯℃澘瑕佸厛鍒犻櫎
+//		VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(CodeClassifyTemplateDO.class);
+//		queryWrapper.addQueryMap("codeClassifyOid",codeClassifyDTO.getOid());
+//		List<CodeClassifyTemplateDO> codeClassifyTemplateDOListHaveTemplate =  codeClassifyTemplateMapper.selectByWrapper(queryWrapper);
+//		if(codeClassifyTemplateDOListHaveTemplate.size()>0){
+//			return BaseResult.fail("鍒嗙被鍏宠仈妯℃澘锛岃鍏堝垹闄�!");
+//		}
+//
+//		//澶勭悊鏁版嵁闆嗘垚閫昏緫,鎴愬姛鍚庢墽琛岄泦鎴愮涓�姝�,鍒嗙被鏁版嵁鐗规畩澶勭悊銆�
+//		//1銆佹煡璇㈣鍒犻櫎鐨勭埗绫绘暟鎹�
+//		List<CodeClassifyDO> deletes = new ArrayList<CodeClassifyDO>();
+//		deletes.add(codeClassifyDO);
+//
+//		if(result.isSuccess()) {
+//			//鎵句笅绾х殑锛岃繖涓槸鍙互鍒犻櫎鐨勬椂鍊�
+//			Map<String,String> childrenOids = codeClassifyMapper.selectAllLevelChildOid(codeClassifyDO.getOid().trim());
+//			if (!CollectionUtils.isEmpty(childrenOids)) {
+//				Collection<Collection<String>> childrenCollections = VciBaseUtil.switchCollectionForOracleIn(childrenOids.keySet());
+//				for(Collection<String> s : childrenCollections){
+//
+//					//澶勭悊鏁版嵁闆嗘垚閫昏緫,鎴愬姛鍚庢墽琛岄泦鎴愮涓�姝�,鍒嗙被鏁版嵁鐗规畩澶勭悊銆�
+//					//2銆佹煡璇㈣鍒犻櫎鐨勫瓙绫绘暟鎹�
+//					List<CodeClassifyDO>  codeClassifyDOList = codeClassifyMapper.selectByPrimaryKeyCollection(s);
+//					deletes.addAll(codeClassifyDOList);
+//
+//					codeClassifyMapper.batchDeleteByOids(s);
+//				}
+//
+//			}
+//		}else{
+//			return baseResult;
+//		}
+//
+//		//鎵ц鍒犻櫎鎿嶄綔
+//		BatchCBO batchCBO = codeClassifyMapper.deleteByPrimaryKey(codeClassifyDO.getOid());
+//
+//		//澶勭悊鏁版嵁闆嗘垚閫昏緫,鎴愬姛鍚庢墽琛岄泦鎴愮涓�姝�
+//		for (CodeClassifyDO codeClassifyDO1:deletes){
+//			//codeDuckingServiceI.insertCache1(CACHE_TYPE_CLASSIFY_DELETE,FRAMEWORK_DATA_DISABLED,DOCKING_DEFAULT_CLASSIFY, DOCKING_DEFAULT_CLASSIFYOID, codeClassifyDO1.getOid(), DateUtils.addHours(new Date(),1));//杩欓噷鏄綋鍓嶆椂闂�
+//
+//			//瀛樺偍瑕佸垹闄ょ殑鏁版嵁
+//			codeDuckingServiceI.cacheDeleteData(codeClassifyDO1.getOid(), codeClassifyDO1);
+//		}
+//		return (batchCBO!=null && batchCBO.getDeleteCbos() !=null &&batchCBO.getDeleteCbos().size() > 0)?BaseResult.successMsg(DELETE_SUCCESS):BaseResult.fail(DELETE_FAIL);
+		return null;
+	}
 
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeButtonWrapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeButtonWrapper.java
new file mode 100644
index 0000000..98d2be8
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeButtonWrapper.java
@@ -0,0 +1,52 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.code.wrapper;
+
+import com.vci.ubcs.code.entity.CodeButtonEntity;
+import com.vci.ubcs.code.vo.CodeButtonVO;
+import com.vci.ubcs.system.cache.DictCache;
+import com.vci.ubcs.system.enums.DictEnum;
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.boot.autoconfigure.security.SecurityProperties;
+
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 妯℃澘鎵╁睍姹� 鍖呰绫�,杩斿洖瑙嗗浘灞傛墍闇�鐨勫瓧娈�
+ *
+ * @author yuxc
+ * @since 2023-03-29
+ */
+public class CodeButtonWrapper extends BaseEntityWrapper<CodeButtonEntity, CodeButtonVO> {
+
+	public static CodeButtonWrapper build() {
+		return new CodeButtonWrapper();
+ 	}
+
+	@Override
+	public CodeButtonVO entityVO(CodeButtonEntity codebutton) {
+		CodeButtonVO codebuttonVO = Objects.requireNonNull(BeanUtil.copy(codebutton, CodeButtonVO.class));
+		codebuttonVO.setUsedpositiontypeName(DictCache.getValue("codeButtonPosition", codebutton.getUsedpositiontype()));
+		codebuttonVO.setLcstatusName(DictCache.getValue("codeLcstatus", codebutton.getLcstatus()));
+		return codebuttonVO;
+	}
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeSynonymWrapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeSynonymWrapper.java
new file mode 100644
index 0000000..04e3812
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/CodeSynonymWrapper.java
@@ -0,0 +1,50 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.code.wrapper;
+
+import com.vci.ubcs.code.entity.CodeSynonymEntity;
+import com.vci.ubcs.code.vo.CodeSynonymVO;
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.utils.BeanUtil;
+import java.util.Objects;
+
+/**
+ * 杩戜箟璇嶇淮鎶� 鍖呰绫�,杩斿洖瑙嗗浘灞傛墍闇�鐨勫瓧娈�
+ *
+ * @author yuxc
+ * @since 2023-04-04
+ */
+public class CodeSynonymWrapper extends BaseEntityWrapper<CodeSynonymEntity, CodeSynonymVO>  {
+
+	public static CodeSynonymWrapper build() {
+		return new CodeSynonymWrapper();
+ 	}
+
+	@Override
+	public CodeSynonymVO entityVO(CodeSynonymEntity plCodeSynonym) {
+		CodeSynonymVO plCodeSynonymVO = Objects.requireNonNull(BeanUtil.copy(plCodeSynonym, CodeSynonymVO.class));
+
+		//User createUser = UserCache.getUser(plCodeSynonym.getCreateUser());
+		//User updateUser = UserCache.getUser(plCodeSynonym.getUpdateUser());
+		//plCodeSynonymVO.setCreateUserName(createUser.getName());
+		//plCodeSynonymVO.setUpdateUserName(updateUser.getName());
+
+		return plCodeSynonymVO;
+	}
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/PlCodeKeyattrrepeatWrapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/PlCodeKeyattrrepeatWrapper.java
new file mode 100644
index 0000000..a427bd5
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/wrapper/PlCodeKeyattrrepeatWrapper.java
@@ -0,0 +1,50 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package com.vci.ubcs.code.wrapper;
+
+import com.vci.ubcs.code.entity.CodeKeyattrrepeatEntity;
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.utils.BeanUtil;
+import com.vci.ubcs.code.vo.CodeKeyattrrepeatVO;
+import java.util.Objects;
+
+/**
+ * 鍏抽敭灞炴�ф煡閲嶈鍒� 鍖呰绫�,杩斿洖瑙嗗浘灞傛墍闇�鐨勫瓧娈�
+ *
+ * @author yuxc
+ * @since 2023-04-03
+ */
+public class PlCodeKeyattrrepeatWrapper extends BaseEntityWrapper<CodeKeyattrrepeatEntity, CodeKeyattrrepeatVO>  {
+
+	public static PlCodeKeyattrrepeatWrapper build() {
+		return new PlCodeKeyattrrepeatWrapper();
+ 	}
+
+	@Override
+	public CodeKeyattrrepeatVO entityVO(CodeKeyattrrepeatEntity plCodeKeyattrrepeat) {
+		CodeKeyattrrepeatVO codeKeyattrrepeatVO = Objects.requireNonNull(BeanUtil.copy(plCodeKeyattrrepeat, CodeKeyattrrepeatVO.class));
+
+		//User createUser = UserCache.getUser(plCodeKeyattrrepeat.getCreateUser());
+		//User updateUser = UserCache.getUser(plCodeKeyattrrepeat.getUpdateUser());
+		//plCodeKeyattrrepeatVO.setCreateUserName(createUser.getName());
+		//plCodeKeyattrrepeatVO.setUpdateUserName(updateUser.getName());
+
+		return codeKeyattrrepeatVO;
+	}
+
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeButtonMapper.xml b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeButtonMapper.xml
new file mode 100644
index 0000000..3a5ebf2
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeButtonMapper.xml
@@ -0,0 +1,44 @@
+<?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.CodeButtonMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="codebuttonResultMap" type="com.vci.ubcs.code.entity.CodeButtonEntity">
+        <result column="OID" property="oid"/>
+        <result column="REVISIONOID" property="revisionoid"/>
+        <result column="NAMEOID" property="nameoid"/>
+        <result column="BTMNAME" property="btmname"/>
+        <result column="LASTR" property="lastr"/>
+        <result column="FIRSTR" property="firstr"/>
+        <result column="LASTV" property="lastv"/>
+        <result column="FIRSTV" property="firstv"/>
+        <result column="CREATOR" property="creator"/>
+        <result column="CREATETIME" property="createtime"/>
+        <result column="LASTMODIFIER" property="lastmodifier"/>
+        <result column="LASTMODIFYTIME" property="lastmodifytime"/>
+        <result column="REVISIONRULE" property="revisionrule"/>
+        <result column="VERSIONRULE" property="versionrule"/>
+        <result column="REVISIONSEQ" property="revisionseq"/>
+        <result column="REVISIONVALUE" property="revisionvalue"/>
+        <result column="VERSIONSEQ" property="versionseq"/>
+        <result column="VERSIONVALUE" property="versionvalue"/>
+        <result column="LCTID" property="lctid"/>
+        <result column="LCSTATUS" property="lcstatus"/>
+        <result column="TS" property="ts"/>
+        <result column="ID" property="id"/>
+        <result column="NAME" property="name"/>
+        <result column="DESCRIPTION" property="description"/>
+        <result column="OWNER" property="owner"/>
+        <result column="COPYFROMVERSION" property="copyfromversion"/>
+        <result column="ICONCLS" property="iconcls"/>
+        <result column="EXECUTEJS" property="executejs"/>
+        <result column="USEDPOSITIONTYPE" property="usedpositiontype"/>
+    </resultMap>
+
+
+    <select id="selectcodebuttonPage" resultMap="codebuttonResultMap">
+        select * from PL_CODE_BUTTON where is_deleted = 0
+    </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 c8fb2f2..957e70b 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
@@ -2,6 +2,59 @@
 <!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.CodeClassifyMapper">
 
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="plCodeClassifyResultMap" type="com.vci.ubcs.code.entity.CodeClassify">
+        <result column="OID" property="oid"/>
+        <result column="REVISIONOID" property="revisionOid"/>
+        <result column="NAMEOID" property="nameOid"/>
+        <result column="BTMNAME" property="btmname"/>
+        <result column="LASTR" property="lastR"/>
+        <result column="FIRSTR" property="firstR"/>
+        <result column="LASTV" property="lastV"/>
+        <result column="FIRSTV" property="firstV"/>
+        <result column="CREATOR" property="creator"/>
+        <result column="CREATETIME" property="createTime"/>
+        <result column="LASTMODIFIER" property="lastModifier"/>
+        <result column="LASTMODIFYTIME" property="lastModifyTime"/>
+        <result column="REVISIONRULE" property="revisionRule"/>
+        <result column="VERSIONRULE" property="versionRule"/>
+        <result column="REVISIONSEQ" property="revisionSeq"/>
+        <result column="REVISIONVALUE" property="revisionValue"/>
+        <result column="VERSIONSEQ" property="versionSeq"/>
+        <result column="VERSIONVALUE" property="versionValue"/>
+        <result column="LCTID" property="lctid"/>
+        <result column="LCSTATUS" property="lcStatus"/>
+        <result column="TS" property="ts"/>
+        <result column="ID" property="id"/>
+        <result column="NAME" property="name"/>
+        <result column="DESCRIPTION" property="description"/>
+        <result column="OWNER" property="owner"/>
+        <result column="COPYFROMVERSION" property="copyFromVersion"/>
+        <result column="PARENTCODECLASSIFYOID" property="parentCodeClassifyOid"/>
+        <result column="ORDERNUM" property="orderNum"/>
+        <result column="BTMTYPEID" property="btmTypeId"/>
+        <result column="BTMTYPENAME" property="btmTypeName"/>
+        <result column="CODERULEOID" property="codeRuleOid"/>
+        <result column="CODEKEYATTRREPEATOID" property="codeKeyAttrRepeatOid"/>
+        <result column="CODERESEMBLERULEOID" property="codeResembleRuleOid"/>
+    </resultMap>
 
 
+    <select id="selectPlCodeClassifyPage" resultMap="plCodeClassifyResultMap">
+        select * from PL_CODE_CLASSIFY where is_deleted = 0
+    </select>
+
+    <select id="selectAllLevelChildOid" resultType="java.util.HashMap">
+        select oid, level
+        from PL_CODE_CLASSIFY
+                 START WITH parentCodeClassifyOid = #{oid}CONNECT BY
+            PRIOR OID = parentCodeClassifyOid
+    </select>
+
+    <select id="checkHasChild" resultType="java.lang.Boolean">
+        select count(oid)
+        from PL_CODE_CLASSIFY
+        where parentCodeClassifyOid = #{oid}
+    </select>
+
 </mapper>
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeKeyattrrepeatMapper.xml b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeKeyattrrepeatMapper.xml
new file mode 100644
index 0000000..b5ff8b4
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeKeyattrrepeatMapper.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.vci.ubcs.code.mapper.CodeKeyattrrepeatMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="plCodeKeyattrrepeatResultMap" type="com.vci.ubcs.code.entity.CodeKeyattrrepeatEntity">
+        <result column="OID" property="oid"/>
+        <result column="REVISIONOID" property="revisionoid"/>
+        <result column="NAMEOID" property="nameoid"/>
+        <result column="BTMNAME" property="btmname"/>
+        <result column="LASTR" property="lastr"/>
+        <result column="FIRSTR" property="firstr"/>
+        <result column="LASTV" property="lastv"/>
+        <result column="FIRSTV" property="firstv"/>
+        <result column="CREATOR" property="creator"/>
+        <result column="CREATETIME" property="createtime"/>
+        <result column="LASTMODIFIER" property="lastmodifier"/>
+        <result column="LASTMODIFYTIME" property="lastmodifytime"/>
+        <result column="REVISIONRULE" property="revisionrule"/>
+        <result column="VERSIONRULE" property="versionrule"/>
+        <result column="REVISIONSEQ" property="revisionseq"/>
+        <result column="REVISIONVALUE" property="revisionvalue"/>
+        <result column="VERSIONSEQ" property="versionseq"/>
+        <result column="VERSIONVALUE" property="versionvalue"/>
+        <result column="LCTID" property="lctid"/>
+        <result column="LCSTATUS" property="lcstatus"/>
+        <result column="TS" property="ts"/>
+        <result column="ID" property="id"/>
+        <result column="NAME" property="name"/>
+        <result column="DESCRIPTION" property="description"/>
+        <result column="OWNER" property="owner"/>
+        <result column="COPYFROMVERSION" property="copyfromversion"/>
+        <result column="IGNORECASEFLAG" property="ignorecaseflag"/>
+        <result column="IGNORESPACEFLAG" property="ignorespaceflag"/>
+        <result column="IGNOREALLSPACEFLAG" property="ignoreallspaceflag"/>
+        <result column="IGNOREWIDTHFLAG" property="ignorewidthflag"/>
+    </resultMap>
+
+
+    <select id="selectPlCodeKeyattrrepeatPage" resultMap="plCodeKeyattrrepeatResultMap">
+        select * from PL_CODE_KEYATTRREPEAT where is_deleted = 0
+    </select>
+
+
+</mapper>
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeSynonymMapper.xml b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeSynonymMapper.xml
new file mode 100644
index 0000000..d853fc9
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeSynonymMapper.xml
@@ -0,0 +1,44 @@
+<?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.CodeSynonymMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="plCodeSynonymResultMap" type="com.vci.ubcs.code.entity.CodeSynonymEntity">
+        <result column="OID" property="oid"/>
+        <result column="REVISIONOID" property="revisionoid"/>
+        <result column="NAMEOID" property="nameoid"/>
+        <result column="BTMNAME" property="btmname"/>
+        <result column="LASTR" property="lastr"/>
+        <result column="FIRSTR" property="firstr"/>
+        <result column="LASTV" property="lastv"/>
+        <result column="FIRSTV" property="firstv"/>
+        <result column="CREATOR" property="creator"/>
+        <result column="CREATETIME" property="createtime"/>
+        <result column="LASTMODIFIER" property="lastmodifier"/>
+        <result column="LASTMODIFYTIME" property="lastmodifytime"/>
+        <result column="REVISIONRULE" property="revisionrule"/>
+        <result column="VERSIONRULE" property="versionrule"/>
+        <result column="REVISIONSEQ" property="revisionseq"/>
+        <result column="REVISIONVALUE" property="revisionvalue"/>
+        <result column="VERSIONSEQ" property="versionseq"/>
+        <result column="VERSIONVALUE" property="versionvalue"/>
+        <result column="LCTID" property="lctid"/>
+        <result column="LCSTATUS" property="lcstatus"/>
+        <result column="TS" property="ts"/>
+        <result column="ID" property="id"/>
+        <result column="NAME" property="name"/>
+        <result column="DESCRIPTION" property="description"/>
+        <result column="OWNER" property="owner"/>
+        <result column="COPYFROMVERSION" property="copyfromversion"/>
+        <result column="CODECLASSIFYTEMPLATEOID" property="codeclassifytemplateoid"/>
+        <result column="SOURCEVALUE" property="sourcevalue"/>
+        <result column="SYNONYMVALUE" property="synonymvalue"/>
+    </resultMap>
+
+
+    <select id="selectPlCodeSynonymPage" resultMap="plCodeSynonymResultMap">
+        select * from PL_CODE_SYNONYM where is_deleted = 0
+    </select>
+
+
+</mapper>

--
Gitblit v1.9.3