From 5f545a51231ab4955763fd812a0d914b1d8bc561 Mon Sep 17 00:00:00 2001
From: xiejun <xj@2023>
Date: 星期四, 27 七月 2023 20:35:34 +0800
Subject: [PATCH] PDM集成swing界面相关功能开发

---
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/R.java                                |   50 
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyFor410MainPanel.java                | 1207 ++++++++++++++++
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/ClassifyLevel.java                    |   62 
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/SectionObject.java                           |    4 
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeDataMainPanelDataProvider.java           |   27 
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/RMDataReferTempDialogActionListener.java     |   59 
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CommonActionListener.java                    |   20 
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/DescViewDialog.java                          |   85 +
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/HttpClient3.java                             |  159 ++
 Source/UBCS/ubcs-codeApply/src/main/resources/properties/conf.properties                                     |   35 
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/HttpClient.java                              |  141 +
 Source/UBCS/pom.xml                                                                                          |    1 
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyFor410Dialog.java                   |  164 ++
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/swing/RealTextField.java                     |   54 
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/swing/VCIJComboxBox.java                     |   50 
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/TransmitTreeObject.java                      |   67 
 Source/UBCS/ubcs-codeApply/src/main/resources/properties/tt.json                                             |    1 
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/utils/ConfigUtils.java                       |   48 
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyPanelFor410.java                    |  388 +++++
 Source/UBCS/ubcs-codeApply/pom.xml                                                                           |   64 
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/AttrRangObjectWarper.java             |   41 
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyFor410DialogActionListener.java     |   45 
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeLibTreeCellRenderer.java                 |   51 
 Source/UBCS/ubcs-service/ubcs-code/pom.xml                                                                   |    8 
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/RMDataReferTempDialog.java                   |  159 ++
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyPanelFor410ActionListener.java      |   37 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeApplySwingController.java  |  113 +
 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeCLassifyMapper.xml                          |  168 ++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java |   51 
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/HttpUtil.java                                |  239 +++
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/CodeClassify.java                     |   11 
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/httpClient4.java                             |  134 +
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/swing/IntegerTextField.java                  |   24 
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyFor410TreePanel.java                |  304 ++++
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/TestIntegrateFrame.java                      |   44 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyService.java         |   23 
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/RMDataTransmitObject.java             |  160 ++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CodeClassifyMapper.java            |   31 
 38 files changed, 4,329 insertions(+), 0 deletions(-)

diff --git a/Source/UBCS/pom.xml b/Source/UBCS/pom.xml
index 5757e07..9a71e3e 100644
--- a/Source/UBCS/pom.xml
+++ b/Source/UBCS/pom.xml
@@ -41,6 +41,7 @@
         <module>ubcs-plugin-api</module>
         <module>ubcs-service</module>
         <module>ubcs-service-api</module>
+        <module>ubcs-codeApply</module>
     </modules>
 
     <dependencyManagement>
