From b642788dda56b058e2a4c40a9c43e29a5db85865 Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期一, 14 八月 2023 09:35:28 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/utils/HttpUtil.java                                 |  142 +++
 Source/UBCS-WEB/src/views/integration/applicationForm.vue                                                           |    3 
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyFor410MainPanel.java                       |  662 +++++++++++++--
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/utils/ListUtil.java                                 |  172 ++++
 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeClassifyTemplateMapper.xml                         |    2 
 Source/UBCS-WEB/src/views/integration/systemInfo.vue                                                                |    3 
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeDataMainPanelDataProvider.java                  |    5 
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyFor410SearchMainPanel.java                 |   88 ++
 Source/UBCS/ubcs-codeApply/src/test/java/tt.json                                                                    |   44 +
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/AttarSearchPanel.java                               |    2 
 Source/UBCS-WEB/src/views/integration/integrationIndex.vue                                                          |    6 
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/BaseModel.java                               |    3 
 Source/UBCS/ubcs-codeApply/src/main/resources/properties/conf.properties                                            |    7 
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/TokenUserObject.java                         |  264 ++++++
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyFor410Dialog.java                          |   47 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/FormulaServiceImpl.java             |    2 
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/CodeDataObject.java                          |    4 
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyFor410SearchDialog.java                    |  168 ++++
 Source/UBCS-WEB/src/components/work/BusinessWork.vue                                                                |    8 
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyPanelFor410.java                           |   63 +
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClstemplateServiceImpl.java     |    2 
 Source/UBCS/ubcs-codeApply/pom.xml                                                                                  |    5 
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeReferTreePanel.java                             |    9 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingSystemConfigServiceImpl.java |   11 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java               |   64 
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/RMDataReferTempDialog.java                          |   16 
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/UserObject.java                              |   40 
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyPanelFor410ActionListener.java             |  164 +++
 Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/util/VciBaseUtil.java             |   36 
 Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/VCIFlowserviceImpl.java          |   17 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeApplySwingController.java         |   80 +
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/MdmUIInfoVO.java            |    2 
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/DataGrid.java                                |  115 ++
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyFor410SearchProvider.java                  |  118 ++
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingSystemConfig.java          |    6 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java           |   21 
 Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/service/impl/FlowBusinessServiceImpl.java   |   10 
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyFor410TreePanel.java                       |   16 
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeDataMainPanel.java                              |   17 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/ComponentRule.java                    |   32 
 40 files changed, 2,236 insertions(+), 240 deletions(-)

diff --git a/Source/UBCS-WEB/src/components/work/BusinessWork.vue b/Source/UBCS-WEB/src/components/work/BusinessWork.vue
index bfba631..503cf32 100644
--- a/Source/UBCS-WEB/src/components/work/BusinessWork.vue
+++ b/Source/UBCS-WEB/src/components/work/BusinessWork.vue
@@ -107,12 +107,14 @@
       this.editingRow = null;
       //淇濆瓨
       let datas=this.tableData.map(item=> {
-        let newitem = Object.assign(item, {
+        let newitem = {
           codeClassifyOid: item.codeclsfid,
           templateOid: this.templateId,
           editInProcess: true,
-          data: item
-        });
+          data: item,
+          oid:item.oid,
+          ts:item.ts
+        }
         return newitem;
       })
       batchUpdateCode(datas).then(res => {
diff --git a/Source/UBCS-WEB/src/views/integration/applicationForm.vue b/Source/UBCS-WEB/src/views/integration/applicationForm.vue
index 6cd1ac7..a6c4e23 100644
--- a/Source/UBCS-WEB/src/views/integration/applicationForm.vue
+++ b/Source/UBCS-WEB/src/views/integration/applicationForm.vue
@@ -29,6 +29,7 @@
             stateParam: {},
             option: {
                 height: "auto",
+                tip:false,
                 index: true,
                 border: true,
                 addBtn: false,
@@ -172,4 +173,4 @@
         },
     }
 }
-</script>
\ No newline at end of file
+</script>
diff --git a/Source/UBCS-WEB/src/views/integration/integrationIndex.vue b/Source/UBCS-WEB/src/views/integration/integrationIndex.vue
index 1c3a45a..c7cff47 100644
--- a/Source/UBCS-WEB/src/views/integration/integrationIndex.vue
+++ b/Source/UBCS-WEB/src/views/integration/integrationIndex.vue
@@ -47,8 +47,8 @@
                             </template>
                         </avue-crud>
                     </el-card>
-                    <el-card :style="{ marginTop: '20px' }">
-                        <avue-crud :data="rangeData" :option="optinoRange" ref="crudRange" @row-update="handleUpdate"
+                    <el-card :style="{ marginTop: '20px'}">
+                        <avue-crud :style="{ marginTop: '-20px'}" :data="rangeData" :option="optinoRange" ref="crudRange" @row-update="handleUpdate"
                             @row-dblclick="handleRowClick">
                         </avue-crud>
                     </el-card>
@@ -439,4 +439,4 @@
 ::v-deep(.el-transfer-panel) {
     width: 270px;
 }
