From 4187374bbae66190e7eca6f42cc5e61cfae1637f Mon Sep 17 00:00:00 2001
From: xiejun <xj@2023>
Date: 星期六, 12 八月 2023 13:33:18 +0800
Subject: [PATCH] PDM集成swing界面相关功能开发

---
 Source/UBCS/ubcs-codeApply/src/main/java/com/vci/ubcs/codeapply/CodeApplyFor410MainPanel.java |  628 +++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 539 insertions(+), 89 deletions(-)

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..d4bffac 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;
@@ -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
 	 */
@@ -148,7 +153,7 @@
 		Map<String,String> condtionMap=new HashMap<>();
 		condtionMap.put("codeClassId", rmType.getOid());
 		R r= HttpUtil.sendGet(url+"/getCodeRuleByClassifyFullInfo",condtionMap,new HashMap<>());
-		CodeRuleVO codeRuleVO=new CodeRuleVO();
+		codeRuleVO=new CodeRuleVO();
 		if(r.isSuccess()){
 			Object object= r.getData();
 			if(object!=null) {
@@ -667,6 +672,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 +711,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 +738,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 +808,7 @@
 					lbl.setToolTipText("鐐瑰嚮姝ゅ鑾峰彇妯℃澘瀵瑰簲瑙勫垯鐨勫��");
 					lbl.addMouseListener(new MouseAdapter() {
 						public void mouseClicked(MouseEvent e){
-						//	getComptAttrValue(attrObj,attrIdToCtrlMaps,transmitForRMData.getTempPropObjsList());
+						getComptAttrValue(attrObj,attrIdToCtrlMaps);
 
 						}
 					});
@@ -866,77 +882,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鐨勫睘鎬у垪琛�
@@ -1201,16 +1146,56 @@
 		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());
+		R r= HttpUtil.sendGet(url+"/getValueByFormula",condtionMap,new HashMap<>());
+		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 +1208,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 +1257,435 @@
 		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.getValue()))) {
+					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());
+			R r= HttpUtil.sendGet(url+"/countChildrenByClassifyOid",condtionMap,new HashMap<>());
+			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.getValue();
+					/*} 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().getValue();
+				} 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 +1698,36 @@
 	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;
+	}
 }

--
Gitblit v1.9.3