diff --git a/Source/UBCS/ubcs-codeApply/pom.xml b/Source/UBCS/ubcs-codeApply/pom.xml
new file mode 100644
index 0000000..04d6bcb
--- /dev/null
+++ b/Source/UBCS/ubcs-codeApply/pom.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>UBCS</artifactId>
+        <groupId>com.vci.ubcs</groupId>
+        <version>3.0.1.RELEASE</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    <properties>
+        <vciplt.version>2022.RELEASE</vciplt.version>
+        <old.spring.version>3.2.0.RELEASE</old.spring.version>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <java.version>1.8</java.version>
+    </properties>
+    <artifactId>ubcs-codeApply</artifactId>
+    <dependencies>
+        <dependency><!--VciBase鍩虹鍖�-->
+            <groupId>com.vci.platform</groupId>
+            <artifactId>VCIBase-client</artifactId>
+            <version>${vciplt.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.vci.platform</groupId>
+            <artifactId>VCIBase-common</artifactId>
+            <version>${vciplt.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.vci.ubcs</groupId>
+            <artifactId>ubcs-user-api</artifactId>
+            <version>3.0.1.RELEASE</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.vci.ubcs</groupId>
+            <artifactId>ubcs-code-api</artifactId>
+            <version>3.0.1.RELEASE</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-httpclient</groupId>
+            <artifactId>commons-httpclient</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient</artifactId>
+        </dependency>
+        <dependency>
+        <groupId>org.apache.commons</groupId>
+        <artifactId>commons-collections4</artifactId>
+        <version>4.1</version>
+        </dependency>
+    </dependencies>
+    <distributionManagement>
+        <repository>
+            <id>rdc-releases</id>
+            <url>http://nexus.vci-tech.com:9000/repository/maven-releases/</url>
+        </repository>
+        <snapshotRepository>
+            <id>rdc-snapshots</id>
+            <url>http://nexus.vci-tech.com:9000/repository/maven-snapshots/</url>
+        </snapshotRepository>
+    </distributionManagement>
+</project>
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyFor410Dialog.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyFor410Dialog.java
new file mode 100644
index 0000000..11b60ee
--- /dev/null
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyFor410Dialog.java
@@ -0,0 +1,164 @@
+package com.vci.ubcs.codeapply;
+
+import com.vci.base.common.resource.CommonProperties;
+import com.vci.base.ui.swing.VCIOptionPane;
+import com.vci.base.ui.swing.VCISwingUtil;
+import com.vci.base.ui.swing.components.VCIJButton;
+import com.vci.base.ui.swing.components.VCIJDialog;
+import com.vci.base.ui.swing.components.VCIJPanel;
+import com.vci.ubcs.codeapply.utils.ConfigUtils;
+import com.vci.ubcs.system.user.entity.User;
+
+import javax.swing.*;
+import java.awt.*;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+public class CodeApplyFor410Dialog extends VCIJDialog {
+
+
+	private static final long serialVersionUID = -3286164100581857853L;
+	private static User userOb = new User();
+	private String userName = null;
+	private String codeValue = null;
+	private CodeApplyFor410DialogActionListener actionListener = new CodeApplyFor410DialogActionListener(this);
+	private VCIJButton okBtn = VCISwingUtil.createVCIJButton("ok", "纭", "纭", "ok.gif", actionListener);
+	private VCIJButton cancelBtn = VCISwingUtil.createVCIJButton("cancel", "鍙栨秷", "鍙栨秷", "cancel.gif", actionListener);
+	private CodeApplyPanelFor410 mainPal = null;
+	private Component parentComponet = null;
+	private Map<String, String> attrNameAndValMap = new LinkedHashMap();//瀛樺偍灞炴�у悕绉帮紙鍖呭惈鍐呴儴鍚嶇О鍜屽閮ㄥ悕绉帮級鍜屽搴旂殑鍊�
+
+	/**
+	 * 瀛樺偍鍒嗙被鐨凪ap,key:鍒嗙被鍚嶇О锛寁alue锛氬垎绫诲��
+	 */
+	private String clsfName = null;
+	/**
+	 * 瀛樺偍灞炴�у拰鍊肩殑Map,key:灞炴�у悕绉帮紝value锛氬睘鎬у��
+	 */
+	private String deptName = null;
+
+	private String[] libName = ConfigUtils.getConfigValue("410.PDM.LibCodeName").split("#");//ConfigUtils.getConfigValue("410.PDM.LibCodeName").split("#");//浠g爜椤瑰悕绉�
+
+	public CodeApplyFor410Dialog(Frame frame, String clsfName, String deptName) {
+		this(frame, "pdmUser", clsfName, deptName,new String[]{});
+	}
+	public CodeApplyFor410Dialog(JDialog dialog, String clsfName, String deptName) {
+		this(dialog, "pdmUser", clsfName, deptName,new String[]{});
+	}
+	public CodeApplyFor410Dialog(Frame frame, String userName, String clsfName, String deptName, String[] libName){
+		super(frame, true);
+		try {
+			this.setModal(true);
+			parentComponet = frame;
+			this.userName = userName;
+			this.clsfName = clsfName;
+			this.deptName = deptName;
+			//this.libName = libName;
+			init();
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	public CodeApplyFor410Dialog(JDialog dialog, String userName, String clsfName, String deptName, String[] libName) {
+		super(dialog, true);
+		try {
+			this.setModal(true);
+			parentComponet = dialog;
+			this.userName = userName;
+			this.clsfName = clsfName;
+			this.deptName = deptName;
+			//	this.libName = libName;
+
+			init();
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	private void initUserInfo() {
+//		userOb.set("127.0.0.1");
+//		userOb.setModules("TC闆嗘垚浠g爜鐢宠");
+//		userOb.setUserName(userName);
+	}
+
+	public void buildDialog() {
+		Dimension dime = Toolkit.getDefaultToolkit().getScreenSize();
+		int x = dime.width/2 - 400;
+		int y = dime.height/2-400;
+		this.setLocation(x, y);
+		this.setSize(new Dimension(900, 800));
+		this.setResizable(true);
+		this.setVisible(true);
+	}
+
+
+	private void init() {
+		boolean isConnect = verifyConnect();
+		if (isConnect) {
+			try {
+				initUserInfo();
+				bulidPal();
+			}catch (Exception e){
+				showMessageBox( "鏈嶅姟鍑虹幇寮傚父锛�->"+e.getMessage());
+			}
+		} else {
+			showMessageBox("鏃犳硶杩炴帴浠g爜鏈嶅姟鍣紒");
+		}
+	}
+
+	private void bulidPal() throws Exception {
+		this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
+		this.setTitle("浠g爜鐢宠");
+		mainPal = new CodeApplyPanelFor410(this,userOb, true, clsfName, deptName,libName);
+
+		VCIJPanel btnPal = new VCIJPanel();
+		btnPal.add(okBtn);
+		btnPal.add(cancelBtn);
+
+		this.setLayout(new BorderLayout());
+		this.add(mainPal,BorderLayout.CENTER);
+		this.add(btnPal,BorderLayout.SOUTH);
+		buildDialog();
+	}
+
+	public boolean verifyConnect() {
+		try {
+//			if (ClientSession.getFrameworkService() != null) {
+//				return true;
+//			}
+			return true;
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return false;
+	}
+
+	public String getApplyCode() {
+		return mainPal.getApplyCode();
+	}
+
+	public String getCodeValue() {
+		return codeValue;
+	}
+
+	public void setCodeValue(String codeValue) {
+		this.codeValue = codeValue;
+	}
+
+	public String getAttributeValue(String attribute) {
+		if(attrNameAndValMap.containsKey(attribute)) {
+			return attrNameAndValMap.get(attribute);
+		}
+		return "";
+	}
+
+	public void setAttrNameAndValMap() {
+		this.attrNameAndValMap = mainPal.getAttrNameAndValMap();
+	}
+
+	private void showMessageBox(String message) {
+		VCIOptionPane.showMessage(parentComponet, message);
+	}
+
+}
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyFor410DialogActionListener.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyFor410DialogActionListener.java
new file mode 100644
index 0000000..ffdd7bb
--- /dev/null
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyFor410DialogActionListener.java
@@ -0,0 +1,45 @@
+package com.vci.ubcs.codeapply;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.LinkedHashMap;
+
+public class CodeApplyFor410DialogActionListener implements ActionListener {
+
+	private CodeApplyFor410Dialog owner = null;
+	public CodeApplyFor410DialogActionListener(CodeApplyFor410Dialog owner){
+		this.owner = owner;
+		this.initActionMap();
+	}
+
+	private LinkedHashMap<String, Runnable> actionMaps = new LinkedHashMap();
+	private void initActionMap(){
+		actionMaps.put("ok", new Runnable() { public void run() {
+			ok();
+		}});
+		actionMaps.put("cancel", new Runnable() { public void run() {
+			cancel();
+		}});
+	}
+
+	@Override
+	public void actionPerformed(ActionEvent e) {
+		String key = e.getActionCommand();
+		if(actionMaps.containsKey(key)){
+			actionMaps.get(key).run();
+		}
+	}
+
+	private void ok() {
+		this.owner.setCodeValue(this.owner.getApplyCode());
+		this.owner.setAttrNameAndValMap();
+		this.owner.dispose();
+	}
+
+	private void cancel(){
+		this.owner.setCodeValue("");
+		this.owner.dispose();
+	}
+
+
+}
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyFor410MainPanel.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyFor410MainPanel.java
new file mode 100644
index 0000000..8854c9f
--- /dev/null
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyFor410MainPanel.java
@@ -0,0 +1,1207 @@
+package com.vci.ubcs.codeapply;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.vci.base.ui.swing.VCIOptionPane;
+import com.vci.base.ui.swing.components.*;
+import com.vci.base.ui.tree.VCIBaseTreeNode;
+import com.vci.ubcs.code.vo.pagemodel.CodeBasicSecVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
+import com.vci.ubcs.codeapply.object.*;
+import com.vci.ubcs.codeapply.swing.IntegerTextField;
+import com.vci.ubcs.codeapply.swing.RealTextField;
+import com.vci.ubcs.codeapply.swing.VCIJComboxBox;
+import com.vci.ubcs.codeapply.utils.ConfigUtils;
+import com.vci.ubcs.starter.web.enumpck.VciFieldTypeEnum;
+import com.vci.ubcs.starter.web.pagemodel.KeyValue;
+import com.vci.ubcs.system.user.entity.User;
+import net.bytebuddy.implementation.bytecode.Throw;
+import net.logstash.logback.encoder.org.apache.commons.lang3.StringUtils;
+import org.apache.commons.collections4.CollectionUtils;
+
+import javax.swing.*;
+import javax.swing.text.JTextComponent;
+import javax.swing.tree.TreeNode;
+import java.awt.*;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.util.*;
+import java.util.List;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
+public class CodeApplyFor410MainPanel  extends VCIJPanel {
+
+
+	//410鏂伴渶姹�
+	private final String SPECIAL_RULE_NAME="Special.rule.name";
+	private final String SPECIAL_SECTION_NAME = "Special.section.name";
+	private final String SPECIAL_CONTROL_SECTION_NAME = "Special.control.other.section.name";
+	private final String SPECIAL_SECTION_VALUE = "Special.section.val";
+
+	private final String MAX_ATTR_IN_LINE_KEY = "RMData.MaxAttrInLine";
+	private final String TEXTAREA_ENABLE_KEY = "RMData.TextArea.Enable";
+	private final String MAX_STRING_LENGTH_KEY = "RMData.MaxStringLength";
+	private final String TEXTAREA_PRE_SIZE_WIDTH = "RMData.TextArea.PreferredSize.Width";
+	private final String TEXTAREA_PRE_SIZE_HEIGHT = "RMData.TextArea.PreferredSize.Height";
+	private final String TEXTAREA_MIN_SIZE_WIDTH = "RMData.TextArea.MinimumSize.Width";
+	private final String TEXTAREA_MIN_SIZE_HEIGHT = "RMData.TextArea.MinimumSize.Height";
+	private final String TEXTAREA_MAX_SIZE_WIDTH = "RMData.TextArea.MaximumSize.Width";
+	private final String TEXTAREA_MAX_SIZE_HEIGHT = "RMData.TextArea.MaximumSize.Height";
+	// 鏄惁鍚敤灞炴�ч暱搴﹁繃闀挎椂锛岀敤TextArea鏄剧ず锛宼rue:鍚敤 false锛氫笉鍚敤锛岄粯璁ゅ�紅rue
+	private boolean isEnableTextArea = false;
+	// 鍚敤浜員extArea鍚庯紝姝extArea鐨凱referredSize銆丮inimumSize銆丮aximumSize鐨刉idth銆丠eight
+	private int textAreaPreSizeWidth = 100;
+	private int textAreaPreSizeHeight = 50;
+	private int textAreaMinSizeWidth = 100;
+	private int textAreaMinSizeHeight = 30;
+	private int textAreaMaxSizeWidth = 100;
+	private int textAreaMaxSizeHeight = 80;
+	// 鍚屼竴琛屽唴锛屾渶澶氬姞杞界殑灞炴�т釜鏁帮紝涓�琛屼负涓�缁勶紝鍗充竴缁勫唴鏈�澶氬姞杞界殑灞炴�т釜鏁帮紝榛樿鍊�2
+	private int maxAttrInLine = 2;
+	// 褰揝tring绫诲瀷鐨勫睘鎬у�肩殑闀垮害澶т簬姝ゅ�兼椂锛岃灞炴�у氨闇�瑕佺敤TextArea鏄剧ず锛屽苟鍗犵敤鏁磋锛岄粯璁ゅ��100
+	private int maxStringLength = 100;
+	private int levelPositon = -1;
+	private TransmitTreeObject transTreeObject = new TransmitTreeObject();
+	private  User userObj;
+	private String deptName;
+	//瀛樺偍姣忎釜瀹為檯 鐮佹鍒楀搴旂殑鐮佹瀵硅薄
+	protected Map<Integer,CodeBasicSecVO> columnSecMap = new LinkedHashMap<Integer,CodeBasicSecVO>();
+	private LinkedHashMap<Integer, JComponent> compMaps = new LinkedHashMap<Integer, JComponent>();
+	private Map<String, JComponent> secAndComMap = new LinkedHashMap<String, JComponent>();
+
+	private Map<JComponent, JComponent> comtMap = new LinkedHashMap<JComponent, JComponent>();
+	private Map<String, VCIJComboBox> secNameAndComtMap = new LinkedHashMap<String, VCIJComboBox>();
+	private Map<Integer,String> secIndexAndNameMap = new LinkedHashMap<Integer, String>();
+	private List<JComponent> specSecList = new ArrayList<JComponent>();
+	private boolean isSpecialRuleFlag = false;
+	private String specialSectioName = "";
+	private VCIJPanel rulePal = new VCIJPanel();
+
+	private String[] specialSecVals = new String[0];
+	private RMDataTransmitObject transmitForRMData = null;
+
+	/**
+	 * 灞炴�D涓庡睘鎬у搴旂殑鎺т欢涔嬮棿鐨勬槧灏凪AP
+	 */
+	private LinkedHashMap<String, JComponent> attrIdToCtrlMaps = new LinkedHashMap<String, JComponent>();
+	/**
+	 * 灞炴�х殑鍐呴儴鍚嶇О涓庡睘鎬у搴旂殑鎺т欢涔嬮棿鐨勬槧灏凪AP
+	 */
+	private LinkedHashMap<String, JComponent> attrInnerNameToCtrlMaps = new LinkedHashMap<String, JComponent>();
+
+	/**
+	 * 寮曠敤鐜涙鐮佸�间笌combox鍏冪礌浣嶇疆鐨勬槧灏凪AP
+	 */
+	private LinkedHashMap<String, Integer>  refSecValueToCombxindex = new LinkedHashMap<String, Integer>();
+	/**
+	 * 鐮佹id涓庡垎绫荤爜娈电爜鍊兼弿杩板璞″搴旂殑鎺т欢涔嬮棿鐨勬槧灏凪AP
+	 */
+	private LinkedHashMap<String, JComponent> secIdToClsfIdMap = new LinkedHashMap<String, JComponent>();
+
+	private List<VCIJTextField> textCompts = new LinkedList<VCIJTextField>();
+	/**
+	 * 褰撳墠閫夋嫨鐨勫垎绫荤殑妯℃澘
+	 */
+	private CodeClassifyTemplateVO currentCodeClassifyTemplateVO;
+	// 瀹為檯鐨�
+	private VCIJDialog realDialogInstance = null;
+	public CodeApplyFor410MainPanel(TransmitTreeObject transTreeObject, User userObj, CodeClassifyTemplateVO currentCodeClassifyTemplateVO) {
+		this.transTreeObject = transTreeObject;
+		this.userObj = userObj;
+		this.currentCodeClassifyTemplateVO=currentCodeClassifyTemplateVO;
+	}
+
+	public CodeApplyFor410MainPanel(TransmitTreeObject transTreeObject,User userObj,String deptName,CodeClassifyTemplateVO currentCodeClassifyTemplateVO) {
+		this.transTreeObject = transTreeObject;
+		this.userObj = userObj;
+		this.deptName = deptName;
+		this.currentCodeClassifyTemplateVO=currentCodeClassifyTemplateVO;
+	}
+
+	/**
+	 *
+	 * @param type, 1浠h〃鐢宠锛�2璁剧疆娴佹按
+	 */
+	public void buildMainPanel(int type) {
+		try {
+			init(type);
+			if (type == 2) {
+				return;
+			}
+			this.initRMTypeTreeMaps();
+			this.initContents();
+		}catch (Exception e){
+			VCIOptionPane.showMessage(this,e.getMessage());
+		}
+	}
+	private void init(int type){
+		this.loadTextAreaEnableEnv(); //add by liujw
+		//this.loadSpecialRuleConfig();
+		CodeClassify rmType = (CodeClassify) this.transTreeObject.getCurrentTreeNode().getObj();
+		String url= ConfigUtils.getConfigValue("410.PDM.rule.url","http://127.0.0.1:36014/codeApplySwingController/getCodeRuleByClassifyFullInfo");
+		/**绯荤粺鍙姞杞戒唬鐮侀」  濡傛灉libName涓嶄负绌猴紝鐩存帴鑾峰彇瀵瑰簲鐨勪唬鐮侀」**/
+		Map<String,String> condtionMap=new HashMap<>();
+		condtionMap.put("codeClassId", rmType.getOid());
+		R r=HttpUtil.sendGet(url,condtionMap,new HashMap<>());
+		CodeRuleVO codeRuleVO=new CodeRuleVO();
+		if(r.isSuccess()){
+			Object object= r.getData();
+			if(object!=null) {
+				ObjectMapper objectMapper = new ObjectMapper();
+				try {
+					codeRuleVO = objectMapper.readValue(object.toString(),CodeRuleVO.class);
+				} catch (JsonProcessingException e) {
+					e.printStackTrace();
+				}
+			}
+		}else{
+			VCIOptionPane.showMessage(this,r.getMsg());
+		}
+		/**鍔犺浇瑙勫垯瀵瑰簲鐨勭爜娈典俊鎭�**/
+		if(codeRuleVO!=null){
+			List<CodeBasicSecVO> codeBasicSecVOList=codeRuleVO.getSecVOList();
+			if(!CollectionUtils.isEmpty(codeBasicSecVOList) ){
+				/**鍒濆鍖栫爜娈祊anel**/
+				initSectionPanel(codeBasicSecVOList, codeRuleVO.getOid(), type);//鍒濆鍖栬鍒欑爜娈�
+			}
+		}
+		this.setLayout(new BorderLayout());
+		this.add(rulePal,BorderLayout.CENTER);
+
+	}
+	/**
+	 * 瑙勫垯鐮佹涓荤晫闈�
+	 * <p>Description: </p>
+	 *
+	 * @author Administrator
+	 * @time 2012-8-7
+	 * @param objs
+	 * @param cRuleId
+	 */
+	private void initSectionPanel(List<CodeBasicSecVO> objs, String cRuleId, int type)  {
+		//寰幆鑾峰彇鍒楀悕
+		int column = 0;
+		for(int i = 0; i < objs.size(); i++) {
+			if(objs.get(i).getSecType().equals("codeserialsec")){//娴佹按鐮佹涓嶅湪TABLE閲屾樉绀�
+				if (type == 1) {
+					continue;
+				} else if (type == 2) {
+					break;
+				}
+			}
+			columnSecMap.put(column++,objs.get(i));
+		}
+		createSectionPanel(objs, type);
+	}
+	private void createSectionPanel(List<CodeBasicSecVO> secObjs, int type)  {
+		/**姣忔閫夋嫨浠g爜椤瑰悗锛岃嚜鍔ㄥ姞杞借鍒欑爜娈靛拰妯℃澘灞炴�т俊鎭紝娓呴櫎鍘熸潵鐨勭爜娈典俊鎭�**/
+		rulePal.removeAll();
+		rulePal.updateUI();
+
+		/**鏍规嵁瑙勫垯鑾峰彇鐮佹淇℃伅鐣岄潰**/
+		VCIJPanel sectionPal = new VCIJPanel(new GridBagLayout());
+		GridBagConstraints c = new GridBagConstraints();
+		int x = 0;
+		int y = 0;
+		int maxAttrInLine = 1;
+		int column = 2;
+
+		List<CodeBasicSecVO> secList = new ArrayList<CodeBasicSecVO>();
+		List<VCIJComboxBox> comList = new ArrayList<VCIJComboxBox>();
+
+		compMaps.clear();
+		secAndComMap.clear();
+		secIdToClsfIdMap.clear();
+		secNameAndComtMap.clear();
+		secIndexAndNameMap.clear();
+		// 鍔犺浇鐮佹鍒楄〃
+		boolean isBreak = false;
+		for(int secIndex = 0; secIndex < secObjs.size(); secIndex += maxAttrInLine){//for1
+			for(int columnIndex = 0; columnIndex < maxAttrInLine; columnIndex++){ //for2
+				if(secIndex + columnIndex >= secObjs.size()){
+					break;
+				}
+				if(secObjs.get(secIndex).getSecType().equals("codeserialsec")){//娴佹按鐮佹涓嶅湪TABLE閲屾樉绀�
+					if (type == 1) {
+						continue;
+					} else {
+						isBreak = true;
+						break;
+					}
+				} /*else if (secObjs[secIndex].getSecType() == SectionConstant.SectionType.SECCHAR){//鏄垎闅旂
+					continue;
+				}*/
+				CodeBasicSecVO secObj = secObjs.get(secIndex+columnIndex);
+
+				VCIJLabel lbl = new VCIJLabel(secObj.getName() + "锛�");
+				lbl.setForeground(new Color(129, 0, 0));
+				JComponent compt = null;//鐮佹鍚嶇О
+
+				VCIJComboxBox cbx = new VCIJComboxBox();
+				compt = cbx;
+				secList.add(secObj);
+				comList.add(cbx);
+				compMaps.put(column, compt);
+				secNameAndComtMap.put(secObj.getName(), cbx);
+				secIndexAndNameMap.put(column, secObj.getName());
+
+				/**灞傜骇鐮佹闇�瑕佺壒娈婂鐞嗭細濡傛灉鏄眰绾х爜娈碉紝涓嬫媺妗嗕笉鑳界紪杈戯紝鏄剧ず鐨勫�兼槸閫変腑鐨勬爲鑺傜偣鐨勫垎绫诲悕绉板拰浠e彿**/
+				if(secObj.getSecType().equals ("codelevelsec")) {//灞傜骇鐮佹
+					levelPositon = column;
+					compt.setEnabled(false);
+				}
+//				relationMap.put(secIndex, column);
+				secAndComMap.put(secObj.getId(), cbx);
+				column++;
+
+				c.gridx = x++;
+				c.gridy = y;
+				c.gridheight = 1;
+				c.gridwidth = 1;
+				c.weightx = 0d;
+				c.weighty = 0d;
+//				c.fill = GridBagConstraints.NONE;
+				c.anchor = GridBagConstraints.EAST;
+				c.insets = new Insets(1, 1, 10, 10);
+				c.ipadx = 3;
+				c.ipady = 3;
+				lbl.setPreferredSize(new Dimension(100,25));
+				sectionPal.add(lbl, c);
+
+				c.gridx = x++;
+				c.weightx = 0d;
+				c.fill = GridBagConstraints.CENTER;
+				c.anchor = GridBagConstraints.WEST;
+				compt.setPreferredSize(new Dimension(200,25));
+				sectionPal.add(compt, c);
+				//濡傛灉褰撳墠鐮佹鏄渶瑕佺壒娈婂鐞嗙殑鐮佹锛岀郴缁熻繘琛岃褰曞鐞�
+				if(isSpecialRuleFlag && specialSectioName.equals(secObj.getName())) {
+					specSecList.add(lbl);
+					specSecList.add(compt);
+				}
+				/**鍒嗙被鐮佹娣诲姞鎻忚堪淇℃伅  410鏂伴渶姹傦細鍒嗙被鐮佹鐮佸�煎鍔�'鐮佸�兼弿杩�'瀛楁 BEGIN***/
+				if(secObj.getSecType().equals("codeclassifysec")) {
+					VCIJLabel lblDesc = new VCIJLabel("鎻忚堪锛�");
+					c.gridx = x++;
+					c.weightx = 0d;
+					c.fill = GridBagConstraints.NONE;
+					c.anchor = GridBagConstraints.WEST;
+					lblDesc.setPreferredSize(new Dimension(40,25));
+					sectionPal.add(lblDesc, c);
+					VCIJTextField txtDesc = new VCIJTextField("");
+					c.gridx = x++;
+					c.weightx = 0d;
+					c.fill = GridBagConstraints.CENTER;
+					c.anchor = GridBagConstraints.WEST;
+					txtDesc.setPreferredSize(new Dimension(200,25));
+					txtDesc.setEditable(false);
+					sectionPal.add(txtDesc, c);
+					secIdToClsfIdMap.put(secObj.getId(), txtDesc);
+					//璇︾粏鎻忚堪淇℃伅鐨勬煡鐪�
+					VCIJLabel clsfDescLbl = new VCIJLabel();
+					clsfDescLbl.setText("<html><u>"+"璇︾粏鎻忚堪"+"</u><html>");
+					clsfDescLbl.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
+					clsfDescLbl.setForeground(Color.RED);
+
+					comtMap.put(clsfDescLbl,txtDesc);
+					clsfDescLbl.addMouseListener(new MouseAdapter() {
+						public void mouseClicked(MouseEvent e){
+							clsfValDescActionListener(e);
+						}
+					});
+					c.gridx = x++;
+					c.weightx = 0d;
+					c.fill = GridBagConstraints.NONE;
+					c.anchor = GridBagConstraints.WEST;
+//					lblDesc.setPreferredSize(new Dimension(100,25));
+					sectionPal.add(clsfDescLbl, c);
+
+					//濡傛灉褰撳墠鐮佹鏄渶瑕佺壒娈婂鐞嗙殑鐮佹锛岀郴缁熻繘琛岃褰曞鐞�
+					if(isSpecialRuleFlag && specialSectioName.equals(secObj.getName())) {
+						specSecList.add(lblDesc);
+						specSecList.add(txtDesc);
+						specSecList.add(clsfDescLbl);
+					}
+
+				}
+				/****************************END**********************************/
+
+			}// for 2
+			if (isBreak) {
+				break;
+			}
+			x = 0;
+			y += 1;
+		}// for 1
+
+		rulePal.setLayout(new BorderLayout());
+		rulePal.add(sectionPal,BorderLayout.CENTER);
+		if (type == 1) {
+			rulePal.add(createAttrPal(),BorderLayout.SOUTH);
+		}
+		initCurrentRow(secList.toArray(new CodeBasicSecVO[0]),comList.toArray(new VCIJComboxBox[0]));
+	}
+	/**鍔犺浇妯℃澘灞炴�т俊鎭潰鏉�**/
+	private VCIJPanel createAttrPal() {
+		VCIJPanel attrPal = new VCIJPanel();
+		CodeClassify rmTypeObj = (CodeClassify) this.transTreeObject.getCurrentTreeNode().getObj();
+		/**閫夋嫨浜嗕唬鐮侀」**/
+		if(rmTypeObj != null) {
+			transmitForRMData = loadTemplateAttributes("",rmTypeObj.getId(),"");
+			/**浠g爜椤逛笅鐨勬ā鏉垮寘鍚睘鎬�**/
+			if(transmitForRMData.getTempPropObjsList().size() > 0) {
+				attrPal = createTemplateAttributePanel(transmitForRMData);
+			}
+		}
+		return attrPal;
+	}
+	private void loadSpecialRuleConfig() {
+		/******added by ligang 鏄惁鏄壒娈婅鍒欑殑鍒ゆ柇Begin******/
+		/*CodeClassify rmType = (CodeClassify) this.transTreeObject.getCurrentTreeNode().getObj();
+		RuleManagerObject ruleObj = ruleDel.getRuleManagerById(rmType.getRuleOid());
+
+		String specialRuleName = ConfigUtils.getConfigValue(SPECIAL_RULE_NAME);
+		isSpecialRuleFlag = ruleObj.getPlname().toUpperCase().equals(specialRuleName.toUpperCase()) ? true : false;
+		specialControlSecName = ConfigUtils.getConfigValue(SPECIAL_CONTROL_SECTION_NAME);
+		specialSectioName = ConfigUtils.getConfigValue(SPECIAL_SECTION_NAME);
+		specialSecVals = ConfigUtils.getConfigValue(SPECIAL_SECTION_VALUE).split(",");*/
+		/*********************End*************************/
+	}
+
+	/**
+	 * 鍔犺浇鏄惁鍚敤TextArea鐜鍙傛暟
+	 * <p>
+	 * Description:
+	 * </p>
+	 * @author liujw
+	 * @throws
+	 * @time 2013-4-16
+	 */
+	private void loadTextAreaEnableEnv()  {
+		String textAreaEnable = ConfigUtils.getConfigValue(TEXTAREA_ENABLE_KEY);
+		String strAttrInLine = ConfigUtils.getConfigValue(MAX_ATTR_IN_LINE_KEY);
+		if (isNumber(strAttrInLine)) {
+			Integer iLength = Integer.valueOf(strAttrInLine);
+			if (iLength > 0) {
+				this.maxAttrInLine = iLength;
+			}
+		}
+		if (textAreaEnable.toLowerCase().equals("true")) {
+			this.isEnableTextArea = true;
+		}
+		if(this.isEnableTextArea){
+			String cfgValue = "";
+
+			cfgValue = ConfigUtils.getConfigValue(MAX_STRING_LENGTH_KEY);
+			if (isNumber(cfgValue)) {
+				Integer iLength = Integer.valueOf(cfgValue);
+				if (iLength > 0) {
+					this.maxStringLength = iLength;
+				}
+			}
+
+			cfgValue = ConfigUtils.getConfigValue(TEXTAREA_PRE_SIZE_WIDTH);
+			if (isNumber(cfgValue)) {
+				Integer iValue = Integer.valueOf(cfgValue);
+				if (iValue > 0) {
+					this.textAreaPreSizeWidth = iValue;
+				}
+			}
+
+			cfgValue = ConfigUtils.getConfigValue(TEXTAREA_PRE_SIZE_HEIGHT);
+			if (isNumber(cfgValue)) {
+				Integer iValue = Integer.valueOf(cfgValue);
+				if (iValue > 0) {
+					this.textAreaPreSizeHeight = iValue;
+				}
+			}
+
+			cfgValue = ConfigUtils.getConfigValue(TEXTAREA_MIN_SIZE_WIDTH);
+			if (isNumber(cfgValue)) {
+				Integer iValue = Integer.valueOf(cfgValue);
+				if (iValue > 0) {
+					this.textAreaMinSizeWidth = iValue;
+				}
+			}
+
+			cfgValue = ConfigUtils.getConfigValue(TEXTAREA_MIN_SIZE_HEIGHT);
+			if (isNumber(cfgValue)) {
+				Integer iValue = Integer.valueOf(cfgValue);
+				if (iValue > 0) {
+					this.textAreaMinSizeHeight = iValue;
+				}
+			}
+
+			cfgValue = ConfigUtils.getConfigValue(TEXTAREA_MAX_SIZE_WIDTH);
+			if (isNumber(cfgValue)) {
+				Integer iLength = Integer.valueOf(cfgValue);
+				if (iLength > 0) {
+					this.textAreaMaxSizeWidth = iLength;
+				}
+			}
+
+			cfgValue = ConfigUtils.getConfigValue(TEXTAREA_MAX_SIZE_HEIGHT);
+			if (isNumber(cfgValue)) {
+				Integer iLength = Integer.valueOf(cfgValue);
+				if (iLength > 0) {
+					this.textAreaMaxSizeHeight = iLength;
+				}
+			}
+		}
+	}
+	/**
+	 * 鍒嗙被灞傜骇娉ㄥ叆鍔熻兘鐨勫畬鍠�
+	 * <p>Description: </p>
+	 *
+	 * @author ligang
+	 * @time 2013-5-7
+	 */
+	private void initContents() {
+		Iterator<String> keys = transmitForRMData.getTempPropObjsMap().keySet().iterator();
+		while(keys.hasNext()){
+			String key = keys.next();
+			CodeClassifyTemplateAttrVO tempPropObj = transmitForRMData.getTempPropObjsMap().get(key);
+			String referConfig=tempPropObj.getReferConfig();//鍙傜収閰嶇疆
+			String componentRule=tempPropObj.getComponentRule();//缁勫悎瑙勫垯
+			String innerName = tempPropObj.getId();
+			if (attrInnerNameToCtrlMaps.containsKey(innerName)) {
+				String classifyLevel = tempPropObj.getClassifyInvokeLevel();
+				String classifyInvokeAttr= tempPropObj.getClassifyInvokeAttr();
+				JComponent compt = attrInnerNameToCtrlMaps.get(innerName);
+				if(StringUtils.isNotBlank(classifyLevel)&&!classifyLevel.equals("none")&&!classifyLevel.equals("min")) {
+					compt.setEnabled(false);
+					//ClassifyLevel classifyLevelObj=new ClassifyLevel();
+					//ObjectMapper objectMapper = new ObjectMapper();
+					String value = "";
+					/*classifyLevelObj = objectMapper.readValue(classifyLevel.toString(), ClassifyLevel.class);
+					String set=classifyLevelObj.getSet();
+					String type=classifyLevelObj.getType();*/
+					if (classifyLevel.equals("min")) {
+						CodeClassify rmType = (CodeClassify) this.transTreeObject.getCurrentTreeNode().getObj();
+						if ("name".equals(classifyInvokeAttr)) {
+							value = rmType.getName();
+						} else if ("id".equals(classifyInvokeAttr)) {
+							value = rmType.getId();
+						}
+
+					} else {
+						int intLevel = Integer.parseInt(classifyLevel);
+						if (rmTypeTreeMaps.containsKey(intLevel)) {
+							CodeClassify rmType = rmTypeTreeMaps.get(intLevel);
+							if ("name".equals(classifyInvokeAttr)) {
+								value = rmType.getName();
+							} else if ("id".equals(classifyInvokeAttr)) {
+								value = rmType.getId();
+							}
+						}
+					}
+					if (compt instanceof JTextComponent) {
+						((JTextComponent) compt).setText(value);
+					}
+				}
+				//鍙傜収閰嶇疆鐨勮缃垚鍙妯″紡
+				if(StringUtils.isNotBlank(referConfig)||StringUtils.isNotBlank(componentRule)){
+					compt.setEnabled(false);
+				}
+			}
+		}
+	}
+	/**
+	 * 鍒嗙被鏍戜腑鐨勫垎绫诲璞ap
+	 */
+	private LinkedHashMap<Integer, CodeClassify> rmTypeTreeMaps = new LinkedHashMap();
+
+	private void initRMTypeTreeMaps(){
+		if(transTreeObject != null){
+			TreeNode[] nodes = transTreeObject.getTreeModel().getPathToRoot(transTreeObject.getCurrentTreeNode());
+			int level = 1;
+			int start = 1;
+			for(int i = start; i < nodes.length; i++){
+				TreeNode node = nodes[i];
+				if(node instanceof VCIBaseTreeNode){
+					VCIBaseTreeNode treeNode = (VCIBaseTreeNode) node;
+					Object obj = treeNode.getObj();
+					if((treeNode.isRoot() || (obj instanceof String))){
+						//
+					}else if(obj instanceof CodeClassify){
+						CodeClassify rmType = (CodeClassify)obj;
+						rmTypeTreeMaps.put(level++, rmType);
+					}
+				}
+			}
+		}
+	}
+
+
+	/**
+	 * 鍒濆鍖栦釜鐮佹鐮佸�硷紝濡傛灉鏄垎绫荤爜鍙姞杞界埗鍒嗙被鐨勫垎绫荤爜鍊硷紝瀛愬垎绫讳笉鍔犺浇
+	 * @param secObjs
+	 */
+	public void initCurrentRow(CodeBasicSecVO[] secObjs,VCIJComboxBox[] secCombos) {
+		SectionObject lastSecObj = null;
+		VCIJComboxBox hisCombo = null;
+		try {
+			final Map<String, String> secValMap = getSpecialValMap(specialSecVals);
+			for(int k = 0;k < secObjs.length; k++) {
+				final CodeBasicSecVO secObj = secObjs[k];
+				final VCIJComboxBox secCombo = secCombos[k];
+				if(null == secObj) {
+					return;
+				}
+				if (secObj.getSecType().equals("codeclassifysec")) {// 鏄垎绫荤爜
+						continue;
+				} else
+					// 鏄浐瀹氱爜
+					if (secObj.getSecType() .equals("codefixedsec")) {
+				/*	SectionValueClientDelegate codeValDel = new SectionValueClientDelegate(userObj);
+					FixCodeValObject[] codeValObjs = codeValDel.fetchFixCodeValBySecId(secObj.getId());// 鑾峰彇璇ョ爜娈典笅鐨勬墍鏈夌爜娈电爜鍊煎璞�
+					//濡傛灉鍙湁涓�涓�硷紝鍒欑郴缁熼粯璁ら�夋嫨锛屼笉鍔犵┖鍊�
+					if(codeValObjs.length > 1 ) {
+						secCombo.addItem(new FixCodeValObject());
+					}
+					for (int i = 0; i < codeValObjs.length; i++) {
+						secCombo.addItem(codeValObjs[i]);
+					}
+					*//**褰撶郴缁熼�夋嫨鐨勬槸鎸囧畾鐮佹鍊兼椂锛岀粍鍒唬鍙风殑鐮佹绯荤粺涓嶆樉绀� Begin**//*
+					FixCodeValObject selObj = (FixCodeValObject) secCombo.getSelectedItem();
+					if(isSpecialRuleFlag && (secObj.getName().equals(specialControlSecName) && secValMap.containsKey(selObj.getValue())) || secValMap.containsKey(getControlSecSelectValue())) {
+						setComponentStatus(false);
+					}else {
+						setComponentStatus(true);
+					}
+					if (secCombo.getItemCount() > 10){
+						if (!secCombo.isFlag()){
+							secCombo.setFlag(true);
+							secCombo.getSearchBtn().setVisible(true);
+							secCombo.getSearchBtn().addActionListener(new ActionListener() {
+								@Override
+								public void actionPerformed(ActionEvent e) {
+									doSearch(secCombo);
+								}
+							});
+						}
+					}else {
+						secCombo.setFlag(false);
+						secCombo.getSearchBtn().setVisible(false);
+					}*/
+
+				}  else
+						// 鏄棩鏈熺爜娈�
+					if (secObj.getSecType().equals("codedatesec")) {
+					/*SectionClientDelegate secDel = new SectionClientDelegate(userObj);
+					DateSecObject dateObj = secDel.fetchDateSecById(secObj.getId());
+					String df = dateObj.getFormat();
+					SimpleDateFormat dateFormate = new SimpleDateFormat(df);
+					String curDate = dateFormate.format(Calendar.getInstance().getTime());
+					secCombo.addItem(curDate);
+					if(dateObj.getIsModify().equals("Y")){//鍙互淇敼
+						secCombo.setEditable(true);
+					}*/
+				} else
+						//鏄紩鐢ㄧ爜娈�
+					if (secObj.getSecType().equals("coderefersec")) {
+					/*RefSecObject refObj = getRefSecObj(secObj.getId());
+					DefaultComboBoxModel aModel = getRefSecComboBox(refObj);
+					secCombo.setModel(aModel);
+					if(deptName != null && !("".equals(deptName))){
+						Integer index = refSecValueToCombxindex.get(deptName);
+						if(index !=null){
+							secCombo.setSelectedIndex(index);
+						}
+					}
+
+					if (secCombo.getItemCount() > 10){
+						if (!secCombo.isFlag()){
+							secCombo.setFlag(true);
+							secCombo.getSearchBtn().setVisible(true);
+							secCombo.getSearchBtn().addActionListener(new ActionListener() {
+								@Override
+								public void actionPerformed(ActionEvent e) {
+									doSearch(secCombo);
+								}
+							});
+						}
+					}else {
+						secCombo.setFlag(false);
+						secCombo.getSearchBtn().setVisible(false);
+					}
+
+				*/} else
+						//灞傜骇鐮佹鐮佸�兼樉绀虹殑鏄�夋嫨鐨勪唬鐮侀」鐨勫悕绉�
+					if(secObj.getSecType().equals("coderefersec")) {
+					/*RMTypeObject rmObj = (RMTypeObject) this.transTreeObject.getCurrentTreeNode().getObj();
+					secCombo.addItem(rmObj);*/
+				} else {
+					secCombo.setEditable(true);
+				}
+			}
+		}catch (Exception e) {
+			e.printStackTrace();
+			VCIOptionPane.showError(this, "鍒濆鍖栫爜娈电爜鍊煎嚭鐜伴敊璇紒");
+		}
+	}
+	/**
+	 * 鍔犺浇妯℃澘鐨勫畾涔夌殑灞炴�с�佸睘鎬ф暟鎹�
+	 * <p>Description: </p>
+	 *
+	 * @author xchao
+	 * @time 2012-6-7
+	 * @param libId
+	 * @param classifyId
+	 * @param templateId
+	 * @return
+	 */
+	public RMDataTransmitObject loadTemplateAttributes(String libId, String classifyId, String templateId) {
+		RMDataTransmitObject transmit=new RMDataTransmitObject();
+		transmit.setLibId(libId);
+		transmit.setClassifyId(classifyId);
+		CodeClassify rmType = (CodeClassify) this.transTreeObject.getCurrentTreeNode().getObj();
+		transmit.setRmTypeObject(rmType);
+		if(currentCodeClassifyTemplateVO!=null) {
+			transmit.setTemplateId(templateId);
+			Map<String, CodeClassifyTemplateAttrVO> tempPropObjMapsByInnerName = currentCodeClassifyTemplateVO.getAttributes().stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+			transmit.setClassifyCode(rmType.getId());
+			transmit.setTempPropObjMapsByInnerName(tempPropObjMapsByInnerName);
+			Map<String, CodeClassifyTemplateAttrVO> tempPropObjsMap = currentCodeClassifyTemplateVO.getAttributes().stream().collect(Collectors.toMap(s -> s.getOid().toLowerCase(Locale.ROOT), t -> t));
+			transmit.setTempPropObjsMap(tempPropObjsMap);
+			transmit.setTemplateObject(currentCodeClassifyTemplateVO);
+			transmit.setTempPropObjsList(this.currentCodeClassifyTemplateVO.getAttributes());
+		}
+		return transmit;
+	}
+
+	/****
+	 * 鍔犺浇浠g爜椤瑰搴旂殑妯℃澘灞炴�т俊鎭垪琛�
+	 * <p>Description: </p>
+	 *
+	 * @author Administrator
+	 * @time 2013-3-23
+	 * @param transmitForRMData 锛氭ā鏉垮睘鎬�,鍒嗙被绛変俊鎭�
+	 * @return
+	 */
+	private VCIJPanel createTemplateAttributePanel(final RMDataTransmitObject transmitForRMData)  {
+		//int maxAttrInLine = 2;
+		VCIJPanel pal = new VCIJPanel();
+		pal.setLayout(new GridBagLayout());
+		int gridx = -1;
+		int gridy = -1;
+		int gridwidth = 1;
+		double weighty = 0.0;
+		CodeClassifyTemplateAttrVO[] realAttrs = getRealAttributeObjects(transmitForRMData);
+		Map<String, String> attrMaps = getTempPropMap(transmitForRMData);
+
+		attrIdToCtrlMaps.clear();
+		attrInnerNameToCtrlMaps.clear();
+
+		for (int attrIndex = 0; attrIndex < realAttrs.length; attrIndex += maxAttrInLine) {// for1
+			gridx = 0;
+			gridy += 1;
+			boolean leastNewLine = checkLeastNewLine(attrIndex, maxAttrInLine,attrMaps,realAttrs);
+			for (int columnIndex = 0; columnIndex < maxAttrInLine; columnIndex++) { // for2
+				int index = columnIndex + attrIndex;
+				if (index >= realAttrs.length) {
+					break;
+				}
+				CodeClassifyTemplateAttrVO attrObj = realAttrs[index];
+
+				/***濡傛灉妯℃澘閰嶇疆浜嗗紩鐢ㄦā鏉匡紝灞炴�у悕绉板垪琛ㄦ坊鍔犻摼鎺ヨ繘琛屽鐞� BEGIN**/
+				//ADD BY liujw
+				VCIJLabel lbl = null;
+				if(StringUtils.isNotBlank(attrObj.getReferConfig())) {//寮曠敤妯℃澘灞炴�у��
+					lbl = new VCIJLabel("<html><u>"+(attrObj.getName() + ":")+"</u><html>");
+					lbl.setForeground(Color.MAGENTA);
+					lbl.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
+					lbl.setToolTipText("鐐瑰嚮姝ゅ鍔犺浇寮曠敤妯℃澘灞炴�ф暟鎹�");
+					lbl.addMouseListener(new MouseAdapter() {
+						public void mouseClicked(MouseEvent e){
+							getReferTempRMData(attrObj,attrIdToCtrlMaps,transmitForRMData.getTempPropObjsList());
+						}
+					});
+				} else if(!"".equals(attrObj.getComponentRule())) {//妯℃澘瑙勫垯鐨勭粍鍚�
+					String lblName = "鈽�"+attrObj.getName() + "鈽�:";
+					lbl = new VCIJLabel("<html><u>"+lblName+"<u></html>");
+					lbl.setForeground(Color.BLUE);
+					lbl.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
+					lbl.setToolTipText("鐐瑰嚮姝ゅ鑾峰彇妯℃澘瀵瑰簲瑙勫垯鐨勫��");
+					lbl.addMouseListener(new MouseAdapter() {
+						public void mouseClicked(MouseEvent e){
+						//	getComptAttrValue(attrObj,attrIdToCtrlMaps,transmitForRMData.getTempPropObjsList());
+
+						}
+					});
+				} else if(attrObj.getKeyAttrFlag().equals("true")) {//鍏抽敭灞炴��
+					lbl = new VCIJLabel(attrObj.getName() + ":");
+					lbl.setForeground(new Color(255, 0, 0));
+				}
+				else {
+					lbl = new VCIJLabel(attrObj.getName() + ":");
+					lbl.setForeground(attrObj.getRequireFlag().equals("true") ? new Color(0, 120, 0) : new Color(129, 0, 0));
+				}
+				JComponent compt = createComponent(attrObj);
+				JComponent comptAddToPanel = compt;
+
+				//by liujw
+				boolean isMultiLineFlag = attrObj.getTextAreaFlag().equals("true") ? true : false;
+				if (this.isEnableTextArea && isMultiLineFlag // 鍚敤TextArea鏄剧ず澶勭悊锛屼笖灞炴�ч暱搴﹁秴杩囦竴瀹氳寖鍥�
+					&& attrObj.getAttributeDataType().toUpperCase().equals("VTstring".toUpperCase()) // String绫诲瀷
+				) {
+					VCIJTextArea textArea = new VCIJTextArea("", attrObj.getRequireFlag().equals("true"));
+					VCIJScrollPane textAreaScroll = createTextAreaScrollPane(textArea);
+					textArea.setEnabled(compt.isEnabled());
+					comptAddToPanel = textAreaScroll;
+					if(compt instanceof JTextComponent){
+						textArea.setText(((JTextComponent)compt).getText());
+					}
+					compt = textArea;
+				}
+				/**
+				 * 鏂规锛歏1 灞炴�х粍浠跺姞杞姐�佹樉绀虹瓥鐣� 1銆佹瘡琛岋紙涓�缁勶級鏈�澶氭樉绀簃axAttrInLine涓睘鎬�
+				 * 2銆佸鏋渋sEnableTextArea涓簍rue锛屽垯鏄惎鐢═extArea
+				 * 3銆佸惎鐢═extArea鍚庯紝濡傛灉涓�缁勫唴鐨勫睘鎬э紝鍙浠绘剰涓�涓睘鎬у畾涔夌殑灞炴�ч暱搴﹀ぇ浜庢垨绛変簬maxStringLength
+				 * 锛屽垯璇ョ粍鍐呯殑姣忎釜灞炴�ч兘灏嗙嫭鍗犱竴鏁磋
+				 * 姝ゆ柟妗堝瓨鍦ㄧ殑闂锛氬洜涓洪櫎TextArea涔嬪鐨勫睘鎬т篃灏嗗崰鏁磋鏄剧ず锛屽鏋滀竴缁勫唴鐨勫睘鎬т釜鏁拌緝澶�
+				 * 锛堝ぇ浜�2锛夋椂锛岀晫闈㈡樉绀哄眰闈笉澶紝鍙嬪ソ锛屽挨鍏舵槸杩炵画鍑虹幇澶氫釜TextArea鏃舵鐜拌薄鏇村姞鏄庢樉
+				 * 鍥犳寤鸿閰嶇疆锛氬惎鐢═extArea鏃讹紝RMData.MaxAttrInLine=2锛屽嵆涓�缁勫唴鏈�澶氬姞杞戒袱涓睘鎬с��
+				 */
+				// 涓�缁勮嚦灏戝瓨鍦ㄧ潃涓�涓猅extArea鏃讹紝璇ョ粍鍐呭叾瀹冨睘鎬т篃灏嗗崰鏁翠釜瀹藉害锛堢嫭鍗犱竴琛岋級锛�
+				if (leastNewLine) {
+					gridwidth = maxAttrInLine * 2;
+					gridx = 0;
+					gridy += 1;
+//						weighty = 1.0;
+					weighty = 0.0;
+				} else {
+					gridwidth = 1;
+					weighty = 0.0;
+				}
+				pal.add(lbl,createGridBagConstraints(gridx, gridy, 1, 1, 0.0, 0.0,GridBagConstraints.NORTHEAST,GridBagConstraints.NONE));
+				pal.add(comptAddToPanel,createGridBagConstraints(gridx + 1, gridy, gridwidth,1, 1.0, weighty, GridBagConstraints.NORTHWEST,GridBagConstraints.BOTH));
+				// 濡傛灉杩欎竴缁勫唴涓嶅瓨鍦ㄧ潃闇�瑕佸崰鏁磋鏄剧ず鐨勶紝鍒欒绠楁í鍧愭爣
+				//gridx += 2;
+				if (!leastNewLine) {
+					gridx += 2;
+				}
+				/*********************** 鏂规锛歏1 End ***********************/
+
+				// 缂撳瓨鍚勫睘鎬у搴旂殑鎺�&缁勪欢
+				String key = attrObj.getId();
+				if (!attrIdToCtrlMaps.containsKey(key)) {
+					attrIdToCtrlMaps.put(key, compt);
+				}
+				// 瀛樺偍灞炴�у唴閮ㄥ悕绉颁笌鎺т欢鐨勫叧绯�
+				key = attrObj.getId();
+				if (!attrInnerNameToCtrlMaps.containsKey(key)) {
+					attrInnerNameToCtrlMaps.put(key, compt);
+				}
+			}// for 2
+		}// for 1
+		// 鍦ㄥ簳閮ㄦ坊鍔犱竴琛岋紝鍗犳嵁鍏ㄩ儴鐨勭┖浣欏尯鍩燂紝鍏跺畠鎺т欢鑷姩浠庡榻愬埌椤堕儴
+		pal.add(new VCIJLabel(""),createGridBagConstraints(0, gridy + 1, maxAttrInLine * 2, 1,1.0, 10.0, GridBagConstraints.NORTHWEST,GridBagConstraints.BOTH));
+		this.setTextComptList(textCompts);
+		return pal;
+	}
+	/**鏍规嵁灞炴�х粍鍚堣鍒欒幏鍙栧睘鎬х殑鍊� **/
+	//add by liujw
+	private void getComptAttrValue(CodeClassifyTemplateAttrVO attrObj, LinkedHashMap<String, JComponent> attrIdToCtrlMaps) {
+		Map<String, String> attrNameMap = new LinkedHashMap<String, String>();
+		Map<String, String> tempProMap = new LinkedHashMap<String, String>();
+
+		// 鍚勫睘鎬х殑鍐呴儴鍚嶇О
+		LinkedList<String> listInnerNames = new LinkedList<String>();
+		// 鍚勫睘鎬у搴旂殑鏁版嵁鍊�
+		LinkedList<String> listValues = new LinkedList<String>();
+		// 鍚勫睘鎬х殑绫诲瀷
+		LinkedList<String> listDataTypes = new LinkedList<String>();
+
+		Iterator<String> keys = attrIdToCtrlMaps.keySet().iterator();
+		JComponent compt = null;
+		while (keys.hasNext()) {
+			String attrOid = keys.next();
+			compt = attrIdToCtrlMaps.get(attrOid);
+			String value = "";
+			if (compt instanceof JTextComponent) {
+				value = ((JTextComponent) compt).getText();
+			} else if (compt instanceof VCIJCalendarPanel) {
+				value = ((VCIJCalendarPanel) compt).getDateString();
+				value = value == null ? "" : value;
+			} else if (compt instanceof VCIJComboBox) {
+				Object objItem = ((VCIJComboBox) compt).getSelectedItem();
+				if (objItem instanceof AttrRangObjectWarper) { // 灞炴�у彇鍊艰寖鍥�
+					value = ((AttrRangObjectWarper) objItem).getKeyValue().getValue();
+				} else if (objItem instanceof String) { // Boolean绫诲瀷鐨勪細鎻愪緵0\1閫夋嫨
+					value = (String) objItem;
+				}
+			}
+
+			// 鍏ㄩ儴楠岃瘉閫氳繃
+			listInnerNames.add(attrObj.getId());
+			listValues.add(value);
+			listDataTypes.add(attrObj.getAttributeDataType());
+
+			/**淇灞炴�у畾涔変腑'/'涓嶈兘鏀寔鐨刡ug**/
+			String attrName = attrObj.getName();
+			if(attrName.indexOf("/") != -1) {
+				attrName = attrObj.getName().replaceAll("/", "_");
+			}
+
+			attrNameMap.put(attrName, value);
+			/****************End******************/
+			tempProMap.put(attrObj.getOid(), attrObj.getId());
+		}
+		/**鏍规嵁妯℃澘涓厤缃殑灞炴�ц鍒欙紝鏍规嵁瑙勫垯瀵瑰睘鎬ф暟鎹繘琛岀粍鍚堟垨鑰呮媶鍒� BEGIN***/
+		List<CodeClassifyTemplateAttrVO> list = transmitForRMData.getTempPropObjsList();
+		for(CodeClassifyTemplateAttrVO obj : list) {
+			if(!"".equals(obj.getComponentRule())) {
+				try {
+					/**淇灞炴�у畾涔変腑'/'涓嶈兘鏀寔鐨刡ug Begin**/
+					String tempRule = obj.getComponentRule();
+					if(tempRule.indexOf("/") != -1) {
+						tempRule = obj.getComponentRule().replaceAll("/", "_");
+					}
+					String value = "";//FreeMarkerCommon.getValueByTempRule(attrNameMap,tempRule);
+					/****************End******************/
+					JComponent comp = attrInnerNameToCtrlMaps.get(tempProMap.get(obj.getOid()));
+					if(comp instanceof JTextComponent) {
+						((JTextComponent) comp).setText(value);
+					}
+				} catch (Exception e) {
+					e.printStackTrace();
+				}
+			}
+
+		}
+	}
+	/**
+	 * 鑾峰彇鐪熷疄鐨勩�佸疄闄呯殑闇�瑕佸姞杞藉埌UI鐨勫睘鎬у垪琛�
+	 * <p>
+	 * Description:
+	 * </p>
+	 *
+	 * @author xchao
+	 * @time 2012-11-6
+	 * @param transmitForRMData
+	 *            褰撳墠涓婁笅鏁版嵁浼犻�掑璞�
+	 * @return
+	 */
+	private CodeClassifyTemplateAttrVO[] getRealAttributeObjects(RMDataTransmitObject transmitForRMData) {
+		// 鍙栨ā鏉跨殑灞炴��
+		CodeClassifyTemplateAttrVO[] tempAttrs = transmitForRMData.getTempPropObjsList().toArray(new CodeClassifyTemplateAttrVO[0]);
+		LinkedList<CodeClassifyTemplateAttrVO> attrsList = new LinkedList<CodeClassifyTemplateAttrVO>();
+		// 杩涜杩囨护锛岄殣钘忕殑涓嶆樉绀猴紝浼佷笟浠g爜涓嶆樉绀猴紝鍏跺畠鐨勫厑璁稿綍鍏�
+		for (CodeClassifyTemplateAttrVO attrObj : tempAttrs) {
+			String attrId = attrObj.getOid();
+			// 鍒ゆ柇灞炴�ф槸鍚﹂殣钘忥紝闅愯棌鐨勪笉闇�瑕佹彁渚涘綍鍏ラ」
+			if (attrObj.getFormDisplayFlag().equals("false")) {
+				continue;
+			}
+			// 濡傛灉鏄唬鐮佸垪锛屽垯涔熼殣钘忥紝閫氳繃浠g爜鐢宠妗嗘灦褰曞叆
+			else if (attrObj.getId().toUpperCase().equals("id".toUpperCase())) {
+				continue;
+			}
+			attrsList.add(attrObj);
+		}
+		// 鏈夋晥鐨勩�侀渶瑕佹樉绀哄綍鍏ユ鐨勫睘鎬у垪琛�
+		CodeClassifyTemplateAttrVO[] attrs = attrsList.toArray(new CodeClassifyTemplateAttrVO[] {});
+		return attrs;
+	}
+	/**
+	 * 鍒涘缓灞炴�у湪UI涓憟鐜扮殑缁勪欢
+	 * <p>
+	 * Description:
+	 * </p>
+	 *
+	 * @author xchao
+	 * @time 2012-11-6
+	 * @param attrObj
+	 *            灞炴�у湪妯℃澘涓搴旂殑灞炴�у璞�
+	 * @return
+	 */
+	private JComponent createComponent(CodeClassifyTemplateAttrVO attrObj)  {
+		JComponent compt = null;
+		String attrId = attrObj.getId();
+		// 鏌ュ嚭灞炴�х殑鍙栧�艰寖鍥�
+		if(StringUtils.isNotBlank(attrObj.getEnumString())||StringUtils.isNotBlank(attrObj.getEnumId())){
+			KeyValue[] keyValues = getAttrRangeObjects(attrObj.getOid());
+			// 濡傛灉瀛樺湪鍙栧�艰寖鍥达紝鍙兘浠庡彇鍊艰寖鍥撮噷閫夋嫨
+			if (keyValues.length != 0) {
+				AttrRangObjectWarper[] objs = new AttrRangObjectWarper[keyValues.length];
+				VCIJComboBox cbx = new VCIJComboBox();
+				DefaultComboBoxModel model = new DefaultComboBoxModel();
+				//瀛樺湪鍙栧�艰寖鍥达紝濡傛灉鍙互涓虹┖锛屽垯娣诲姞涓�涓┖鍊�
+				int comboBoxIndex = 1;
+				KeyValue keyValue = new KeyValue();
+				keyValue.setValue("");
+				keyValue.setKey("");
+				AttrRangObjectWarper wrapper = new AttrRangObjectWarper(keyValue);
+				model.addElement(wrapper);
+				/*** 濡傛灉妯℃澘灞炴�т笉鏄繀濉」锛屽姞鍏ョ┖鍊煎悗淇敼鏃跺姛鑳界殑瀹屽杽 **/
+				LinkedHashMap<String, Integer> specMap = new LinkedHashMap<String, Integer>();
+				for (int i = 0; i < objs.length; i++) {
+					objs[i] = new AttrRangObjectWarper(keyValues[i]);
+					model.addElement(objs[i]);
+
+					specMap.put(objs[i].toString(), comboBoxIndex++);
+				}
+				cbx.setModel(model);
+				compt = cbx;
+			}
+		} else { // 涓嶅瓨鍦ㄥ彇鍊艰寖鍥村垯鎸夌被鍨嬬敓鎴愪笉鍚岀殑鎺т欢
+			 if (attrObj.getAttributeDataType().equals(VciFieldTypeEnum.VTBoolean)) { // Boolean绫诲瀷
+				VCIJComboBox cbx = new VCIJComboBox();
+				DefaultComboBoxModel model = new DefaultComboBoxModel();
+				model.addElement("0");
+				model.addElement("1");
+				cbx.setModel(model);
+				compt = cbx;
+			} else if (attrObj.getAttributeDataType().equals(VciFieldTypeEnum.VTDate)) { // 鏃ユ湡绫诲瀷
+				compt = new VCIJCalendarPanel("yyyy-MM-dd",
+					attrObj.getRequireFlag().equals("true"), true, false);
+			} else if (attrObj.getAttributeDataType().equals(VciFieldTypeEnum.VTDateTime)) { // 鏃ユ湡绫诲瀷
+				 compt = new VCIJCalendarPanel("yyyy-MM-dd HH:mm:ss",
+					 attrObj.getRequireFlag().equals("true"), true, false);
+			 }else if (attrObj.getAttributeDataType().equals(VciFieldTypeEnum.VTTime)) { // 鏃ユ湡绫诲瀷
+				 compt = new VCIJCalendarPanel("HH:mm:ss",
+					 attrObj.getRequireFlag().equals("true"), true, false);
+			 }
+			 else if (attrObj.getAttributeDataType().equals(VciFieldTypeEnum.VTDouble)||attrObj.getAttributeDataType().equals(VciFieldTypeEnum.VTLong)) { // Real绫诲瀷
+				RealTextField txt = new RealTextField("");
+				txt.setRequired(attrObj.getRequireFlag().equals("true"));
+				compt = txt;
+			} else if (attrObj.getAttributeDataType().equals(VciFieldTypeEnum.VTInteger)) { // Integer绫诲瀷
+				IntegerTextField txt = new IntegerTextField("");
+				txt.setRequired(attrObj.getRequireFlag().equals("true"));
+				compt = txt;
+			}
+			 else{
+				 VCIJTextField txt = new VCIJTextField(this,attrObj.getRequireFlag().equals("true"));
+				 compt = txt;
+				 textCompts.add(txt);
+			 }
+			boolean enabled = true;
+
+			/*// 闆嗗洟浠g爜銆侀泦鍥㈤檮鍔犵爜涓嶅彲浠ユ墜宸ュ綍鍏ユ暟鎹�
+			if (attrObj.getId().equals(Constants.GROUP_CODE_INNERNAME)|| attrObj.getInternalname().equals(Constants.GROUP_ADD_CODE_INNERNAME)) {
+				enabled = false;
+			}*/
+
+			compt.setEnabled(enabled);
+		}
+
+		return compt;
+	}
+	/****
+	 * 鏍规嵁灞炴�d鑾峰彇灞炴�у彇鍊艰寖鍥寸殑鍊�
+	 * <p>Description: </p>
+	 *
+	 * @author Administrator
+	 * @time 2013-3-23
+	 * @param attrId
+	 * @return
+	 */
+	private KeyValue[] getAttrRangeObjects(String attrId){
+		KeyValue[] res = new KeyValue[0];
+		String url= ConfigUtils.getConfigValue("410.PDM.attrKeyValue.url","http://127.0.0.1:36014/codeApplySwingController/listComboboxItems");
+		/**绯荤粺鍙姞杞戒唬鐮侀」  濡傛灉libName涓嶄负绌猴紝鐩存帴鑾峰彇瀵瑰簲鐨勪唬鐮侀」**/
+		Map<String,String> condtionMap=new HashMap<>();
+		condtionMap.put("oid", attrId);
+		R r=HttpUtil.sendGet(url,condtionMap,new HashMap<>());
+		List<KeyValue> keyValueList=new ArrayList<>();
+		if(r.isSuccess()){
+			Object object= r.getData();
+			if(object!=null) {
+				ObjectMapper objectMapper = new ObjectMapper();
+				try {
+					keyValueList = objectMapper.readValue(object.toString(), new com.fasterxml.jackson.core.type.TypeReference<List<KeyValue>>() {
+					});
+				} catch (JsonProcessingException e) {
+					e.printStackTrace();
+				}
+			}
+		}else{
+			VCIOptionPane.showMessage(this,r.getMsg());
+		}
+		return keyValueList.toArray(new KeyValue[]{});
+	}
+	/**
+	 * 妫�鏌ラ渶瑕佸湪涓�琛屼腑鏄剧ず鐨勯偅浜涚粍浠讹紙鎺т欢锛変腑锛屾槸鍚﹁嚦灏戝瓨鍦ㄧ潃涓�涓渶瑕佹崲琛岋紙鍗犳暣琛岋級鏄剧ず鐨勭粍浠�
+	 * <p>
+	 * Description:
+	 * </p>
+	 *
+	 * @author liujw
+	 * @time 2013-4-16
+	 * @param attrIndex
+	 *            寰幆灞炴�х殑绱㈠紩
+	 * @param maxAttrInLine
+	 *            闇�瑕佹崲琛屾樉绀虹殑鍒ゆ柇鏉′欢锛屽睘鎬х殑闀垮害
+	 * @param realAttrs
+	 *            鐪熷疄鐨勯渶瑕佸姞杞界殑灞炴�у垪琛�
+	 * @return
+	 */
+	private boolean checkLeastNewLine(int attrIndex, int maxAttrInLine,Map<String, String> attrMaps, CodeClassifyTemplateAttrVO[] realAttrs){
+		boolean res = false;
+		int attrsLength = realAttrs.length;
+		for(int columnIndex = 0; columnIndex < maxAttrInLine; columnIndex++){
+			int index = attrIndex + columnIndex;
+			if(index < attrsLength){
+				CodeClassifyTemplateAttrVO attrObj = realAttrs[index];
+				boolean isStringType = attrObj.getAttributeDataType().toUpperCase().equals("VTstring".toUpperCase());
+				// 鍚敤TextArea鏃舵墠杩涜鍒ゆ柇
+				if(this.isEnableTextArea && isStringType && attrMaps.size() > 0 && attrMaps.containsKey(attrObj.getId())){
+					res = true;
+					break;
+				}
+			}
+		}
+		return res;
+	}
+
+	/***鑾峰彇灞炴�фā鏉垮璞�  @author liujw**/
+	private Map<String, String> getTempPropMap(RMDataTransmitObject transmitForRMData) {
+		Map<String, String> map = new LinkedHashMap<String, String>();
+		List<CodeClassifyTemplateAttrVO> propObjs = transmitForRMData.getTempPropObjsList();
+		for(CodeClassifyTemplateAttrVO obj : propObjs) {
+			if(obj.getTextAreaFlag().equals("true")) {
+				map.put(obj.getOid(), "Y");
+			}
+		}
+		return map;
+	}
+	/**鐮佹鐮佸�兼弿杩颁俊鎭殑璇︾粏璇存槑**/
+	private void clsfValDescActionListener(MouseEvent e) {
+		VCIJTextField txt = (VCIJTextField) comtMap.get(e.getComponent());
+		DescViewDialog dialog = new DescViewDialog(this, txt.getText());
+		dialog.bulidDialog();
+		dialog.setVisible(true);
+
+	}
+	/**
+	 * 鍒涘缓涓嶵extArea鐩稿叧鑱旂殑ScrollPane瀵硅薄
+	 * <p>
+	 * Description:
+	 * </p>
+	 *
+	 * @author liujw
+	 * @time 2013-4-16
+	 * @param txtArea
+	 *            VCIJTextArea
+	 * @return
+	 */
+	private VCIJScrollPane createTextAreaScrollPane(VCIJTextArea txtArea) {
+		txtArea.setWrapStyleWord(true);
+		txtArea.setLineWrap(true);
+		VCIJScrollPane txtScroll = new VCIJScrollPane();
+		txtScroll.getViewport().add(txtArea);
+		txtScroll.setPreferredSize(new Dimension(textAreaPreSizeWidth, textAreaPreSizeHeight));
+		txtScroll.setMinimumSize(new Dimension(textAreaMinSizeWidth, textAreaMinSizeHeight));
+		txtScroll.setMaximumSize(new Dimension(textAreaMaxSizeWidth, textAreaMaxSizeHeight));
+		txtScroll.setBorder(null);
+		return txtScroll;
+	}
+
+	/**
+	 * 杩斿洖GridBagLayout甯冨眬绠$悊鐨凜onstraints瀵硅薄
+	 * <p>
+	 * Description:
+	 * </p>
+	 *
+	 * @author xchao
+	 * @time 2012-11-6
+	 * @param gridx
+	 * @param gridy
+	 * @param gridwidth
+	 * @param gridheight
+	 * @param weightx
+	 * @param weighty
+	 * @param anchor
+	 * @param fill
+	 * @return
+	 */
+
+	private GridBagConstraints createGridBagConstraints(int gridx, int gridy,
+														int gridwidth, int gridheight, double weightx, double weighty,int anchor, int fill) {
+		int padxy = 5;
+		return new GridBagConstraints(gridx, gridy, gridwidth, gridheight,weightx, weighty, anchor, fill, new Insets(padxy, padxy, padxy,padxy), padxy, padxy);
+	}
+
+
+
+	/**
+	 * 鏍规嵁寮曠敤妯℃澘鐨刬d鑾峰彇寮曠敤妯℃澘瀵硅薄鍖呭惈鐨勬暟鎹�
+	 * <p>Description: </p>
+	 *
+	 * @author liujw
+	 * @time 2012-11-29
+	 * @param //referTempId 寮曠敤妯℃澘id
+	 */
+	private void getReferTempRMData(final CodeClassifyTemplateAttrVO tempPropObj,final LinkedHashMap<String, JComponent> attrIdToCtrlMaps,
+									final List<CodeClassifyTemplateAttrVO>  tempPropList) {
+		// 鏈┖绐楀彛璋冪敤 鏈夊彲鑳芥潵鑷袱澶�
+		// 娴佺▼浠诲姟寮曠敤
+		// 涓�鑸殑鏁版嵁褰曞叆銆佷慨鏀�
+		// 涓嶅悓鐨勬潵婧愶紝闇�瑕佺淮鎶ゅソOwner鐖�
+		VCIJDialog ownerDialog = realDialogInstance;
+		if(ownerDialog == null){
+			ownerDialog = new VCIJDialog();
+			ownerDialog.setSize(880, 500);
+		}
+		final String referTempId = tempPropObj.getReferBtmId();
+		final RMDataReferTempDialog dialog = new RMDataReferTempDialog(ownerDialog, referTempId);
+		dialog.setDialogCallback(new Runnable() {
+			@Override
+			public void run() {
+				/*LinkedList<RMDataObject> list = dialog.getRMDataMainPanel().getTablePanel().getSelectedRowObjects();
+				if(dialog.isFromTableDoubleClick()){
+					int index = dialog.getRMDataMainPanel().getTablePanel().getTable().getSelectedRow();
+					list.clear();
+					list.add(dialog.getRMDataMainPanel().getTablePanel().getTableModel().getList().get(index).getObject());
+				}
+
+				RMDataObject rmDataObj = list.get(0);//閫夋嫨鐨勫紩鐢ㄦā鏉挎暟鎹�
+				LinkedHashMap<String, Integer> innnerNamesMaps = rmDataObj.getInnerNameIndexMap();
+				String[] datas = rmDataObj.getDatas();
+				for(CodeClassifyTemplateAttrVO obj : tempPropList) {
+					if(obj.getReferTempId().equals(referTempId)) {
+						AttributeObject attrObj = getAttrObjById(obj.getReferAttrId());
+						JComponent comp = attrIdToCtrlMaps.get(obj.getId());
+						if(comp instanceof VCIJTextField) {
+							int index = innnerNamesMaps.get(attrObj.getInternalname());
+							((VCIJTextField) comp).setText(datas[index]);
+						}else if (comp instanceof VCIJCalendarPanel) {
+							int index = innnerNamesMaps.get(attrObj.getInternalname());
+							((VCIJCalendarPanel) comp).setDateString(datas[index]);
+						} else if (comp instanceof VCIJComboBox) {
+							int index = innnerNamesMaps.get(attrObj.getId());
+							((VCIJComboBox) comp).setSelectedIndex(index);
+						}
+					}
+				}*/
+
+			}
+		});
+		//dialog.initDialogSize(ownerDialog.getWidth(), ownerDialog.getHeight());
+		Dimension dime = Toolkit.getDefaultToolkit().getScreenSize();
+		int x = dime.width/2 - 400;
+		int y = dime.height/2 -400;
+		dialog.setLocation(x, y);
+		dialog.setSize(new Dimension(900, 800));
+		dialog.setModal(true);
+		dialog.setVisible(true);
+	}
+
+
+	//鑾峰彇绯荤粺閰嶇疆鐨勭爜娈电爜鍊�
+	private Map<String, String> getSpecialValMap(String[] vals) {
+		Map<String, String> map = new LinkedHashMap<String, String>();
+		for (String val : vals) {
+			map.put(val, "Y");
+		}
+		return map;
+	}
+	private boolean isNumber(String value) {
+		return Pattern.matches("[0-9]+", value);
+	}
+}
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyFor410TreePanel.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyFor410TreePanel.java
new file mode 100644
index 0000000..a0d374a
--- /dev/null
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyFor410TreePanel.java
@@ -0,0 +1,304 @@
+package com.vci.ubcs.codeapply;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.vci.base.ui.exception.VCIException;
+import com.vci.base.ui.swing.VCIOptionPane;
+import com.vci.base.ui.swing.components.VCIJPanel;
+import com.vci.base.ui.tree.VCIBaseTree;
+import com.vci.base.ui.tree.VCIBaseTreeModel;
+import com.vci.base.ui.tree.VCIBaseTreeNode;
+import com.vci.ubcs.codeapply.object.CodeClassify;
+import com.vci.ubcs.codeapply.object.R;
+import com.vci.ubcs.codeapply.utils.ConfigUtils;
+import com.vci.ubcs.system.user.entity.User;
+import javax.swing.event.TreeExpansionEvent;
+import javax.swing.event.TreeExpansionListener;
+import javax.swing.event.TreeSelectionEvent;
+import javax.swing.event.TreeSelectionListener;
+import javax.swing.tree.TreePath;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public abstract class CodeApplyFor410TreePanel extends VCIJPanel {
+	/**
+	 *
+	 */
+	private static final long serialVersionUID = 3252637341L;
+	private VCIBaseTree tree = null;
+	private VCIBaseTreeModel treeModel = null;
+	private VCIBaseTreeNode rootNode = null;
+
+	private CodeClassify currentRmType = null;
+	private TransmitTreeObject transmitTreeObject = new TransmitTreeObject();
+	private User userObj = null;
+	private VCIBaseTreeNode selNode = null;
+	/**
+	 * 瀛樺偍鍒嗙被鐨凪ap,key:鍒嗙被鍚嶇О锛寁alue锛氬垎绫诲��
+	 */
+	private String clsfName = null;
+	//    private String[] clsfVal = new String[2];
+	private String libName = "";
+	public CodeApplyFor410TreePanel(CodeClassify currentRmType, User userObj, String clsfName, String libName) {
+		this.currentRmType = currentRmType;
+		this.userObj = userObj;
+		this.clsfName = clsfName;
+		this.libName = libName;
+		if (this.libName == null) {
+			libName = "";
+		}
+	}
+
+	public void buildTreePanel(){
+		initComponents();
+	}
+
+	private void initComponents(){
+		initLeftPanel();
+	}
+
+	private void initLeftPanel() {
+		rootNode = new VCIBaseTreeNode(currentRmType.getName(), currentRmType);
+		treeModel = new VCIBaseTreeModel(rootNode);
+		tree = new VCIBaseTree(treeModel, new CodeLibTreeCellRenderer());
+		selNode = rootNode;
+		if (clsfName == null || clsfName.equals("")) {
+			loadTreeData(rootNode);
+		} else {
+			CodeClassify[] rmTypes = getRMTypeByDescAndLib();
+			int len = rmTypes.length;
+			addChildrenToParentTreeNode(currentRmType,rootNode,rmTypes, len - 2);
+		}
+
+		inittreeActions();
+	}
+
+	/**
+	 * 灞曞紑鏍�
+	 * <p>Description: </p>
+	 *
+	 * @author ligang
+	 * @time 2013-5-8
+	 * @param rmTypeObj
+	 * @param parentNode
+	 */
+	private void addChildrenToParentTreeNode(CodeClassify rmTypeObj, VCIBaseTreeNode parentNode, CodeClassify[] rmTypes, int pos){
+		String parentId = rmTypeObj.getOid();
+		CodeClassify[] libs = {};
+		libs = getChildRMTypeObjects(parentId);
+		for(CodeClassify obj : libs) {
+			VCIBaseTreeNode node = new VCIBaseTreeNode(obj.getName(), obj);
+			treeModel.insertNodeInto(node, parentNode, parentNode.getChildCount());
+			node.setLeaf(false);
+			node.setExpand(false);
+			if (pos < 0) {
+				continue;
+			}
+			if (checkIsSel(obj, rmTypes[pos])) {
+				selNode = node;
+				addChildrenToParentTreeNode(obj, node, rmTypes, pos - 1);
+			}
+		}
+		parentNode.setLeaf(libs.length == 0);
+		parentNode.setExpand(true);
+		if(tree != null){
+			tree.expandPath(new TreePath(selNode.getPath()));
+			tree.setSelectionPath(new TreePath(selNode.getPath()));
+		}
+	}
+
+	private void loadTreeData(VCIBaseTreeNode rootNode){
+		CodeClassify currentObj = (CodeClassify) rootNode.getObj();
+		String parentId = currentObj.getOid();
+		CodeClassify[] libs = {};
+		libs = getChildRMTypeObjects(parentId);
+		for(CodeClassify obj : libs) {
+			VCIBaseTreeNode node = new VCIBaseTreeNode(obj.getName(), obj);
+			rootNode.add(node);
+			node.setLeaf(false);
+			node.setExpand(false);
+		}
+		rootNode.setLeaf(libs.length == 0);
+		rootNode.setExpand(true);
+
+		tree.setSelectionPath(new TreePath(selNode));
+		tree.updateUI();
+
+
+	}
+
+	/**
+	 * 鏍规嵁鍙傛暟鍒ゆ柇褰撳墠鍒嗙被鏄惁鏄�変腑鐘舵��
+	 * <p>Description: </p>
+	 *
+	 * @author ligang
+	 * @time 2013-5-8
+	 * @param obj
+	 * @return
+	 */
+	private boolean checkIsSel(CodeClassify obj, CodeClassify selObj) {
+		if(obj.getId().equals(selObj.getId())) {
+			return true;
+		}
+		return false;
+	}
+
+
+	private void inittreeActions(){
+		tree.addTreeSelectionListener(new TreeSelectionListener() {
+			@Override
+			public void valueChanged(TreeSelectionEvent e) {
+				if(!e.isAddedPath()) return;
+				leftTree_valueChanged(e);
+			}
+		});
+		tree.addTreeExpansionListener(new TreeExpansionListener() {
+			@Override
+			public void treeExpanded(TreeExpansionEvent e) {
+				tree_treeExpanded_local(e);
+			}
+
+			@Override
+			public void treeCollapsed(TreeExpansionEvent e) {
+			}
+		});
+	}
+
+	/**
+	 * 鏍规嵁鍒嗙被鎻忚堪鑾峰彇浼犲叆鍒嗙被鐨勬墍鏈夌埗鍒嗙被淇℃伅
+	 * @return
+	 */
+	private CodeClassify[] getRMTypeByDescAndLib() {
+		CodeClassify[] objs = new CodeClassify[]{};
+		String url= ConfigUtils.getConfigValue("410.PDM.leftdescLibNode.url","http://127.0.0.1:36014/codeApplySwingController/getRMTypeByDescAndLib");
+		/**绯荤粺鍙姞杞戒唬鐮侀」  濡傛灉libName涓嶄负绌猴紝鐩存帴鑾峰彇瀵瑰簲鐨勪唬鐮侀」**/
+		Map<String,String> condtionMap=new HashMap<>();
+		condtionMap.put("desc", this.clsfName);
+		condtionMap.put("codeLibName",rootNode.toString());
+
+		R r=HttpUtil.sendGet(url,condtionMap,new HashMap<>());
+		List<CodeClassify> codeClassifyList = new ArrayList<>();
+		if(r.isSuccess()){
+			Object object= r.getData();
+			if(object!=null) {
+				ObjectMapper objectMapper = new ObjectMapper();
+				try {
+					codeClassifyList = objectMapper.readValue(object.toString(), new com.fasterxml.jackson.core.type.TypeReference<List<CodeClassify>>() {
+					});
+				} catch (JsonProcessingException e) {
+					e.printStackTrace();
+				}
+			}
+		}else{
+			VCIOptionPane.showMessage(this,r.getMsg());
+		}
+		return codeClassifyList.toArray(new CodeClassify[]{});
+	}
+
+	/**
+	 * 鏍规嵁ID鐩存帴鑾峰彇瀛愬垎绫伙紝鏃犳潈闄愭鏌�
+	 * <p>Description: </p>
+	 *
+	 * @author xchao
+	 * @time 2013-3-20
+	 * @param parentId
+	 * @return
+	 */
+	private CodeClassify[] getChildRMTypeObjects(String parentId){
+		String url= ConfigUtils.getConfigValue("410.PDM.leftClsfNode.url","http://127.0.0.1:36014/codeApplySwingController/selectCodeClassifyVOByParentId");
+		/**绯荤粺鍙姞杞戒唬鐮侀」  濡傛灉libName涓嶄负绌猴紝鐩存帴鑾峰彇瀵瑰簲鐨勪唬鐮侀」**/
+		Map<String,String> condtionMap=new HashMap<>();
+		condtionMap.put("parentId", parentId );
+		R r=HttpUtil.sendGet(url,condtionMap,new HashMap<>());
+		List<CodeClassify> codeClassifyList = new ArrayList<>();
+		if(r.isSuccess()){
+			Object object= r.getData();
+			if(object!=null) {
+				ObjectMapper objectMapper = new ObjectMapper();
+				try {
+					codeClassifyList = objectMapper.readValue(object.toString(), new com.fasterxml.jackson.core.type.TypeReference<List<CodeClassify>>() {
+					});
+				} catch (JsonProcessingException e) {
+					e.printStackTrace();
+				}
+			}
+		}else{
+			VCIOptionPane.showMessage(this,r.getMsg());
+		}
+		return codeClassifyList.toArray(new CodeClassify[]{});
+	}
+	private void tree_treeExpanded_local(TreeExpansionEvent e) {
+		TreePath treePath = e.getPath();
+		VCIBaseTreeNode treeNode = (VCIBaseTreeNode)treePath.getLastPathComponent();
+		if(treeNode.isExpand()) return;
+		if(!(treeNode.getObj() instanceof CodeClassify)) return;
+		CodeClassify rmTypeObject = (CodeClassify)treeNode.getObj();
+		CodeClassify[] childs = null;
+		childs = getChildRMTypeObjects(rmTypeObject.getOid());
+		addRMTypeObjectsToParentTreeNode(childs, treeNode);
+		treeNode.setExpand(true);
+		treeNode.setLeaf(treeModel.getChildCount(treeNode) == 0);
+	}
+	private void addRMTypeObjectsToParentTreeNode(CodeClassify[] objs, VCIBaseTreeNode parentNode){
+		for(CodeClassify obj : objs){
+			VCIBaseTreeNode node = new VCIBaseTreeNode(obj.getName(), obj);
+			treeModel.insertNodeInto(node, parentNode, treeModel.getChildCount(parentNode));
+		}
+	}
+
+	private void leftTree_valueChanged(TreeSelectionEvent e) {
+		tree_valueChanged(e);
+	}
+
+	/**
+	 * 閫夋嫨浜嗘爲鑺傜偣鐨勪簨浠跺鐞�
+	 * <p>Description: </p>
+	 *
+	 * @author xchao
+	 * @time 2012-5-26
+	 * @param e
+	 */
+	public abstract void tree_valueChanged(TreeSelectionEvent e);
+
+	public VCIBaseTree getTree() {
+		return tree;
+	}
+
+	public void setTree(VCIBaseTree tree) {
+		this.tree = tree;
+	}
+
+	public VCIBaseTreeModel getTreeModel() {
+		return treeModel;
+	}
+
+	public void setTreeModel(VCIBaseTreeModel treeModel) {
+		this.treeModel = treeModel;
+	}
+
+	public VCIBaseTreeNode getRootNode() {
+		return rootNode;
+	}
+
+	public void setRootNode(VCIBaseTreeNode rootNode) {
+		this.rootNode = rootNode;
+	}
+
+	public TransmitTreeObject getTransmitTreeObject() {
+		return transmitTreeObject;
+	}
+
+	public void setTransmitTreeObject(TransmitTreeObject transmitTreeObject) {
+		this.transmitTreeObject = transmitTreeObject;
+	}
+
+	public VCIBaseTreeNode getSelNode() {
+		return selNode;
+	}
+
+	public void setSelNode(VCIBaseTreeNode selNode) {
+		this.selNode = selNode;
+	}
+}
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyPanelFor410.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyPanelFor410.java
new file mode 100644
index 0000000..1ec0baa
--- /dev/null
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyPanelFor410.java
@@ -0,0 +1,388 @@
+package com.vci.ubcs.codeapply;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.vci.base.ui.swing.VCIOptionPane;
+import com.vci.base.ui.swing.VCISwingUtil;
+import com.vci.base.ui.swing.components.*;
+import com.vci.base.ui.tree.VCIBaseTree;
+import com.vci.base.ui.tree.VCIBaseTreeModel;
+import com.vci.base.ui.tree.VCIBaseTreeNode;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
+import com.vci.ubcs.codeapply.object.CodeClassify;
+import com.vci.ubcs.codeapply.object.R;
+import com.vci.ubcs.codeapply.utils.ConfigUtils;
+import com.vci.ubcs.system.user.entity.User;
+import lombok.SneakyThrows;
+import net.logstash.logback.encoder.org.apache.commons.lang3.StringUtils;
+import org.apache.commons.collections4.CollectionUtils;
+
+import javax.swing.*;
+import javax.swing.event.TreeSelectionEvent;
+import javax.swing.tree.TreePath;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+public class CodeApplyPanelFor410  extends VCIJPanel {
+
+	//鍙充晶闈㈡澘
+	private CodeApplyFor410MainPanel rightMainPanel = null;
+	private VCIJScrollPane scrollLeftTreePane = new VCIJScrollPane();
+	private VCIJSplitPane jspLeftToRight = new VCIJSplitPane(VCIJSplitPane.HORIZONTAL_SPLIT, scrollLeftTreePane, rightMainPanel);
+	private CodeApplyPanelFor410ActionListener actionListener = new CodeApplyPanelFor410ActionListener(this);
+	private VCIJButton applyBtn = VCISwingUtil.createVCIJButton("apply", "鐢宠鐮佸��", "鐢宠鐮佸��", "arrow-right.png", actionListener);
+	private VCIJButton batchApplyBtn = VCISwingUtil.createVCIJButton("batchApply", "鎵归噺瀵煎叆鐢宠", "鎵归噺瀵煎叆鐢宠", "import.gif", actionListener);
+	private VCIJButton btnSearch= VCISwingUtil.createVCIJButton("btnSearch", "鏌ヨ浠g爜", "鏌ヨ浠g爜", "search.png", actionListener);
+	private VCIJButton clearBtn = VCISwingUtil.createVCIJButton("clear", "娓呯┖灞炴��", "娓呯┖灞炴��", "search.png", actionListener);
+	private JLabel codeItemLabel = new JLabel("閫夋嫨浠g爜椤癸細");
+	private VCIJLabel applylbl = new VCIJLabel("鐢宠鐮佸�硷細");
+	public VCIJTextField applyTxt = new VCIJTextField(40);
+	private JComboBox codeItemCombo = new JComboBox();
+	private User userObj = null;;
+
+	private CodeClassifyTemplateVO currentCodeClassifyTemplateVO;
+	private boolean isIntegrate = false; //闆嗘垚鏃朵笉鏄剧ず鎵归噺鐢宠鎸夐挳
+	/**
+	 * 瀛樺偍鍒嗙被鐨凪ap,key:鍒嗙被鍚嶇О锛寁alue锛氬垎绫诲��
+	 */
+	private String clsfName = null;
+
+	private CodeApplyFor410Dialog owner;
+	/**
+	 * 瀛樺偍灞炴�у拰鍊肩殑Map,key:灞炴�у悕绉帮紝value锛氬睘鎬у��
+	 */
+	private String deptName = null;
+
+	private String[] libName = new String[]{};//浠g爜椤瑰悕绉�
+	private VCIBaseTree leftTree = null;
+	private VCIBaseTreeModel leftTreeModel = null;
+	//宸︿晶鏍�
+	private CodeApplyFor410TreePanel typeTreePanel = null;
+	private TransmitTreeObject transmitTreeObject = new TransmitTreeObject();
+	/***
+	 *
+	 * @param userObj
+	 * @param isIntegrate
+	 * @param clsfName
+	 * @param deptName
+	 * @param libName
+	 */
+	public CodeApplyPanelFor410(CodeApplyFor410Dialog owner , User userObj, boolean isIntegrate, String clsfName, String deptName, String[] libName){
+		this.userObj = userObj;
+		this.owner =owner;
+		rightMainPanel = new CodeApplyFor410MainPanel(transmitTreeObject,userObj,getCurrentCodeClassifyTemplateVO());
+		this.isIntegrate = isIntegrate;
+		this.clsfName = clsfName;
+		this.deptName = deptName;
+		this.libName = libName;
+		init();
+		initActionListener();
+	}
+
+	/***
+	 * 鍒濆鍖栫晫闈�
+	 */
+	private void init() {
+		try {
+			this.setLayout(new BorderLayout());
+			this.add(initCodeItemPal(), BorderLayout.NORTH);
+			this.add(initMiddlePanel(), BorderLayout.CENTER);
+			this.add(initBtnPal(), BorderLayout.SOUTH);
+			this.setVisible(true);
+		}catch (Exception ex){
+			VCIOptionPane.showMessage(owner,ex.getMessage());
+		}
+	}
+	private JPanel initMiddlePanel()  {
+		JPanel middlePanel = new JPanel();
+		middlePanel.setLayout(new BorderLayout());
+		JTextField jTextField1 = new JTextField();//instead of up line
+		JTextField jTextField2 = new JTextField();//instead of down line
+		jTextField1.setPreferredSize(new Dimension(63,2));
+		jTextField2.setPreferredSize(new Dimension(63,2));
+		middlePanel.add(jTextField1, BorderLayout.NORTH);
+		middlePanel.add(jTextField2, BorderLayout.SOUTH);
+
+
+		jspLeftToRight.setDividerSize(10);
+		jspLeftToRight.setContinuousLayout(true);
+		jspLeftToRight.setOneTouchExpandable(true);
+		jspLeftToRight.setDividerLocation(200);
+		initLeftPanel();
+		middlePanel.add(jspLeftToRight, BorderLayout.CENTER);
+
+		return middlePanel;
+	}
+
+	private JPanel initBtnPal() {
+		JPanel bottomPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
+		bottomPanel.add(applylbl);
+		bottomPanel.add(applyTxt);
+		applyTxt.setEditable(false);
+		bottomPanel.add(applyBtn);
+
+		if (!this.isIntegrate) {
+			bottomPanel.add(batchApplyBtn);
+		} else {
+			bottomPanel.add(btnSearch);
+		}
+		bottomPanel.add(clearBtn);
+		return bottomPanel;
+	}
+
+	/***
+	 * 鍒濆鍖栦唬鐮侀」鐩�
+	 * @return
+	 */
+	private JPanel initCodeItemPal()  {
+		VCIJPanel codeItemPal = new VCIJPanel(new FlowLayout(FlowLayout.LEFT));
+		codeItemCombo.setPreferredSize(new Dimension(200,25));
+		initCodeItemCombo();//鍒濆鍖栦唬鐮侀」涓嬫媺妗嗘暟鎹�
+		codeItemPal.add(codeItemLabel);
+		codeItemPal.add(codeItemCombo);
+		return codeItemPal;
+	}
+	/**
+	 * 浠g爜椤逛簨浠讹細閫夋嫨浠g爜椤瑰悗锛岃嚜鍔ㄥ埛鏂颁唬鐮侀」涓嬪搴旂殑瑙勫垯鐮佹鍜屾ā鏉垮睘鎬т俊鎭�
+	 * <p>Description: </p>
+	 *
+	 * @author Administrator
+	 * @time 2013-3-23
+	 */
+	public void initCodeItemCombo()  {
+		CodeClassifyVO [] codeClassifyVOS = new CodeClassifyVO[0];
+		Map<String,String> condtionMap=new HashMap<>();
+		//condtionMap.put("parentOid",);
+
+		String url=ConfigUtils.getConfigValue("410.PDM.item.url","http://127.0.0.1:36014/codeApplySwingController/getRMLibByName");
+		/**绯荤粺鍙姞杞戒唬鐮侀」  濡傛灉libName涓嶄负绌猴紝鐩存帴鑾峰彇瀵瑰簲鐨勪唬鐮侀」**/
+		if(libName.length>0) {
+			condtionMap.put("libName", StringUtils.join(libName,",") );
+		}
+		R r=HttpUtil.sendGet(url,condtionMap,new HashMap<>());
+		List<CodeClassify> codeClassifyList = new ArrayList<>();
+		if(r.isSuccess()){
+			Object object= r.getData();
+			if(object!=null) {
+				ObjectMapper objectMapper = new ObjectMapper();
+				try {
+					codeClassifyList = objectMapper.readValue(object.toString(), new com.fasterxml.jackson.core.type.TypeReference<List<CodeClassify>>() {
+					});
+				} catch (JsonProcessingException e) {
+					e.printStackTrace();
+				}
+			}
+		}else{
+			VCIOptionPane.showMessage(this,r.getMsg());
+		}
+		if(!CollectionUtils.isEmpty(codeClassifyList)){
+			codeClassifyList.stream().forEach(codeClassify -> {
+				codeItemCombo.addItem(codeClassify);
+			});
+			codeItemCombo.setSelectedIndex(0);
+		}
+		initLeftPanel();
+	}
+
+	/***
+	 * 鍒濆鍖栨寜閽簨浠�
+	 */
+	private void initActionListener() {
+		/**浠g爜椤逛笅鎷変簨浠�**/
+		codeItemCombo.addActionListener(new ActionListener() {
+			public void actionPerformed(ActionEvent e) {
+				if(codeItemCombo.getSelectedIndex() == -1) {
+					return;
+				}
+				try {
+					ruleComboActionListener();
+				} catch (Exception ex) {
+					VCIOptionPane.showMessage(owner,ex.getMessage());
+				}
+			}
+		});
+
+	}
+
+	/**
+	 * 澶勭悊浠g爜椤逛笅鎷変簨浠�
+	 * <p>Description: </p>
+	 *
+	 * @author Administrator
+	 * @time 2013-3-23
+	 */
+	private void ruleComboActionListener()   {
+		leftTree.removeAll();
+		initLeftPanel();
+	}
+	private void initLeftPanel()  {
+		CodeClassify currentCodeClassify= (CodeClassify) this.codeItemCombo.getSelectedItem();
+		if(currentCodeClassify == null) {
+			return;
+		}
+		String  libName=currentCodeClassify.getName();
+		String classOid=currentCodeClassify.getOid();
+		final CodeApplyPanelFor410 self = this;
+		typeTreePanel = new CodeApplyFor410TreePanel(currentCodeClassify,userObj,clsfName, libName) {
+			private static final long serialVersionUID = 8121108576137012228L;
+			@Override
+			public void tree_valueChanged(TreeSelectionEvent e) {
+				self.leftTree_valueChanged(e);
+			}
+		};
+		typeTreePanel.buildTreePanel();
+		leftTree = typeTreePanel.getTree();
+		leftTreeModel = typeTreePanel.getTreeModel();
+		transmitTreeObject.setCurrentTreeNode(typeTreePanel.getSelNode());
+		transmitTreeObject.setTree(leftTree);
+		transmitTreeObject.setTreeModel(leftTreeModel);
+		VCIJPanel rightPanel = new VCIJPanel();
+		rightPanel.setLayout(new BorderLayout());
+
+		jspLeftToRight.setRightComponent(rightPanel);
+		rightPanel.add(scrollPane, BorderLayout.CENTER);
+
+		Object obj =transmitTreeObject.getCurrentTreeNode();
+		if(obj instanceof VCIBaseTreeNode){
+			VCIBaseTreeNode vciBaseTreeNode=	(VCIBaseTreeNode)obj;
+			Object node=vciBaseTreeNode.getObj();
+			if(node instanceof CodeClassify) {
+				CodeClassify codeClassify=(CodeClassify)node;
+				classOid = codeClassify.getOid();
+
+				String url = ConfigUtils.getConfigValue("410.PDM.clsfTemplate.url", "http://127.0.0.1:36014/codeApplySwingController/getUsedTemplateByClassifyOid");
+				/**绯荤粺鍙姞杞戒唬鐮侀」  濡傛灉libName涓嶄负绌猴紝鐩存帴鑾峰彇瀵瑰簲鐨勪唬鐮侀」**/
+				Map<String, String> condtionMap = new HashMap<>();
+				condtionMap.put("codeClassifyOid", classOid);
+				R r = HttpUtil.sendGet(url, condtionMap, new HashMap<>());
+				boolean res = false;
+				if (r.isSuccess()) {
+					//List<CodeClassifyTemplateVO> codeClassifyTemplateVOList=new ArrayList<>();
+					CodeClassifyTemplateVO codeClassifyTemplateVO = new CodeClassifyTemplateVO();
+					Object object = r.getData();
+					if (object != null) {
+						ObjectMapper objectMapper = new ObjectMapper();
+						try {
+							codeClassifyTemplateVO = objectMapper.readValue(object.toString(), CodeClassifyTemplateVO.class);
+							if (codeClassifyTemplateVO != null) {
+								setCurrentCodeClassifyTemplateVO(codeClassifyTemplateVO);
+								res = true;
+							}
+						} catch (JsonProcessingException e) {
+							e.printStackTrace();
+						}
+					}
+				}else{
+					VCIOptionPane.showMessage(this,r.getMsg());
+				}
+				initBtnStatus(res);
+			}
+		}
+		rightMainPanel = new CodeApplyFor410MainPanel(transmitTreeObject,userObj,deptName,getCurrentCodeClassifyTemplateVO());
+		scrollPane.setViewportView(rightMainPanel);
+		rightMainPanel.buildMainPanel(1);
+		int location = jspLeftToRight.getDividerLocation();
+		jspLeftToRight.setDividerLocation(location);
+		scrollLeftTreePane.setViewportView(leftTree);
+		leftTree.scrollPathToVisible(leftTree.getSelectionPath());
+	}
+
+	private void leftTree_valueChanged(TreeSelectionEvent e) {
+		TreePath selectedTreePath = e.getPath();
+		/**鏍¢獙 鍒ゆ柇閫夋嫨鐨勪唬鐮侀」鏄惁鍖呭惈妯℃澘 Begin**/
+		VCIBaseTreeNode selectedTreeNode = (VCIBaseTreeNode)selectedTreePath.getLastPathComponent();
+		Object obj = selectedTreeNode.getObj();
+		boolean res=false;
+		if(obj instanceof CodeClassify) {
+			CodeClassify curentCodeClassify=(CodeClassify)obj;
+			String url=ConfigUtils.getConfigValue("410.PDM.clsfTemplate.url","http://127.0.0.1:36014/codeApplySwingController/getUsedTemplateByClassifyOid");
+			/**绯荤粺鍙姞杞戒唬鐮侀」  濡傛灉libName涓嶄负绌猴紝鐩存帴鑾峰彇瀵瑰簲鐨勪唬鐮侀」**/
+			Map<String,String> condtionMap=new HashMap<>();
+			condtionMap.put("codeClassifyOid",curentCodeClassify.getOid());
+			R r=HttpUtil.sendGet(url,condtionMap,new HashMap<>() );
+			if(r.isSuccess()) {
+				CodeClassifyTemplateVO codeClassifyTemplateVO=new CodeClassifyTemplateVO();
+				Object object= r.getData();
+				if(object!=null) {
+					ObjectMapper objectMapper = new ObjectMapper();
+					try {
+						codeClassifyTemplateVO = objectMapper.readValue(object.toString(), CodeClassifyTemplateVO.class);
+						if(codeClassifyTemplateVO!=null){
+							setCurrentCodeClassifyTemplateVO(codeClassifyTemplateVO);
+							res=true;
+						}
+					} catch (JsonProcessingException e1) {
+						e1.printStackTrace();
+					}
+				}
+			}else{
+				VCIOptionPane.showMessage(this.owner,r.getMsg());
+			}
+
+		}
+		initBtnStatus(res);
+		/*******************End**********************/
+		initRightDataTablePanel(selectedTreeNode);
+	}
+
+	private void initBtnStatus(boolean enable) {
+		applyBtn.setEnabled(enable);
+		batchApplyBtn.setEnabled(enable);
+		btnSearch.setEnabled(enable);
+		clearBtn.setEnabled(enable);
+	}
+	private void initRightDataTablePanel(VCIBaseTreeNode selectedTreeNode) {
+		leftTree = typeTreePanel.getTree();
+		leftTreeModel = typeTreePanel.getTreeModel();
+
+		transmitTreeObject.setTree(leftTree);
+		transmitTreeObject.setTreeModel(leftTreeModel);
+		transmitTreeObject.setCurrentTreeNode(selectedTreeNode);
+		if(selectedTreeNode.isRoot() && selectedTreeNode.getObj() instanceof String) return;
+		scrollPane = new JScrollPane();
+		rightMainPanel = new CodeApplyFor410MainPanel(transmitTreeObject,userObj,deptName,getCurrentCodeClassifyTemplateVO());
+		scrollPane.setViewportView(rightMainPanel);
+		rightMainPanel.buildMainPanel(1);
+		VCIJPanel rightPanel = new VCIJPanel();
+		rightPanel.setLayout(new BorderLayout());
+		rightPanel.add(scrollPane, BorderLayout.CENTER);
+
+		applyTxt.setText("");
+
+		jspLeftToRight.setRightComponent(rightPanel);
+		int location = jspLeftToRight.getDividerLocation();
+		jspLeftToRight.setDividerLocation(location);
+	}
+	private Map<String, String> attrNameAndValMap = new LinkedHashMap();
+	private JScrollPane scrollPane = new JScrollPane();
+
+	public Map<String, String> getAttrNameAndValMap() {
+		return attrNameAndValMap;
+	}
+
+	public void setAttrNameAndValMap(Map<String, String> attrNameAndValMap) {
+		this.attrNameAndValMap = attrNameAndValMap;
+	}
+
+	public String getApplyCode() {
+		return this.applyTxt.getText().trim();
+	}
+	public void setApplyCode(String codeVal) {
+		this.applyTxt.setText(codeVal);
+	}
+
+	public CodeClassifyTemplateVO getCurrentCodeClassifyTemplateVO() {
+		return currentCodeClassifyTemplateVO;
+	}
+
+	public void setCurrentCodeClassifyTemplateVO(CodeClassifyTemplateVO currentCodeClassifyTemplateVO) {
+		this.currentCodeClassifyTemplateVO = currentCodeClassifyTemplateVO;
+	}
+}
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyPanelFor410ActionListener.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyPanelFor410ActionListener.java
new file mode 100644
index 0000000..a0730e9
--- /dev/null
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyPanelFor410ActionListener.java
@@ -0,0 +1,37 @@
+package com.vci.ubcs.codeapply;
+
+import java.awt.event.ActionEvent;
+import java.util.LinkedHashMap;
+
+public class CodeApplyPanelFor410ActionListener extends CommonActionListener {
+	private CodeApplyPanelFor410 owner = null;
+	private LinkedHashMap<String, Runnable> actionMaps = new LinkedHashMap<String, Runnable>();
+
+	public CodeApplyPanelFor410ActionListener(CodeApplyPanelFor410 owner){
+		this.owner = owner;
+		this.initActionMap();
+	}
+	@Override
+	public void initActionMap(){
+		actionMaps.put("batchApply", new Runnable() { public void run() {
+			//batchApply();//鎵归噺瀵煎叆鐢宠浠g爜
+		}});
+		actionMaps.put("apply", new Runnable() { public void run() {
+			//apply();//鐮佸�肩敵璇�
+		}});
+		actionMaps.put("btnSearch", new Runnable() { public void run() {
+			//search();//浠g爜鏌ヨ
+		}});
+		actionMaps.put("clear", new Runnable() { public void run() {
+		//	clear();//娓呯┖灞炴��
+		}});
+	}
+
+	@Override
+	public void actionPerformed(ActionEvent e) {
+		String key = e.getActionCommand();
+		if(actionMaps.containsKey(key)){
+			actionMaps.get(key).run();
+		}
+	}
+}
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeDataMainPanelDataProvider.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeDataMainPanelDataProvider.java
new file mode 100644
index 0000000..1e15362
--- /dev/null
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeDataMainPanelDataProvider.java
@@ -0,0 +1,27 @@
+package com.vci.ubcs.codeapply;
+
+import com.vci.base.ui.swing.components.table.AbstractVCIJTableDataProvider;
+import com.vci.base.ui.swing.components.table.VCIJTableNode;
+import org.apache.poi.ss.formula.functions.T;
+
+public class CodeDataMainPanelDataProvider extends AbstractVCIJTableDataProvider<T> {
+	@Override
+	public String[] getSpecialColumns() {
+		return new String[0];
+	}
+
+	@Override
+	public int getTotal() {
+		return 0;
+	}
+
+	@Override
+	public VCIJTableNode<T> getNewRowNode(T t) {
+		return null;
+	}
+
+	@Override
+	public T[] getDatas(int i, int i1) {
+		return new T[0];
+	}
+}
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeLibTreeCellRenderer.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeLibTreeCellRenderer.java
new file mode 100644
index 0000000..1f6333a
--- /dev/null
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeLibTreeCellRenderer.java
@@ -0,0 +1,51 @@
+package com.vci.ubcs.codeapply;
+
+import com.vci.base.ui.image.bundle.BundleImage;
+import com.vci.base.ui.tree.VCIBaseTreeNode;
+import com.vci.ubcs.codeapply.object.CodeClassify;
+
+import javax.swing.*;
+import javax.swing.tree.DefaultTreeCellRenderer;
+import java.awt.*;
+
+public class CodeLibTreeCellRenderer extends DefaultTreeCellRenderer {
+
+	/**
+	 *
+	 */
+	private static final long serialVersionUID = 1L;
+
+	public CodeLibTreeCellRenderer() {
+
+	}
+
+	public Component getTreeCellRendererComponent (
+		JTree tree,
+		Object value,
+		boolean sel,
+		boolean expanded,
+		boolean leaf,
+		int row,
+		boolean hasFocus) {
+		super.getTreeCellRendererComponent (
+			tree, value, sel,
+			expanded, leaf, row,
+			hasFocus);
+		try {
+			ToolTipManager.sharedInstance().registerComponent(tree);
+			VCIBaseTreeNode node = (VCIBaseTreeNode)value;
+			if(node.isRoot()){
+				setIcon(new BundleImage().createImageIcon ("house.png"));
+			} else if (node.getObj().equals("root")) { //鏍硅妭鐐�
+				setIcon(new BundleImage().createImageIcon ("house.png"));
+			}else if(node.getObj() instanceof CodeClassify){
+				//CodeClassify rmTypeInfo=(CodeClassify)node.getObj();
+				setIcon(new BundleImage().createImageIcon ("box.gif"));
+			}
+
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return this;
+	}
+}
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CommonActionListener.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CommonActionListener.java
new file mode 100644
index 0000000..5b1057b
--- /dev/null
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CommonActionListener.java
@@ -0,0 +1,20 @@
+package com.vci.ubcs.codeapply;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.LinkedHashMap;
+
+public class CommonActionListener implements ActionListener {
+	protected LinkedHashMap<String, Runnable> actionMaps = new LinkedHashMap<String, Runnable>();
+	public void initActionMap(){
+		//
+	}
+
+	@Override
+	public void actionPerformed(ActionEvent e) {
+		String key = e.getActionCommand();
+		if(actionMaps.containsKey(key)){
+			actionMaps.get(key).run();
+		}
+	}
+}
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/DescViewDialog.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/DescViewDialog.java
new file mode 100644
index 0000000..a88b24b
--- /dev/null
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/DescViewDialog.java
@@ -0,0 +1,85 @@
+package com.vci.ubcs.codeapply;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.Frame;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import javax.swing.JButton;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+
+import com.vci.base.ui.swing.components.VCIJDialog;
+
+public class DescViewDialog extends VCIJDialog {
+
+	/**
+	 *
+	 */
+	private static final long serialVersionUID = 1L;
+
+	private JPanel topPanel;
+	private JTextArea reasonTextArea = new JTextArea(5,5);
+	private JButton cancelBtn = new JButton("鍏抽棴");
+	private String desc;
+	private CodeApplyFor410MainPanel owner = null;
+
+	public DescViewDialog(CodeApplyFor410MainPanel owner,String desc){
+//		super(frame,true);
+		this.owner = owner;
+		this.desc = desc;
+		this.setModal(true);
+	}
+
+	public void bulidDialog() {
+		init ();
+	}
+
+	private void init(){
+		int width = 550,height = 250;
+		int px = (int)(this.owner.getLocationOnScreen().getX());
+        int py = (int)(this.owner.getLocationOnScreen().getY());
+        int pWidth = this.owner.getBounds().width;
+        int pHeight = this.owner.getBounds().height;
+        this.setLocation(px + (pWidth - width) / 2, py + (pHeight - height) / 2);
+
+		this.setSize(new Dimension(550, 250));
+//	    this.initDialogSize(600, 250);
+	    this.setResizable(false);
+	    this.setTitle("鐮佹鐮佸�肩殑璇︾粏鎻忚堪淇℃伅");
+
+	    initUI();
+
+	    JPanel bottomPanel = new JPanel();
+	    bottomPanel.add(cancelBtn);
+	    cancelBtn.addActionListener(new ActionListener() {
+			public void actionPerformed(ActionEvent arg0) {
+				close();
+			}
+		});
+	    this.setLayout(new BorderLayout());
+	    this.add(topPanel,BorderLayout.CENTER);
+	    this.add(bottomPanel,BorderLayout.SOUTH);
+
+	}
+
+	private void close() {
+		this.setDialogResult(DialogResult.CANCEL);
+		this.setVisible(false);
+	}
+
+	private void initUI() {
+		topPanel = new JPanel();
+		topPanel.setLayout(new BorderLayout());
+		reasonTextArea.setText(desc);
+
+		reasonTextArea.setAutoscrolls(true);
+		reasonTextArea.setLineWrap(true);
+		JScrollPane scrollPanel = new JScrollPane();
+		scrollPanel.setViewportView(reasonTextArea);
+		scrollPanel.setAutoscrolls(true);
+		topPanel.add(scrollPanel,BorderLayout.CENTER);
+	}
+
+}
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/HttpClient.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/HttpClient.java
new file mode 100644
index 0000000..6348bcf
--- /dev/null
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/HttpClient.java
@@ -0,0 +1,141 @@
+package com.vci.ubcs.codeapply;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.URL;
+public class HttpClient {
+	public static String doGet(String httpurl) {
+		HttpURLConnection connection = null;
+		InputStream is = null;
+		BufferedReader br = null;
+		String result = null;// 杩斿洖缁撴灉瀛楃涓�
+		try {
+			// 鍒涘缓杩滅▼url杩炴帴瀵硅薄
+			URL url = new URL(httpurl);
+			// 閫氳繃杩滅▼url杩炴帴瀵硅薄鎵撳紑涓�涓繛鎺ワ紝寮鸿浆鎴恏ttpURLConnection绫�
+			connection = (HttpURLConnection) url.openConnection();
+			// 璁剧疆杩炴帴鏂瑰紡锛歡et
+			connection.setRequestMethod("GET");
+			// 璁剧疆杩炴帴涓绘満鏈嶅姟鍣ㄧ殑瓒呮椂鏃堕棿锛�15000姣
+			connection.setConnectTimeout(15000);
+			// 璁剧疆璇诲彇杩滅▼杩斿洖鐨勬暟鎹椂闂达細60000姣
+			connection.setReadTimeout(60000);
+			// 鍙戦�佽姹�
+			connection.connect();
+			// 閫氳繃connection杩炴帴锛岃幏鍙栬緭鍏ユ祦
+			if (connection.getResponseCode() == 200) {
+				is = connection.getInputStream();
+				// 灏佽杈撳叆娴乮s锛屽苟鎸囧畾瀛楃闆�
+				br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
+				// 瀛樻斁鏁版嵁
+				StringBuffer sbf = new StringBuffer();
+				String temp = null;
+				while ((temp = br.readLine()) != null) {
+					sbf.append(temp);
+					sbf.append("\r\n");
+				}
+				result = sbf.toString();
+			}
+		} catch (MalformedURLException e) {
+			e.printStackTrace();
+		} catch (IOException e) {
+			e.printStackTrace();
+		} finally {
+			// 鍏抽棴璧勬簮
+			if (null != br) {
+				try {
+					br.close();
+				} catch (IOException e) {
+					e.printStackTrace();
+				}
+			}
+			if (null != is) {
+				try {
+					is.close();
+				} catch (IOException e) {
+					e.printStackTrace();
+				}
+			}
+			connection.disconnect();// 鍏抽棴杩滅▼杩炴帴
+		}
+		return result;
+	}
+	public static String doPost(String httpUrl, String param) {
+		HttpURLConnection connection = null;
+		InputStream is = null;
+		OutputStream os = null;
+		BufferedReader br = null;
+		String result = null;
+		try {
+			URL url = new URL(httpUrl);
+			// 閫氳繃杩滅▼url杩炴帴瀵硅薄鎵撳紑杩炴帴
+			connection = (HttpURLConnection) url.openConnection();
+			// 璁剧疆杩炴帴璇锋眰鏂瑰紡
+			connection.setRequestMethod("POST");
+			// 璁剧疆杩炴帴涓绘満鏈嶅姟鍣ㄨ秴鏃舵椂闂达細15000姣
+			connection.setConnectTimeout(15000);
+			// 璁剧疆璇诲彇涓绘満鏈嶅姟鍣ㄨ繑鍥炴暟鎹秴鏃舵椂闂达細60000姣
+			connection.setReadTimeout(60000);
+			// 榛樿鍊间负锛歠alse锛屽綋鍚戣繙绋嬫湇鍔″櫒浼犻�佹暟鎹�/鍐欐暟鎹椂锛岄渶瑕佽缃负true
+			connection.setDoOutput(true);
+			// 榛樿鍊间负锛歵rue锛屽綋鍓嶅悜杩滅▼鏈嶅姟璇诲彇鏁版嵁鏃讹紝璁剧疆涓簍rue锛岃鍙傛暟鍙湁鍙棤
+			connection.setDoInput(true);
+			// 璁剧疆浼犲叆鍙傛暟鐨勬牸寮�:璇锋眰鍙傛暟搴旇鏄� name1=value1&name2=value2 鐨勫舰寮忋��
+			connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
+			// 璁剧疆閴存潈淇℃伅锛欰uthorization: Bearer da3efcbf-0845-4fe3-8aba-ee040be542c0
+			connection.setRequestProperty("Authorization", "Bearer da3efcbf-0845-4fe3-8aba-ee040be542c0");
+			// 閫氳繃杩炴帴瀵硅薄鑾峰彇涓�涓緭鍑烘祦
+			os = connection.getOutputStream();
+			// 閫氳繃杈撳嚭娴佸璞″皢鍙傛暟鍐欏嚭鍘�/浼犺緭鍑哄幓,瀹冩槸閫氳繃瀛楄妭鏁扮粍鍐欏嚭鐨�
+			os.write(param.getBytes());
+			// 閫氳繃杩炴帴瀵硅薄鑾峰彇涓�涓緭鍏ユ祦锛屽悜杩滅▼璇诲彇
+			if (connection.getResponseCode() == 200) {
+				is = connection.getInputStream();
+				// 瀵硅緭鍏ユ祦瀵硅薄杩涜鍖呰:charset鏍规嵁宸ヤ綔椤圭洰缁勭殑瑕佹眰鏉ヨ缃�
+				br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
+				StringBuffer sbf = new StringBuffer();
+				String temp = null;
+				// 寰幆閬嶅巻涓�琛屼竴琛岃鍙栨暟鎹�
+				while ((temp = br.readLine()) != null) {
+					sbf.append(temp);
+					sbf.append("\r\n");
+				}
+				result = sbf.toString();
+			}
+		} catch (MalformedURLException e) {
+			e.printStackTrace();
+		} catch (IOException e) {
+			e.printStackTrace();
+		} finally {
+			// 鍏抽棴璧勬簮
+			if (null != br) {
+				try {
+					br.close();
+				} catch (IOException e) {
+					e.printStackTrace();
+				}
+			}
+			if (null != os) {
+				try {
+					os.close();
+				} catch (IOException e) {
+					e.printStackTrace();
+				}
+			}
+			if (null != is) {
+				try {
+					is.close();
+				} catch (IOException e) {
+					e.printStackTrace();
+				}
+			}
+			// 鏂紑涓庤繙绋嬪湴鍧�url鐨勮繛鎺�
+			connection.disconnect();
+		}
+		return result;
+	}
+}
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/HttpClient3.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/HttpClient3.java
new file mode 100644
index 0000000..4fa57e8
--- /dev/null
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/HttpClient3.java
@@ -0,0 +1,159 @@
+package com.vci.ubcs.codeapply;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpStatus;
+import org.apache.commons.httpclient.NameValuePair;
+import org.apache.commons.httpclient.methods.GetMethod;
+import org.apache.commons.httpclient.methods.PostMethod;
+import org.apache.commons.httpclient.params.HttpMethodParams;
+public class HttpClient3 {
+
+	public static String doGet(String url) {
+		// 杈撳叆娴�
+		InputStream is = null;
+		BufferedReader br = null;
+		String result = null;
+		// 鍒涘缓httpClient瀹炰緥
+		HttpClient httpClient = new HttpClient();
+		// 璁剧疆http杩炴帴涓绘満鏈嶅姟瓒呮椂鏃堕棿锛�15000姣
+		// 鍏堣幏鍙栬繛鎺ョ鐞嗗櫒瀵硅薄锛屽啀鑾峰彇鍙傛暟瀵硅薄,鍐嶈繘琛屽弬鏁扮殑璧嬪��
+		httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(15000);
+		// 鍒涘缓涓�涓狦et鏂规硶瀹炰緥瀵硅薄
+		GetMethod getMethod = new GetMethod(url);
+		// 璁剧疆get璇锋眰瓒呮椂涓�60000姣
+		getMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 60000);
+		// 璁剧疆璇锋眰閲嶈瘯鏈哄埗锛岄粯璁ら噸璇曟鏁帮細3娆★紝鍙傛暟璁剧疆涓簍rue锛岄噸璇曟満鍒跺彲鐢紝false鐩稿弽
+		getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(3, true));
+		try {
+			// 鎵цGet鏂规硶
+			int statusCode = httpClient.executeMethod(getMethod);
+			// 鍒ゆ柇杩斿洖鐮�
+			if (statusCode != HttpStatus.SC_OK) {
+				// 濡傛灉鐘舵�佺爜杩斿洖鐨勪笉鏄痮k,璇存槑澶辫触浜�,鎵撳嵃閿欒淇℃伅
+				System.err.println("Method faild: " + getMethod.getStatusLine());
+			} else {
+				// 閫氳繃getMethod瀹炰緥锛岃幏鍙栬繙绋嬬殑涓�涓緭鍏ユ祦
+				is = getMethod.getResponseBodyAsStream();
+				// 鍖呰杈撳叆娴�
+				br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
+				StringBuffer sbf = new StringBuffer();
+				// 璇诲彇灏佽鐨勮緭鍏ユ祦
+				String temp = null;
+				while ((temp = br.readLine()) != null) {
+					sbf.append(temp).append("\r\n");
+				}
+				result = sbf.toString();
+			}
+		} catch (IOException e) {
+			e.printStackTrace();
+		} finally {
+			// 鍏抽棴璧勬簮
+			if (null != br) {
+				try {
+					br.close();
+				} catch (IOException e) {
+					e.printStackTrace();
+				}
+			}
+			if (null != is) {
+				try {
+					is.close();
+				} catch (IOException e) {
+					e.printStackTrace();
+				}
+			}
+			// 閲婃斁杩炴帴
+			getMethod.releaseConnection();
+		}
+		return result;
+	}
+	public static String doPost(String url, Map<String, Object> paramMap) {
+		// 鑾峰彇杈撳叆娴�
+		InputStream is = null;
+		BufferedReader br = null;
+		String result = null;
+		// 鍒涘缓httpClient瀹炰緥瀵硅薄
+		HttpClient httpClient = new HttpClient();
+		// 璁剧疆httpClient杩炴帴涓绘満鏈嶅姟鍣ㄨ秴鏃舵椂闂达細15000姣
+		httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(15000);
+		// 鍒涘缓post璇锋眰鏂规硶瀹炰緥瀵硅薄
+		PostMethod postMethod = new PostMethod(url);
+		// 璁剧疆post璇锋眰瓒呮椂鏃堕棿
+		postMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 60000);
+		NameValuePair[] nvp = null;
+		// 鍒ゆ柇鍙傛暟map闆嗗悎paramMap鏄惁涓虹┖
+		if (null != paramMap && paramMap.size() > 0) {// 涓嶄负绌�
+			// 鍒涘缓閿�煎弬鏁板璞℃暟缁勶紝澶у皬涓哄弬鏁扮殑涓暟
+			nvp = new NameValuePair[paramMap.size()];
+			// 寰幆閬嶅巻鍙傛暟闆嗗悎map
+			Set<Entry<String, Object>> entrySet = paramMap.entrySet();
+			// 鑾峰彇杩唬鍣�
+			Iterator<Entry<String, Object>> iterator = entrySet.iterator();
+			int index = 0;
+			while (iterator.hasNext()) {
+				Entry<String, Object> mapEntry = iterator.next();
+				// 浠巑apEntry涓幏鍙杒ey鍜寁alue鍒涘缓閿�煎璞″瓨鏀惧埌鏁扮粍涓�
+				try {
+					nvp[index] = new NameValuePair(mapEntry.getKey(),
+						new String(mapEntry.getValue().toString().getBytes("UTF-8"), "UTF-8"));
+				} catch (UnsupportedEncodingException e) {
+					e.printStackTrace();
+				}
+				index++;
+			}
+		}
+		// 鍒ゆ柇nvp鏁扮粍鏄惁涓虹┖
+		if (null != nvp && nvp.length > 0) {
+			// 灏嗗弬鏁板瓨鏀惧埌requestBody瀵硅薄涓�
+			postMethod.setRequestBody(nvp);
+		}
+		// 鎵цPOST鏂规硶
+		try {
+			int statusCode = httpClient.executeMethod(postMethod);
+			// 鍒ゆ柇鏄惁鎴愬姛
+			if (statusCode != HttpStatus.SC_OK) {
+				System.err.println("Method faild: " + postMethod.getStatusLine());
+			}
+			// 鑾峰彇杩滅▼杩斿洖鐨勬暟鎹�
+			is = postMethod.getResponseBodyAsStream();
+			// 灏佽杈撳叆娴�
+			br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
+			StringBuffer sbf = new StringBuffer();
+			String temp = null;
+			while ((temp = br.readLine()) != null) {
+				sbf.append(temp).append("\r\n");
+			}
+			result = sbf.toString();
+		} catch (IOException e) {
+			e.printStackTrace();
+		} finally {
+			// 鍏抽棴璧勬簮
+			if (null != br) {
+				try {
+					br.close();
+				} catch (IOException e) {
+					e.printStackTrace();
+				}
+			}
+			if (null != is) {
+				try {
+					is.close();
+				} catch (IOException e) {
+					e.printStackTrace();
+				}
+			}
+			// 閲婃斁杩炴帴
+			postMethod.releaseConnection();
+		}
+		return result;
+	}
+}
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/HttpUtil.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/HttpUtil.java
new file mode 100644
index 0000000..1936cf3
--- /dev/null
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/HttpUtil.java
@@ -0,0 +1,239 @@
+package com.vci.ubcs.codeapply;
+import com.alibaba.cloud.commons.lang.StringUtils;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.nacos.shaded.com.google.gson.JsonObject;
+import com.vci.ubcs.code.vo.webserviceModel.apply.InterParameterVO;
+import com.vci.ubcs.codeapply.object.R;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.http.*;
+import org.apache.http.client.ClientProtocolException;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.client.utils.URIBuilder;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.message.BasicNameValuePair;
+import org.apache.http.util.EntityUtils;
+
+import java.io.IOException;
+import java.net.URISyntaxException;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+public class HttpUtil {
+	private static final CloseableHttpClient httpclient = HttpClients.createDefault();
+
+	/**
+	 * 鍙戦�丠ttpGet璇锋眰
+	 * @param url
+	 * @return
+	 */
+	public static String sendGet(String url) {
+
+		HttpGet httpget = new HttpGet(url);
+		CloseableHttpResponse response = null;
+		try {
+			response = httpclient.execute(httpget);
+		} catch (IOException e1) {
+			e1.printStackTrace();
+		}
+		String result = null;
+		try {
+			HttpEntity entity = response.getEntity();
+			if (entity != null) {
+				result = EntityUtils.toString(entity);
+			}
+		} catch (ParseException | IOException e) {
+			e.printStackTrace();
+		} finally {
+			try {
+				response.close();
+			} catch (IOException e) {
+				e.printStackTrace();
+			}
+		}
+		return result;
+	}
+
+	/**
+	 * 鍙戦�丠ttpGet甯﹀弬璇锋眰
+	 * @param url
+	 * @param params
+	 * @return
+	 */
+	public static R sendGet(String url, Map<String, String> params,Map<String,String> headers) {
+		R r=new R();
+		// 鑾峰彇杩炴帴瀹㈡埛绔伐鍏�
+		CloseableHttpClient httpClient = HttpClients.createDefault();
+		String entityStr = null;
+		CloseableHttpResponse response = null;
+		try {
+			/*
+			 * 鐢变簬GET璇锋眰鐨勫弬鏁伴兘鏄嫾瑁呭湪URL鍦板潃鍚庢柟锛屾墍浠ユ垜浠鏋勫缓涓�涓猆RL锛屽甫鍙傛暟
+			 */
+			URIBuilder uriBuilder = new URIBuilder(url);
+			/** 绗竴绉嶆坊鍔犲弬鏁扮殑褰㈠紡 */
+        /*uriBuilder.addParameter("name", "root");
+        uriBuilder.addParameter("password", "123456");*/
+			/** 绗簩绉嶆坊鍔犲弬鏁扮殑褰㈠紡 */
+			List<NameValuePair> list = new LinkedList<>();
+			//璁剧疆澶撮儴
+			for(Map.Entry<String,String> entry:params.entrySet()){
+				BasicNameValuePair param1 = new BasicNameValuePair(entry.getKey(), entry.getValue());
+				list.add(param1);
+			}
+			uriBuilder.setParameters(list);
+			// 鏍规嵁甯﹀弬鏁扮殑URI瀵硅薄鏋勫缓GET璇锋眰瀵硅薄
+			HttpGet httpGet = new HttpGet(uriBuilder.build());
+			/*
+			 * 娣诲姞璇锋眰澶翠俊鎭�
+			 */
+			if(headers!=null&&headers.size()>0) {
+				for (Map.Entry<String, String> entry : params.entrySet()) {
+					httpGet.addHeader(entry.getKey(), entry.getValue());
+				}
+			}
+			// 鎵ц璇锋眰
+			response = httpClient.execute(httpGet);
+			// 鑾峰緱鍝嶅簲鐨勫疄浣撳璞�
+			HttpEntity entity = response.getEntity();
+			// 浣跨敤Apache鎻愪緵鐨勫伐鍏风被杩涜杞崲鎴愬瓧绗︿覆
+			entityStr = EntityUtils.toString(entity, "UTF-8");
+			if(StringUtils.isNotBlank(entityStr)){
+				r = JSONObject.toJavaObject(JSONObject.parseObject(entityStr), R.class);
+			}
+		} catch (ClientProtocolException e) {
+			System.err.println("Http鍗忚鍑虹幇闂");
+			e.printStackTrace();
+		} catch (ParseException e) {
+			System.err.println("瑙f瀽閿欒");
+			e.printStackTrace();
+		} catch (URISyntaxException e) {
+			System.err.println("URI瑙f瀽寮傚父");
+			e.printStackTrace();
+		} catch (IOException e) {
+			System.err.println("IO寮傚父");
+			e.printStackTrace();
+		} finally {
+			// 閲婃斁杩炴帴
+			if (null != response) {
+				try {
+					response.close();
+					httpClient.close();
+				} catch (IOException e) {
+					System.err.println("閲婃斁杩炴帴鍑洪敊");
+					e.printStackTrace();
+				}
+			}
+		}
+		return r;
+	}
+	/**
+	 * 鍙戦�丠ttpGet甯﹀弬璇锋眰
+	 * @param url
+	 * @param header
+	 * @return
+	 */
+	public static String sendGet(String url, Map<String, String> header) {
+		HttpGet httpGet = new HttpGet(url);
+
+
+		//璁剧疆澶撮儴
+		for(Map.Entry entry:header.entrySet()){
+//            System.out.println(entry.getKey()+ "###########" + entry.getValue());
+			httpGet.setHeader(entry.getKey().toString(),entry.getValue().toString());
+		}
+//        System.out.println(jsonObject.toString());
+
+
+//        HttpGet httpget = new HttpGet(url);
+		CloseableHttpResponse response = null;
+		try {
+			response = httpclient.execute(httpGet);
+		} catch (IOException e1) {
+			e1.printStackTrace();
+		}
+		String result = null;
+		try {
+			HttpEntity entity = response.getEntity();
+			if (entity != null) {
+				result = EntityUtils.toString(entity);
+			}
+		} catch (ParseException | IOException e) {
+			e.printStackTrace();
+		} finally {
+			try {
+				response.close();
+			} catch (IOException e) {
+				e.printStackTrace();
+			}
+		}
+		return result;
+	}
+
+	/**
+	 * 鍙戦�丠ttpPost璇锋眰锛屽弬鏁颁负map
+	 * @param url
+	 * @param map
+	 * @return
+	 */
+	public static String sendPost(String url, Map<String,String> map) {
+//        JsonObject formparams = new JsonObject();
+//        for (Map.Entry<String, String> entry : map.entrySet()) {
+//            formparams.add(entry.getKey(), entry.getValue();
+//        }
+		//json 鏍煎紡
+//        UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formparams, Consts.UTF_8);
+		JsonObject jsonObject = new JsonObject();
+		for(Map.Entry entry:map.entrySet()){
+//            System.out.println(entry.getKey()+ "###########" + entry.getValue());
+			jsonObject.addProperty(entry.getKey().toString(),entry.getValue().toString());
+		}
+//        System.out.println(jsonObject.toString());
+		StringEntity entity = new StringEntity(jsonObject.toString(), Consts.UTF_8);
+		HttpPost httppost = new HttpPost(url);
+		httppost.setEntity(entity);
+		CloseableHttpResponse response = null;
+		try {
+			response = httpclient.execute(httppost);
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+		HttpEntity entity1 = response.getEntity();
+		String result = null;
+		try {
+			result = EntityUtils.toString(entity1);
+		} catch (ParseException | IOException e) {
+			e.printStackTrace();
+		}
+		return result;
+	}
+
+	/**
+	 * 鍙戦�佷笉甯﹀弬鏁扮殑HttpPost璇锋眰
+	 * @param url
+	 * @return
+	 */
+	public static String sendPost(String url) {
+		HttpPost httppost = new HttpPost(url);
+		CloseableHttpResponse response = null;
+		try {
+			response = httpclient.execute(httppost);
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+		HttpEntity entity = response.getEntity();
+		String result = null;
+		try {
+			result = EntityUtils.toString(entity);
+		} catch (ParseException | IOException e) {
+			e.printStackTrace();
+		}
+		return result;
+	}
+
+
+}
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/RMDataReferTempDialog.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/RMDataReferTempDialog.java
new file mode 100644
index 0000000..3297df7
--- /dev/null
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/RMDataReferTempDialog.java
@@ -0,0 +1,159 @@
+package com.vci.ubcs.codeapply;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.Frame;
+import java.awt.Toolkit;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import javax.swing.JPanel;
+import com.vci.base.ui.exception.VCIException;
+import com.vci.base.ui.swing.VCISwingUtil;
+import com.vci.base.ui.swing.components.VCIJButton;
+import com.vci.base.ui.swing.components.VCIJDialog;
+import com.vci.base.ui.swing.components.VCIJPanel;
+import com.vci.base.ui.swing.components.VCIJTable;
+import com.vci.base.ui.swing.components.table.VCIJTablePanel;
+import org.apache.poi.ss.formula.functions.T;
+
+public class RMDataReferTempDialog extends VCIJDialog {
+	private VCIJDialog rmDataAddDialog;
+	private String templateId = "";
+	private RMDataReferTempDialogActionListener actionListener = new RMDataReferTempDialogActionListener(this);
+	private VCIJButton btnOk = VCISwingUtil.createVCIJButton("ok", "纭畾", "纭畾", "accept.png", actionListener);
+	private VCIJButton btnCancel = VCISwingUtil.createVCIJButton("cancel", "鍙栨秷", "鍙栨秷", "cancel.png", actionListener);
+	private static final long serialVersionUID = 1L;
+	public RMDataReferTempDialog(VCIJDialog rmDataAddDialog,String templateId) {
+		//super(true);
+		this.rmDataAddDialog = rmDataAddDialog;
+		this.templateId = templateId;
+		init();
+		setTitle("寮曠敤妯℃澘-灞炴�ч�夋嫨");
+		//initDialogSize(rmDataAddDialog.getWidth(), rmDataAddDialog.getHeight());
+	}
+
+	private void init(){
+		this.setLayout(new BorderLayout());
+		JPanel panel = new JPanel(new FlowLayout());
+		panel.add(btnOk);
+		panel.add(btnCancel);
+
+		this.add(createRMDataMainPanel(), BorderLayout.CENTER);
+		this.add(panel,BorderLayout.SOUTH);
+
+		Dimension dime = Toolkit.getDefaultToolkit().getScreenSize().getSize();
+		int x = dime.width/6;
+		int y = dime.height/6 + 50;
+	    this.setLocation(x , y);
+		this.setSize(850, 400);
+	}
+
+	private boolean fromTableDoubleClick = false;
+	public boolean isFromTableDoubleClick() {
+		return fromTableDoubleClick;
+	}
+	public void setFromTableDoubleClick(boolean fromTableDoubleClick) {
+		this.fromTableDoubleClick = fromTableDoubleClick;
+	}
+
+	private VCIJPanel createRMDataMainPanel(){
+		VCIJPanel rmDataTablePanel = new VCIJPanel();
+		if(!templateId.equals("")){
+			//rmDataTablePanel = getRMDataMainPanel("", "", templateId);
+		}
+		rmDataTablePanel.setPreferredSize(new Dimension(880,300));
+		return rmDataTablePanel;
+	}
+	private VCIJTablePanel<T> tablePanel = null;
+	private CodeDataMainPanelDataProvider dataProvider;
+	public VCIJTablePanel getRMDataMainPanel(String libId, String classifyId, String templateId) {
+		dataProvider = new CodeDataMainPanelDataProvider();
+		tablePanel = new VCIJTablePanel<T>(dataProvider);
+		//tablePanel.setCustomButtons(getCombinedButtons());
+		tablePanel.setShowExport(true);
+		tablePanel.setShowPaging(true);
+		tablePanel.setPageButtonFlowAlign(FlowLayout.CENTER);
+		tablePanel.setCustomButtonFlowAlign(FlowLayout.CENTER);
+		tablePanel.buildTablePanel();
+		int columnCount = tablePanel.getTable().getColumnCount();
+		tablePanel.getTable().getColumnModel().getColumn(columnCount - 2).setPreferredWidth(150);
+		tablePanel.getTable().getColumnModel().getColumn(columnCount - 4).setPreferredWidth(150);
+		/**
+		 * 绂佹table琛ㄥご鎷栧姩锛岄槻姝㈢涓�鍒楃殑澶嶉�夋鍜岀浜屽垪鐨勫簭鍙锋嫋鍔ㄥ嚭闂:
+		 * 鐐瑰嚮鏌愯锛岃〃鏍间腑鐨勫閫夋鐪嬩笉鍒帮紝涓旈�変腑琛ㄥご涓婄殑澶嶉�夋绯荤粺浼氭姤閿欙紱鏁版嵁淇℃伅鏄剧ず涓嶆纭��
+		 * 2012-12-4 wangxl
+		 */
+		tablePanel.getTable().getTableHeader().setReorderingAllowed(false);
+		tablePanel.refreshTableData();
+		 VCIJTable table = tablePanel.getTable();
+		table.addMouseListener(new MouseAdapter() {
+			public void mouseClicked(MouseEvent e) {
+				if (e.getButton() == 1 && e.getClickCount() == 2) {
+					setFromTableDoubleClick(true);
+					btnOk.doClick();
+				}
+			}
+		});
+		return tablePanel;
+	}
+
+	/***鑾峰彇璧勬簮鏁版嵁鐨勪富闈㈡澘**/
+/*
+	public RMDataMainPanel getRMDataMainPanel() {
+		return rmDataMainPanel;
+	}
+*/
+	/*private RMDataTransmitObject loadTemplateAttributes(String libId, String classifyId, String templateId){
+		LinkedHashMap<String, TemplatePropertyObject> tempPropObjsMap = new LinkedHashMap<String, TemplatePropertyObject>();
+		LinkedList<TemplatePropertyObject> tempPropObjsList = new LinkedList<TemplatePropertyObject>();
+
+		LinkedHashMap<String, AttributeObject> tempAttrObjsMap = new LinkedHashMap<String, AttributeObject>();
+		LinkedList<AttributeObject> tempAttrObjsList = new LinkedList<AttributeObject>();
+
+		TemplateObject templateObject = null;
+
+		RMDataTransmitObject transmit = new RMDataTransmitObject();
+		transmit.setLibId(libId);
+		transmit.setClassifyId(classifyId);
+		transmit.setTemplateId(templateId);
+		transmit.setSpecialLib(true);//added by ligang 2012.07.04澶囦欢搴撲笉鍋氭潈闄愭牎楠�
+		try{
+			UserEntityObject userEntityObject = LogonApplication.getUserEntityObject();
+			TemplateClientDelegate  tempDel = new TemplateClientDelegate(userEntityObject);
+			RMTemplateProertyClientDelegate tempPropDel = new RMTemplateProertyClientDelegate(userEntityObject);
+			AttributeClientDelegate attrDel = new AttributeClientDelegate(userEntityObject);
+//			RMTypeObject rmTypeObject = new RMTypeClientDelegate(userEntityObject).getRMTypeById(classifyId);
+			RMTypeObject rmTypeObject = new RMTypeObject();
+			// 浠庤祫婧愬垎绫绘爲涓�夋嫨鐨勫搴旂殑鍒嗙被瀵硅薄
+			transmit.setRmTypeObject(rmTypeObject);
+
+			// 鑾峰彇妯℃澘瀵硅薄
+			templateObject = tempDel.getTemplateObjectById(templateId);
+			transmit.setTemplateObject(templateObject);
+
+			// 鑾峰彇妯℃澘瀹氫箟鐨勫睘鎬у璞★紙杩欎釜瀵硅薄鍖呭惈鐨勬槸灞炴�у湪妯℃澘涓槸鍚︿负鍏抽敭灞炴�с�佸彲鍚︿负绌虹瓑绛夛級
+			TemplatePropertyObject[] tempPropObjs = tempPropDel.getTempletePropertys(templateId);
+			for(TemplatePropertyObject obj : tempPropObjs){
+				tempPropObjsMap.put(obj.getAttrId(), obj);
+				tempPropObjsList.add(obj);
+			}
+			transmit.setTempPropObjsMap(tempPropObjsMap);
+			transmit.setTempPropObjsList(tempPropObjsList);
+
+			// 鑾峰彇妯℃澘瀹氫箟鐨勫睘鎬у璞″搴斿埌鐨勭湡瀹炵殑灞炴�у璞★紙绯荤粺閰嶇疆妯″潡瀹氫箟鐨勯偅浜涘睘鎬у璞★級
+			AttributeObject[] attrObjs = attrDel.fetchAttributeByTemplateId(templateId);
+			for(AttributeObject obj : attrObjs){
+				tempAttrObjsMap.put(obj.getId(), obj);
+				tempAttrObjsList.add(obj);
+			}
+			transmit.setTempAttrObjsMap(tempAttrObjsMap);
+			transmit.setTempAttrObjsList(tempAttrObjsList);
+
+		}catch(VCIException e){
+			e.printStackTrace();
+		}
+		return transmit;
+	}*/
+
+}
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/RMDataReferTempDialogActionListener.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/RMDataReferTempDialogActionListener.java
new file mode 100644
index 0000000..d7742c9
--- /dev/null
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/RMDataReferTempDialogActionListener.java
@@ -0,0 +1,59 @@
+
+package com.vci.ubcs.codeapply;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.LinkedHashMap;
+import com.vci.base.ui.swing.VCIOptionPane;
+import com.vci.base.ui.swing.components.VCIJDialog.DialogResult;
+
+public class RMDataReferTempDialogActionListener implements ActionListener {
+
+	private RMDataReferTempDialog owner = null;
+	public RMDataReferTempDialogActionListener(RMDataReferTempDialog owner){
+		this.owner = owner;
+		this.initActionMap();
+	}
+
+	private LinkedHashMap<String, Runnable> actionMaps = new LinkedHashMap<String, Runnable>();
+	private void initActionMap(){
+		actionMaps.put("ok", new Runnable() { public void run() {
+			ok();
+		}});
+		actionMaps.put("cancel", new Runnable() { public void run() {
+			cancel();
+		}});
+	}
+
+	@Override
+	public void actionPerformed(ActionEvent e) {
+		String key = e.getActionCommand();
+		if(actionMaps.containsKey(key)){
+			actionMaps.get(key).run();
+		}
+	}
+
+	private void ok(){
+		if(!owner.isFromTableDoubleClick()){
+			/*LinkedList<RMDataObject> list = this.owner.getRMDataMainPanel().getTablePanel().getSelectedRowObjects();
+			if(list.size() > 1) {
+				VCIOptionPane.showMessageDialog(this.owner, "涓嶅厑璁搁�夋嫨澶氭潯鏁版嵁杩涜鎿嶄綔!");
+				return;
+			} else if(list.size() <= 0) {
+				VCIOptionPane.showMessageDialog(this.owner, "璇烽�夋嫨鏁版嵁杩涜鎿嶄綔!");
+				return;
+			}*/
+		}
+		owner.setDialogResult(DialogResult.OK);
+		close();
+		owner.getDialogCallback().run();
+	}
+
+	private void cancel(){
+		owner.setDialogResult(DialogResult.CANCEL);
+		close();
+	}
+
+	private void close(){
+		owner.setVisible(false);
+	}
+}
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/SectionObject.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/SectionObject.java
new file mode 100644
index 0000000..beff9dc
--- /dev/null
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/SectionObject.java
@@ -0,0 +1,4 @@
+package com.vci.ubcs.codeapply;
+
+public class SectionObject {
+}
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/TestIntegrateFrame.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/TestIntegrateFrame.java
new file mode 100644
index 0000000..707c812
--- /dev/null
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/TestIntegrateFrame.java
@@ -0,0 +1,44 @@
+package com.vci.ubcs.codeapply;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.HashMap;
+import java.util.Map;
+
+public class TestIntegrateFrame {
+	public static JButton apply = new JButton();
+	public static JTextField text = new JTextField();
+	public static void main(String[] args) {
+		final JFrame j = new JFrame();
+		j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+		JPanel p = new JPanel();
+		j.setSize(200, 200);
+		apply.setText("test");
+		apply.setSize(80, 25);
+		text.setPreferredSize(new Dimension(100,25));
+		p.add(text);
+		p.add(apply);
+		j.add(p);
+		j.setLocation(new Point(500,300));
+		j.setVisible(true);
+		apply.addActionListener(new ActionListener() {
+
+			public void actionPerformed(ActionEvent e) {
+				Map<String, String> map = new HashMap<String, String>();
+//				map.put("鍘熸潗鏂欐浛鎹欢", "YUANCAILIAOTIHUANJIAN");
+//				map.put("鍘熸潗鏂欓儴浠�", "1");
+//				map.put("绠�鏄撶ず娉㈠櫒", "");
+				map.put("", "YCL");
+				String clsfName = "閿�";
+				String deptName = "";
+				CodeApplyFor410Dialog dialog = new CodeApplyFor410Dialog(j, clsfName,deptName);
+				String code = dialog.getCodeValue();
+				dialog.getAttributeValue("mi");
+				text.setText(code + "_" + dialog.getAttributeValue("MIDU"));
+				System.out.println("code:---"+code+"---");
+			}
+		});
+	}
+}
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/TransmitTreeObject.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/TransmitTreeObject.java
new file mode 100644
index 0000000..e37044b
--- /dev/null
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/TransmitTreeObject.java
@@ -0,0 +1,67 @@
+package com.vci.ubcs.codeapply;
+
+import com.vci.base.ui.tree.VCIBaseTree;
+import com.vci.base.ui.tree.VCIBaseTreeModel;
+import com.vci.base.ui.tree.VCIBaseTreeNode;
+
+public class TransmitTreeObject {
+	private VCIBaseTreeNode currentTreeNode; //閫変腑鐨勬爲鑺傜偣
+	private VCIBaseTreeModel treeModel;  // 瑕佹搷浣滅殑 treeModel
+	private VCIBaseTree tree;  // 瑕佹搷浣滅殑 tree
+	private VCIBaseTreeNode lastRightClickedTreeNode;// 鏈�鍚庝竴娆″彸閿搴旂殑TreeNode
+
+	public TransmitTreeObject(){
+		super();
+	}
+
+	public TransmitTreeObject(VCIBaseTreeNode currentTreeNode,
+							  VCIBaseTreeModel treeModel, VCIBaseTree tree,
+							  VCIBaseTreeNode lastRightClickedTreeNode) {
+		super();
+		this.currentTreeNode = currentTreeNode;
+		this.treeModel = treeModel;
+		this.tree = tree;
+		this.lastRightClickedTreeNode = lastRightClickedTreeNode;
+	}
+
+	public VCIBaseTreeNode getCurrentTreeNode() {
+		return currentTreeNode;
+	}
+	public void setCurrentTreeNode(VCIBaseTreeNode currentTreeNode) {
+		this.currentTreeNode = currentTreeNode;
+	}
+	public VCIBaseTree getTree() {
+		return tree;
+	}
+	public void setTree(VCIBaseTree tree) {
+		this.tree = tree;
+	}
+	public VCIBaseTreeModel getTreeModel() {
+		return treeModel;
+	}
+	public void setTreeModel(VCIBaseTreeModel treeModel) {
+		this.treeModel = treeModel;
+	}
+	/**
+	 * 杩斿洖 鏈�鍚庝竴娆″彸閿搴旂殑TreeNode
+	 * <p>Description: </p>
+	 *
+	 * @author xchao
+	 * @time 2012-5-21
+	 * @return
+	 */
+	public VCIBaseTreeNode getLastRightClickedTreeNode() {
+		return lastRightClickedTreeNode;
+	}
+	/**
+	 * 璁剧疆 鏈�鍚庝竴娆″彸閿搴旂殑TreeNode
+	 * <p>Description: </p>
+	 *
+	 * @author xchao
+	 * @time 2012-5-21
+	 * @param lastRightClickedTreeNode
+	 */
+	public void setLastRightClickedTreeNode(VCIBaseTreeNode lastRightClickedTreeNode) {
+		this.lastRightClickedTreeNode = lastRightClickedTreeNode;
+	}
+}
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/httpClient4.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/httpClient4.java
new file mode 100644
index 0000000..9d0cc11
--- /dev/null
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/httpClient4.java
@@ -0,0 +1,134 @@
+package com.vci.ubcs.codeapply;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import org.apache.http.HttpEntity;
+import org.apache.http.NameValuePair;
+import org.apache.http.client.ClientProtocolException;
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.message.BasicNameValuePair;
+import org.apache.http.util.EntityUtils;
+public class httpClient4 {
+	public static String doGet(String url) {
+		CloseableHttpClient httpClient = null;
+		CloseableHttpResponse response = null;
+		String result = "";
+		try {
+			// 閫氳繃鍧�榛樿閰嶇疆鍒涘缓涓�涓猦ttpClient瀹炰緥
+			httpClient = HttpClients.createDefault();
+			// 鍒涘缓httpGet杩滅▼杩炴帴瀹炰緥
+			HttpGet httpGet = new HttpGet(url);
+			// 璁剧疆璇锋眰澶翠俊鎭紝閴存潈
+			httpGet.setHeader("Authorization", "Bearer da3efcbf-0845-4fe3-8aba-ee040be542c0");
+			// 璁剧疆閰嶇疆璇锋眰鍙傛暟
+			RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(35000)// 杩炴帴涓绘満鏈嶅姟瓒呮椂鏃堕棿
+				.setConnectionRequestTimeout(35000)// 璇锋眰瓒呮椂鏃堕棿
+				.setSocketTimeout(60000)// 鏁版嵁璇诲彇瓒呮椂鏃堕棿
+				.build();
+			// 涓篽ttpGet瀹炰緥璁剧疆閰嶇疆
+			httpGet.setConfig(requestConfig);
+			// 鎵цget璇锋眰寰楀埌杩斿洖瀵硅薄
+			response = httpClient.execute(httpGet);
+			// 閫氳繃杩斿洖瀵硅薄鑾峰彇杩斿洖鏁版嵁
+			HttpEntity entity = response.getEntity();
+			// 閫氳繃EntityUtils涓殑toString鏂规硶灏嗙粨鏋滆浆鎹负瀛楃涓�
+			result = EntityUtils.toString(entity);
+		} catch (ClientProtocolException e) {
+			e.printStackTrace();
+		} catch (IOException e) {
+			e.printStackTrace();
+		} finally {
+			// 鍏抽棴璧勬簮
+			if (null != response) {
+				try {
+					response.close();
+				} catch (IOException e) {
+					e.printStackTrace();
+				}
+			}
+			if (null != httpClient) {
+				try {
+					httpClient.close();
+				} catch (IOException e) {
+					e.printStackTrace();
+				}
+			}
+		}
+		return result;
+	}
+	public static String doPost(String url, Map<String, Object> paramMap) {
+		CloseableHttpClient httpClient = null;
+		CloseableHttpResponse httpResponse = null;
+		String result = "";
+		// 鍒涘缓httpClient瀹炰緥
+		httpClient = HttpClients.createDefault();
+		// 鍒涘缓httpPost杩滅▼杩炴帴瀹炰緥
+		HttpPost httpPost = new HttpPost(url);
+		// 閰嶇疆璇锋眰鍙傛暟瀹炰緥
+		RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(35000)// 璁剧疆杩炴帴涓绘満鏈嶅姟瓒呮椂鏃堕棿
+			.setConnectionRequestTimeout(35000)// 璁剧疆杩炴帴璇锋眰瓒呮椂鏃堕棿
+			.setSocketTimeout(60000)// 璁剧疆璇诲彇鏁版嵁杩炴帴瓒呮椂鏃堕棿
+			.build();
+		// 涓篽ttpPost瀹炰緥璁剧疆閰嶇疆
+		httpPost.setConfig(requestConfig);
+		// 璁剧疆璇锋眰澶�
+		httpPost.addHeader("Content-Type", "application/x-www-form-urlencoded");
+		// 灏佽post璇锋眰鍙傛暟
+		if (null != paramMap && paramMap.size() > 0) {
+			List<NameValuePair> nvps = new ArrayList<NameValuePair>();
+			// 閫氳繃map闆嗘垚entrySet鏂规硶鑾峰彇entity
+			Set<Entry<String, Object>> entrySet = paramMap.entrySet();
+			// 寰幆閬嶅巻锛岃幏鍙栬凯浠e櫒
+			Iterator<Entry<String, Object>> iterator = entrySet.iterator();
+			while (iterator.hasNext()) {
+				Entry<String, Object> mapEntry = iterator.next();
+				nvps.add(new BasicNameValuePair(mapEntry.getKey(), mapEntry.getValue().toString()));
+			}
+			// 涓篽ttpPost璁剧疆灏佽濂界殑璇锋眰鍙傛暟
+			try {
+				httpPost.setEntity(new UrlEncodedFormEntity(nvps, "UTF-8"));
+			} catch (UnsupportedEncodingException e) {
+				e.printStackTrace();
+			}
+		}
+		try {
+			// httpClient瀵硅薄鎵цpost璇锋眰,骞惰繑鍥炲搷搴斿弬鏁板璞�
+			httpResponse = httpClient.execute(httpPost);
+			// 浠庡搷搴斿璞′腑鑾峰彇鍝嶅簲鍐呭
+			HttpEntity entity = httpResponse.getEntity();
+			result = EntityUtils.toString(entity);
+		} catch (ClientProtocolException e) {
+			e.printStackTrace();
+		} catch (IOException e) {
+			e.printStackTrace();
+		} finally {
+			// 鍏抽棴璧勬簮
+			if (null != httpResponse) {
+				try {
+					httpResponse.close();
+				} catch (IOException e) {
+					e.printStackTrace();
+				}
+			}
+			if (null != httpClient) {
+				try {
+					httpClient.close();
+				} catch (IOException e) {
+					e.printStackTrace();
+				}
+			}
+		}
+		return result;
+	}
+}
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/AttrRangObjectWarper.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/AttrRangObjectWarper.java
new file mode 100644
index 0000000..aca1d28
--- /dev/null
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/AttrRangObjectWarper.java
@@ -0,0 +1,41 @@
+package com.vci.ubcs.codeapply.object;
+
+import com.vci.ubcs.starter.web.pagemodel.KeyValue;
+
+import java.io.Serializable;
+import java.text.MessageFormat;
+
+public class AttrRangObjectWarper implements Serializable {
+	/**
+	 *
+	 */
+	private static final long serialVersionUID = 8306930792434927633L;
+	private KeyValue keyValue = null;
+	public AttrRangObjectWarper(KeyValue keyValue){
+		this.keyValue = keyValue;
+	}
+
+	public KeyValue getKeyValue() {
+		return keyValue;
+	}
+
+	public void setKeyValue(KeyValue keyValue) {
+		this.keyValue = keyValue;
+	}
+
+	@Override
+	public String toString() {
+		String res = "";
+		String desc = keyValue.getValue();
+		String value = keyValue.getKey();
+		if("".equals(desc) && "".equals(value)) {
+			return "";
+		}else if (desc.equals("")) {
+			res = value;
+//			res = MessageFormat.format("{0}({1})", value, value);
+		} else {
+			res = MessageFormat.format("{0}({1})", desc, value);
+		}
+		return res;
+	}
+}
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/ClassifyLevel.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/ClassifyLevel.java
new file mode 100644
index 0000000..6e5aa95
--- /dev/null
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/ClassifyLevel.java
@@ -0,0 +1,62 @@
+package com.vci.ubcs.codeapply.object;
+
+public class ClassifyLevel {
+	/***
+	 * 鍒嗙被浠e彿
+	 */
+	private String type;
+	/**
+	 * 鍚�
+	 */
+	private String change;
+	/**
+	 * 鏈�灏忓眰
+	 */
+	private String set;
+	/**
+	 * 灞傜骇
+	 */
+	private int injectNum;
+
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+	public String getChange() {
+		return change;
+	}
+
+	public void setChange(String change) {
+		this.change = change;
+	}
+
+	public String getSet() {
+		return set;
+	}
+
+	public void setSet(String set) {
+		this.set = set;
+	}
+
+	public int getInjectNum() {
+		return injectNum;
+	}
+
+	public void setInjectNum(int injectNum) {
+		this.injectNum = injectNum;
+	}
+
+	@Override
+	public String toString() {
+		return "classifyLevel{" +
+			"type='" + type + '\'' +
+			", change='" + change + '\'' +
+			", set='" + set + '\'' +
+			", injectNum='" + injectNum + '\'' +
+			'}';
+	}
+}
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/CodeClassify.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/CodeClassify.java
new file mode 100644
index 0000000..6249213
--- /dev/null
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/CodeClassify.java
@@ -0,0 +1,11 @@
+package com.vci.ubcs.codeapply.object;
+
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
+
+public class CodeClassify extends CodeClassifyVO {
+
+	@Override
+	public String toString() {
+		return super.getName();
+	}
+}
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/R.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/R.java
new file mode 100644
index 0000000..a652e03
--- /dev/null
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/R.java
@@ -0,0 +1,50 @@
+package com.vci.ubcs.codeapply.object;
+
+public class R<T> {
+	private int code;
+	private boolean success;
+	private T data;
+	private String msg;
+
+	public int getCode() {
+		return code;
+	}
+
+	public void setCode(int code) {
+		this.code = code;
+	}
+
+	public boolean isSuccess() {
+		return success;
+	}
+
+	public void setSuccess(boolean success) {
+		this.success = success;
+	}
+
+	public T getData() {
+		return data;
+	}
+
+	public void setData(T data) {
+		this.data = data;
+	}
+
+	public String getMsg() {
+		return msg;
+	}
+
+	public void setMsg(String msg) {
+		this.msg = msg;
+	}
+
+	@Override
+	public String toString() {
+		return "R{" +
+			"code=" + code +
+			", success=" + success +
+			", data=" + data +
+			", msg='" + msg + '\'' +
+			'}';
+	}
+}
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/RMDataTransmitObject.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/RMDataTransmitObject.java
new file mode 100644
index 0000000..7e13d93
--- /dev/null
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/RMDataTransmitObject.java
@@ -0,0 +1,160 @@
+package com.vci.ubcs.codeapply.object;
+
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO;
+
+import java.util.*;
+
+public class RMDataTransmitObject {
+	// 搴揑D
+	private String libId = "";
+	// 鍒嗙被ID
+	private String classifyId = "";
+	// 鍒嗙被鐮�
+	private String classifyCode = "";
+	// 妯℃澘ID
+	private String templateId = "";
+	// 妯℃澘瀵硅薄
+	private CodeClassifyTemplateVO templateObject = null;
+	// 妯℃澘鐨勫睘鎬ч厤缃璞AP  key:灞炴�D value:妯℃澘鍜屽睘鎬у畾涔夊璞�
+	private Map<String, CodeClassifyTemplateAttrVO> tempPropObjsMap = new LinkedHashMap<String, CodeClassifyTemplateAttrVO>();
+
+	/**
+	 * 妯℃澘鐨勫睘鎬ч厤缃紝key:innerName, value:TemplatePropertyObject
+	 */
+	private Map<String, CodeClassifyTemplateAttrVO> tempPropObjMapsByInnerName = new LinkedHashMap<String, CodeClassifyTemplateAttrVO>();
+	// 妯℃澘鐨勫睘鎬ч厤缃璞IST
+	private List<CodeClassifyTemplateAttrVO> tempPropObjsList = new ArrayList<>();
+
+	// 璧勬簮鏁版嵁鎿嶄綔鏃讹紝閫夋嫨鐨勬祦绋嬪璞�
+	//private ProcessDefinitionObject processObject = null;
+
+	// 璧勬簮鏁版嵁鎿嶄綔鏃讹紝娴佺▼鐨勪换鍔″璞★紝鍦ㄦ坊鍔犺祫婧愭暟鎹椂锛屾浠诲姟瀵硅薄鏄�夋嫨鐨勬祦绋嬬殑绗竴涓换鍔★紝鍦ㄨ祫婧愭暟鎹紪杈戞垨浠庝换鍔$涓紪杈戞椂锛屾槸璇ヤ换鍔″搴旂殑浠诲姟瀵硅薄
+	//private ProcessTaskInfo processTaskInfo = null;
+
+	// 璧勬簮鏁版嵁闈㈡澘鍖哄煙锛堣〃鏍煎尯鍩燂級
+	//private RMDataMainPanel rmDataMainPanel = null;
+
+	// 璧勬簮鏁版嵁瀵瑰簲鐨勫簱鎴栧垎绫�
+	private CodeClassify rmTypeObject = null;
+
+	// 鏈�鍚庝竴娆″垱寤烘垚鍔熺殑璧勬簮鏁版嵁瀵硅薄锛�
+	//private RMDataObject lastCreatedRMDataObject = null;
+
+	// 鏈�鍚庝竴娆℃洿鏂版垚鍔熺殑璧勬簮鏁版嵁瀵硅薄
+	//private RMDataObject lastUpdateRMDataObject = null;
+
+	//璧勬簮鏁版嵁鎿嶄綔鏃讹紝娴佺▼鐨勪换鍔″璞★紝鍦ㄦ坊鍔犺祫婧愭暟鎹椂锛屾浠诲姟瀵硅薄鏄�夋嫨鐨勬祦绋嬬殑绗竴涓换鍔★紝鍦ㄨ祫婧愭暟鎹紪杈戞垨浠庝换鍔$涓紪杈戞椂锛屾槸璇ヤ换鍔″搴旂殑浠诲姟瀵硅薄
+	//private FlowInstanceInfo flowInstanceInfo = null;
+
+	// 灞炴�х殑鍙栧�艰寖鍥村垪琛� key锛氬睘鎬D value: map key锛氬睘鎬у悕绉帮紝value锛氬彇鍊艰寖鍥村��
+	private LinkedHashMap<String, LinkedHashMap<String, String>> attrRangeNameToValueMaps = new LinkedHashMap<String, LinkedHashMap<String,String>>();
+	//  灞炴�х殑鍙栧�艰寖鍥村垪琛� key锛氬睘鎬D value: map key锛氬彇鍊艰寖鍥村�硷紝value锛氬睘鎬у悕绉�
+	private LinkedHashMap<String, LinkedHashMap<String, String>> attrRangeValueToNameMaps = new LinkedHashMap<String, LinkedHashMap<String,String>>();
+	//鏄惁鏄笓鏈夊簱鏍囩ず
+	private boolean specialLib = false;
+	private boolean view = true;
+	public String getLibId() {
+		return libId;
+	}
+
+	public void setLibId(String libId) {
+		this.libId = libId;
+	}
+
+	public String getClassifyId() {
+		return classifyId;
+	}
+
+	public void setClassifyId(String classifyId) {
+		this.classifyId = classifyId;
+	}
+
+	public String getClassifyCode() {
+		return classifyCode;
+	}
+
+	public void setClassifyCode(String classifyCode) {
+		this.classifyCode = classifyCode;
+	}
+
+	public String getTemplateId() {
+		return templateId;
+	}
+
+	public void setTemplateId(String templateId) {
+		this.templateId = templateId;
+	}
+
+	public CodeClassifyTemplateVO getTemplateObject() {
+		return templateObject;
+	}
+
+	public void setTemplateObject(CodeClassifyTemplateVO templateObject) {
+		this.templateObject = templateObject;
+	}
+
+	public Map<String, CodeClassifyTemplateAttrVO> getTempPropObjsMap() {
+		return tempPropObjsMap;
+	}
+
+	public void setTempPropObjsMap(Map<String, CodeClassifyTemplateAttrVO> tempPropObjsMap) {
+		this.tempPropObjsMap = tempPropObjsMap;
+	}
+
+	public Map<String, CodeClassifyTemplateAttrVO> getTempPropObjMapsByInnerName() {
+		return tempPropObjMapsByInnerName;
+	}
+
+	public void setTempPropObjMapsByInnerName(Map<String, CodeClassifyTemplateAttrVO> tempPropObjMapsByInnerName) {
+		this.tempPropObjMapsByInnerName = tempPropObjMapsByInnerName;
+	}
+
+	public List<CodeClassifyTemplateAttrVO> getTempPropObjsList() {
+		return tempPropObjsList;
+	}
+
+	public void setTempPropObjsList(List<CodeClassifyTemplateAttrVO> tempPropObjsList) {
+		this.tempPropObjsList = tempPropObjsList;
+	}
+
+	public LinkedHashMap<String, LinkedHashMap<String, String>> getAttrRangeNameToValueMaps() {
+		return attrRangeNameToValueMaps;
+	}
+
+	public void setAttrRangeNameToValueMaps(LinkedHashMap<String, LinkedHashMap<String, String>> attrRangeNameToValueMaps) {
+		this.attrRangeNameToValueMaps = attrRangeNameToValueMaps;
+	}
+
+	public LinkedHashMap<String, LinkedHashMap<String, String>> getAttrRangeValueToNameMaps() {
+		return attrRangeValueToNameMaps;
+	}
+
+	public void setAttrRangeValueToNameMaps(LinkedHashMap<String, LinkedHashMap<String, String>> attrRangeValueToNameMaps) {
+		this.attrRangeValueToNameMaps = attrRangeValueToNameMaps;
+	}
+
+	public boolean isSpecialLib() {
+		return specialLib;
+	}
+
+	public void setSpecialLib(boolean specialLib) {
+		this.specialLib = specialLib;
+	}
+
+	public boolean isView() {
+		return view;
+	}
+
+	public void setView(boolean view) {
+		this.view = view;
+	}
+
+	public CodeClassify getRmTypeObject() {
+		return rmTypeObject;
+	}
+
+	public void setRmTypeObject(CodeClassify rmTypeObject) {
+		this.rmTypeObject = rmTypeObject;
+	}
+}
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/swing/IntegerTextField.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/swing/IntegerTextField.java
new file mode 100644
index 0000000..5cd2260
--- /dev/null
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/swing/IntegerTextField.java
@@ -0,0 +1,24 @@
+package com.vci.ubcs.codeapply.swing;
+
+import java.io.Serializable;
+
+import javax.swing.text.Document;
+
+import com.vci.base.ui.swing.components.NumberPlainDocument;
+import com.vci.base.ui.swing.components.VCIJTextField;
+
+public class IntegerTextField  extends VCIJTextField implements Serializable {
+
+
+	/**
+	 *
+	 */
+	private static final long serialVersionUID = 3885601645788779103L;
+	public IntegerTextField(String text){
+		super(text);
+	}
+	@Override
+	protected Document createDefaultModel(){
+		return new NumberPlainDocument(false);
+	}
+}
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/swing/RealTextField.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/swing/RealTextField.java
new file mode 100644
index 0000000..80268bf
--- /dev/null
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/swing/RealTextField.java
@@ -0,0 +1,54 @@
+package com.vci.ubcs.codeapply.swing;
+
+import com.vci.base.ui.swing.components.NumberPlainDocument;
+import com.vci.base.ui.swing.components.VCIJTextField;
+
+import javax.swing.text.Document;
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
+
+public class RealTextField extends VCIJTextField {
+	/**
+	 *
+	 */
+	private static final long serialVersionUID = -2711989168936034987L;
+
+	/**
+	 *
+	 */
+
+	public RealTextField(String text) {
+		super(text);
+		addKeyListener(new KeyAdapter() {
+			public void keyReleased(KeyEvent e) {
+				this_keyReleased(e);
+			}
+		});
+	}
+
+	private void this_keyReleased(KeyEvent e) {
+		String text = getText();
+		if (text.equals(""))
+			return;
+		// 鏁板�间笉鑳戒互-.鎴�.寮�澶�
+		if (text.startsWith("-.")) {
+			text = "-0." + text.substring(2);
+		} else if (text.startsWith(".")) {
+			text = "0." + text.substring(1);
+		}
+		String str = text.substring(0, text.length() - 1);
+		String last = text.substring(text.length() - 1);
+		// Real绫诲瀷鐨勮緭鍏ユ椂锛屽彧鑳藉嚭鐜颁竴涓�.
+		if (last.equals(".")) {
+			if (str.indexOf(".") > 0) {
+				text = str;
+			}
+		}
+		setText(text);
+	}
+
+	@Override
+	protected Document createDefaultModel() {
+		return new NumberPlainDocument(true);
+	}
+}
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/swing/VCIJComboxBox.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/swing/VCIJComboxBox.java
new file mode 100644
index 0000000..dbb855f
--- /dev/null
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/swing/VCIJComboxBox.java
@@ -0,0 +1,50 @@
+package com.vci.ubcs.codeapply.swing;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+
+import com.vci.base.ui.swing.VCISwingUtil;
+import com.vci.base.ui.swing.components.VCIJButton;
+import com.vci.base.ui.swing.components.VCIJComboBox;
+
+public class VCIJComboxBox  extends VCIJComboBox{
+
+	private static final long serialVersionUID = 1L;
+//	private KJButton searchBtn = new KJButton("", "search.png");
+	private VCIJButton searchBtn = VCISwingUtil.createVCIJButton("search", "", "", "search.png", null);
+	public VCIJButton getSearchBtn() {
+		return searchBtn;
+	}
+
+	public void setSearchBtn(VCIJButton searchBtn) {
+		this.searchBtn = searchBtn;
+	}
+
+	private boolean flag = false;
+
+	public VCIJComboxBox(){
+		this.setLayout(new BorderLayout());
+		searchBtn.setVisible(false);
+		searchBtn.setPreferredSize(new Dimension(40, 30));
+		this.add(searchBtn, BorderLayout.EAST );
+
+	}
+
+//	public KJButton getSearchBtn() {
+//		return searchBtn;
+//	}
+//
+//	public void setSearchBtn(KJButton searchBtn) {
+//		this.searchBtn = searchBtn;
+//	}
+
+	public boolean isFlag() {
+		return flag;
+	}
+
+	public void setFlag(boolean flag) {
+		this.flag = flag;
+	}
+
+
+}
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/utils/ConfigUtils.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/utils/ConfigUtils.java
new file mode 100644
index 0000000..5cc8f65
--- /dev/null
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/utils/ConfigUtils.java
@@ -0,0 +1,48 @@
+package com.vci.ubcs.codeapply.utils;
+import net.logstash.logback.encoder.org.apache.commons.lang3.StringUtils;
+import com.vci.base.common.resource.CommonProperties;
+
+/**
+ * 閰嶇疆淇℃伅缁熶竴璇诲彇绫�
+ * <p>Title: </p>
+ * <p>Description: </p>
+ * <p>Copyright: Copyright (c) 2012</p>
+ * <p>Company: VCI</p>
+ * @author xchao
+ * @time 2013-3-20
+ * @version 1.0
+ */
+public class ConfigUtils {
+
+
+	/**
+	 * 鏍规嵁KEY锛屼粠杩滅▼鏈嶅姟鍣ㄧconf.properties涓厤缃��
+	 * <p>Description: 鏍规嵁鏈壘鍒扮浉搴旂殑鍊硷紝鍒欒繑鍥濳EY</p>
+	 *
+	 * @author xchao
+	 * @time 2013-3-20
+	 * @param key
+	 * @return
+	 */
+	public static String getConfigValue(String key){
+		String res=CommonProperties.getStringProperty(key);
+		return res;
+	}
+
+	/**
+	 * 鏍规嵁KEY锛屼粠杩滅▼鏈嶅姟鍣ㄧconf.properties涓厤缃��
+	 * <p>Description: 鏍规嵁鏈壘鍒扮浉搴旂殑鍊硷紝鍒欒繑鍥濳EY</p>
+	 *
+	 * @author xchao
+	 * @time 2013-3-20
+	 * @param key
+	 * @return
+	 */
+	public static String getConfigValue(String key,String defaultValue){
+		String res=CommonProperties.getStringProperty(key);
+		if(StringUtils.isBlank(res)){
+			return defaultValue;
+		}
+		return res;
+	}
+}
diff --git a/Source/UBCS/ubcs-codeApply/src/main/resources/properties/conf.properties b/Source/UBCS/ubcs-codeApply/src/main/resources/properties/conf.properties
new file mode 100644
index 0000000..ab137d0
--- /dev/null
+++ b/Source/UBCS/ubcs-codeApply/src/main/resources/properties/conf.properties
@@ -0,0 +1,35 @@
+
+
+
+#?????????????????
+# ??????????????????????????????????
+RMData.MaxAttrInLine=2
+# ?????????????TextArea???true:?? false????????true
+RMData.TextArea.Enable=true
+# ?String??????????????????????TextArea????????????100
+RMData.MaxStringLength=500
+
+# ???TextArea???TextArea?PreferredSize?MinimumSize?MaximumSize?Width?Height
+RMData.TextArea.PreferredSize.Width=100
+RMData.TextArea.PreferredSize.Height=50
+RMData.TextArea.MinimumSize.Width=100
+RMData.TextArea.MinimumSize.Height=30
+RMData.TextArea.MaximumSize.Width=100
+RMData.TextArea.MaximumSize.Height=80
+
+#PDM????????????????????????????????????????#??
+410.PDM.LibCodeName=\u7269\u54c1\#\u9644\u5f55
+#???????????
+410.PDM.item.url=http://127.0.0.1:36014/codeApplySwingController/getRMLibByName
+#???????????
+410.PDM.clsfTemplate.url=http://127.0.0.1:36014/codeApplySwingController/getUsedTemplateByClassifyOid
+
+#???????????
+410.PDM.leftClsfNode.url=http://127.0.0.1:36014/codeApplySwingController/selectCodeClassifyVOByParentId
+#
+410.PDM.leftdescLibNode.url=http://127.0.0.1:36014/codeApplySwingController/getRMTypeByDescAndLib
+
+410.PDM.rule.url=http://127.0.0.1:36014/codeApplySwingController/getCodeRuleByClassifyFullInfo
+
+410.PDM.attrKeyValue.url=http://127.0.0.1:36014/codeApplySwingController/listComboboxItems
+
diff --git a/Source/UBCS/ubcs-codeApply/src/main/resources/properties/tt.json b/Source/UBCS/ubcs-codeApply/src/main/resources/properties/tt.json
new file mode 100644
index 0000000..3712a56
--- /dev/null
+++ b/Source/UBCS/ubcs-codeApply/src/main/resources/properties/tt.json
@@ -0,0 +1 @@
+{"type":"鍒嗙被浠e彿","set":"鏈�灏忓眰","change":"鍚�","injectNum":4}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/pom.xml b/Source/UBCS/ubcs-service/ubcs-code/pom.xml
index abf2d37..536ad03 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/pom.xml
+++ b/Source/UBCS/ubcs-service/ubcs-code/pom.xml
@@ -173,6 +173,14 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-antrun-plugin</artifactId>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>8</source>
+                    <target>8</target>
+                </configuration>
+            </plugin>
         </plugins>
     </build>
 
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeApplySwingController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeApplySwingController.java
new file mode 100644
index 0000000..864a2a9
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeApplySwingController.java
@@ -0,0 +1,113 @@
+package com.vci.ubcs.code.controller;
+
+import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
+import com.vci.ubcs.code.service.ICodeClassifyService;
+import com.vci.ubcs.code.service.ICodeClassifyTemplateAttrService;
+import com.vci.ubcs.code.service.MdmEngineService;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
+import com.vci.ubcs.starter.web.pagemodel.KeyValue;
+import io.swagger.annotations.Api;
+import lombok.AllArgsConstructor;
+import org.springblade.core.tool.api.R;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * 涓婚搴撳畾涔夎〃 鎺у埗鍣�
+ *
+ * @author xiejun
+ * @since 2023-07-24
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/codeApplySwingController")
+@Api(value = "涓婚搴撳畾涔夎〃", tags = "涓婚搴撳畾涔夎〃鎺ュ彛")
+public class CodeApplySwingController {
+	/***
+	 * 鍒嗙被鏈嶅姟瀵硅薄
+	 */
+	private final ICodeClassifyService codeClassifyService;
+	/***
+	 * 鏁版嵁鎿嶄綔鏈嶅姟瀵硅薄
+	 */
+	private final MdmEngineService mdmEngineService;
+	/***
+	 * 妯℃澘灞炴�ф湇鍔�
+	 */
+	private final ICodeClassifyTemplateAttrService  codeClstempattrService;
+	/**
+	 * 鑾峰彇搴撹妭鐐逛俊鎭�
+	 * @param libName 搴撹妭鐐瑰悕绉�
+	 * @return 涓婚搴撳垎绫绘樉绀烘爲
+	 */
+	@GetMapping("/getRMLibByName")
+	public R<List<CodeClassifyVO>> getRMLibByName(String libName)  {
+		List<CodeClassifyVO> codeClassifyVOList=codeClassifyService.getRMLibByName(libName);
+		return R.data(codeClassifyVOList) ;
+	}
+
+	/***
+	 * 鏍规嵁鍒嗙被鎻忚堪澶囨敞鍜屽簱鑺傜偣鏌ヨ鍒嗙被淇℃伅
+	 * @param desc
+	 * @param codeLibName
+	 * @return
+	 */
+	@GetMapping("/getRMTypeByDescAndLib")
+	public R<List<CodeClassifyVO>> getRMTypeByDescAndLib(String desc,String codeLibName)  {
+		List<CodeClassifyVO> codeClassifyVOList=codeClassifyService.getRMTypeByDescAndLib(desc,codeLibName);
+		return R.data(codeClassifyVOList) ;
+	}
+
+	/**
+	 * 涓婚搴撳垎绫绘爲
+	 * @param parentId 鏍戝舰鏌ヨ瀵硅薄
+	 * @return 涓婚搴撳垎绫绘樉绀烘爲
+	 */
+	@GetMapping("/selectCodeClassifyVOByParentId")
+	public R<List<CodeClassifyVO>> selectCodeClassifyVOByParentId(String parentId)  {
+		  List<CodeClassifyVO> codeClassifyVOList =codeClassifyService.selectCodeClassifyVOByParentId(parentId);
+		  return R.data(codeClassifyVOList);
+	}
+
+	/**
+	 * 浣跨敤鍒嗙被鐨勪富閿幏鍙栧彲浠ヤ娇鐢ㄧ殑妯℃澘瀵硅薄
+	 * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+	 * @return 妯℃澘鐨勬樉绀哄璞�
+	 */
+	@GetMapping("/getUsedTemplateByClassifyOid")
+	public R<CodeClassifyTemplateVO> getUsedTemplateByClassifyOid(String codeClassifyOid){
+		CodeClassifyTemplateVO codeClassifyTemplateVO=mdmEngineService.getUsedTemplateByClassifyOid(codeClassifyOid);
+		return R.data(codeClassifyTemplateVO);
+	}
+
+	/***
+	 * 鏍规摎鍒嗙被oid鑾峰彇瑙勫垯淇℃伅
+	 * @param codeClassId
+	 * @return
+	 */
+	@GetMapping("/getCodeRuleByClassifyFullInfo")
+	public R<CodeRuleVO> getCodeRuleByClassifyFullInfo(String codeClassId){
+		CodeRuleVO codeRuleVO=new CodeRuleVO();
+		CodeClassifyFullInfoBO classifyFullInfo = codeClassifyService.getClassifyFullInfo(codeClassId);
+		if(classifyFullInfo!=null) {
+			codeRuleVO = mdmEngineService.getCodeRuleByClassifyFullInfo(classifyFullInfo);
+		}
+		return R.data(codeRuleVO);
+	}
+
+	/***
+	 * 鏍规嵁灞炴�ц幏鍙栨灇涓惧��
+	 * @param oid
+	 * @return
+	 */
+	@GetMapping("/listComboboxItems")
+	public R<List<KeyValue>> listComboboxItems(String oid){
+		List<KeyValue> keyValueList=mdmEngineService.listComboboxItems(codeClstempattrService.getObjectByOid(oid));
+		return R.data(keyValueList);
+	}
+}
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 6f30181..3772ae2 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
@@ -117,4 +117,35 @@
 
 
 	CodeClassify selectByIdRel(@Param("oid") String oid);
+	/**
+	 * 鏍规嵁鐖惰妭鐐筰d鏌ヨ褰撳墠鑺傜偣瀛愯妭鐐规暟鎹�
+	 *
+	 * @param parentOid 鍒嗙被鐨勪富閿�
+	 * @return 鏁版嵁闆嗗悎
+	 */
+	List<CodeClassify> 	selectCodeClassifyDOByParentId(@Param("parentOid")String parentOid,@Param("tenantId") String tenantId);
+
+	/***
+	 * 鏍规嵁搴撹妭鐐瑰悕绉拌幏鍙栧垎绫�
+	 * @param libNames
+	 * @param lcstatus
+	 * @param tenantId
+	 * @return
+	 */
+	List<CodeClassify> getRMLibByName(List<String> libNames,@Param("lcstatus")String lcstatus,@Param("tenantId") String tenantId);
+	/***
+	 * 鏍规嵁鍒嗙被鎻忚堪澶囨敞鍜屽簱鑺傜偣鏌ヨ鍒嗙被淇℃伅
+	 * @param desc
+	 * @param codeLibName
+	 * @return
+	 */
+	List<CodeClassify> getRMTypeByDesc(@Param("desc")String desc,@Param("lcstatus")String lcstatus,@Param("tenantId") String tenantId);
+
+	/***
+	 * 鏍规嵁褰撳墠鍒嗙被鑾峰彇涓婄骇鍒嗙被淇℃伅
+	 * @param oid
+	 * @param tenantId
+	 * @return
+	 */
+	List<CodeClassify>  selectAllParenClassifytByOid(@Param("oid")String oid,@Param("tenantId") String tenantId);
 }
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 b19bd72..78c532e 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
@@ -270,4 +270,27 @@
 	 * @return 涓暟
 	 */
 	int countChildrenByClassifyOid(String codeClassifyOid);
+
+	/***
+	 * 鏍规嵁鐖惰妭鐐规煡璇笅绾у彾瀛愯妭鐐�
+	 * @param parentId
+	 * @return
+	 */
+	List<CodeClassifyVO> selectCodeClassifyVOByParentId(String parentId);
+
+	/***
+	 * 鏍规嵁搴撹妭鐐瑰悕绉拌幏鍙栧垎绫�
+	 * @param libName
+	 * @return
+	 */
+	List<CodeClassifyVO> getRMLibByName(String libName);
+
+	/***
+	 * 鏍规嵁鍒嗙被鎻忚堪澶囨敞鍜屽簱鑺傜偣鏌ヨ鍒嗙被淇℃伅
+	 * @param desc
+	 * @param codeLibName
+	 * @return
+	 */
+	List<CodeClassifyVO> getRMTypeByDescAndLib(String desc,String codeLibName);
+
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
index 16f1e3f..1f12c5a 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
@@ -528,6 +528,57 @@
 		List<CodeClassifyVO> voList = codeClassifyDO2VOs(doList);
 		return voList;
 	}
+
+	/***
+	 *
+	 * @param parentOid
+	 * @return
+	 */
+	@Override
+	public List<CodeClassifyVO> selectCodeClassifyVOByParentId(String parentOid) {
+		List<CodeClassify> doList =codeClassifyMapper.selectCodeClassifyDOByParentId(parentOid,AuthUtil.getTenantId());
+		List<CodeClassifyVO> voList = codeClassifyDO2VOs(doList);
+		return voList;
+	}
+
+	/**
+	 * 鏍规嵁搴撹妭鐐瑰悕绉拌幏鍙栧垎绫�
+	 * @param libName
+	 * @return
+	 */
+	@Override
+	public List<CodeClassifyVO> getRMLibByName(String libName) {
+		List<String> libNameList=new ArrayList<>();
+		if(StringUtils.isNotBlank(libName)){
+			libNameList=VciBaseUtil.str2List(libName);
+		}
+		List<CodeClassify> doList =codeClassifyMapper.getRMLibByName(libNameList,"Enabled",AuthUtil.getTenantId());
+		List<CodeClassifyVO> voList = codeClassifyDO2VOs(doList);
+		return voList;
+	}
+
+	/***
+	 * 鏍规嵁鍒嗙被鎻忚堪澶囨敞鍜屽簱鑺傜偣鏌ヨ鍒嗙被淇℃伅
+	 * @param desc
+	 * @param codeLibName
+	 * @return
+	 */
+	@Override
+	public List<CodeClassifyVO> getRMTypeByDescAndLib(String desc, String codeLibName) {
+		List<CodeClassify> doList =codeClassifyMapper.getRMTypeByDesc(desc,"Enabled",AuthUtil.getTenantId());
+		if (CollectionUtils.isEmpty(doList)) {
+			return new LinkedList<CodeClassifyVO>();
+		}
+		CodeClassify codeClassify=doList.get(0);
+		List<CodeClassify>  codeClassifyList=codeClassifyMapper.selectAllParenClassifytByOid(codeClassify.getOid(),AuthUtil.getTenantId());
+		CodeClassify currentLib = codeClassifyList.get(codeClassifyList.size() - 1);
+		if (!currentLib.getName().equals(codeLibName)) {
+			return new ArrayList<>();
+		}
+		List<CodeClassifyVO> voList = codeClassifyDO2VOs(codeClassifyList);
+		return voList;
+	}
+
 	/**
 	 * 浣跨敤缂栧彿鐨勮矾寰勮幏鍙栧璞�
 	 *
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 dce9452..8015984 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
@@ -319,4 +319,172 @@
         WHERE PCC.OID IN (${oids})
     </select>
 
+    <select id="selectCodeClassifyDOByParentId" resultMap="plCodeClassifyResultMap">
+        select codeclassify0.OWNER                 as owner,
+        codeclassify0.BTMTYPEID             as btmtypeid,
+        codeclassify0.CREATOR               as creator,
+        codeclassify0.CREATETIME            as createtime,
+        codeclassify0.LASTMODIFIER          as lastmodifier,
+        codeclassify0.DESCRIPTION           as description,
+        codeclassify0.ORDERNUM              as ordernum,
+        codeclassify0.CODERULEOID           as coderuleoid,
+        codeclassify0.OID                   as oid,
+        codeclassify0.BTMNAME               as btmname,
+        codeclassify0.BTMTYPENAME           as btmtypename,
+        codeclassify0.CODEKEYATTRREPEATOID  as codekeyattrrepeatoid,
+        codeclassify0.PARENTCODECLASSIFYOID as parentcodeclassifyoid,
+        codeclassify0.NAME                  as name,
+        codeclassify0.LASTMODIFYTIME        as lastmodifytime,
+        codeclassify0.ID                    as id,
+        codeclassify0.CODERESEMBLERULEOID   as coderesembleruleoid,
+        codeclassify0.LCSTATUS              as lcstatus,
+        codeclassify0.TS                    as ts,
+        codeclassify0.TENANT_ID             as tenantId ,
+        coderuleoid.name                    as codeRuleOidName,
+        codekeyattrrepeatoid.name           as codeKeyAttrRepeatOidName,
+        coderesembleruleoid.name            as codeResembleRuleOidName
+        from pl_code_classify codeclassify0
+        left join pl_code_rule coderuleoid
+        on codeclassify0.codeRuleOid = coderuleoid.oid
+        left join pl_code_keyattrrepeat codekeyattrrepeatoid
+        on codeclassify0.codeKeyAttrRepeatOid = codekeyattrrepeatoid.oid
+        left join pl_code_resemblerule coderesembleruleoid
+        on codeclassify0.codeResembleRuleOid = coderesembleruleoid.oid
+        where 1=1
+        <if test="parentOid != null and parentOid != ''">
+            and codeclassify0.parentcodeclassifyoid = #{parentOid}
+        </if>
+        <if test="parentOid == null or parentOid == ''">
+            and codeclassify0.parentcodeclassifyoid is null
+        </if>
+
+        <if test="tenantId != null and tenantId != ''">
+            codeclassify0.tenant_id = #{tenantId}
+        </if>
+        order by id asc
+    </select>
+    <select id="getRMLibByName" resultMap="plCodeClassifyResultMap">
+        select codeclassify0.OWNER                 as owner,
+        codeclassify0.BTMTYPEID             as btmtypeid,
+        codeclassify0.CREATOR               as creator,
+        codeclassify0.CREATETIME            as createtime,
+        codeclassify0.LASTMODIFIER          as lastmodifier,
+        codeclassify0.DESCRIPTION           as description,
+        codeclassify0.ORDERNUM              as ordernum,
+        codeclassify0.CODERULEOID           as coderuleoid,
+        codeclassify0.OID                   as oid,
+        codeclassify0.BTMNAME               as btmname,
+        codeclassify0.BTMTYPENAME           as btmtypename,
+        codeclassify0.CODEKEYATTRREPEATOID  as codekeyattrrepeatoid,
+        codeclassify0.PARENTCODECLASSIFYOID as parentcodeclassifyoid,
+        codeclassify0.NAME                  as name,
+        codeclassify0.LASTMODIFYTIME        as lastmodifytime,
+        codeclassify0.ID                    as id,
+        codeclassify0.CODERESEMBLERULEOID   as coderesembleruleoid,
+        codeclassify0.LCSTATUS              as lcstatus,
+        codeclassify0.TS                    as ts,
+        codeclassify0.TENANT_ID             as tenantId ,
+        coderuleoid.name                    as codeRuleOidName,
+        codekeyattrrepeatoid.name           as codeKeyAttrRepeatOidName,
+        coderesembleruleoid.name            as codeResembleRuleOidName
+        from pl_code_classify codeclassify0
+        left join pl_code_rule coderuleoid
+        on codeclassify0.codeRuleOid = coderuleoid.oid
+        left join pl_code_keyattrrepeat codekeyattrrepeatoid
+        on codeclassify0.codeKeyAttrRepeatOid = codekeyattrrepeatoid.oid
+        left join pl_code_resemblerule coderesembleruleoid
+        on codeclassify0.codeResembleRuleOid = coderesembleruleoid.oid
+        where codeclassify0.lcstatus = #{lcstatus}
+        and codeclassify0.parentcodeclassifyoid is null
+        <if test="libNames != null and ! libNames.isEmpty() and libNames.size() > 0">
+            and codeclassify0.name in
+            <foreach item="item" index="index" collection="libNames" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        <if test="tenantId != null and tenantId != ''">
+            codeclassify0.tenant_id = #{tenantId}
+        </if>
+        order by id asc
+    </select>
+
+    <select id="getRMTypeByDesc" resultMap="plCodeClassifyResultMap">
+        select codeclassify0.OWNER                 as owner,
+        codeclassify0.BTMTYPEID             as btmtypeid,
+        codeclassify0.CREATOR               as creator,
+        codeclassify0.CREATETIME            as createtime,
+        codeclassify0.LASTMODIFIER          as lastmodifier,
+        codeclassify0.DESCRIPTION           as description,
+        codeclassify0.ORDERNUM              as ordernum,
+        codeclassify0.CODERULEOID           as coderuleoid,
+        codeclassify0.OID                   as oid,
+        codeclassify0.BTMNAME               as btmname,
+        codeclassify0.BTMTYPENAME           as btmtypename,
+        codeclassify0.CODEKEYATTRREPEATOID  as codekeyattrrepeatoid,
+        codeclassify0.PARENTCODECLASSIFYOID as parentcodeclassifyoid,
+        codeclassify0.NAME                  as name,
+        codeclassify0.LASTMODIFYTIME        as lastmodifytime,
+        codeclassify0.ID                    as id,
+        codeclassify0.CODERESEMBLERULEOID   as coderesembleruleoid,
+        codeclassify0.LCSTATUS              as lcstatus,
+        codeclassify0.TS                    as ts,
+        codeclassify0.TENANT_ID             as tenantId ,
+        coderuleoid.name                    as codeRuleOidName,
+        codekeyattrrepeatoid.name           as codeKeyAttrRepeatOidName,
+        coderesembleruleoid.name            as codeResembleRuleOidName
+        from pl_code_classify codeclassify0
+        left join pl_code_rule coderuleoid
+        on codeclassify0.codeRuleOid = coderuleoid.oid
+        left join pl_code_keyattrrepeat codekeyattrrepeatoid
+        on codeclassify0.codeKeyAttrRepeatOid = codekeyattrrepeatoid.oid
+        left join pl_code_resemblerule coderesembleruleoid
+        on codeclassify0.codeResembleRuleOid = coderesembleruleoid.oid
+        where 1=1 and codeclassify0.lcstatus = #{lcstatus}
+        <if test="desc != null">
+            and  codeclassify0.DESCRIPTION = #{desc}
+        </if>
+
+        <if test="tenantId != null and tenantId != ''">
+          and  codeclassify0.tenant_id = #{tenantId}
+        </if>
+        order by id asc
+    </select>
+
+    <select id="selectAllParenClassifytByOid" resultMap="plCodeClassifyResultMap">
+        select codeclassify0.OWNER                 as owner,
+        codeclassify0.BTMTYPEID             as btmtypeid,
+        codeclassify0.CREATOR               as creator,
+        codeclassify0.CREATETIME            as createtime,
+        codeclassify0.LASTMODIFIER          as lastmodifier,
+        codeclassify0.DESCRIPTION           as description,
+        codeclassify0.ORDERNUM              as ordernum,
+        codeclassify0.CODERULEOID           as coderuleoid,
+        codeclassify0.OID                   as oid,
+        codeclassify0.BTMNAME               as btmname,
+        codeclassify0.BTMTYPENAME           as btmtypename,
+        codeclassify0.CODEKEYATTRREPEATOID  as codekeyattrrepeatoid,
+        codeclassify0.PARENTCODECLASSIFYOID as parentcodeclassifyoid,
+        codeclassify0.NAME                  as name,
+        codeclassify0.LASTMODIFYTIME        as lastmodifytime,
+        codeclassify0.ID                    as id,
+        codeclassify0.CODERESEMBLERULEOID   as coderesembleruleoid,
+        codeclassify0.LCSTATUS              as lcstatus,
+        codeclassify0.TS                    as ts,
+        codeclassify0.TENANT_ID             as tenantId ,
+        coderuleoid.name                    as codeRuleOidName,
+        codekeyattrrepeatoid.name           as codeKeyAttrRepeatOidName,
+        coderesembleruleoid.name            as codeResembleRuleOidName
+        from pl_code_classify codeclassify0
+        left join pl_code_rule coderuleoid
+        on codeclassify0.codeRuleOid = coderuleoid.oid
+        left join pl_code_keyattrrepeat codekeyattrrepeatoid
+        on codeclassify0.codeKeyAttrRepeatOid = codekeyattrrepeatoid.oid
+        left join pl_code_resemblerule coderesembleruleoid
+        on codeclassify0.codeResembleRuleOid = coderesembleruleoid.oid
+        start with  codeclassify0.oid=#{oid}
+         <if test="tenantId != null and tenantId != ''">
+           and  codeclassify0.tenant_id = #{tenantId}
+          </if>
+            connect by prior PARENTCODECLASSIFYOID = codeclassify0.oid
+    </select>
 </mapper>

--
Gitblit v1.9.3