-</style>
\ No newline at end of file
+</style>
diff --git a/Source/UBCS-WEB/src/views/integration/systemInfo.vue b/Source/UBCS-WEB/src/views/integration/systemInfo.vue
index 2b7e248..c1cf5ae 100644
--- a/Source/UBCS-WEB/src/views/integration/systemInfo.vue
+++ b/Source/UBCS-WEB/src/views/integration/systemInfo.vue
@@ -46,6 +46,7 @@
             data: [],
             option: {
                 height: "auto",
+              tip:false,
                 border: true,
                 align: 'center',
                 menuAlign: 'center',
@@ -231,4 +232,4 @@
 ::v-deep(.avue-crud .el-select) {
     width: 100px !important;
 }
-</style>
\ No newline at end of file
+</style>
diff --git a/Source/UBCS/ubcs-codeApply/pom.xml b/Source/UBCS/ubcs-codeApply/pom.xml
index 04d6bcb..28cb216 100644
--- a/Source/UBCS/ubcs-codeApply/pom.xml
+++ b/Source/UBCS/ubcs-codeApply/pom.xml
@@ -50,6 +50,11 @@
         <artifactId>commons-collections4</artifactId>
         <version>4.1</version>
         </dependency>
+        <dependency>
+            <groupId>commons-beanutils</groupId>
+            <artifactId>commons-beanutils-core</artifactId>
+            <version>1.8.3</version>
+        </dependency>
     </dependencies>
     <distributionManagement>
         <repository>
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/AttarSearchPanel.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/AttarSearchPanel.java
index b4c284b..5aeab8e 100644
--- a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/AttarSearchPanel.java
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/AttarSearchPanel.java
@@ -1,7 +1,5 @@
 package com.vci.ubcs.codeapply;
 
-import com.vci.base.ui.swing.VCISwingUtil;
-import com.vci.base.ui.swing.components.VCIJButton;
 import com.vci.base.ui.swing.components.VCIJLabel;
 import com.vci.base.ui.swing.components.VCIJPanel;
 import com.vci.base.ui.swing.components.VCIJTextField;
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
index 11b60ee..69d7a80 100644
--- 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
@@ -1,16 +1,19 @@
 package com.vci.ubcs.codeapply;
 
-import com.vci.base.common.resource.CommonProperties;
+import com.alibaba.cloud.commons.lang.StringUtils;
+import com.alibaba.fastjson.JSONObject;
 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.object.TokenUserObject;
+import com.vci.ubcs.codeapply.object.UserObject;
 import com.vci.ubcs.codeapply.utils.ConfigUtils;
-import com.vci.ubcs.system.user.entity.User;
-
+import com.vci.ubcs.codeapply.utils.HttpUtil;
 import javax.swing.*;
 import java.awt.*;
+import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.Map;
 
@@ -18,7 +21,7 @@
 
 
 	private static final long serialVersionUID = -3286164100581857853L;
-	private static User userOb = new User();
+	private static TokenUserObject tokenUserObject = new TokenUserObject();
 	private String userName = null;
 	private String codeValue = null;
 	private CodeApplyFor410DialogActionListener actionListener = new CodeApplyFor410DialogActionListener(this);
@@ -27,6 +30,7 @@
 	private CodeApplyPanelFor410 mainPal = null;
 	private Component parentComponet = null;
 	private Map<String, String> attrNameAndValMap = new LinkedHashMap();//瀛樺偍灞炴�у悕绉帮紙鍖呭惈鍐呴儴鍚嶇О鍜屽閮ㄥ悕绉帮級鍜屽搴旂殑鍊�
+	private String tokenUrl= ConfigUtils.getConfigValue("410.code.token.url","http://127.0.0.1:37000/ubcs-auth/oauth/token");
 
 	/**
 	 * 瀛樺偍鍒嗙被鐨凪ap,key:鍒嗙被鍚嶇О锛寁alue锛氬垎绫诲��
@@ -47,6 +51,7 @@
 	}
 	public CodeApplyFor410Dialog(Frame frame, String userName, String clsfName, String deptName, String[] libName){
 		super(frame, true);
+		VCISwingUtil.setClientMainFrame(frame);
 		try {
 			this.setModal(true);
 			parentComponet = frame;
@@ -62,6 +67,7 @@
 
 	public CodeApplyFor410Dialog(JDialog dialog, String userName, String clsfName, String deptName, String[] libName) {
 		super(dialog, true);
+		VCISwingUtil.setClientMainFrame(new Frame());
 		try {
 			this.setModal(true);
 			parentComponet = dialog;
@@ -76,10 +82,33 @@
 		}
 	}
 
-	private void initUserInfo() {
-//		userOb.set("127.0.0.1");
-//		userOb.setModules("TC闆嗘垚浠g爜鐢宠");
-//		userOb.setUserName(userName);
+	private void initUserInfo() throws Exception {
+		/*userOb.set("127.0.0.1");
+		userOb.setModules("TC闆嗘垚浠g爜鐢宠");
+		userOb.setUserName(userName);*/
+		Map<String,String> headerMap=new HashMap<>();
+		headerMap.put("Tenant-Id",ConfigUtils.getConfigValue("410.code.token.tenantId","000000"));
+		headerMap.put("Authorization",ConfigUtils.getConfigValue("410.code.token.authorization","Basic c3dvcmQ6c3dvcmRfc2VjcmV0"));
+		headerMap.put("Content-Type",ConfigUtils.getConfigValue("410.code.token.contentType","application/x-www-form-urlencoded"));
+
+		UserObject userObject=new UserObject();
+		Map<String,String> parmarMap=new HashMap<>();
+		//userObject.set("Tenant-Id",ConfigUtils.getConfigValue("410.code.token.tenantId","000000"));
+		/*userObject.setUsername("admin");
+		userObject.setPassword("21232f297a57a5a743894a0e4a801fc3");
+		userObject.setGrant_type("password");
+		userObject.setScope("all");
+		Object object = JSONObject.toJSON(userObject);*/
+		parmarMap.put("username","admin");
+		parmarMap.put("password","21232f297a57a5a743894a0e4a801fc3");
+		parmarMap.put("scope","all");
+		parmarMap.put("grant_type","password");
+		String result=HttpUtil.sendFormPost(tokenUrl,parmarMap,headerMap);
+		if (StringUtils.isNotBlank(result)) {
+			tokenUserObject = JSONObject.toJavaObject(JSONObject.parseObject(result), TokenUserObject.class);
+		}else{
+			throw  new Exception("楠岃瘉鐢ㄦ埛閴存潈淇℃伅澶辫触!");
+		}
 	}
 
 	public void buildDialog() {
@@ -110,7 +139,7 @@
 	private void bulidPal() throws Exception {
 		this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
 		this.setTitle("浠g爜鐢宠");
-		mainPal = new CodeApplyPanelFor410(this,userOb, true, clsfName, deptName,libName);
+		mainPal = new CodeApplyPanelFor410(this,tokenUserObject, true, clsfName, deptName,libName);
 
 		VCIJPanel btnPal = new VCIJPanel();
 		btnPal.add(okBtn);
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
index fbcbe95..3161b07 100644
--- 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
@@ -1,10 +1,12 @@
 package com.vci.ubcs.codeapply;
 
+import com.alibaba.fastjson.JSONObject;
 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.corba.common.VCIError;
 import com.vci.ubcs.code.vo.pagemodel.*;
 import com.vci.ubcs.codeapply.object.*;
 import com.vci.ubcs.codeapply.swing.IntegerTextField;
@@ -17,6 +19,7 @@
 import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
 import com.vci.ubcs.starter.web.util.VciBaseUtil;
 import com.vci.ubcs.system.user.entity.User;
+import io.swagger.models.auth.In;
 import net.logstash.logback.encoder.org.apache.commons.lang3.StringUtils;
 import org.apache.commons.collections4.CollectionUtils;
 
@@ -28,6 +31,7 @@
 import java.awt.event.ActionListener;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
+import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.List;
@@ -67,7 +71,7 @@
 	private int maxStringLength = 100;
 	private int levelPositon = -1;
 	private TransmitTreeObject transTreeObject = new TransmitTreeObject();
-	private  User userObj;
+	private  TokenUserObject tokenUserObject;
 	private String deptName;
 	//瀛樺偍姣忎釜瀹為檯 鐮佹鍒楀搴旂殑鐮佹瀵硅薄
 	protected Map<Integer,CodeBasicSecVO> columnSecMap = new LinkedHashMap<Integer,CodeBasicSecVO>();
@@ -81,10 +85,11 @@
 	private boolean isSpecialRuleFlag = false;
 	private String specialSectioName = "";
 	private VCIJPanel rulePal = new VCIJPanel();
-
+	private StringBuffer tempStr= new StringBuffer();//鍙彉鐮佹鐨勫��;
+	private  String  levelRes="";
 	private String[] specialSecVals = new String[0];
 	private RMDataTransmitObject transmitForRMData = null;
-
+	private CodeRuleVO codeRuleVO=null;
 	/**
 	 * 灞炴�D涓庡睘鎬у搴旂殑鎺т欢涔嬮棿鐨勬槧灏凪AP
 	 */
@@ -110,15 +115,15 @@
 	private CodeClassifyTemplateVO currentCodeClassifyTemplateVO;
 	// 瀹為檯鐨�
 	private VCIJDialog realDialogInstance = null;
-	public CodeApplyFor410MainPanel(TransmitTreeObject transTreeObject, User userObj, CodeClassifyTemplateVO currentCodeClassifyTemplateVO) {
+	public CodeApplyFor410MainPanel(TransmitTreeObject transTreeObject, TokenUserObject tokenUserObject, CodeClassifyTemplateVO currentCodeClassifyTemplateVO) {
 		this.transTreeObject = transTreeObject;
-		this.userObj = userObj;
+		this.tokenUserObject = tokenUserObject;
 		this.currentCodeClassifyTemplateVO=currentCodeClassifyTemplateVO;
 	}
 
-	public CodeApplyFor410MainPanel(TransmitTreeObject transTreeObject,User userObj,String deptName,CodeClassifyTemplateVO currentCodeClassifyTemplateVO) {
+	public CodeApplyFor410MainPanel(TransmitTreeObject transTreeObject,TokenUserObject tokenUserObject,String deptName,CodeClassifyTemplateVO currentCodeClassifyTemplateVO) {
 		this.transTreeObject = transTreeObject;
-		this.userObj = userObj;
+		this.tokenUserObject = tokenUserObject;
 		this.deptName = deptName;
 		this.currentCodeClassifyTemplateVO=currentCodeClassifyTemplateVO;
 	}
@@ -147,8 +152,10 @@
 		/**绯荤粺鍙姞杞戒唬鐮侀」  濡傛灉libName涓嶄负绌猴紝鐩存帴鑾峰彇瀵瑰簲鐨勪唬鐮侀」**/
 		Map<String,String> condtionMap=new HashMap<>();
 		condtionMap.put("codeClassId", rmType.getOid());
-		R r= HttpUtil.sendGet(url+"/getCodeRuleByClassifyFullInfo",condtionMap,new HashMap<>());
-		CodeRuleVO codeRuleVO=new CodeRuleVO();
+		Map<String,String> headerMap=new HashMap<>();
+		headerMap.put("Blade-Auth",this.tokenUserObject.getAccess_token());
+		R r= HttpUtil.sendGet(url+"/getCodeRuleByClassifyFullInfo",condtionMap,headerMap);
+		codeRuleVO=new CodeRuleVO();
 		if(r.isSuccess()){
 			Object object= r.getData();
 			if(object!=null) {
@@ -565,7 +572,9 @@
 					Map<String,String> condtionMap=new HashMap<>();
 					condtionMap.put("secOid", secOid);
 					condtionMap.put("parentClassifyValueOid", parentClassifyValueOid);
-					R r=HttpUtil.sendGet(url+"/listCodeClassifyValueBySecOid",condtionMap,new HashMap<>());
+					Map<String,String> headerMap=new HashMap<>();
+					headerMap.put("Blade-Auth",this.tokenUserObject.getAccess_token());
+					R r=HttpUtil.sendGet(url+"/listCodeClassifyValueBySecOid",condtionMap,headerMap);
 					List<CodeClassifyValue> codeClassifyValueList=new ArrayList<>();
 					if(r.isSuccess()){
 						Object object= r.getData();
@@ -667,6 +676,17 @@
 				} else
 						//鏄紩鐢ㄧ爜娈�
 					if (secObj.getSecType().equals("coderefersec")) {
+
+						if (!secCombo.isFlag()){
+							secCombo.setFlag(true);
+							secCombo.getSearchBtn().setVisible(true);
+							secCombo.getSearchBtn().addActionListener(new ActionListener() {
+								@Override
+								public void actionPerformed(ActionEvent e) {
+									doSearch(secCombo,secObj);
+								}
+							});
+						}
 					/*RefSecObject refObj = getRefSecObj(secObj.getId());
 					DefaultComboBoxModel aModel = getRefSecComboBox(refObj);
 					secCombo.setModel(aModel);
@@ -695,7 +715,7 @@
 
 				*/} else
 					//灞傜骇鐮佹鐮佸�兼樉绀虹殑鏄�夋嫨鐨勪唬鐮侀」鐨勫悕绉�
-					if(secObj.getSecType().equals("coderefersec")) {
+					if(secObj.getSecType().equals("codelevelsec")) {
 						CodeClassify rmObj = (CodeClassify) this.transTreeObject.getCurrentTreeNode().getObj();
 						secCombo.addItem(rmObj);
 					} else {
@@ -722,12 +742,12 @@
 		RMDataTransmitObject transmit=new RMDataTransmitObject();
 		transmit.setLibId(libId);
 		transmit.setClassifyId(classifyId);
-		CodeClassify rmType = (CodeClassify) this.transTreeObject.getCurrentTreeNode().getObj();
-		transmit.setRmTypeObject(rmType);
+		CodeClassify codeClassify = (CodeClassify) this.transTreeObject.getCurrentTreeNode().getObj();
+		transmit.setRmTypeObject(codeClassify);
 		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.setClassifyCode(codeClassify.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);
@@ -792,7 +812,7 @@
 					lbl.setToolTipText("鐐瑰嚮姝ゅ鑾峰彇妯℃澘瀵瑰簲瑙勫垯鐨勫��");
 					lbl.addMouseListener(new MouseAdapter() {
 						public void mouseClicked(MouseEvent e){
-						//	getComptAttrValue(attrObj,attrIdToCtrlMaps,transmitForRMData.getTempPropObjsList());
+						getComptAttrValue(attrObj,attrIdToCtrlMaps);
 
 						}
 					});
@@ -866,77 +886,6 @@
 		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鐨勫睘鎬у垪琛�
@@ -1081,7 +1030,10 @@
 		/**绯荤粺鍙姞杞戒唬鐮侀」  濡傛灉libName涓嶄负绌猴紝鐩存帴鑾峰彇瀵瑰簲鐨勪唬鐮侀」**/
 		Map<String,String> condtionMap=new HashMap<>();
 		condtionMap.put("oid", attrId);
-		R r=HttpUtil.sendGet(url+"/listComboboxItems",condtionMap,new HashMap<>());
+		Map<String,String> headerMap=new HashMap<>();
+		headerMap.put("Blade-Auth",this.tokenUserObject.getAccess_token());
+
+		R r=HttpUtil.sendGet(url+"/listComboboxItems",condtionMap,headerMap);
 		List<KeyValue> keyValueList=new ArrayList<>();
 		if(r.isSuccess()){
 			Object object= r.getData();
@@ -1201,16 +1153,59 @@
 		return new GridBagConstraints(gridx, gridy, gridwidth, gridheight,weightx, weighty, anchor, fill, new Insets(padxy, padxy, padxy,padxy), padxy, padxy);
 	}
 
+	/**鏍规嵁灞炴�х粍鍚堣鍒欒幏鍙栧睘鎬х殑鍊� **/
+	private void getComptAttrValue( CodeClassifyTemplateAttrVO  tempPropObj, LinkedHashMap<String, JComponent> attrIdToCtrlMaps) {
+		Map<String,String> dataMap=new HashMap<>();
+		Map<String,String> condtionMap=new HashMap<>();
+		attrIdToCtrlMaps.forEach((key,compt)->{
+			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;
+				}
+			}
+			dataMap.put(key,value);
+			condtionMap.put("dataMap["+key+"]",value);
+		});
+		condtionMap.put("componentRuleValue",tempPropObj.getComponentRule());
+		Map<String,String> headerMap=new HashMap<>();
+		headerMap.put("Blade-Auth",this.tokenUserObject.getAccess_token());
 
+		R r= HttpUtil.sendGet(url+"/getValueByFormula",condtionMap,headerMap);
+		String value="";
+		if(r.isSuccess()){
+			value= r.getData().toString();
+			if(attrIdToCtrlMaps.containsKey(tempPropObj.getId())){
+				JComponent comp = attrInnerNameToCtrlMaps.get(tempPropObj.getId());
+				if(comp instanceof JTextComponent) {
+					((JTextComponent) comp).setText(value);
+				}
+			}
+			Object object= r.getData();
+			if(object!=null) {
+				value= object.toString();
 
-	/**
-	 * 鏍规嵁寮曠敤妯℃澘鐨刬d鑾峰彇寮曠敤妯℃澘瀵硅薄鍖呭惈鐨勬暟鎹�
-	 * <p>Description: </p>
-	 *
-	 * @author liujw
-	 * @time 2012-11-29
-	 * @param //referTempId 寮曠敤妯℃澘id
-	 */
+			}
+		}else{
+			VCIOptionPane.showMessage(this,r.getMsg());
+		}
+	}
+		/**
+		 * 鏍规嵁寮曠敤妯℃澘鐨刬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) {
 		// 鏈┖绐楀彛璋冪敤 鏈夊彲鑳芥潵鑷袱澶�
@@ -1223,7 +1218,11 @@
 			ownerDialog.setSize(880, 500);
 		}*/
 		//final String referTempId = tempPropObj.getReferBtmId();
-		final RMDataReferTempDialog dialog = new RMDataReferTempDialog(this,tempPropObj);
+		if(StringUtils.isBlank(tempPropObj.getReferConfig())){
+			VCIOptionPane.showMessage(this,"鍙傜収閰嶇疆淇℃伅涓嶆纭�,璇锋牳瀵癸紒");
+			return;
+		}
+		final RMDataReferTempDialog dialog = new RMDataReferTempDialog(this,tempPropObj.getReferConfig());
 		dialog.setDialogCallback(new Runnable() {
 			@Override
 			public void run() {
@@ -1268,6 +1267,437 @@
 		dialog.setVisible(true);
 	}
 
+	private void doSearch(VCIJComboxBox comboxBox,CodeBasicSecVO secObj){
+		if(StringUtils.isBlank(secObj.getReferConfig())){
+			VCIOptionPane.showMessage(this,"鍙傜収閰嶇疆淇℃伅涓嶆纭�,璇锋牳瀵癸紒");
+			return;
+		}
+		final RMDataReferTempDialog dialog = new RMDataReferTempDialog(this,secObj.getReferConfig());
+		dialog.setDialogCallback(new Runnable() {
+			@Override
+			public void run() {
+				KeyValue keyValue=new KeyValue();
+				keyValue= dialog.getKeyValue();
+				//for(CodeClassifyTemplateAttrVO obj : tempPropList) {
+				if (keyValue != null) {
+					AttrRangObjectWarper wrapper = new AttrRangObjectWarper(keyValue);
+					comboxBox.getModel().setSelectedItem(wrapper);
+				}
+			}
+		});
+		//dialog.initDialogSize(ownerDialog.getWidth(), ownerDialog.getHeight());
+		Dimension dime = Toolkit.getDefaultToolkit().getScreenSize();
+		int x = dime.width/2 - 400;
+		int y = dime.height/2 -300;
+		dialog.setLocation(x, y);
+		dialog.setSize(new Dimension(900, 600));
+		dialog.setModal(true);
+		dialog.setVisible(true);
+
+	}
+
+	/**
+	 * 妫�鏌ョ敵璇风爜鍊肩殑鏁版嵁濉啓鏄惁瀹屾暣
+	 * 1.妫�鏌ュ悇涓爜娈电殑鍊兼槸鍚﹀凡缁忓~鍐�
+	 * 2.濡傛灉鏈夋棩鏈熺爜娈碉紝骞朵笖鏃ユ湡鐮佹鐨勫�间负鍙慨鏀癸紝闇�鏍¢獙淇敼鍚庣殑鏃ユ湡鐨勬牸寮忔槸鍚︾鍚�
+	 * @return
+	 */
+	public boolean checkIsAllowed(){
+		Iterator<Integer> ite = compMaps.keySet().iterator();
+		JComponent compt = null;
+		/**鏍¢獙1锛氭鏌ュ悇涓爜娈电殑鍊兼槸鍚﹀凡缁忓~鍐欏畬鎴�**/
+		while(ite.hasNext()) {
+			int k = ite.next();
+			//濡傛灉鏄眰绾х爜锛岃烦鍑轰笉杩涜鍒ゆ柇
+			if(k == levelPositon) {
+				continue;
+			}
+			compt = compMaps.get(k);
+			if(compt instanceof VCIJComboBox) {
+				Object obj = ((VCIJComboBox) compt).getSelectedItem();
+				if(obj == null || "".equals(obj)) {
+					VCIOptionPane.showMessageDialog(this, "璇峰皢淇℃伅濉啓瀹屾暣锛�");
+					return false;
+				}
+			}
+		}
+
+		int len = columnSecMap.size();
+		for (int i = 0; i < len; i++) {
+			CodeBasicSecVO secObj = columnSecMap.get(i);
+			String cType = secObj.getSecType();
+			/**鏍¢獙2锛氬鏋滄湁鏃ユ湡鐮佹锛屽苟涓旀棩鏈熺爜娈电殑鍊间负鍙慨鏀癸紝闇�鏍¢獙淇敼鍚庣殑鏃ユ湡鐨勬牸寮忔槸鍚︾鍚�**/
+			if (cType.equals("codedatesec")) {
+				String df =secObj.getCodeDateFormatStr();
+				SimpleDateFormat dateFormate = new SimpleDateFormat(df);
+				//String curDate = dateFormate.format(Calendar.getInstance().getTime());
+				dateFormate.setLenient(false);//璁剧疆涓ユ牸鏍¢獙
+				String dateStr = (String) ((VCIJComboBox)secAndComMap.get(secObj.getId())).getSelectedItem();
+				try {
+					dateFormate.parse(dateStr);
+				} catch (ParseException e) {
+					VCIOptionPane.showMessageDialog(this, "淇敼鍚庣殑鏃ユ湡鏍煎紡璺熸棩鏈熺爜娈佃缃殑鏍煎紡涓嶅尮閰嶏紝璇蜂慨鏀癸紒");
+					return false;
+				}
+				/**鏍¢獙涓夛細鍙彉鐮佹鐨勬牎楠�**/
+			} else if (cType .equals( "codevariablesec")) {
+				 tempStr = new StringBuffer();
+				String codeSecLength =secObj.getCodeSecLength();
+				int secLen= Integer.parseInt(codeSecLength);
+				//鍙栧嚭鐢ㄦ埛杈撳叆鐨勫��
+				String varStr = (String) ((VCIJComboBox)secAndComMap.get(secObj.getId())).getSelectedItem();
+				if(varStr.length() >secLen){
+					VCIOptionPane.showMessageDialog(this, "杈撳叆鐨勫彲鍙樼爜鍊艰秴鍑轰簡璇ョ爜娈电殑瀹氫箟闀垮害"+codeSecLength+"璇蜂慨鏀�");
+					return false;
+				}
+				//濡傛灉鏄浐瀹氶暱搴︼紝鍒欓渶瑕佽�冭檻濉厖鍜岃ˉ浣�
+//				if(varObj.getLenType() == SectionConstant.SectionLengthType.VARLEN) {
+				if(varStr.length() < secLen) {//娌℃湁杈惧埌鏈�澶ч暱搴�
+					if(secObj.getCodeFillType().equals("L")) {//濡傛灉闇�瑕佸乏濉厖
+						tempStr = new StringBuffer();
+						for(int j=0;j<secLen - varStr.length();j++) {
+							tempStr.append(secObj.getCodeFillSeparator());
+						}
+						tempStr.append(varStr);
+					} else if(secObj.getCodeFillType().equals("R")) {//濡傛灉闇�瑕佸彸濉厖
+						tempStr = new StringBuffer();
+						tempStr.append(varStr);
+						for(int j=0;j<secLen- varStr.length();j++) {
+							tempStr.append(secObj.getCodeFillSeparator());
+						}
+					} else {
+						tempStr = new StringBuffer();
+						tempStr.append(varStr);
+					}
+				} else {
+					tempStr = new StringBuffer();
+					tempStr.append(varStr);
+				}
+//				}
+				/**灞傜骇鐮佹鐨勬牎楠�**/
+			} else if (cType.equals("codelevelsec")) {
+				Integer levelVal= secObj.getCodeLevelValue();
+				levelRes = getRuleLevelCodeFromTree(secObj.getCodeLevelValue());
+				if("".equals(levelRes)) {
+//					setBuildingHasError(true);
+					if(secObj.getCodeLevelType().equals("min")) {
+						VCIOptionPane.showError(this, "褰撳墠缂栫爜椤硅鍒欎腑鍖呭惈灞傜骇鐮佹锛屽苟涓斿眰绾ц缃负鏈�灏忓眰锛岄�夋嫨鐨勫綋鍓嶈妭鐐瑰寘鍚瓙鑺傜偣锛屼笉鍏佽鍦ㄥ綋鍓嶅垎绫讳笅杩涜鐮佸�肩敵璇凤紒");
+					}else {
+						VCIOptionPane.showError(this, "璇疯嚦灏戝湪绗� " + levelVal + "灞傦紙鍒嗙被锛夋坊鍔犳暟鎹紒锛堢紪鐮侀」鑺傜偣涓嶇畻)" +
+							"\n锛堟敞鎰忥細濡傛灉绠椾笂缂栫爜椤硅妭鐐癸紝鍒欒嚦灏戝簲璇ュ湪绗� " + (levelVal + 1) + " 灞傦紙鍒嗙被锛夋坊鍔犳暟鎹紒锛�");
+					}
+
+					return false;
+				}
+			} else if(cType  .equals("codeclassifysec")) {//鍒嗙被鐮佹鐮佸�兼坊鍔犱簡绌哄�硷紝闇�瑕佺壒娈婂垽鏂竴涓�
+				// update by xchao 2013.07.09
+//				ClsfCodeValObject obj = (ClsfCodeValObject) ((VCIJComboBox)secAndComMap.get(secObj.getId())).getSelectedItem();
+				// 鍒嗙被鐮佺爜鍊间负绌烘椂锛屼篃鍙互鐢宠缂栫爜
+//				if("".equals(obj.getValue())) {
+//					VCIOptionPane.showMessageDialog(this, "璇烽�夋嫨鐮佹锛�"+secObj.getName()+" 瀵瑰簲鐨勭爜鍊�");
+//					return false;
+//				}
+			} else if(cType .equals( "codefixedsec")) {//鍥哄畾鐮佹鐮佸�兼坊鍔犱簡绌哄�硷紝闇�瑕佺壒娈婂垽鏂竴涓�
+				CodeFixedValueVO obj = (CodeFixedValueVO) ((VCIJComboBox)secAndComMap.get(secObj.getId())).getSelectedItem();
+				if("".equals(obj.getId())) {
+					VCIOptionPane.showMessageDialog(this, "璇烽�夋嫨鐮佹锛�"+secObj.getName()+" 瀵瑰簲鐨勭爜鍊�");
+					return false;
+				}
+			} else if(cType.equals("coderefersec")) {//寮曠敤鐮佹鐮佸�兼坊鍔犱簡绌哄�硷紝闇�瑕佺壒娈婂垽鏂竴涓�
+				KeyValue keyValue = ((AttrRangObjectWarper)((VCIJComboBox)secAndComMap.get(secObj.getId())).getSelectedItem()).getKeyValue();
+				if(keyValue!=null&&("".equals(keyValue.getKey()))) {
+					VCIOptionPane.showMessageDialog(this, "璇烽�夋嫨鐮佹锛�"+secObj.getName()+" 瀵瑰簲鐨勭爜鍊�");
+					return false;
+				}
+			}
+		}
+
+		return true;
+	}
+	private LinkedList<VCIBaseTreeNode> parentTreeNodeListDesc = new LinkedList<VCIBaseTreeNode>();
+	private LinkedList<VCIBaseTreeNode> parentTreeNodeListAsc = new LinkedList<VCIBaseTreeNode>();
+	private String getRuleLevelCodeFromTree(int level){
+		String res = null;
+		TransmitTreeObject CodeClassifyTreeObj = this.transTreeObject;
+		if(CodeClassifyTreeObj != null){
+			VCIBaseTreeNode node = CodeClassifyTreeObj.getCurrentTreeNode();
+			parentTreeNodeListDesc.clear();
+			//姣忔杩涜鐢宠鏃堕兘閲嶆柊鍒濆鍖栧瓨鍌ㄦ爲缁撴瀯鐨勫璞�
+			parentTreeNodeListAsc.clear();
+			calcParentTreeNode(node);
+			for(int i = parentTreeNodeListDesc.size() - 1; i >=0; i--){
+				parentTreeNodeListAsc.add(parentTreeNodeListDesc.get(i));
+			}
+			/***鏍¢獙锛氱敵璇风爜鍊兼椂锛屽眰绾х殑澶勭悊 level = 0 鏍囩ず浠绘剰灞傦紝level = 99 鏍囩ず鏈�灏忓眰  ,鍏跺畠鎸囨寚瀹氬眰BEGIN**/
+			if(level == 0) {
+				res = ((CodeClassify)node.getObj()).getId();
+				/***level == 99 骞朵笖鏄彾瀛愯妭鐐规椂锛屾墠鍏佽杩涜缂栫爜鐢宠**/
+			} else if(level == 99) {
+				if(checkIsHasSonCodeClassify(node)) {
+					res = ((CodeClassify)node.getObj()).getId();
+				}else {
+					res = "";
+				}
+			} else if(level == 99 && !checkIsHasSonCodeClassify(node)){
+				res = "";
+			} else if(parentTreeNodeListAsc.size() > level + 1) {
+				VCIBaseTreeNode levelNode = parentTreeNodeListAsc.get(level + 1);
+				CodeClassify codeClassify = (CodeClassify) levelNode.getObj();
+				res = codeClassify.getId();
+			} else {
+				res = "";
+			}
+			/**************************************END**********************************/
+		}
+		return res;
+	}
+	/**
+	 * 妫�鏌ラ�夋嫨鐨勫綋鍓嶅垎绫绘槸鍚︽湁瀛愬垎绫�
+	 * <p>Description: </p>
+	 *
+	 * @author Administrator
+	 * @time 2013-4-10
+	 * @return
+	 */
+	public boolean checkIsHasSonCodeClassify(VCIBaseTreeNode node) {
+		int count = 0;
+		if(node.isExpand()) {
+			count = node.getChildCount();
+		} else {
+			//鍒欓渶瑕佸幓鏌ヨ涓嬮潰鐨勬槸鍚﹀瓨鍦�
+			CodeClassify codeClassify = (CodeClassify) node.getObj();
+			codeClassify.getOid();
+			Map<String,String> condtionMap=new HashMap<>();
+			condtionMap.put("codeClassId", codeClassify.getOid());
+			Map<String,String> headerMap=new HashMap<>();
+			headerMap.put("Blade-Auth",this.tokenUserObject.getAccess_token());
+			R r= HttpUtil.sendGet(url+"/countChildrenByClassifyOid",condtionMap,headerMap);
+			if(r.isSuccess()){
+				Object object= r.getData();
+				count=(int)object;
+			}
+		}
+		if(count <= 0) {
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * 鎻愪緵璋冪敤鑰呰幏鍙栧悇涓爜娈电殑鎷兼帴鍊�
+	 * <p>Description: </p>
+	 *
+	 * @author xf
+	 * @time 2012-5-28
+	 * @return
+	 */
+	public List<KeyValue> getSectionValues(){
+		List<KeyValue> keyValueList=new ArrayList<>();
+		if(getCodeRuleVO()!=null) {
+			List<CodeBasicSecVO> codeBasicSecVOList = this.getCodeRuleVO().getSecVOList();
+			if (!CollectionUtils.isEmpty(codeBasicSecVOList)) {
+				for (int i = 0; i < codeBasicSecVOList.size(); i++) {
+					CodeBasicSecVO secObj=codeBasicSecVOList.get(i);
+					KeyValue keyValue = new KeyValue();
+					String cVal = "";
+					String secObjOid = secObj.getOid();
+					String secType = secObj.getSecType();
+					/***濡傛灉绯荤粺閫夋嫨鐨勬槸鐗规畩瑙勫垯锛屽嵆宸ヨ鍥炬牱浠g爜瑙勫垯锛岀粍鍒唬鍙风爜娈佃嚜鍔ㄨ缃负绌�**Begin***/
+					if (isSpecialRuleFlag && secObj.getName().equals(specialSectioName)) {
+						cVal = "";
+						/**********************************End************************/
+					} else if (secType.equals("codedatesec")) {//鏃ユ湡鐮佹鐨勫��
+						cVal = (String) ((VCIJComboBox) secAndComMap.get(secObj.getId())).getSelectedItem();
+					} else if (secType.equals("codevariablesec")) {//鍙彉鐮佹鐨勫��
+//						cVal = (String) ((VCIJComboBox)secAndComMap.get(secObj.getId())).getSelectedItem();
+						cVal = tempStr.toString();
+					} else if (secType.equals("codeclassifysec")) {//鍒嗙被鐮佹鐮佸��
+						cVal = ((CodeClassifyValue) ((VCIJComboBox) secAndComMap.get(secObj.getId())).getSelectedItem()).getOid();
+					} else if (secType.equals( "codefixedsec")) {//鍥哄畾鐮佹鐮佸��
+						cVal = ((CodeFixedValueVO) ((VCIJComboBox) secAndComMap.get(secObj.getId())).getSelectedItem()).getId();
+					} else if (secType.equals("coderefersec")) {//寮曠敤鐮佹鐮佸��
+//					cVal = ((CodeValueObject)((VCIJComboBox)secAndComMap.get(secObj.getId())).getSelectedItem()).getPlcodeval();
+						KeyValue newKeyValue = ((AttrRangObjectWarper) ((VCIJComboBox) secAndComMap.get(secObj.getId())).getSelectedItem()).getKeyValue();
+						cVal=newKeyValue.getKey();
+					/*} else if (secType == SectionConstant.SectionType.SECCHAR) {//鍒嗛殧绗�
+						cVal = secObj.getName();*/
+					} else if (secType.equals("codelevelsec")) {//灞傜骇鐮佹
+						cVal = levelRes;
+					} else if (secType.equals("codeserialsec")) {
+							continue;
+					} else {
+						cVal = (String) ((VCIJComboBox) secAndComMap.get(secObj.getId())).getSelectedItem();
+					}
+					keyValue.setKey(secObjOid);
+					keyValue.setValue(cVal);
+					keyValueList.add(keyValue);
+				}
+			}
+		}
+		return keyValueList;
+	}
+	/**
+	 * 鏍¢獙妯℃澘灞炴�т俊鎭槸鍚︽纭�
+	 * <p>Description: </p>
+	 *
+	 * @author Administrator
+	 * @time 2013-3-23
+	 * @return
+	 */
+	public String[][] checkInputValues() {
+		Map<String, String> attrNameMap = new LinkedHashMap<String, String>();
+		Map<String, String> tempProMap = new LinkedHashMap<String, String>();
+
+		// 鍚勫睘鎬х殑鍐呴儴鍚嶇О
+		LinkedList<String> listInnerNames = new LinkedList<String>();
+		// 瀛樺偍灞炴�х殑澶栭儴鍚嶇О
+		LinkedList<String> listOutNames = new LinkedList<String>();
+		// 鍚勫睘鎬у搴旂殑鏁版嵁鍊�
+		LinkedList<String> listValues = new LinkedList<String>();
+		// 鍚勫睘鎬х殑绫诲瀷
+		LinkedList<String> listDataTypes = new LinkedList<String>();
+		Map<String,CodeClassifyTemplateAttrVO> codeClassifyTemplateAttrVOMap=transmitForRMData.getTempPropObjsList().stream().collect(Collectors.toMap(s -> s.getId(), t -> t));
+		Iterator<String> keys = attrIdToCtrlMaps.keySet().iterator();
+		JComponent compt = null;
+		JComponent firstCompt = null;
+		while (keys.hasNext()) {
+			String attrOid = keys.next();
+			compt = attrIdToCtrlMaps.get(attrOid);
+			String value = "";
+			CodeClassifyTemplateAttrVO propObj = codeClassifyTemplateAttrVOMap.get(attrOid);
+
+			boolean isExistError = false;
+			String message = "";
+
+			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().getKey();
+				} else if (objItem instanceof String) { // Boolean绫诲瀷鐨勪細鎻愪緵0\1閫夋嫨
+					value = (String) objItem;
+				}
+			}
+
+			boolean checkNullInput = true;
+			if (checkNullInput) {
+				// 妫�鏌ュ睘鎬ф槸鍚﹀彲浠ヤ负绌� isNull=0 琛ㄧず涓嶈兘涓虹┖锛宨sNull=1琛ㄧず鍙互涓虹┖
+				if ("true".equals(propObj.getRequireFlag())) {// 涓嶈兘涓虹┖鏃堕渶瑕佸垽鏂緭鍏ョ殑鍊兼槸鍚︿负绌�
+					if ((value == null) || (value != null && value.trim().length() == 0)) {
+						isExistError = true;
+						compt.requestFocus();
+						message = propObj.getName() + " 涓嶈兘涓虹┖锛岃閲嶆柊杈撳叆锛�";
+					}
+				}
+				// 鏍¢獙闀垮害
+				else if ((value != null && !value.equals(""))
+					&& value.length() > Integer.valueOf(propObj.getControlLength())
+					&& !(propObj.getAttributeDataType().toUpperCase().equals(VciFieldTypeEnum.VTDate)||
+					propObj.getAttributeDataType().toUpperCase().equals(VciFieldTypeEnum.VTDateTime))
+				) {
+					isExistError = true;
+					compt.requestFocus();
+					message = propObj.getName() + " 鐨勫睘鎬у��  " + value
+						+ " 鐨勯暱搴︿笉鑳借秴杩�" + propObj.getControlLength();
+				}
+
+				// 妫�鏌ヨ緭鍏ョ殑鍊兼槸鍚︽弧瓒冲睘鎬ф牎楠岃鍒欙紙濡傛灉瀛樺湪锛�
+				if (!isExistError && !propObj.getComponentRule().equals("")) { // 瀛樺湪鐫�灞炴�ф牎楠岃鍒�
+					// 鏃ユ湡绫诲瀷鐨勪笉妫�鏌ュ睘鎬ф牎楠岃鍒�
+//					if (propObj.getAttributeDataType().toUpperCase().equals(Constants.DATA_TYPE_DATE)|| (compt instanceof VCIJComboBox)) {
+//						// 涓嶅仛妫�鏌�
+//					} else {
+//						initAllAttrRuleMaps();
+//						// 鍋氭鏌�
+//						if (!value.equals("") && allAttrRulesMap.containsKey(propObj.getAttrRuleId())) {
+//							// TODO 璋冪敤灞炴�ф牎楠岃鍒欑殑鎺ュ彛锛屾牎楠屽綋鍓嶈緭鍏ョ殑鍊兼槸鍚︽弧瓒宠鍒欐潯浠�
+//							AttrRuleObject attrRuleObj = allAttrRulesMap.get(attrObj.getAttrRuleId());
+//							String regex = attrRuleObj.getRule();
+//							Pattern p = Pattern.compile(regex);
+//							if (!p.matcher(value).matches()) {
+//								// 涓嶅尮閰�
+//
+//								isExistError = true;
+//								compt.requestFocus();
+//								message = attrObj.getName() + "鐨勮緭鍏ュ�� " + value
+//									+ " 涓嶆弧瓒宠灞炴�у畾涔夌殑鏍¢獙瑙勫垯  \n\n" + ""
+//									+ attrRuleObj.getRuleName() + "锛歕t"
+//									+ attrRuleObj.getRule() + "\n\n"
+//									+ "璇烽噸鏂拌緭鍏ワ紒";
+//							}
+//						}
+//					}
+				}
+			}
+
+			// 鏄惁瀛樺湪閿欒
+			if (isExistError) {
+				//setErrorMessageFlag(true);
+				listInnerNames.clear();
+				listOutNames.clear();
+				listValues.clear();
+				listDataTypes.clear();
+				VCIOptionPane.showMessage(this, message);
+				break;
+			} else {
+				//setErrorMessageFlag(false);
+				// 濡傛灉鏄棩鏈熺被鍨嬶紝涓斿睘鎬у彲绌猴紝鍙堟病鏈夐�夋嫨鏃ユ湡鍊硷紝鍒欑粰涓粯璁ゅ��
+				if (value == null && propObj.getAttributeDataType().toUpperCase().equals(VciFieldTypeEnum.VTDate)) {
+					SimpleDateFormat sdfDateAndTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+					value = sdfDateAndTime.format(new Date());
+				}else if(value == null&&propObj.getAttributeDataType().toUpperCase().equals(VciFieldTypeEnum.VTDateTime)){
+					SimpleDateFormat sdfDateAndTime = new SimpleDateFormat("HH:mm:ss");
+					value = sdfDateAndTime.format(new Date());
+				}
+				// 鍏ㄩ儴楠岃瘉閫氳繃
+				value = value.trim();
+				listInnerNames.add(propObj.getId());
+				listOutNames.add(propObj.getName());
+				listValues.add(value);
+				if(propObj.getAttributeDataType().equals(VciFieldTypeEnum.VTFilePath)){
+					listDataTypes.add("String");
+				}else{
+					listDataTypes.add(propObj.getAttributeDataType());
+				}
+
+				attrNameMap.put(propObj.getName(), value);
+				tempProMap.put(propObj.getId(), propObj.getId());
+
+			}
+			// update by xchao 2012.07.11
+			if (firstCompt == null) {
+				firstCompt = compt;
+			}
+		}// end while(keys.hadNext())
+
+
+		LinkedList<String[]> res = new LinkedList<String[]>();
+
+		res.add(listInnerNames.toArray(new String[] {}));
+		res.add(listValues.toArray(new String[] {}));
+		res.add(listDataTypes.toArray(new String[] {}));
+		res.add(listOutNames.toArray(new String[]{}));
+		return res.toArray(new String[][] {});
+	}
+
+	private void calcParentTreeNode(VCIBaseTreeNode node){
+		parentTreeNodeListDesc.add(node);
+		if(node.getParent() != null){
+			calcParentTreeNode((VCIBaseTreeNode)node.getParent());
+		} else{
+			// 鏍硅妭鐐�
+			// 鏉ヨ嚜涓撶敤搴擄紙甯﹀垎绫绘樉绀虹殑锛�
+			// 鐢变簬涓撶敤搴擄紙甯﹀垎绫绘樉绀虹殑锛夊皢搴撹妭鐐瑰悜涓婃彁鍗囦簡涓�绾э紝搴撹妭鐐瑰氨鏄牴鑺傜偣
+			// 鍥犳涓轰繚鎸佺粺璁★紝鏂逛究鏍规嵁灞傜骇鍙栧垎绫荤爜锛堜唬鍙凤級锛屽湪姝ゅ皢鍘熷洜鐨勬牴娣诲姞鍒伴泦鍚�
+			if(node.getObj() instanceof CodeClassify){
+				parentTreeNodeListDesc.add(new VCIBaseTreeNode("鎵�鏈夎祫婧愭暟鎹�", "root"));
+			}
+		}
+	}
 
 	//鑾峰彇绯荤粺閰嶇疆鐨勭爜娈电爜鍊�
 	private Map<String, String> getSpecialValMap(String[] vals) {
@@ -1280,4 +1710,44 @@
 	private boolean isNumber(String value) {
 		return Pattern.matches("[0-9]+", value);
 	}
+
+	public LinkedHashMap<String, JComponent> getAttrIdToCtrlMaps() {
+		return attrIdToCtrlMaps;
+	}
+
+	public void setAttrIdToCtrlMaps(LinkedHashMap<String, JComponent> attrIdToCtrlMaps) {
+		this.attrIdToCtrlMaps = attrIdToCtrlMaps;
+	}
+
+	public LinkedHashMap<String, JComponent> getAttrInnerNameToCtrlMaps() {
+		return attrInnerNameToCtrlMaps;
+	}
+
+	public void setAttrInnerNameToCtrlMaps(LinkedHashMap<String, JComponent> attrInnerNameToCtrlMaps) {
+		this.attrInnerNameToCtrlMaps = attrInnerNameToCtrlMaps;
+	}
+
+	public TransmitTreeObject getTransTreeObject() {
+		return transTreeObject;
+	}
+
+	public void setTransTreeObject(TransmitTreeObject transTreeObject) {
+		this.transTreeObject = transTreeObject;
+	}
+
+	public CodeRuleVO getCodeRuleVO() {
+		return codeRuleVO;
+	}
+
+	public void setCodeRuleVO(CodeRuleVO codeRuleVO) {
+		this.codeRuleVO = codeRuleVO;
+	}
+
+	public TokenUserObject getTokenUserObject() {
+		return tokenUserObject;
+	}
+
+	public void setTokenUserObject(TokenUserObject tokenUserObject) {
+		this.tokenUserObject = tokenUserObject;
+	}
 }
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyFor410SearchDialog.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyFor410SearchDialog.java
new file mode 100644
index 0000000..fdfd4bd
--- /dev/null
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyFor410SearchDialog.java
@@ -0,0 +1,168 @@
+package com.vci.ubcs.codeapply;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.Toolkit;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.util.LinkedList;
+
+
+
+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.swing.components.table.VCIJTablePanel;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO;
+import com.vci.ubcs.codeapply.object.BaseModel;
+import com.vci.ubcs.codeapply.object.CodeClassify;
+
+public class CodeApplyFor410SearchDialog extends VCIJDialog {
+
+	/**
+	 *
+	 */
+	private static final long serialVersionUID = 1L;
+	private CodeApplyPanelFor410 ownerPanel;
+	private VCIJLabel codeName = new VCIJLabel("浠g爜锛�");
+	private VCIJTextField  txtCodeName = new VCIJTextField(false);
+	private VCIJButton btnSearch= VCISwingUtil.createVCIJButton("btnSearch", "鏌ヨ", "鏌ヨ", "search.png", null);
+	private VCIJButton btnOk = VCISwingUtil.createVCIJButton("replace", "纭畾", "纭畾", "ok.gif",null);
+	private VCIJButton btnCancel = VCISwingUtil.createVCIJButton("cancel", "鍙栨秷", "鍙栨秷", "cancel.gif",null);
+	private String strName = "";
+	private String str = "";
+	public CodeApplyFor410SearchDialog(CodeApplyPanelFor410 ownerPanel){
+		//super(LogonApplication.frame,true);
+		this.ownerPanel = ownerPanel;
+		this.setTitle("鏌ヨ浠g爜");
+		Dimension dime = Toolkit.getDefaultToolkit().getScreenSize();
+		int x = dime.width/2 - 300;
+		int y = dime.height/2 - 300;
+		this.setLocation(x, y);
+		this.setSize(new Dimension(700, 600));
+		init();
+		setModal(true);
+		setVisible(true);
+	}
+	private LinkedList<VCIJButton> selfCustomButtons = new LinkedList<VCIJButton>();
+	{
+		selfCustomButtons.add(btnOk);
+		selfCustomButtons.add(btnCancel);
+	}
+
+	public void init(){
+		setLayout(new BorderLayout());
+		add(nothPanel(),BorderLayout.NORTH);
+		add(createCenterTPanel(), BorderLayout.CENTER);
+		cancel();
+	}
+	private VCIJPanel nothPanel(){
+		VCIJPanel pal = new VCIJPanel();
+		VCIJPanel nothPanel = new VCIJPanel();
+		nothPanel.setLayout(null);
+		nothPanel.setPreferredSize(new Dimension(300,40));
+		codeName.setBounds(10, 5, 60, 28);
+		txtCodeName.setBounds(70, 5, 200, 28);
+		btnSearch.setBounds(300, 5, 80, 25);
+		nothPanel.add(codeName);
+		nothPanel.add(txtCodeName);
+		nothPanel.add(btnSearch);
+		pal.setLayout(new BorderLayout());
+		pal.add(nothPanel);
+		pal.setVisible(true);
+		return pal;
+	}
+	private CodeApplyFor410SearchMainPanel codeDataMainPanel=null;
+	private VCIJPanel createCenterTPanel(){
+		codeDataMainPanel=new CodeApplyFor410SearchMainPanel();
+		CodeApplyFor410SearchProvider  dataProvider=new CodeApplyFor410SearchProvider(this);
+		codeDataMainPanel.setDataProvider(dataProvider);
+		codeDataMainPanel.setCustomTopPanel(nothPanel());
+		codeDataMainPanel.buildPanel();
+		VCIJTable table = codeDataMainPanel.getTablePanel().getTable();
+		table.addMouseListener(new MouseAdapter() {
+			public void mouseClicked(MouseEvent e) {
+				if (e.getButton() == 1 && e.getClickCount() == 2) {
+					btnOk.doClick();
+				}
+			}
+		});
+		return codeDataMainPanel;
+	}
+
+
+	public VCIJTablePanel<BaseModel> getPanel() {
+		return codeDataMainPanel.getTablePanel();
+	}
+	/**
+	 * 鎸夐挳浜嬩欢
+	 */
+	public void cancel(){
+		btnCancel.addActionListener(new ActionListener() {
+			@Override
+		public void actionPerformed(ActionEvent e) {
+			// TODO Auto-generated method stub
+			 btn_Cancel();	//鍙栨秷
+			}
+		});
+		btnSearch.addActionListener(new ActionListener(){
+			public void actionPerformed(ActionEvent arg0) {
+				searchButton_action();//鏌ヨ
+			}
+		});
+		btnOk.addActionListener(new ActionListener(){
+			public void actionPerformed(ActionEvent arg0) {
+				okButton_action();//纭畾
+			}
+		});
+	}
+	public void okButton_action(){
+		int len = codeDataMainPanel.getTablePanel().getSelectedRowObjects().size();
+		if (len==0) {
+			VCIOptionPane.showMessage(this, "璇峰厛閫夋嫨瑕佹搷浣滅殑鏁版嵁");
+			return;
+		}else if (len>1) {
+			VCIOptionPane.showMessage(this, "涓�娆″彧鑳介�夋嫨涓�鏉℃暟鎹繘琛屾搷浣�");
+			return;
+		}
+		LinkedList<BaseModel> list = codeDataMainPanel.getTablePanel().getSelectedRowObjects();
+		for (BaseModel object : list) {
+			str = object.getId();
+			setStr(str);
+		}
+		this.dispose();
+	}
+
+	public void searchButton_action(){
+		strName = txtCodeName.getText();
+		setStrName(strName);
+		codeDataMainPanel.getTablePanel().refreshTableData();
+	}
+
+	public CodeApplyPanelFor410 getOwnerPanel() {
+		return ownerPanel;
+	}
+
+	public void setOwnerPanel(CodeApplyPanelFor410 ownerPanel) {
+		this.ownerPanel = ownerPanel;
+	}
+
+	public String getStr() {
+		return str;
+	}
+	public void setStr(String str) {
+		this.str = str;
+	}
+	public String getStrName() {
+		return strName;
+	}
+	public void setStrName(String strName) {
+		this.strName = strName;
+	}
+	public void btn_Cancel(){
+		this.dispose();
+	}
+}
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyFor410SearchMainPanel.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyFor410SearchMainPanel.java
new file mode 100644
index 0000000..34c0ac4
--- /dev/null
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyFor410SearchMainPanel.java
@@ -0,0 +1,88 @@
+package com.vci.ubcs.codeapply;
+
+import com.vci.base.ui.swing.VCISwingUtil;
+import com.vci.base.ui.swing.components.VCIJPanel;
+import com.vci.base.ui.swing.components.table.AbstractVCIJTableDataProvider;
+import com.vci.base.ui.swing.components.table.VCIJTablePanel;
+import com.vci.ubcs.codeapply.object.BaseModel;
+
+import java.awt.*;
+
+public class CodeApplyFor410SearchMainPanel  extends VCIJPanel {
+	/**
+	 * 鑷畾涔夐《閮ㄦ帶浠跺尯鍩�
+	 */
+	private VCIJPanel customTopPanel = null;
+	public void buildPanel(){
+		this.init();
+	}
+	private void init(){
+		initComponents();
+	}
+
+	private void initComponents(){
+		setLayout(new BorderLayout());
+		add(createNorthBaseAttrsPanel(), BorderLayout.NORTH);
+		add(createCenterDataTablePanel(), BorderLayout.CENTER);
+	}
+
+	private VCIJPanel createNorthBaseAttrsPanel(){
+		VCIJPanel palRes = new VCIJPanel(new BorderLayout());
+		if(getCustomTopPanel() != null) {
+			palRes.add(getCustomTopPanel(), BorderLayout.CENTER);
+		}
+		return palRes;
+	}
+
+	/**
+	 * 鏍规嵁绫诲瀷鏄剧ずtable
+	 */
+	private VCIJTablePanel<BaseModel> tablePanel = null;
+	private AbstractVCIJTableDataProvider<BaseModel> dataProvider = null;
+	private VCIJPanel createCenterDataTablePanel() {
+		tablePanel = new VCIJTablePanel<BaseModel>(dataProvider);
+		//tablePanel.setCustomButtons(getCombinedButtons());
+
+		tablePanel.setShowExport(true);
+		tablePanel.setShowPaging(true);
+		tablePanel.setShowProgressBar(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();
+		return tablePanel;
+	}
+
+	public VCIJPanel getCustomTopPanel() {
+		return customTopPanel;
+	}
+
+	public void setCustomTopPanel(VCIJPanel customTopPanel) {
+		this.customTopPanel = customTopPanel;
+	}
+
+	public VCIJTablePanel<BaseModel> getTablePanel() {
+		return tablePanel;
+	}
+
+	public void setTablePanel(VCIJTablePanel<BaseModel> tablePanel) {
+		this.tablePanel = tablePanel;
+	}
+
+	public AbstractVCIJTableDataProvider<BaseModel> getDataProvider() {
+		return dataProvider;
+	}
+
+	public void setDataProvider(AbstractVCIJTableDataProvider<BaseModel> dataProvider) {
+		this.dataProvider = dataProvider;
+	}
+}
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyFor410SearchProvider.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyFor410SearchProvider.java
new file mode 100644
index 0000000..297ad47
--- /dev/null
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyFor410SearchProvider.java
@@ -0,0 +1,118 @@
+package com.vci.ubcs.codeapply;
+
+import java.util.*;
+import com.alibaba.cloud.commons.lang.StringUtils;
+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.table.AbstractVCIJTableDataProvider;
+import com.vci.base.ui.swing.components.table.VCIJTableNode;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO;
+import com.vci.ubcs.codeapply.object.*;
+import com.vci.ubcs.codeapply.utils.ConfigUtils;
+import com.vci.ubcs.codeapply.utils.HttpUtil;
+import com.vci.ubcs.codeapply.utils.ListUtil;
+import com.vci.ubcs.starter.web.util.VciBaseUtil;
+import org.apache.commons.collections4.CollectionUtils;
+
+public class CodeApplyFor410SearchProvider extends AbstractVCIJTableDataProvider<BaseModel> {
+	private String[] fields = {};
+	private boolean view = true;
+	private String codeName;
+	LinkedList<String> fieldList = new LinkedList<String>();
+	private CodeApplyFor410SearchDialog dialog = null;
+	private String url= ConfigUtils.getConfigValue("410.code.url","http://127.0.0.1:36014/codeApplySwingController");
+	public CodeApplyFor410SearchProvider(CodeApplyFor410SearchDialog dialog){
+		this.dialog = dialog;
+	}
+
+
+	@Override
+	public String[] getSpecialColumns() {
+		LinkedList<String> nameList = new LinkedList<String>();
+		CodeClassifyTemplateVO codeClassifyTemplateVO=this.dialog.getOwnerPanel().getCurrentCodeClassifyTemplateVO();
+		if(codeClassifyTemplateVO!=null){
+			if(!CollectionUtils.isEmpty(codeClassifyTemplateVO.getAttributes())){
+				codeClassifyTemplateVO.getAttributes().stream().forEach(codeClassifyTemplateAttrVO -> {
+					fieldList.add(codeClassifyTemplateAttrVO.getId());
+					nameList.add(codeClassifyTemplateAttrVO.getName());
+				});
+			}
+		}
+		fields = fieldList.toArray(new String[]{});
+		return nameList.toArray(new String[]{});
+	}
+
+	@Override
+	public int getTotal() {
+		// TODO Auto-generated method stub
+		return this.total;
+	}
+	@Override
+	public VCIJTableNode<BaseModel> getNewRowNode(BaseModel dataObj) {
+		Map<String,String> dataMap= dataObj.getData();
+		Map<String, String> defaultDataMap= VciBaseUtil.objectToMapString(dataObj);
+		defaultDataMap.putAll(dataMap);
+		VCIJTableNode<BaseModel> res = new VCIJTableNode<BaseModel>(dataObj);
+		int i=dataColumnStartIndex;
+		String data="";
+		for (String field:fields){
+			if(defaultDataMap.containsKey(field+"_text")){
+				 data=defaultDataMap.getOrDefault(field+"_text","");
+			}else if(defaultDataMap.containsKey(field+"Text")){
+				data=defaultDataMap.getOrDefault(field+"Text","");
+			}else{
+				data=defaultDataMap.getOrDefault(field,"");
+			}
+
+			res.setPropertyValue(getColumns()[i++], data);
+		}
+		return res;
+	}
+
+	@Override
+	public BaseModel[] getDatas(int pageIndex, int pageSize) {
+		DataGrid dataGrid=new DataGrid();
+		try{
+			CodeClassifyTemplateVO codeClassifyTemplateVO=this.dialog.getOwnerPanel().getCurrentCodeClassifyTemplateVO();
+			CodeClassify codeClassify = (CodeClassify) this.dialog.getOwnerPanel().getRightMainPanel().getTransTreeObject().getCurrentTreeNode().getObj();
+			Map<String,String> condtionMap=new HashMap<>();
+			condtionMap.put("codeClassifyOid",codeClassify.getOid());
+			condtionMap.put("templateOid",codeClassifyTemplateVO.getOid());
+			condtionMap.put("page",pageIndex+"");
+			condtionMap.put("limit",pageSize+"");
+			if(StringUtils.isNotBlank(this.dialog.getStrName())){
+				condtionMap.put("conditionMap[id]",this.dialog.getStrName());
+			}
+			//condtionMap.put("conditionMap[lcStatus]","Released");
+			Map<String,String> headerMap=new HashMap<>();
+			headerMap.put("Blade-Auth",this.dialog.getOwnerPanel().getTokenUserObject().getAccess_token());
+			R r= HttpUtil.sendGet(url+"/gridTableDataByClassifyOid",condtionMap,headerMap);
+			if(r.isSuccess()){
+				Object object= r.getData();
+				if(object!=null) {
+					ObjectMapper objectMapper = new ObjectMapper();
+					dataGrid = objectMapper.readValue(object.toString(), DataGrid.class);
+				}
+			}else{
+				VCIOptionPane.showMessage(this.dialog,r.getMsg());
+			}
+		} catch (
+		JsonProcessingException e) {
+			e.printStackTrace();
+		}
+		this.total= new Long(dataGrid.getTotal()).intValue();
+		List<Map>  dataList= dataGrid.getData();
+		List<BaseModel> hostInfos=new ArrayList<>();
+		//List<BaseModel> hostInfos=	ListUtil.listMapParseListObj(dataList, BaseModel.class);
+		dataList.stream().forEach(map->{
+			BaseModel baseModel=ListUtil.mapParseJavaBean(map,BaseModel.class);
+			baseModel.setData(map);
+			hostInfos.add(baseModel);
+		});
+
+		//List<BaseModel> hostInfos = (List<BaseModel>) dataList.stream().map(entity -> JSONUtil.toBean(JSONUtil.parseObj(entity), BaseModel.class)).collect(Collectors.toList());
+
+		return hostInfos.toArray(new BaseModel[]{});
+	}
+}
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
index 20df2fa..6025fe6 100644
--- 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
@@ -9,6 +9,7 @@
 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.object.TokenUserObject;
 import com.vci.ubcs.codeapply.utils.ConfigUtils;
 import com.vci.ubcs.codeapply.utils.HttpUtil;
 import com.vci.ubcs.system.user.entity.User;
@@ -33,7 +34,7 @@
 
 	private CodeClassify currentRmType = null;
 	private TransmitTreeObject transmitTreeObject = new TransmitTreeObject();
-	private User userObj = null;
+	private TokenUserObject tokenUserObject = null;
 	private VCIBaseTreeNode selNode = null;
 	private String url=ConfigUtils.getConfigValue("410.code.url","http://127.0.0.1:36014/codeApplySwingController");
 	/**
@@ -42,9 +43,9 @@
 	private String clsfName = null;
 	//    private String[] clsfVal = new String[2];
 	private String libName = "";
-	public CodeApplyFor410TreePanel(CodeClassify currentRmType, User userObj, String clsfName, String libName) {
+	public CodeApplyFor410TreePanel(CodeClassify currentRmType, TokenUserObject tokenUserObject, String clsfName, String libName) {
 		this.currentRmType = currentRmType;
-		this.userObj = userObj;
+		this.tokenUserObject = tokenUserObject;
 		this.clsfName = clsfName;
 		this.libName = libName;
 		if (this.libName == null) {
@@ -178,8 +179,9 @@
 		Map<String,String> condtionMap=new HashMap<>();
 		condtionMap.put("desc", this.clsfName);
 		condtionMap.put("codeLibName",rootNode.toString());
-
-		R r= HttpUtil.sendGet(url+"/getRMTypeByDescAndLib",condtionMap,new HashMap<>());
+		Map<String,String> headerMap=new HashMap<>();
+		headerMap.put("Blade-Auth",this.tokenUserObject.getAccess_token());
+		R r= HttpUtil.sendGet(url+"/getRMTypeByDescAndLib",condtionMap,headerMap);
 		List<CodeClassify> codeClassifyList = new ArrayList<>();
 		if(r.isSuccess()){
 			Object object= r.getData();
@@ -212,7 +214,9 @@
 		/**绯荤粺鍙姞杞戒唬鐮侀」  濡傛灉libName涓嶄负绌猴紝鐩存帴鑾峰彇瀵瑰簲鐨勪唬鐮侀」**/
 		Map<String,String> condtionMap=new HashMap<>();
 		condtionMap.put("parentId", parentId );
-		R r=HttpUtil.sendGet(url+"/selectCodeClassifyVOByParentId",condtionMap,new HashMap<>());
+		Map<String,String> headerMap=new HashMap<>();
+		headerMap.put("Blade-Auth",this.tokenUserObject.getAccess_token());
+		R r=HttpUtil.sendGet(url+"/selectCodeClassifyVOByParentId",condtionMap,headerMap);
 		List<CodeClassify> codeClassifyList = new ArrayList<>();
 		if(r.isSuccess()){
 			Object object= r.getData();
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
index 26c2c58..ef66b57 100644
--- 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
@@ -12,6 +12,7 @@
 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.object.TokenUserObject;
 import com.vci.ubcs.codeapply.utils.ConfigUtils;
 import com.vci.ubcs.codeapply.utils.HttpUtil;
 import com.vci.ubcs.system.user.entity.User;
@@ -45,7 +46,7 @@
 	private VCIJLabel applylbl = new VCIJLabel("鐢宠鐮佸�硷細");
 	public VCIJTextField applyTxt = new VCIJTextField(40);
 	private JComboBox codeItemCombo = new JComboBox();
-	private User userObj = null;;
+	private TokenUserObject tokenUserObject = null;;
 
 	private CodeClassifyTemplateVO currentCodeClassifyTemplateVO;
 	private boolean isIntegrate = false; //闆嗘垚鏃朵笉鏄剧ず鎵归噺鐢宠鎸夐挳
@@ -72,16 +73,16 @@
 
 	/***
 	 *
-	 * @param userObj
+	 * @param tokenUserObject
 	 * @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;
+	public CodeApplyPanelFor410(CodeApplyFor410Dialog owner , TokenUserObject tokenUserObject, boolean isIntegrate, String clsfName, String deptName, String[] libName){
+		this.tokenUserObject = tokenUserObject;
 		this.owner =owner;
-		rightMainPanel = new CodeApplyFor410MainPanel(transmitTreeObject,userObj,getCurrentCodeClassifyTemplateVO());
+		rightMainPanel = new CodeApplyFor410MainPanel(transmitTreeObject,tokenUserObject,getCurrentCodeClassifyTemplateVO());
 		this.isIntegrate = isIntegrate;
 		this.clsfName = clsfName;
 		this.deptName = deptName;
@@ -169,7 +170,9 @@
 		if(libName.length>0) {
 			condtionMap.put("libName", StringUtils.join(libName,",") );
 		}
-		R r= HttpUtil.sendGet(url+"/getRMLibByName",condtionMap,new HashMap<>());
+		Map<String,String> headerMap=new HashMap<>();
+		headerMap.put("Blade-Auth",this.tokenUserObject.getAccess_token());
+		R r= HttpUtil.sendGet(url+"/getRMLibByName",condtionMap,headerMap);
 		List<CodeClassify> codeClassifyList = new ArrayList<>();
 		if(r.isSuccess()){
 			Object object= r.getData();
@@ -233,7 +236,7 @@
 		String  libName=currentCodeClassify.getName();
 		String classOid=currentCodeClassify.getOid();
 		final CodeApplyPanelFor410 self = this;
-		typeTreePanel = new CodeApplyFor410TreePanel(currentCodeClassify,userObj,clsfName, libName) {
+		typeTreePanel = new CodeApplyFor410TreePanel(currentCodeClassify,tokenUserObject,clsfName, libName) {
 			private static final long serialVersionUID = 8121108576137012228L;
 			@Override
 			public void tree_valueChanged(TreeSelectionEvent e) {
@@ -264,7 +267,10 @@
 				/**绯荤粺鍙姞杞戒唬鐮侀」  濡傛灉libName涓嶄负绌猴紝鐩存帴鑾峰彇瀵瑰簲鐨勪唬鐮侀」**/
 				Map<String, String> condtionMap = new HashMap<>();
 				condtionMap.put("codeClassifyOid", classOid);
-				R r = HttpUtil.sendGet(url+"/getUsedTemplateByClassifyOid", condtionMap, new HashMap<>());
+				Map<String,String> headerMap=new HashMap<>();
+				headerMap.put("Blade-Auth",this.tokenUserObject.getAccess_token());
+
+				R r = HttpUtil.sendGet(url+"/getUsedTemplateByClassifyOid", condtionMap, headerMap);
 				boolean res = false;
 				if (r.isSuccess()) {
 					//List<CodeClassifyTemplateVO> codeClassifyTemplateVOList=new ArrayList<>();
@@ -288,7 +294,7 @@
 				initBtnStatus(res);
 			}
 		}
-		rightMainPanel = new CodeApplyFor410MainPanel(transmitTreeObject,userObj,deptName,getCurrentCodeClassifyTemplateVO());
+		rightMainPanel = new CodeApplyFor410MainPanel(transmitTreeObject,tokenUserObject,deptName,getCurrentCodeClassifyTemplateVO());
 		scrollPane.setViewportView(rightMainPanel);
 		rightMainPanel.buildMainPanel(1);
 		int location = jspLeftToRight.getDividerLocation();
@@ -309,7 +315,10 @@
 			/**绯荤粺鍙姞杞戒唬鐮侀」  濡傛灉libName涓嶄负绌猴紝鐩存帴鑾峰彇瀵瑰簲鐨勪唬鐮侀」**/
 			Map<String,String> condtionMap=new HashMap<>();
 			condtionMap.put("codeClassifyOid",curentCodeClassify.getOid());
-			R r=HttpUtil.sendGet(url+"/getUsedTemplateByClassifyOid",condtionMap,new HashMap<>() );
+			Map<String,String> headerMap=new HashMap<>();
+			headerMap.put("Blade-Auth",this.tokenUserObject.getAccess_token());
+
+			R r=HttpUtil.sendGet(url+"/getUsedTemplateByClassifyOid",condtionMap,headerMap);
 			if(r.isSuccess()) {
 				CodeClassifyTemplateVO codeClassifyTemplateVO=new CodeClassifyTemplateVO();
 				Object object= r.getData();
@@ -350,7 +359,7 @@
 		transmitTreeObject.setCurrentTreeNode(selectedTreeNode);
 		if(selectedTreeNode.isRoot() && selectedTreeNode.getObj() instanceof String) return;
 		scrollPane = new JScrollPane();
-		rightMainPanel = new CodeApplyFor410MainPanel(transmitTreeObject,userObj,deptName,getCurrentCodeClassifyTemplateVO());
+		rightMainPanel = new CodeApplyFor410MainPanel(transmitTreeObject,tokenUserObject,deptName,getCurrentCodeClassifyTemplateVO());
 		scrollPane.setViewportView(rightMainPanel);
 		rightMainPanel.buildMainPanel(1);
 		VCIJPanel rightPanel = new VCIJPanel();
@@ -381,6 +390,14 @@
 		this.applyTxt.setText(codeVal);
 	}
 
+	public VCIJTextField getApplyTxt() {
+		return applyTxt;
+	}
+
+	public void setApplyTxt(VCIJTextField applyTxt) {
+		this.applyTxt = applyTxt;
+	}
+
 	public CodeClassifyTemplateVO getCurrentCodeClassifyTemplateVO() {
 		return currentCodeClassifyTemplateVO;
 	}
@@ -388,4 +405,28 @@
 	public void setCurrentCodeClassifyTemplateVO(CodeClassifyTemplateVO currentCodeClassifyTemplateVO) {
 		this.currentCodeClassifyTemplateVO = currentCodeClassifyTemplateVO;
 	}
+
+	public CodeApplyFor410MainPanel getRightMainPanel() {
+		return rightMainPanel;
+	}
+
+	public void setRightMainPanel(CodeApplyFor410MainPanel rightMainPanel) {
+		this.rightMainPanel = rightMainPanel;
+	}
+
+	public TransmitTreeObject getTransmitTreeObject() {
+		return transmitTreeObject;
+	}
+
+	public void setTransmitTreeObject(TransmitTreeObject transmitTreeObject) {
+		this.transmitTreeObject = transmitTreeObject;
+	}
+
+	public TokenUserObject getTokenUserObject() {
+		return tokenUserObject;
+	}
+
+	public void setTokenUserObject(TokenUserObject tokenUserObject) {
+		this.tokenUserObject = tokenUserObject;
+	}
 }
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
index a0730e9..0b977594 100644
--- 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
@@ -1,12 +1,31 @@
 package com.vci.ubcs.codeapply;
 
+import com.alibaba.cloud.commons.lang.StringUtils;
+import com.alibaba.fastjson.JSONObject;
+import com.vci.base.ui.swing.VCIOptionPane;
+import com.vci.base.ui.swing.components.VCIJComboBox;
+import com.vci.ubcs.code.dto.CodeOrderDTO;
+import com.vci.ubcs.code.dto.CodeOrderSecDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
+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.codeapply.utils.HttpUtil;
+import com.vci.ubcs.starter.web.pagemodel.KeyValue;
+import org.apache.commons.collections4.CollectionUtils;
+
+import javax.swing.*;
+import javax.swing.text.JTextComponent;
+import javax.swing.tree.TreePath;
 import java.awt.event.ActionEvent;
-import java.util.LinkedHashMap;
+import java.util.*;
 
 public class CodeApplyPanelFor410ActionListener extends CommonActionListener {
 	private CodeApplyPanelFor410 owner = null;
 	private LinkedHashMap<String, Runnable> actionMaps = new LinkedHashMap<String, Runnable>();
-
+	boolean codeAlreadExist = false;
+	private String url= ConfigUtils.getConfigValue("410.code.url","http://127.0.0.1:36014/codeApplySwingController");
 	public CodeApplyPanelFor410ActionListener(CodeApplyPanelFor410 owner){
 		this.owner = owner;
 		this.initActionMap();
@@ -17,14 +36,16 @@
 			//batchApply();//鎵归噺瀵煎叆鐢宠浠g爜
 		}});
 		actionMaps.put("apply", new Runnable() { public void run() {
-			//apply();//鐮佸�肩敵璇�
+			apply();//鐮佸�肩敵璇�
 		}});
 		actionMaps.put("btnSearch", new Runnable() { public void run() {
-			//search();//浠g爜鏌ヨ
+			search();//浠g爜鏌ヨ
 		}});
 		actionMaps.put("clear", new Runnable() { public void run() {
-		//	clear();//娓呯┖灞炴��
+			clear();//娓呯┖灞炴��
 		}});
+
+
 	}
 
 	@Override
@@ -34,4 +55,137 @@
 			actionMaps.get(key).run();
 		}
 	}
+	private void apply() {
+		codeAlreadExist = false;
+		if(null == this.owner.getTransmitTreeObject().getCurrentTreeNode()) {
+			return;
+		}
+		CodeClassify codeClassify = (CodeClassify) this.owner.getTransmitTreeObject().getCurrentTreeNode().getObj();
+		if(codeClassify == null || "".equals(codeClassify.getOid())){
+			VCIOptionPane.showMessage(this.owner, "璇烽�夋嫨缂栫爜椤瑰垎绫伙紒");
+			return;
+		}
+		CodeClassifyTemplateVO codeClassifyTemplateVO = this.owner.getCurrentCodeClassifyTemplateVO();
+		if(codeClassifyTemplateVO!=null&&"".equals(codeClassifyTemplateVO.getOid())) {
+			VCIOptionPane.showMessageDialog(this.owner, "浠g爜椤规病鏈夐厤缃ā鏉�,涓嶅厑璁哥敵璇�!");
+			return;
+		}
+		CodeRuleVO codeRuleVO= this.owner.getRightMainPanel().getCodeRuleVO();
+		/**閫夋嫨鐨勫垎绫绘槸鍚﹀寘鍚鍒欑殑鏍¢獙**/
+		if(codeRuleVO==null||"".equals(codeRuleVO.getOid())) {
+			VCIOptionPane.showMessage(this.owner, "鍒嗙被:" + codeClassify.getName() + " 娌℃湁鍖呭惈瑙勫垯锛屾棤娉曠敵璇凤紒");
+			return;
+		}
+		//鏍¢獙瑙勫垯鏄惁濉啓鍚堟牸
+		if(!this.owner.getRightMainPanel().checkIsAllowed()) {
+			return;
+		}
+
+		//  妫�鏌ユā鏉垮悇灞炴�х殑杈撳叆鍊兼槸鍚︽弧瓒宠姹�
+		String[][] inputValues = this.owner.getRightMainPanel().checkInputValues();
+		//鑾峰彇灞炴�у悕绉板拰鍊肩殑闆嗗悎
+		Map<String, String> attrNameAndValMap = getAttrMap(inputValues);
+		String[] fields = inputValues[0];
+		String[] values = inputValues[1];
+		String[] dataTypes = inputValues[2];
+		String[] outNames = inputValues[3];
+		Map<String,String> dataMap=new HashMap<>();
+		for (int i=0;i<fields.length;i++){
+			dataMap.put(fields[i],values[i]);
+		}
+		List<KeyValue> keyValueList= this.owner.getRightMainPanel().getSectionValues();
+		if(CollectionUtils.isEmpty(keyValueList)){
+			VCIOptionPane.showMessage(this.owner, "鍒嗙被:" + codeClassify.getName() + " 娌℃湁鑾峰彇瑙勫垯鐮佹閫夋嫨鍊间俊鎭紝鏃犳硶鐢宠锛�");
+			return;
+		}
+		CodeOrderDTO codeOrderDTO=new CodeOrderDTO();
+		/**绯荤粺鍙姞杞戒唬鐮侀」  濡傛灉libName涓嶄负绌猴紝鐩存帴鑾峰彇瀵瑰簲鐨勪唬鐮侀」**/
+		codeOrderDTO.setCodeClassifyOid(codeClassify.getOid());
+		codeOrderDTO.setTemplateOid(codeClassifyTemplateVO.getOid());
+		codeOrderDTO.setCodeRuleOid(codeRuleVO.getOid());
+		List<CodeOrderSecDTO> secDTOList=new ArrayList<>();
+		keyValueList.stream().forEach(keyValue -> {
+			CodeOrderSecDTO codeOrderSecDTO=new CodeOrderSecDTO();
+			codeOrderSecDTO.setSecOid(keyValue.getKey());
+			codeOrderSecDTO.setSecValue(keyValue.getValue());
+			secDTOList.add(codeOrderSecDTO);
+		});
+		codeOrderDTO.setSecDTOList(secDTOList);
+		codeOrderDTO.setData(dataMap);
+		Object object = JSONObject.toJSON(codeOrderDTO);
+		Map<String,String> headerMap=new HashMap<>();
+		headerMap.put("content-type","application/json");
+		headerMap.put("Blade-Auth",this.owner.getTokenUserObject().getAccess_token());
+		R r= HttpUtil.sendPost(url+"/addSaveCode",object.toString(),headerMap);
+		//R r= HttpUtil.sendPost(url+"/addSaveCode",object.toString(),headerMap);
+		String code="";
+		if(r.isSuccess()){
+			code=r.getData().toString();
+			this.owner.setApplyCode(code);
+			this.owner.getApplyTxt().requestFocusInWindow();
+			this.owner.getApplyTxt().selectAll();
+			this.owner.setAttrNameAndValMap(attrNameAndValMap);
+		}else{
+			VCIOptionPane.showMessage(this.owner,r.getMsg());
+		}
+
+	}
+	private Map<String, String>  getAttrMap(String[][] inputValues) {
+		Map<String, String> attrNameAndValMap = new LinkedHashMap<String, String>();
+		String[] fields = inputValues[0];
+		String[] values = inputValues[1];
+		String[] outNames = inputValues[3];
+		for(int k = 0;k < fields.length;k++) {
+			attrNameAndValMap.put(fields[k], values[k]);//灞炴�у唴閮ㄥ悕绉�
+			attrNameAndValMap.put(outNames[k], values[k]);//灞炴�у閮ㄥ悕绉�
+		}
+
+		return attrNameAndValMap;
+	}
+	/***
+	 * 娓呯┖灞炴��
+	 */
+	private void clear(){
+		CodeApplyFor410MainPanel rightMainPanel2 = this.owner.getRightMainPanel();
+		LinkedHashMap<String, JComponent> attrInnerNameToCtrlMaps = rightMainPanel2.getAttrInnerNameToCtrlMaps();
+		if(attrInnerNameToCtrlMaps!=null&&attrInnerNameToCtrlMaps.size()>0){
+			attrInnerNameToCtrlMaps.forEach((key,component)->{
+				if(component instanceof JTextComponent){
+					if(((JTextComponent) component).isEnabled())
+						((JTextComponent) component).setText("");
+				}else if(component instanceof VCIJComboBox){
+					if(((VCIJComboBox) component).isEnabled())
+						((VCIJComboBox) component).setSelectedIndex(0);
+				}
+			});
+		}
+		String applyCode = this.owner.getApplyCode();
+		if(StringUtils.isBlank(applyCode)) {
+			this.owner.setApplyCode("");
+		}
+	}
+
+	/**
+	 *
+	 * 鏌ヨ浠g爜
+	 */
+	private void search(){
+		if(null == this.owner.getRightMainPanel().getTransTreeObject().getCurrentTreeNode()) {
+			return;
+		}
+		CodeClassify rmType = (CodeClassify) this.owner.getRightMainPanel().getTransTreeObject().getCurrentTreeNode().getObj();
+		if(rmType == null || "".equals(rmType.getId())){
+			VCIOptionPane.showMessage(this.owner, "璇烽�夋嫨浠g爜椤瑰垎绫伙紒");
+			return;
+		}
+
+		CodeApplyFor410SearchDialog dialog = new CodeApplyFor410SearchDialog(this.owner);
+		String str = dialog.getStr();
+		if (!str.equals("")) {
+			owner.applyTxt.setText(str);
+		}
+
+	}
+
+
 }
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeDataMainPanel.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeDataMainPanel.java
index b4da4c3..9585c59 100644
--- a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeDataMainPanel.java
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeDataMainPanel.java
@@ -6,6 +6,7 @@
 import com.vci.base.ui.swing.components.table.AbstractVCIJTableDataProvider;
 import com.vci.base.ui.swing.components.table.VCIJTablePanel;
 import com.vci.ubcs.codeapply.object.BaseModel;
+import com.vci.ubcs.codeapply.object.TokenUserObject;
 import com.vci.ubcs.codeapply.object.UIFormRefer;
 
 import java.awt.*;
@@ -22,8 +23,10 @@
 	private CodeDataMainPanelActionListener actionListener = new CodeDataMainPanelActionListener(this);
 	private VCIJButton btnSearch = VCISwingUtil.createVCIJButton("search", "鏌ヨ", "鏌ヨ", "search.png", actionListener);
 	private VCIJButton btnClear = VCISwingUtil.createVCIJButton("clear_search", "娓呯┖鏌ヨ鏉′欢", "娓呯┖鏌ヨ鏉′欢", "clear.gif", actionListener);
-	public CodeDataMainPanel(UIFormRefer uiFormRefer) {
+	private TokenUserObject tokenUserObject=null;
+	public CodeDataMainPanel(UIFormRefer uiFormRefer, TokenUserObject tokenUserObject) {
 		this.uiFormRefer=uiFormRefer;
+		this.tokenUserObject=tokenUserObject;
 	}
 	private Map<String,String> customCondtionMap=new HashMap<>();
 	public void buildPanel(){
@@ -46,9 +49,9 @@
 	private VCIJPanel createCenterDataTablePanel() {
 		tablePanel = new VCIJTablePanel<BaseModel>(dataProvider);
 		//tablePanel.setCustomButtons(getCombinedButtons());
-		tablePanel.setShowExport(true);
+		//tablePanel.setShowExport(true);
 		tablePanel.setShowPaging(true);
-		tablePanel.setShowProgressBar(false);
+		tablePanel.setShowProgressBar(true);
 		tablePanel.setPageButtonFlowAlign(FlowLayout.CENTER);
 		tablePanel.setCustomButtonFlowAlign(FlowLayout.CENTER);
 		tablePanel.buildTablePanel();
@@ -120,6 +123,14 @@
 		this.uiFormRefer = uiFormRefer;
 	}
 
+	public TokenUserObject getTokenUserObject() {
+		return tokenUserObject;
+	}
+
+	public void setTokenUserObject(TokenUserObject tokenUserObject) {
+		this.tokenUserObject = tokenUserObject;
+	}
+
 	public AbstractVCIJTableDataProvider<BaseModel> getDataProvider() {
 		return dataProvider;
 	}
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
index 9faf71a..1c0b245 100644
--- 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
@@ -95,9 +95,10 @@
 				});
 
 			}
-			Map<String,String>  headers=new HashMap<>();
+			Map<String,String> headerMap=new HashMap<>();
+			headerMap.put("Blade-Auth",this.ownerPanel.getTokenUserObject().getAccess_token());
 
-			R r= HttpUtil.sendGet(url+"/defaultReferDataGrid",condtionMap,new HashMap<>());
+			R r= HttpUtil.sendGet(url+"/defaultReferDataGrid",condtionMap,headerMap);
 
 			if(r.isSuccess()){
 				Object object= r.getData();
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeReferTreePanel.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeReferTreePanel.java
index 7bed1b6..a16885b 100644
--- a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeReferTreePanel.java
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeReferTreePanel.java
@@ -30,8 +30,10 @@
 	private VCIBaseTreeNode rootNode = null;
 	private ReferTreObject referTreObject;
 	private UIFormRefer uiFormRefer;
-	public CodeReferTreePanel(UIFormRefer uiFormRefer) {
+	private TokenUserObject tokenUserObject;
+	public CodeReferTreePanel(UIFormRefer uiFormRefer ,TokenUserObject tokenUserObject) {
 		this.uiFormRefer=uiFormRefer;
+		this.tokenUserObject=tokenUserObject;
 	}
 
 	public void buildTreePanel(){
@@ -55,7 +57,10 @@
 				condtionMap.put("muti",uiFormRefer.isMuti()?"true":"false");
 				condtionMap.put("queryAllLevel", StringUtils.isBlank(uiFormRefer.getLoadType())?"false":"true");//queryAllLevel
 				//condtionMap.put("parentOid",null);
-				R r= HttpUtil.sendGet(url+"/defaultReferTree",condtionMap,new HashMap<>());
+				Map<String,String> headerMap=new HashMap<>();
+				headerMap.put("Blade-Auth",this.tokenUserObject.getAccess_token());
+
+				R r= HttpUtil.sendGet(url+"/defaultReferTree",condtionMap,headerMap);
 				if(r.isSuccess()){
 					Object object= r.getData();
 					if(object!=null) {
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
index 594a386..87e90fd 100644
--- 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
@@ -25,7 +25,8 @@
 
 public class RMDataReferTempDialog extends VCIJDialog {
 	private CodeApplyFor410MainPanel owner;
-	private CodeClassifyTemplateAttrVO codeClassifyTemplateAttr;
+	//private CodeClassifyTemplateAttrVO codeClassifyTemplateAttr;
+	private String referConfig="";
 	private RMDataReferTempDialogActionListener actionListener = new RMDataReferTempDialogActionListener(this);
 	private VCIJButton btnOk = VCISwingUtil.createVCIJButton("ok", "纭畾", "纭畾", "accept.png", actionListener);
 	private VCIJButton btnCancel = VCISwingUtil.createVCIJButton("cancel", "鍙栨秷", "鍙栨秷", "cancel.png", actionListener);
@@ -35,10 +36,10 @@
 	private VCIBaseTree leftTree = null;
 	private VCIBaseTreeModel leftTreeModel = null;
 	private KeyValue keyValue;
-	public RMDataReferTempDialog(CodeApplyFor410MainPanel owner, CodeClassifyTemplateAttrVO codeClassifyTemplateAttr) {
+	public RMDataReferTempDialog(CodeApplyFor410MainPanel owner, String  referConfig) {
 		//super(true);
 		this.owner = owner;
-		this.codeClassifyTemplateAttr = codeClassifyTemplateAttr;
+		this.referConfig = referConfig;
 		init();
 		setTitle("寮曠敤妯℃澘-灞炴�ч�夋嫨");
 		//initDialogSize(rmDataAddDialog.getWidth(), rmDataAddDialog.getHeight());
@@ -69,8 +70,8 @@
 	private VCIJPanel createRMDataMainPanel(){
 		VCIJPanel rmDataTablePanel = new VCIJPanel(new BorderLayout());
 		uiFormRefer=new UIFormRefer();
-		if(StringUtils.isNotBlank(codeClassifyTemplateAttr.getReferConfig())){
-			uiFormRefer = JSONObject.toJavaObject(JSONObject.parseObject(codeClassifyTemplateAttr.getReferConfig().toString()), UIFormRefer.class);
+		if(StringUtils.isNotBlank(referConfig)){
+			uiFormRefer = JSONObject.toJavaObject(JSONObject.parseObject(referConfig.toString()), UIFormRefer.class);
 		}
 		if(uiFormRefer !=null&&(uiFormRefer.getType().equals(CodeReferConfigTypeEnum.TREE.getValue())
 				||uiFormRefer.getType().equals(CodeReferConfigTypeEnum.ORGDEPARTMENTREFER.getValue()))){
@@ -89,7 +90,7 @@
 	 */
 	private CodeDataMainPanel codeDataMainPanel = null;
 	public CodeDataMainPanel getRMDataMainPanel() {
-		codeDataMainPanel=new CodeDataMainPanel(uiFormRefer);
+		codeDataMainPanel=new CodeDataMainPanel(uiFormRefer,this.owner.getTokenUserObject());
 		CodeDataMainPanelDataProvider dataProvider=new CodeDataMainPanelDataProvider(codeDataMainPanel);
 		codeDataMainPanel.setDataProvider(dataProvider);
 		codeDataMainPanel.setCustomTopPanel(new AttarSearchPanel(uiFormRefer));
@@ -112,7 +113,7 @@
 	private VCIJScrollPane createTreePanel(){
 		final RMDataReferTempDialog self = this;
 
-		typeTreePanel = new CodeReferTreePanel(uiFormRefer) {
+		typeTreePanel = new CodeReferTreePanel(uiFormRefer,this.owner.getTokenUserObject()) {
 			private static final long serialVersionUID = 8121108576137012228L;
 			@Override
 			public void tree_valueChanged(TreeSelectionEvent e) {
@@ -224,4 +225,5 @@
 	public void setCodeDataMainPanel(CodeDataMainPanel codeDataMainPanel) {
 		this.codeDataMainPanel = codeDataMainPanel;
 	}
+
 }
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/BaseModel.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/BaseModel.java
index 8c14eab..a54c3e5 100644
--- a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/BaseModel.java
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/BaseModel.java
@@ -1,11 +1,12 @@
 package com.vci.ubcs.codeapply.object;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 import org.springframework.data.annotation.Transient;
 
 import java.util.Date;
 import java.util.Map;
-
+@JsonIgnoreProperties
 public class BaseModel {
 	private String oid;
 	private String id;
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/CodeDataObject.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/CodeDataObject.java
new file mode 100644
index 0000000..9c2e9c5
--- /dev/null
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/CodeDataObject.java
@@ -0,0 +1,4 @@
+package com.vci.ubcs.codeapply.object;
+
+public class CodeDataObject {
+}
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/DataGrid.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/DataGrid.java
new file mode 100644
index 0000000..6a1ab47
--- /dev/null
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/DataGrid.java
@@ -0,0 +1,115 @@
+package com.vci.ubcs.codeapply.object;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+public class DataGrid<T> implements Serializable {
+	private static final long serialVersionUID = -5909212697362510055L;
+	private long total = 0L;
+	private List<T> data = new ArrayList();
+	private int start;
+	private int limit;
+	private int page;
+	private String sort;
+	private String order;
+	private String msg;
+	private int code = 0;
+	private String traceId;
+
+	public long getTotal() {
+		return total;
+	}
+
+	public void setTotal(long total) {
+		this.total = total;
+	}
+
+	public List<T> getData() {
+		return data;
+	}
+
+	public void setData(List<T> data) {
+		this.data = data;
+	}
+
+	public int getStart() {
+		return start;
+	}
+
+	public void setStart(int start) {
+		this.start = start;
+	}
+
+	public int getLimit() {
+		return limit;
+	}
+
+	public void setLimit(int limit) {
+		this.limit = limit;
+	}
+
+	public int getPage() {
+		return page;
+	}
+
+	public void setPage(int page) {
+		this.page = page;
+	}
+
+	public String getSort() {
+		return sort;
+	}
+
+	public void setSort(String sort) {
+		this.sort = sort;
+	}
+
+	public String getOrder() {
+		return order;
+	}
+
+	public void setOrder(String order) {
+		this.order = order;
+	}
+
+	public String getMsg() {
+		return msg;
+	}
+
+	public void setMsg(String msg) {
+		this.msg = msg;
+	}
+
+	public int getCode() {
+		return code;
+	}
+
+	public void setCode(int code) {
+		this.code = code;
+	}
+
+	public String getTraceId() {
+		return traceId;
+	}
+
+	public void setTraceId(String traceId) {
+		this.traceId = traceId;
+	}
+
+	@Override
+	public String toString() {
+		return "DataGrid{" +
+			"total=" + total +
+			", data=" + data +
+			", start=" + start +
+			", limit=" + limit +
+			", page=" + page +
+			", sort='" + sort + '\'' +
+			", order='" + order + '\'' +
+			", msg='" + msg + '\'' +
+			", code=" + code +
+			", traceId='" + traceId + '\'' +
+			'}';
+	}
+}
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/TokenUserObject.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/TokenUserObject.java
new file mode 100644
index 0000000..726f2df
--- /dev/null
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/TokenUserObject.java
@@ -0,0 +1,264 @@
+package com.vci.ubcs.codeapply.object;
+
+public class TokenUserObject {
+
+	private String access_token; //"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0ZW5hbnRfaWQiOiIwMDAwMDAiLCJkZXB0TmFtZSI6bnVsbCwidXNlcl9uYW1lIjoiYWRtaW4iLCJzdHJhdGVneVVwZGF0ZVN0YXR1cyI6bnVsbCwicmVhbF9uYW1lIjoi6LaF57qn566h55CG5ZGYIiwiYXZhdGFyIjoiaHR0cHM6Ly9ndy5hbGlwYXlvYmplY3RzLmNvbS96b3Mvcm1zcG9ydGFsL0JpYXpmYW54bWFtTlJveHhWeGthLnBuZyIsImF1dGhvcml0aWVzIjpbImFkbWluaXN0cmF0b3IiXSwiY2xpZW50X2lkIjoic3dvcmQiLCJyb2xlX25hbWUiOiJhZG1pbmlzdHJhdG9yIiwibGljZW5zZSI6InBvd2VyZWQgYnkgYmxhZGV4IiwicG9zdF9pZCI6IjAiLCJ0ZW5hbnROYW1lIjpudWxsLCJ1c2VyX2lkIjoiMCIsInJvbGVfaWQiOiIxMTIzNTk4ODE2NzM4Njc1MjAxIiwic2NvcGUiOlsiYWxsIl0sIm5pY2tfbmFtZSI6Iui2hee6p-euoeeQhuWRmCIsIm9hdXRoX2lkIjoiIiwiZGV0YWlsIjp7InR5cGUiOiJ3ZWIifSwiZXhwIjoxNjkxOTM3ODUzLCJkZXB0X2lkIjoiMCIsImp0aSI6IjA4ODYwMjM5LWFkNWEtNDNlMi05ZTZhLWUyMjYxM2M3Mjc1MSIsImFjY291bnQiOiJhZG1pbiIsImVtYWlsIjpudWxsLCJzZWNyZXRHcmFkZSI6bnVsbH0.npERYaufS4QmITF3WOf09XcPSlelfltu30Eije4DOqs",
+	private String token_type;// "bearer",
+	private String refresh_token;// "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0ZW5hbnRfaWQiOiIwMDAwMDAiLCJkZXB0TmFtZSI6bnVsbCwidXNlcl9uYW1lIjoiYWRtaW4iLCJyZWFsX25hbWUiOiLotoXnuqfnrqHnkIblkZgiLCJjbGllbnRfaWQiOiJzd29yZCIsInRlbmFudE5hbWUiOm51bGwsInJvbGVfaWQiOiIxMTIzNTk4ODE2NzM4Njc1MjAxIiwic2NvcGUiOlsiYWxsIl0sImF0aSI6IjA4ODYwMjM5LWFkNWEtNDNlMi05ZTZhLWUyMjYxM2M3Mjc1MSIsIm9hdXRoX2lkIjoiIiwiZXhwIjoxNjkyNTM5MDUzLCJqdGkiOiI3YTA0NWRlZS01YjI0LTQ3MDUtOWU0OS1mMTUyNjJiZWJjNzMiLCJlbWFpbCI6bnVsbCwic2VjcmV0R3JhZGUiOm51bGwsInN0cmF0ZWd5VXBkYXRlU3RhdHVzIjpudWxsLCJhdmF0YXIiOiJodHRwczovL2d3LmFsaXBheW9iamVjdHMuY29tL3pvcy9ybXNwb3J0YWwvQmlhemZhbnhtYW1OUm94eFZ4a2EucG5nIiwiYXV0aG9yaXRpZXMiOlsiYWRtaW5pc3RyYXRvciJdLCJyb2xlX25hbWUiOiJhZG1pbmlzdHJhdG9yIiwibGljZW5zZSI6InBvd2VyZWQgYnkgYmxhZGV4IiwicG9zdF9pZCI6IjAiLCJ1c2VyX2lkIjoiMCIsIm5pY2tfbmFtZSI6Iui2hee6p-euoeeQhuWRmCIsImRldGFpbCI6eyJ0eXBlIjoid2ViIn0sImRlcHRfaWQiOiIwIiwiYWNjb3VudCI6ImFkbWluIn0.GXbwrhlvGAerayV81YCQUPW0gfxQPoALL1aU6Ot24L8",
+	private String expires_in;// 3599,
+	private String scope;// "all",
+	private String tenant_id;// "000000",
+	private String deptName;// null,
+	private String user_name;// "admin",
+	private String strategyUpdateStatus;// null,
+	private String real_name;// "瓒呯骇绠$悊鍛�",
+	private String avatar;// "https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png",
+	private String client_id;// "sword",
+	private String role_name;// "administrator",
+	private String license;// "powered by bladex",
+	private String post_id;// "0",
+	private String tenantName;// null,
+	private String user_id;// "0",
+	private String role_id;// "1123598816738675201",
+	private String nick_name;// "瓒呯骇绠$悊鍛�",
+	private String oauth_id;// "",
+	/*private String detail;// {
+		"type;// "web"
+	},*/
+	private String dept_id;// "0",
+	private String account;// "admin",
+	private String email;// null,
+	private String secretGrade;// null,
+	private String jti;// "08860239-ad5a-43e2-9e6a-e22613c72751"
+
+	public String getAccess_token() {
+		return access_token;
+	}
+
+	public void setAccess_token(String access_token) {
+		this.access_token = access_token;
+	}
+
+	public String getToken_type() {
+		return token_type;
+	}
+
+	public void setToken_type(String token_type) {
+		this.token_type = token_type;
+	}
+
+	public String getRefresh_token() {
+		return refresh_token;
+	}
+
+	public void setRefresh_token(String refresh_token) {
+		this.refresh_token = refresh_token;
+	}
+
+	public String getExpires_in() {
+		return expires_in;
+	}
+
+	public void setExpires_in(String expires_in) {
+		this.expires_in = expires_in;
+	}
+
+	public String getScope() {
+		return scope;
+	}
+
+	public void setScope(String scope) {
+		this.scope = scope;
+	}
+
+	public String getTenant_id() {
+		return tenant_id;
+	}
+
+	public void setTenant_id(String tenant_id) {
+		this.tenant_id = tenant_id;
+	}
+
+	public String getDeptName() {
+		return deptName;
+	}
+
+	public void setDeptName(String deptName) {
+		this.deptName = deptName;
+	}
+
+	public String getUser_name() {
+		return user_name;
+	}
+
+	public void setUser_name(String user_name) {
+		this.user_name = user_name;
+	}
+
+	public String getStrategyUpdateStatus() {
+		return strategyUpdateStatus;
+	}
+
+	public void setStrategyUpdateStatus(String strategyUpdateStatus) {
+		this.strategyUpdateStatus = strategyUpdateStatus;
+	}
+
+	public String getReal_name() {
+		return real_name;
+	}
+
+	public void setReal_name(String real_name) {
+		this.real_name = real_name;
+	}
+
+	public String getAvatar() {
+		return avatar;
+	}
+
+	public void setAvatar(String avatar) {
+		this.avatar = avatar;
+	}
+
+	public String getClient_id() {
+		return client_id;
+	}
+
+	public void setClient_id(String client_id) {
+		this.client_id = client_id;
+	}
+
+	public String getRole_name() {
+		return role_name;
+	}
+
+	public void setRole_name(String role_name) {
+		this.role_name = role_name;
+	}
+
+	public String getLicense() {
+		return license;
+	}
+
+	public void setLicense(String license) {
+		this.license = license;
+	}
+
+	public String getPost_id() {
+		return post_id;
+	}
+
+	public void setPost_id(String post_id) {
+		this.post_id = post_id;
+	}
+
+	public String getTenantName() {
+		return tenantName;
+	}
+
+	public void setTenantName(String tenantName) {
+		this.tenantName = tenantName;
+	}
+
+	public String getUser_id() {
+		return user_id;
+	}
+
+	public void setUser_id(String user_id) {
+		this.user_id = user_id;
+	}
+
+	public String getRole_id() {
+		return role_id;
+	}
+
+	public void setRole_id(String role_id) {
+		this.role_id = role_id;
+	}
+
+	public String getNick_name() {
+		return nick_name;
+	}
+
+	public void setNick_name(String nick_name) {
+		this.nick_name = nick_name;
+	}
+
+	public String getOauth_id() {
+		return oauth_id;
+	}
+
+	public void setOauth_id(String oauth_id) {
+		this.oauth_id = oauth_id;
+	}
+
+	public String getDept_id() {
+		return dept_id;
+	}
+
+	public void setDept_id(String dept_id) {
+		this.dept_id = dept_id;
+	}
+
+	public String getAccount() {
+		return account;
+	}
+
+	public void setAccount(String account) {
+		this.account = account;
+	}
+
+	public String getEmail() {
+		return email;
+	}
+
+	public void setEmail(String email) {
+		this.email = email;
+	}
+
+	public String getSecretGrade() {
+		return secretGrade;
+	}
+
+	public void setSecretGrade(String secretGrade) {
+		this.secretGrade = secretGrade;
+	}
+
+	public String getJti() {
+		return jti;
+	}
+
+	public void setJti(String jti) {
+		this.jti = jti;
+	}
+
+	@Override
+	public String toString() {
+		return "TokenUserObject{" +
+			"access_token='" + access_token + '\'' +
+			", token_type='" + token_type + '\'' +
+			", refresh_token='" + refresh_token + '\'' +
+			", expires_in='" + expires_in + '\'' +
+			", scope='" + scope + '\'' +
+			", tenant_id='" + tenant_id + '\'' +
+			", deptName='" + deptName + '\'' +
+			", user_name='" + user_name + '\'' +
+			", strategyUpdateStatus='" + strategyUpdateStatus + '\'' +
+			", real_name='" + real_name + '\'' +
+			", avatar='" + avatar + '\'' +
+			", client_id='" + client_id + '\'' +
+			", role_name='" + role_name + '\'' +
+			", license='" + license + '\'' +
+			", post_id='" + post_id + '\'' +
+			", tenantName='" + tenantName + '\'' +
+			", user_id='" + user_id + '\'' +
+			", role_id='" + role_id + '\'' +
+			", nick_name='" + nick_name + '\'' +
+			", oauth_id='" + oauth_id + '\'' +
+			", dept_id='" + dept_id + '\'' +
+			", account='" + account + '\'' +
+			", email='" + email + '\'' +
+			", secretGrade='" + secretGrade + '\'' +
+			", jti='" + jti + '\'' +
+			'}';
+	}
+}
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/UserObject.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/UserObject.java
new file mode 100644
index 0000000..9d72b42
--- /dev/null
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/object/UserObject.java
@@ -0,0 +1,40 @@
+package com.vci.ubcs.codeapply.object;
+
+public class UserObject {
+	private String grant_type; 	// password;
+	private String scope;//all
+	private String  username;//admin
+	private String password;//锛�123456
+
+	public String getGrant_type() {
+		return grant_type;
+	}
+
+	public void setGrant_type(String grant_type) {
+		this.grant_type = grant_type;
+	}
+
+	public String getScope() {
+		return scope;
+	}
+
+	public void setScope(String scope) {
+		this.scope = scope;
+	}
+
+	public String getUsername() {
+		return username;
+	}
+
+	public void setUsername(String username) {
+		this.username = username;
+	}
+
+	public String getPassword() {
+		return password;
+	}
+
+	public void setPassword(String password) {
+		this.password = password;
+	}
+}
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/utils/HttpUtil.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/utils/HttpUtil.java
index 5749c25..193cf20 100644
--- a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/utils/HttpUtil.java
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/utils/HttpUtil.java
@@ -4,9 +4,11 @@
 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 com.vci.ubcs.codeapply.object.TokenUserObject;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.http.*;
 import org.apache.http.client.ClientProtocolException;
+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;
@@ -16,9 +18,12 @@
 import org.apache.http.impl.client.HttpClients;
 import org.apache.http.message.BasicNameValuePair;
 import org.apache.http.util.EntityUtils;
+import org.apache.poi.ss.formula.functions.T;
 
 import java.io.IOException;
+import java.io.UnsupportedEncodingException;
 import java.net.URISyntaxException;
+import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
@@ -173,7 +178,102 @@
 		}
 		return result;
 	}
+	/**
+	 * 鍙戦�丠ttpPost璇锋眰锛屽弬鏁颁负map
+	 * @param url
+	 * @param jsonDataStr
+	 * @return
+	 */
+	public static R sendPost(String url, String jsonDataStr,Map<String,String> headers) {
+		R r=new R();
+//        JsonObject formparams = new JsonObject();
+//        for (Map.Entry<String, String> entry : map.entrySet()) {
+//            formparams.add(entry.getKey(), entry.getValue();
+//        }
+		//json 鏍煎紡
+        //UrlEncodedFormEntity entity = new UrlEncodedFormEntity(jsonDataStr, Consts.UTF_8);
+//        System.out.println(jsonObject.toString());
+		StringEntity entity = new StringEntity(jsonDataStr, Consts.UTF_8);
+		HttpPost httppost = new HttpPost(url);
+		/*
+		 * 娣诲姞璇锋眰澶翠俊鎭�
+		 */
+		if(headers!=null&&headers.size()>0) {
+			for (Map.Entry<String, String> entry : headers.entrySet()) {
+				httppost.addHeader(entry.getKey(), entry.getValue());
+			}
+		}
+		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, "UTF-8");
+			// 浣跨敤Apache鎻愪緵鐨勫伐鍏风被杩涜杞崲鎴愬瓧绗︿覆
+			if(StringUtils.isNotBlank(result)){
+				r = JSONObject.toJavaObject(JSONObject.parseObject(result), R.class);
+			}
+		} catch (ParseException | IOException e) {
+			e.printStackTrace();
+		}
+		return r;
+	}
+	/**
+	 * 鍙戦�丠ttpPost璇锋眰锛屽弬鏁颁负map
+	 * @param url
+	 * @param map
+	 * @return
+	 */
+	public static R sendPost(String url, Map<String,String> map,Map<String,String> headers) {
+		R r=new R();
+//        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);
+		/*
+		 * 娣诲姞璇锋眰澶翠俊鎭�
+		 */
+		if(headers!=null&&headers.size()>0) {
+			for (Map.Entry<String, String> entry : headers.entrySet()) {
+				httppost.addHeader(entry.getKey(), entry.getValue());
+			}
+		}
+		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, "UTF-8");
+			// 浣跨敤Apache鎻愪緵鐨勫伐鍏风被杩涜杞崲鎴愬瓧绗︿覆
+			if(StringUtils.isNotBlank(result)){
+				r = JSONObject.toJavaObject(JSONObject.parseObject(result), R.class);
+			}
+		} catch (ParseException | IOException e) {
+			e.printStackTrace();
+		}
+		return r;
+	}
 	/**
 	 * 鍙戦�丠ttpPost璇锋眰锛屽弬鏁颁负map
 	 * @param url
@@ -211,7 +311,49 @@
 		}
 		return result;
 	}
+	/**
+	 * 鍙戦�丠ttpPost璇锋眰锛屽弬鏁颁负map
+	 * @param url
+	 * @param dataMap
+	 * @return
+	 */
+	public static String sendFormPost(String url, Map<String,String> dataMap, Map<String,String> headers) {
+		String result = null;
+		try {
 
+			//json 鏍煎紡
+			List<NameValuePair> nvps = new ArrayList<>();
+//
+			HttpPost httppost = new HttpPost(url);
+			if (dataMap != null && dataMap.size() > 0) {
+				for (Map.Entry<String, String> entry : dataMap.entrySet()) {
+					nvps.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
+				}
+			}
+			/*
+			 * 娣诲姞璇锋眰澶翠俊鎭�
+			 */
+			if (headers != null && headers.size() > 0) {
+				for (Map.Entry<String, String> entry : headers.entrySet()) {
+					httppost.addHeader(entry.getKey(), entry.getValue());
+				}
+			}
+			httppost.setEntity(new UrlEncodedFormEntity(nvps, "utf-8")); //灏嗗弬鏁颁紶鍏ost鏂规硶涓�
+			//httppost.setEntity(entity);
+			CloseableHttpResponse response = null;
+			response = httpclient.execute(httppost);
+			HttpEntity entity1 = response.getEntity();
+
+			result = EntityUtils.toString(entity1, "UTF-8");
+			// 浣跨敤Apache鎻愪緵鐨勫伐鍏风被杩涜杞崲鎴愬瓧绗︿覆
+			if (StringUtils.isNotBlank(result)) {
+				return result;
+			}
+		}catch (Throwable e){
+			e.printStackTrace();;
+		}
+		return result;
+	}
 	/**
 	 * 鍙戦�佷笉甯﹀弬鏁扮殑HttpPost璇锋眰
 	 * @param url
diff --git a/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/utils/ListUtil.java b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/utils/ListUtil.java
new file mode 100644
index 0000000..dbcad67
--- /dev/null
+++ b/Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/utils/ListUtil.java
@@ -0,0 +1,172 @@
+package com.vci.ubcs.codeapply.utils;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.google.common.collect.Lists;
+import com.vci.ubcs.starter.web.util.VciBaseUtil;
+import org.apache.commons.beanutils.ConvertUtils;
+import org.apache.commons.beanutils.PropertyUtils;
+import org.apache.poi.ss.formula.functions.T;
+import org.springframework.util.StringUtils;
+import java.lang.reflect.Field;
+import java.lang.reflect.Type;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+public class ListUtil {
+	/**
+	 * targetList 闇�瑕佸鐞嗙殑list
+	 * targetClass 鐩爣class
+	 * @return List 澶勭悊濂界殑list
+	 */
+	public static List listMapParseListObj(List targetList, Class targetClass){
+		// 鍏堣幏鍙栬绫荤殑浠g悊瀵硅薄
+		Object obj = null;
+		try {
+			obj = targetClass.newInstance();
+		} catch (InstantiationException e) {
+			e.printStackTrace();
+		} catch (IllegalAccessException e) {
+			e.printStackTrace();
+		}
+		Field[] fields = targetClass.getDeclaredFields();
+		// 灏唋ist杞负list瀵硅薄
+		for(int i = 0; i< targetList.size(); i++){
+			Map map = (Map)targetList.get(i);                  // 鑾峰彇姣忎釜list閲岄潰姣忎釜map
+			for (Field field : fields) {
+				String fieldName = field.getName();
+				if(fieldName.equals("data")){
+					try {
+						PropertyUtils.setProperty(obj, fieldName, map);
+					}catch(Exception ex){
+					ex.printStackTrace();
+					}
+				}else if (map.containsKey(fieldName.toUpperCase(Locale.ROOT))||map.containsKey(fieldName.toLowerCase(Locale.ROOT))) {
+					Object value="";
+					if (map.containsKey(fieldName.toUpperCase(Locale.ROOT))) {
+						value = map.get(fieldName.toUpperCase());
+					}else if(map.containsKey(fieldName.toLowerCase(Locale.ROOT))){
+						value = map.get(fieldName.toLowerCase());
+					}
+					try{
+						//鍙栧緱鍊肩殑绫诲舰
+						Class type = PropertyUtils.getPropertyType(obj, fieldName);
+						if(!StringUtils.isEmpty(type)){
+
+							PropertyUtils.setProperty(obj, fieldName,convert(value, type));
+						}
+					}catch(Exception ex){
+						ex.printStackTrace();
+					}
+				}
+			}
+		}
+		// 灏唋ist<Map> 杞负瀵硅薄杩涜杩斿洖
+		List resListObj = Lists.newArrayList();
+		for (Object object : targetList) {
+			JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(object));
+			resListObj.add(jsonObject.toJavaObject((Type)targetClass));
+		}
+
+		//杩斿洖灏佽濂界殑闆嗗悎
+		return resListObj;
+	}
+
+	/**
+	 * targetList 闇�瑕佸鐞嗙殑list
+	 * targetClass 鐩爣class
+	 * @return List 澶勭悊濂界殑list
+	 */
+	public static <T> T mapParseJavaBean(Map map, Class targetClass){
+		// 鍏堣幏鍙栬绫荤殑浠g悊瀵硅薄
+		Object obj = null;
+		try {
+			obj = targetClass.newInstance();
+		} catch (InstantiationException e) {
+			e.printStackTrace();
+		} catch (IllegalAccessException e) {
+			e.printStackTrace();
+		}
+		Field[] fields = targetClass.getDeclaredFields();
+		// 灏唋ist杞负list瀵硅薄
+			for (Field field : fields) {
+				String fieldName = field.getName();
+				if(fieldName.equals("data")){
+					try {
+						PropertyUtils.setProperty(obj, fieldName, map);
+					}catch(Exception ex){
+						ex.printStackTrace();
+					}
+				}else if (map.containsKey(fieldName.toUpperCase(Locale.ROOT))||map.containsKey(fieldName.toLowerCase(Locale.ROOT))) {
+					Object value="";
+					if (map.containsKey(fieldName.toUpperCase(Locale.ROOT))) {
+						value = map.get(fieldName.toUpperCase());
+					}else if(map.containsKey(fieldName.toLowerCase(Locale.ROOT))){
+						value = map.get(fieldName.toLowerCase());
+					}
+					try{
+						//鍙栧緱鍊肩殑绫诲舰
+						Class type = PropertyUtils.getPropertyType(obj, fieldName);
+						if(!StringUtils.isEmpty(type)){
+
+							PropertyUtils.setProperty(obj, fieldName,convert(value, type));
+						}
+					}catch(Exception ex){
+						ex.printStackTrace();
+					}
+				}
+			}
+			/*// 灏唋ist<Map> 杞负瀵硅薄杩涜杩斿洖
+			List resListObj = Lists.newArrayList();
+			JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(obj));
+			resListObj.add(jsonObject.toJavaObject((Type)targetClass));*/
+		//杩斿洖灏佽濂界殑闆嗗悎
+		return (T) obj;
+	}
+
+
+	public static Object convert(Object value, Class clazz){
+		if (value == null) { // 濡傛灉鑾峰彇鍙傛暟鍊间负null,鍒欒繑鍥瀗ull
+			return null;
+		} else if (!value.equals("")) { // 濡傛灉鑾峰彇鍙傛暟鍊间笉涓�"",鍒欓�氳繃convertGt鏂规硶杩涜绫诲瀷杞崲鍚庤繑鍥炵粨鏋�
+			return convertGt(value, clazz);
+		} else if (clazz.getName().equals(String.class.getName())) { // 濡傛灉鑾峰彇鍙傛暟鍊间负""
+			return convertGt(value, clazz);
+		} else {// 濡傛灉鑾峰彇鍙傛暟鍊间负"",骞朵笖clazz涓嶆槸鏄疭tring绫诲瀷,鍒欒繑鍥瀗ull
+			return null;
+		}
+	}
+	/**
+	 * @param value
+	 * @param clazz
+	 * @return
+	 */
+
+	@SuppressWarnings("unchecked")
+	public static Object convertGt(Object value, Class clazz) {
+		if (value == null) { // 濡傛灉鍊间负null,鍒欒繑鍥瀗ull
+			return null;
+		} else if (value.equals("")&& !clazz.getName().equals(String.class.getName())) { // 濡傛灉value鍊间负"",鑰屼笖瑕佽浆涓虹殑绫诲瀷涓嶆槸string绫诲瀷锛岄偅涔堝氨缁熶竴杩斿洖null锛屼篃灏辨槸绌哄瓧绗︿覆涓嶈兘杞垚浠讳綍鍏朵粬绫诲瀷鐨勫疄浣擄紝鍙兘杩斿洖null
+				return null;
+			} else if (Date.class.getName().equalsIgnoreCase(clazz.getName())) { // 澧炲姞瀵逛粠String绫诲瀷鍒癉ate
+				return convertSTD(value.toString());
+			}
+			return ConvertUtils.convert(value, clazz);
+		}
+	//鏃ユ湡绫诲瀷鐨勮浆鎹�
+	private static SimpleDateFormat simpleDateFormate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+	public static Date convertSTD(String date){
+		try {
+			return simpleDateFormate.parse(date);
+		} catch (ParseException e) {
+			e.printStackTrace();
+		}
+		return null;
+		}
+	public static String convertDTS(Date date){
+		return simpleDateFormate.format(date);
+	}
+}
diff --git a/Source/UBCS/ubcs-codeApply/src/main/resources/properties/conf.properties b/Source/UBCS/ubcs-codeApply/src/main/resources/properties/conf.properties
index 669a14f..83342df 100644
--- a/Source/UBCS/ubcs-codeApply/src/main/resources/properties/conf.properties
+++ b/Source/UBCS/ubcs-codeApply/src/main/resources/properties/conf.properties
@@ -20,6 +20,11 @@
 #PDM????????????????????????????????????????#??
 410.PDM.LibCodeName=\u7269\u54c1\#\u9644\u5f55
 #code ????
-410.code.url=http://127.0.0.1:36014/codeApplySwingController
+410.code.url=http://127.0.0.1:37000/ubcs-code/codeApplySwingController
+
+410.code.token.url=http://127.0.0.1:37000/ubcs-auth/oauth/token
+410.code.token.tenantId=000000
+410.code.token.authorization=Basic c3dvcmQ6c3dvcmRfc2VjcmV0
+410.code.token.contentType=application/x-www-form-urlencoded
 
 
diff --git a/Source/UBCS/ubcs-codeApply/src/test/java/tt.json b/Source/UBCS/ubcs-codeApply/src/test/java/tt.json
new file mode 100644
index 0000000..c92016f
--- /dev/null
+++ b/Source/UBCS/ubcs-codeApply/src/test/java/tt.json
@@ -0,0 +1,44 @@
+{
+  "tenant_id": "986926",
+  "xinghaoguige": "",
+  "lastmodifier": "",
+  "secondfl": "",
+  "codetemplateoid": "c59e6ff9d7a30ddbe4a776d6eb534d54",
+  "description": "",
+  "oid": "1681250544175419392",
+  "shifoupihaoguanli": "true",
+  "thrifl": "",
+  "firstfl": "",
+  "jiliangdwname": "",
+  "xinghaoguigeText": "null",
+  "materialtype": "1001-01-01",
+  "materialtypeText": "1001-01-01",
+  "chukufangshi": "",
+  "morengongysname": "",
+  "hesuanfenlei": "",
+  "lcstatus_text": "宸插彂甯�",
+  "oldcode": "",
+  "id": "A001001200000000XJ7E1C92A2-9B6F-4DB3-48C7-F42D1304E36B8",
+  "hesuanfenleiname": "",
+  "codeclsfpath": "46B5DB5E-F783-DFE9-B48A-C4A367D02AC0##0C600A6A-6398-FC30-D13E-121201FDA908##1C7A2455-5831-1535-2A21-B4C1CC9C7C9D##D9CF223F-317D-71EB-BD11-433A94CAD9F3",
+  "zuixiaoqiding": "",
+  "owner": "-1",
+  "xiaoshouwl": "false",
+  "creator": "weidy",
+  "createtime": "2023-07-18 18:32:20.513",
+  "caigouwl": "true",
+  "kucunwl": "true",
+  "tuhao": "",
+  "btmname": "wupin",
+  "revisionvalue": "",
+  "codeclsfid": "46B5DB5E-F783-DFE9-B48A-C4A367D02AC0",
+  "name": "",
+  "jiliangdw": "",
+  "materialclassify": "",
+  "lastmodifytime": "2023-07-199",
+  "morengongys": "",
+  "lcstatus": "Released",
+  "rn": "1",
+  "ts": "2023-07-18 18:32:20.513",
+  "lastmodifytimeText": "2023-07-199"
+}
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/service/impl/FlowBusinessServiceImpl.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/service/impl/FlowBusinessServiceImpl.java
index e39c37e..abc996d 100644
--- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/service/impl/FlowBusinessServiceImpl.java
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/service/impl/FlowBusinessServiceImpl.java
@@ -181,6 +181,16 @@
 				flow.setProcessIsFinished(FlowEngineConstant.STATUS_UNFINISHED);
 			}
 			flow.setStatus(FlowEngineConstant.STATUS_FINISH);
+
+			//娴佺▼鍙橀噺
+			Map<String,Object> variables = historicProcessInstance.getProcessVariables();
+			flow.setVariables(variables);
+
+			//businessKey
+			if (Func.isNotEmpty(historicProcessInstance)) {
+				flow.setBusinessId(businessKey.length>1 && StringUtils.isNotEmpty(businessKey[1])?businessKey[1]:"1");
+			}
+
 			flowList.add(flow);
 		});
 
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/VCIFlowserviceImpl.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/VCIFlowserviceImpl.java
index 731fb62..63e35bb 100644
--- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/VCIFlowserviceImpl.java
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/VCIFlowserviceImpl.java
@@ -159,10 +159,17 @@
 
 		String modelKey = processInstance.getProcessDefinitionKey();
 		List<FlowTaskDTO> mis = flowEngineService.getNodeByFlowableKey(modelKey);
+		Map<String,String> taskMap = new HashMap<>();
+		mis.stream().forEach(e->{
+			String taskId = e.getTaskId();
+			String taskName = e.getTaskName();
+			taskMap.put(taskId,taskName);
+		});
 
 		// 杈撳嚭杩炵嚎
 		List<SequenceFlow> outFlows = flowNode.getOutgoingFlows();
 		for (SequenceFlow sequenceFlow : outFlows) {
+			String toname = sequenceFlow.getName()==null?"鍚屾剰":sequenceFlow.getName();
 			//褰撳墠瀹℃壒鑺傜偣
 			if (NODE_NOW.equals(node)) {
 				FlowElement sourceFlowElement = sequenceFlow.getSourceFlowElement();
@@ -174,9 +181,11 @@
 					FlowTaskDTO flowTaskUserCi = new FlowTaskDTO();
 					//flowTaskUserCi.setConditionKey(null);
 					//flowTaskUserCi.setConditionValue(null);
-					flowTaskUserCi.setToName("鍚屾剰");
+					flowTaskUserCi.setToName(toname);
 					flowTaskUserCi.setToTaskId(targetFlow.getId());
-					flowTaskUserCi.setToTaskName(targetFlow.getName());
+					String taskName = taskMap.get(targetFlow.getId());
+					flowTaskUserCi.setToTaskName(taskName);
+					flowTaskUserCi.setTaskName(taskName);
 					taskList.add(flowTaskUserCi);
 				}
 
@@ -199,6 +208,7 @@
 						String conditionExpression = nexti.getConditionExpression();//condition
 						String taskId = nexti.getTargetRef();//taskId
 						String name = nexti.getName();//toName,椹冲洖銆佸悓鎰�
+						String taskName = taskMap.get(targetFlow.getId());
 
 						for (FlowTaskDTO flowTaskUserCi:mis){
 							if(taskId.equals(flowTaskUserCi.getTaskId())){
@@ -220,7 +230,8 @@
 								}
 								flowTaskUserCi.setToName(name);
 								flowTaskUserCi.setToTaskId(taskId);
-								flowTaskUserCi.setToTaskName(flowTaskUserCi.getTaskName());
+								flowTaskUserCi.setToTaskName(taskName);
+								flowTaskUserCi.setTaskName(taskName);
 								taskList.add(flowTaskUserCi);
 							}
 						}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingSystemConfig.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingSystemConfig.java
index 55454d4..b775a19 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingSystemConfig.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/DockingSystemConfig.java
@@ -101,6 +101,12 @@
 	@ApiModelProperty(value = "鎺ュ彛绫诲瀷鏄剧ず鏂囨湰")
 	@TableField(exist = false)
 	private String interfaceTypeText;
+
+	@Override
+	public String getFirstR() {
+		return super.getFirstR();
+	}
+
 	/**
 	 * 鍙傛暟绫诲瀷
 	 */
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/ComponentRule.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/ComponentRule.java
new file mode 100644
index 0000000..3cd122b
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/ComponentRule.java
@@ -0,0 +1,32 @@
+package com.vci.ubcs.code.vo;
+
+import java.util.Map;
+
+public class ComponentRule {
+	private Map<String,String> dataMap;
+	private  String componentRuleValue;
+
+	public Map<String, String> getDataMap() {
+		return dataMap;
+	}
+
+	public void setDataMap(Map<String, String> dataMap) {
+		this.dataMap = dataMap;
+	}
+
+	public String getComponentRuleValue() {
+		return componentRuleValue;
+	}
+
+	public void setComponentRuleValue(String componentRuleValue) {
+		this.componentRuleValue = componentRuleValue;
+	}
+
+	@Override
+	public String toString() {
+		return "ComponentRule{" +
+			"dataMap=" + dataMap +
+			", componentRuleValue='" + componentRuleValue + '\'' +
+			'}';
+	}
+}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/MdmUIInfoVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/MdmUIInfoVO.java
index 0d02f10..eb29fea 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/MdmUIInfoVO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/MdmUIInfoVO.java
@@ -1,7 +1,5 @@
 package com.vci.ubcs.code.vo.pagemodel;
 
-import com.vci.ubcs.flow.core.vo.ProcessStageAttrVO;
-
 import java.util.List;
 
 public class MdmUIInfoVO implements java.io.Serializable {
diff --git a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/util/VciBaseUtil.java b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/util/VciBaseUtil.java
index 07a0549..ffec7f9 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/util/VciBaseUtil.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/util/VciBaseUtil.java
@@ -37,8 +37,6 @@
 import java.math.BigInteger;
 import java.net.InetAddress;
 import java.net.NetworkInterface;
-import java.sql.Timestamp;
-import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -1320,7 +1318,7 @@
 				}
 			}
 		}
-
+		Map mapData = new HashMap<>();
 		for (int i = 0, n = propertyDescriptors.length; i <n ; i++) {
 			PropertyDescriptor descriptor = propertyDescriptors[i];
 			String propertyName = descriptor.getName();
@@ -1332,22 +1330,20 @@
 
 				if (result != null) {
 					if ("data".equals(propertyName)){
-						if(existFild == null){
-							returnMap.putAll((Map) result);
-						}else{
-							Map resulMapChild = (Map) result;
-							for (Object o : resulMapChild.keySet()) {
-								if(existFild.contains(String.valueOf(o).toLowerCase())){
-									returnMap.put(String.valueOf(o).toLowerCase(),resulMapChild.get(o));
-								}
-							}
-						}
+						mapData = (Map) result;
 					}else if(existFild.contains((fieldMap.containsKey(propertyName)?fieldMap.get(propertyName):propertyName).toLowerCase())){
-						returnMap.put(fieldMap.containsKey(propertyName)?fieldMap.get(propertyName):propertyName, result);
+						returnMap.put(fieldMap.containsKey(propertyName)?fieldMap.get(propertyName).toLowerCase():propertyName.toLowerCase(), result);
 					}
 				} else if(existFild.contains((fieldMap.containsKey(propertyName)?fieldMap.get(propertyName):propertyName).toLowerCase())){
-					returnMap.put(fieldMap.containsKey(propertyName)?fieldMap.get(propertyName):propertyName, "");
+					returnMap.put(fieldMap.containsKey(propertyName)?fieldMap.get(propertyName).toLowerCase():propertyName.toLowerCase(), "");
 				}
+			}
+		}
+		//浣滅敤涓昏鐢ㄤ簬宸睲AP涓殑鏁版嵁涓哄噯锛宐ean閲岄潰閬囧埌瀛楁鐩稿悓涔熶細杩涜瑕嗙洊銆�
+//		Map resulMapChild = (Map) mapData;
+		for (Object o : mapData.keySet()) {
+			if(existFild == null || existFild.contains(String.valueOf(o).toLowerCase())){
+				returnMap.put(String.valueOf(o).toLowerCase(),mapData.get(o));
 			}
 		}
 		return returnMap;
@@ -1371,9 +1367,14 @@
 //						String sqlField = camelToUnderscore(key);
 
 
-						if (map.containsKey(key.toUpperCase())) {
+						if (map.containsKey(key.toUpperCase(Locale.ROOT))||map.containsKey(key.toLowerCase(Locale.ROOT))) {
 							try {
-								Object value = map.get(key.toUpperCase());
+								Object value="";
+								if (map.containsKey(key.toUpperCase(Locale.ROOT))) {
+									value = map.get(key.toUpperCase());
+								}else if(map.containsKey(key.toLowerCase(Locale.ROOT))){
+									value = map.get(key.toLowerCase());
+								}
 								// 寰楀埌property瀵瑰簲鐨剆etter鏂规硶
 								Method setter = property.getWriteMethod();
 								Class<?> type = property.getPropertyType();
@@ -1395,6 +1396,7 @@
 		return beanList;
 }
 
+
 	public static String camelToUnderscore(String name) {
 		if (name == null && name.length() <= 0) {
 			return name;
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
index 67b80dd..6e08c7d 100644
--- 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
@@ -1,29 +1,31 @@
 package com.vci.ubcs.code.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
+import com.vci.ubcs.code.dto.CodeOrderDTO;
+import com.vci.ubcs.code.entity.CodeClassify;
+import com.vci.ubcs.code.enumpack.CodeClassifyProcessUseEnum;
 import com.vci.ubcs.code.service.ICodeClassifyService;
 import com.vci.ubcs.code.service.ICodeClassifyTemplateAttrService;
 import com.vci.ubcs.code.service.ICodeClassifyValueService;
 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.CodeClassifyValueVO;
-import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
+import com.vci.ubcs.code.service.impl.FormulaServiceImpl;
+import com.vci.ubcs.code.vo.ComponentRule;
+import com.vci.ubcs.code.vo.pagemodel.*;
+import com.vci.ubcs.starter.annotation.VciBusinessLog;
 import com.vci.ubcs.starter.revision.model.BaseModel;
 import com.vci.ubcs.starter.revision.model.TreeQueryObject;
-import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject;
-import com.vci.ubcs.starter.web.pagemodel.KeyValue;
-import com.vci.ubcs.starter.web.pagemodel.Tree;
-import com.vci.ubcs.code.vo.pagemodel.UIFormReferVO;
+import com.vci.ubcs.starter.web.pagemodel.*;
 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 org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 涓婚搴撳畾涔夎〃 鎺у埗鍣�
@@ -53,6 +55,12 @@
 	 * 鍒嗙被鐮佹鏈嶅姟
 	 */
 	private final ICodeClassifyValueService codeClassifyValueService;
+
+	/**
+	 * 鍏紡鐨勬湇鍔�
+	 */
+	@Autowired
+	private FormulaServiceImpl formulaService;
 	/**
 	 * 鑾峰彇搴撹妭鐐逛俊鎭�
 	 * @param libName 搴撹妭鐐瑰悕绉�
@@ -169,4 +177,54 @@
 		return R.data(iPage);
 
 	}
+
+	/**
+	 * 鑾峰彇灞炴�х粍鍚堣鍒欑殑鍊�
+	 * @param componentRule 鍙傜収鐨勯厤缃俊鎭�
+	 * @param componentRule 缁勫悎瑙勫垯
+	 * @return 鎵ц鐨勭粨鏋�
+	 */
+	@GetMapping("/getValueByFormula")
+	public R<String> getValueByFormula(ComponentRule componentRule){
+		String value = formulaService.getValueByFormula(componentRule.getDataMap(),componentRule.getComponentRuleValue());
+		return R.data(value);
+	}
+
+	/**
+	 * 浣跨敤鍒嗙被鑾峰彇瀵瑰簲鐨勬暟鎹�
+	 * @param codeClassifyOid 鍒嗙被鐨勪富閿�
+	 * @param templateOid 妯℃澘鐨勪富閿�
+	 * @param queryObject 鍩虹鏌ヨ瀵硅薄
+	 * @return 鏁版嵁鐨勪俊鎭紙鍖呭惈涓嬬骇鍒嗙被锛�
+	 */
+	@GetMapping("/gridTableDataByClassifyOid")
+	@VciBusinessLog(operateName = "鏌ヨ涓婚搴撳垎绫荤殑鏁版嵁")
+	public R<DataGrid<Map<String,String>>> gridTableDataByClassifyOid(String codeClassifyOid, String templateOid, BaseQueryObject queryObject){
+		//TODO鍚庣画鍙互瀹氫箟鏌ヨ妯℃澘鏉ユ煡璇�
+		return R.data(mdmEngineService.gridTableDataByClassifyOid(codeClassifyOid,templateOid,queryObject.getConditionMap(),queryObject.getPageHelper()));
+	}
+
+	/***
+	 *缁熻瀛愯妭鐐圭殑涓暟
+	 * @param parentId 鐖惰妭鐐筼id
+	 * @return
+	 */
+	@GetMapping("/countChildrenByClassifyOid")
+	@VciBusinessLog(operateName = "缁熻瀛愯妭鐐圭殑涓暟")
+	public R<Integer> countChildrenByClassifyOid(String parentId){
+	 	int count=	this.codeClassifyService.countChildrenByClassifyOid(parentId);
+	 	return R.data(count);
+	}
+
+	/**
+	 * 鐢宠缂栫爜淇濆瓨
+	 * @param orderDTO 缂栫爜鐢宠鐩稿叧鐨勪俊鎭紝闇�瑕佹湁灞炴�у拰鐮佹鐩稿叧鐨勪俊鎭�
+	 * @return 鎵ц缁撴灉
+	 */
+	@PostMapping("/addSaveCode")
+	@VciBusinessLog(operateName = "鐢宠鍗曚釜缂栫爜")
+	public R addSaveCode(@RequestBody CodeOrderDTO orderDTO) throws Exception {
+		return R.data(mdmEngineService.addSaveCode(orderDTO));
+	}
+
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClstemplateServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClstemplateServiceImpl.java
index bd07c5f..887bc5c 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClstemplateServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClstemplateServiceImpl.java
@@ -1108,7 +1108,7 @@
 			//閫掑綊鎵句笂绾х殑妯℃澘
 			CodeClassify classifyDO = codeClassifyMapper.selectById(codeClassifyOid);
 //				codeClassifyDaoI.selectByPrimaryKey(codeClassifyOid);
-			if(Func.isEmpty(classifyDO)&&StringUtils.isBlank(classifyDO.getParentCodeClassifyOid())){
+			if(Func.isEmpty(classifyDO)){
 				//璇存槑宸茬粡鏄《浜嗭紝涔熸病鎵惧埌鐨勮瘽锛岄偅灏辫繑鍥炰簡
 				return new ArrayList<>();
 			}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingSystemConfigServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingSystemConfigServiceImpl.java
index 60636f9..c4ace0a 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingSystemConfigServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingSystemConfigServiceImpl.java
@@ -165,9 +165,14 @@
 		log.info(" 澧炲姞绯荤粺闆嗘垚鐨勬帴鍙g鐞嗕俊鎭�:"+dockingSystemConfigDTO.toString());
 		VciBaseUtil.alertNotNull(dockingSystemConfigDTO, "闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄");
 		checkColumnNotNull(dockingSystemConfigDTO);
-		String sourcesystemoid = dockingSystemConfigDTO.getSourceSystemOid();
-		DockingSystem dockingSystem = dockingSystemMapper.selectById(sourcesystemoid);
-		dockingSystemConfigDTO.setSysBaseOid(sourcesystemoid);
+		String systemOid ="";
+		if(dockingSystemConfigDTO.getDataFlowType().equals(SysIntegrationDataFlowTypeEnum.ACCEPT.getValue())) {
+			systemOid = dockingSystemConfigDTO.getTargetSystemOid();
+		}else{
+			systemOid = dockingSystemConfigDTO.getSourceSystemOid();
+		}
+		DockingSystem dockingSystem = dockingSystemMapper.selectById(systemOid);
+		dockingSystemConfigDTO.setSysBaseOid(systemOid);
 		dockingSystemConfigDTO.setSysBaseId(dockingSystem.getId());
 		dockingSystemConfigDTO.setSysBaseName(dockingSystem.getName());
 		dockingSystemConfigDTO.setUsedFlag("true");//璁剧疆榛樿鍚敤鐘舵��
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/FormulaServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/FormulaServiceImpl.java
index 2b28004..c7f08d5 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/FormulaServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/FormulaServiceImpl.java
@@ -709,7 +709,7 @@
 			str = str.substring(2);
 		}
 		//闇�瑕佹浛鎹㈢郴缁熷彉閲�
-		Map<String, String> systemVarValueMap = VciSystemVarConstants.getSystemVarValueMap();
+		Map<String, String> systemVarValueMap = new HashMap<>();//VciSystemVarConstants.getSystemVarValueMap();
 		if(!CollectionUtils.isEmpty(systemVarValueMap)){
 			final String[] finalStr = new String[]{str};
 			systemVarValueMap.forEach((key,value)->{
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
index 6b94c1e..726a909 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
@@ -2441,27 +2441,22 @@
         List<BaseModel> updateList = new ArrayList<>();
         // 搴旇閮芥槸涓�涓垎绫讳笅鐨勪笟鍔℃暟鎹紝鎵剧涓�鏉$殑灏辫
         CodeClassifyFullInfoBO topClassifyFullInfo = classifyService.getClassifyFullInfo(orderDTOList.get(0).getCodeClassifyOid());
-//		Map<String,String> cboOidMap = new HashMap<>();
         if (CollectionUtils.isEmpty(orderDTOMap.keySet())) {
             throw new VciBaseException(DATA_OID_NOT_EXIST);
         }
 
         List<BaseModel> cboList = selectByTypeAndOid(topClassifyFullInfo.getTopClassifyVO().getBtmTypeId(), VciBaseUtil.array2String(orderDTOMap.keySet().toArray(new String[0])));
-//		cboOidMap.put("oid",QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(orderDTOMap.keySet().toArray(new String[0])) + ")");
-//		List<ClientBusinessObject> cboList = boService.queryCBO(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), cboOidMap);
-        if (CollectionUtils.isEmpty(cboList)) {
+		if (CollectionUtils.isEmpty(cboList)) {
             throw new VciBaseException(DATA_OID_NOT_EXIST);
         }
-//		BatchCBO batchCBO = new BatchCBO();
-//		CodeClassifyTemplateVO firstTemplateVO = templateService.getObjectHasAttrByOid(orderDTOMap.values().stream().findFirst().get().getTemplateOid());
-        Map<String, BaseModel> cboMap = cboList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
+		Map<String, BaseModel> cboMap = cboList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
         orderDTOMap.keySet().stream().forEach(oid -> {
             CodeOrderDTO orderDTO = orderDTOMap.get(oid);
             CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
             CodeClassifyTemplateVO firstTemplateVO = templateService.getObjectHasAttrByOid(orderDTOMap.values().stream().findFirst().get().getTemplateOid());
             BaseModel cbo = cboMap.get(oid);
             String code = cbo.getId();
-            if (!cbo.getTs().toString().contains(orderDTO.getTs().toString())) {
+            if (!cbo.getTs().toString().contains(VciDateUtil.date2Str(orderDTO.getTs(), VciDateUtil.DateTimeFormat))) {
                 throw new VciBaseException("鏁版嵁涓嶆槸鏈�鏂扮殑锛屽彲鑳戒粬浜哄凡缁忎慨鏀癸紝璇峰埛鏂板悗鍐嶈瘯");
             }
             if (!CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(cbo.getLcStatus()) && !orderDTO.isEditInProcess()) {
@@ -2487,21 +2482,13 @@
             //浼佷笟鐮佸拰闆嗗洟鐮佺殑涓嶄慨鏀�
             cbo.setDescription(StringUtils.isBlank(orderDTO.getDescription()) ? "" : orderDTO.getDescription());
             cbo.setName(orderDTO.getName());
-//			try {
-//				cbo.setAttributeValue("id",code);
             cbo.setId(code);
             cbo.setDescription(StringUtils.isBlank(orderDTO.getDescription()) ? "" : orderDTO.getDescription());
-//				cbo.setAttributeValueWithNoCheck("description", StringUtils.isBlank(orderDTO.getDescription())?"":orderDTO.getDescription());
-//				cbo.setAttributeValue("name", orderDTO.getName());
             cbo.setName(orderDTO.getName());
-//			} catch (VCIError e) {
-//				e.printStackTrace();
-//			}
-//			batchCBO.getUpdateCbos().add(cbo);
+
             updateList.add(cbo);
             batchSaveSelectChar(firstTemplateVO, cboList);
         });
-//		boService.persistenceBatch(batchCBO);
         updateBatchByBaseModel(topClassifyFullInfo.getTopClassifyVO().getBtmTypeId(), updateList);
         return R.success("鎿嶄綔鎴愬姛锛�");
     }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
index 3072649..0bd2aaa 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
@@ -188,38 +188,40 @@
 			//鍙傜収鐨勮嚜琛岃緭鍏ュ悕绉�
 			//鍒嗙被娉ㄥ叆鐨勪笉鐢紝閮芥槸瀵煎叆鍚庤嚜鍔ㄥ鐞嗙殑
 			//缂栫爜锛岀姸鎬佺瓑瀛楁涓嶅鍏�
-			List<CodeClassifyTemplateAttrVO> templateAttrVOS = templateVO.getAttributes().stream().filter(s ->
-				!DEFAULT_ATTR_LIST.contains(s.getId())
-					&& StringUtils.isBlank(s.getComponentRule())
-					&& StringUtils.isBlank(s.getClassifyInvokeAttr())
-					&& (VciBaseUtil.getBoolean(s.getFormDisplayFlag()))
-			).collect(Collectors.toList());
-			if(CollectionUtils.isEmpty(templateAttrVOS)){
-				throw new VciBaseException("妯℃澘娌℃湁閰嶇疆浠讳綍銆愯〃鍗曟樉绀恒�戜负銆愭槸銆戠殑灞炴��");
-			}
-			templateAttrVOS.stream().forEach(codetemplateAttr ->{
-				String field=codetemplateAttr.getId();
-				String name=codetemplateAttr.getName();
-				CodeClassifyTemplateAttrVO codeBaseAttributeDTO=new CodeClassifyTemplateAttrVO();
-				boolean res=(StringUtils.isNotBlank(codetemplateAttr.getAttributeGroup())&& codetemplateAttr.getAttributeGroup().equals(BATCHADD_EXCEPORT_ATTR_TYPE))//鍩烘湰灞炴�у瓧娈垫樉绀�
-					||(StringUtils.isNotBlank(codetemplateAttr.getKeyAttrFlag())&&Boolean.parseBoolean(codetemplateAttr.getKeyAttrFlag()))//鍏抽敭灞炴�х殑瀛樺叆
-					||(StringUtils.isNotBlank(codetemplateAttr.getSameRepeatAttrFlag())&&Boolean.parseBoolean(codetemplateAttr.getSameRepeatAttrFlag())) //鐩镐技灞炴�х殑瀛樺叆
-					||(StringUtils.isNotBlank(codetemplateAttr.getRequireFlag())&&Boolean.parseBoolean(codetemplateAttr.getRequireFlag()));
-				if(allFieldToOutNameMap.containsKey(name)){//濡傛灉瀛樺湪鐨勮瘽鍒欓渶瑕佹牴鎹叿浣撶殑鍘昏祴鍊�
-					codeBaseAttributeDTO=  allFieldToOutNameMap.get(name);
-					if(StringUtils.isNotBlank(codetemplateAttr.getKeyAttrFlag())&&Boolean.parseBoolean(codetemplateAttr.getKeyAttrFlag())){
-						codeBaseAttributeDTO.setKeyAttrFlag(codetemplateAttr.getKeyAttrFlag());//灞炴�у叧閿睘鎬�
-					}
-					if(StringUtils.isNotBlank(codetemplateAttr.getRequireFlag())&&Boolean.parseBoolean(codetemplateAttr.getRequireFlag())){
-						codeBaseAttributeDTO.setRequireFlag(codetemplateAttr.getRequireFlag());//灞炴�у繀濉」
-					}
-					if(StringUtils.isNotBlank(codetemplateAttr.getSameRepeatAttrFlag())&&Boolean.parseBoolean(codetemplateAttr.getSameRepeatAttrFlag())){
-						codeBaseAttributeDTO.setSameRepeatAttrFlag(codetemplateAttr.getSameRepeatAttrFlag());//灞炴�х浉浼煎睘鎬�
-					}
-				}else if(res){
-					allFieldToOutNameMap.put(name,codetemplateAttr);
+			if(!CollectionUtils.isEmpty(templateVO.getAttributes())) {
+				List<CodeClassifyTemplateAttrVO> templateAttrVOS = templateVO.getAttributes().stream().filter(s ->
+					!DEFAULT_ATTR_LIST.contains(s.getId())
+						&& StringUtils.isBlank(s.getComponentRule())
+						&& StringUtils.isBlank(s.getClassifyInvokeAttr())
+						&& (VciBaseUtil.getBoolean(s.getFormDisplayFlag()))
+				).collect(Collectors.toList());
+				if(CollectionUtils.isEmpty(templateAttrVOS)){
+					throw new VciBaseException("妯℃澘娌℃湁閰嶇疆浠讳綍銆愯〃鍗曟樉绀恒�戜负銆愭槸銆戠殑灞炴��");
 				}
-			});
+				templateAttrVOS.stream().forEach(codetemplateAttr -> {
+					String field = codetemplateAttr.getId();
+					String name = codetemplateAttr.getName();
+					CodeClassifyTemplateAttrVO codeBaseAttributeDTO = new CodeClassifyTemplateAttrVO();
+					boolean res = (StringUtils.isNotBlank(codetemplateAttr.getAttributeGroup()) && codetemplateAttr.getAttributeGroup().equals(BATCHADD_EXCEPORT_ATTR_TYPE))//鍩烘湰灞炴�у瓧娈垫樉绀�
+						|| (StringUtils.isNotBlank(codetemplateAttr.getKeyAttrFlag()) && Boolean.parseBoolean(codetemplateAttr.getKeyAttrFlag()))//鍏抽敭灞炴�х殑瀛樺叆
+						|| (StringUtils.isNotBlank(codetemplateAttr.getSameRepeatAttrFlag()) && Boolean.parseBoolean(codetemplateAttr.getSameRepeatAttrFlag())) //鐩镐技灞炴�х殑瀛樺叆
+						|| (StringUtils.isNotBlank(codetemplateAttr.getRequireFlag()) && Boolean.parseBoolean(codetemplateAttr.getRequireFlag()));
+					if (allFieldToOutNameMap.containsKey(name)) {//濡傛灉瀛樺湪鐨勮瘽鍒欓渶瑕佹牴鎹叿浣撶殑鍘昏祴鍊�
+						codeBaseAttributeDTO = allFieldToOutNameMap.get(name);
+						if (StringUtils.isNotBlank(codetemplateAttr.getKeyAttrFlag()) && Boolean.parseBoolean(codetemplateAttr.getKeyAttrFlag())) {
+							codeBaseAttributeDTO.setKeyAttrFlag(codetemplateAttr.getKeyAttrFlag());//灞炴�у叧閿睘鎬�
+						}
+						if (StringUtils.isNotBlank(codetemplateAttr.getRequireFlag()) && Boolean.parseBoolean(codetemplateAttr.getRequireFlag())) {
+							codeBaseAttributeDTO.setRequireFlag(codetemplateAttr.getRequireFlag());//灞炴�у繀濉」
+						}
+						if (StringUtils.isNotBlank(codetemplateAttr.getSameRepeatAttrFlag()) && Boolean.parseBoolean(codetemplateAttr.getSameRepeatAttrFlag())) {
+							codeBaseAttributeDTO.setSameRepeatAttrFlag(codetemplateAttr.getSameRepeatAttrFlag());//灞炴�х浉浼煎睘鎬�
+						}
+					} else if (res) {
+						allFieldToOutNameMap.put(name, codetemplateAttr);
+					}
+				});
+			}
 		});
 		//鏁寸悊濂芥墍鏈夋ā鏉块渶瑕佸啓鍏xecl鐨勫睘鎬т俊鎭�
 		Workbook workbook = new HSSFWorkbook();
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeClassifyTemplateMapper.xml b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeClassifyTemplateMapper.xml
index 2518fb3..df21621 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeClassifyTemplateMapper.xml
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeClassifyTemplateMapper.xml
@@ -109,7 +109,7 @@
                                 start with oid = #{classifyoid}
                             connect by prior oid = parentcodeclassifyoid) cls
                            on t.codeclassifyoid = cls.oid
-        where t.lcstatus = #{templatelcstatus}
+        where t.lastr=1 and t.lastv=1 and t.lcstatus = #{templatelcstatus}
           and cls.oid is not null
     </select>
 

--
Gitblit v1.9.3