From 9c622c05702484fa4942647099cdbdbb3bec50bc Mon Sep 17 00:00:00 2001
From: fujunling <2984387807@qq.com>
Date: 星期一, 19 六月 2023 10:19:56 +0800
Subject: [PATCH] 解决proxy冲突

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java |  556 ++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 366 insertions(+), 190 deletions(-)

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 fc99a8c..fe8c086 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
@@ -6,6 +6,7 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.sun.corba.se.impl.orbutil.ObjectUtility;
 import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
 import com.vci.ubcs.code.bo.CodeTemplateAttrSqlBO;
 import com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant;
@@ -18,6 +19,7 @@
 import com.vci.ubcs.code.mapper.CodeWupinMapper;
 import com.vci.ubcs.code.mapper.CommonsMapper;
 import com.vci.ubcs.code.service.*;
+import com.vci.ubcs.code.util.ClientBusinessObject;
 import com.vci.ubcs.code.vo.CodeKeyAttrRepeatVO;
 import com.vci.ubcs.code.vo.pagemodel.UITableFieldVO;
 import com.vci.ubcs.code.vo.pagemodel.UITablePageVO;
@@ -36,6 +38,7 @@
 import com.vci.ubcs.starter.revision.model.TreeQueryObject;
 import com.vci.ubcs.starter.revision.model.TreeWrapperOptions;
 import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
+import com.vci.ubcs.starter.util.UBCSSqlKeyword;
 import com.vci.ubcs.starter.web.constant.QueryOptionConstant;
 import com.vci.ubcs.starter.web.constant.RegExpConstant;
 import com.vci.ubcs.starter.web.enumpck.BooleanEnum;
@@ -57,9 +60,10 @@
 import org.slf4j.LoggerFactory;
 import org.springblade.core.cache.utils.CacheUtil;
 import org.springblade.core.launch.constant.AppConstant;
-import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.DateUtil;
+import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.StringPool;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cache.Cache;
@@ -69,15 +73,21 @@
 
 import javax.annotation.Resource;
 import java.beans.BeanInfo;
+import java.beans.IntrospectionException;
 import java.beans.Introspector;
 import java.beans.PropertyDescriptor;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.math.BigDecimal;
+import java.sql.SQLException;
+import java.sql.Timestamp;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.time.ZonedDateTime;
 import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.function.Supplier;
 import java.util.stream.Collectors;
 
 import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.DATA_OID_NOT_EXIST;
@@ -118,7 +128,7 @@
 	@Resource
 	ISysClient iSysClient;
 	/**
-	 * 绯荤粺鐨勬湇鍔�
+	 * 瀵嗙骇鏈嶅姟
 	 */
 	@Resource
 	private IWebSecretClient secretService;
@@ -326,6 +336,7 @@
 		}
 		return comboboxKVs;
 	}
+
 	/**
 	 * 淇敼鐘舵��
 	 *
@@ -336,14 +347,6 @@
 	public void changeStatus(BaseModelDTO baseModelDTO) {
 		VciBaseUtil.alertNotNull(baseModelDTO, "鏁版嵁淇℃伅", baseModelDTO.getOid(), "涓婚敭", baseModelDTO.getBtmname(), "涓氬姟绫诲瀷", baseModelDTO.getLcStatus(), "鐩爣鐘舵��");
 		List<String> oids = VciBaseUtil.str2List(baseModelDTO.getOid());
-//		List<ClientBusinessObject> cboList = boService.selectCBOByOidCollection(oids, baseModelDTO.getBtmname());
-		// TODO 鎻掍釜鐐� 涓氬姟绫诲瀷瀹屾垚鍚庨渶瑕佷慨鏀�
-		QueryWrapper<BtmTypeVO> wrapper = new QueryWrapper<>();
-		wrapper.eq("BTMNAME",baseModelDTO.getBtmname());
-		wrapper.in("OID",oids);
-		// TODO 寰呭畬鍠�
-		//鎻掍釜鐐� 涓氬姟绫诲瀷瀹屾垚鍚庨渶瑕佷慨鏀�
-//		QueryWrapper<BtmTypeVO> wrapper = new QueryWrapper<>();
 		List<BaseModel> baseModels = new ArrayList<>();
 		baseModels = selectByTypeAndOid(baseModelDTO.getBtmname(), baseModelDTO.getOid());
 		if(baseModels.size() == 0){
@@ -363,15 +366,7 @@
 		// 鍥炴敹闇�瑕佷笟鍔℃暟鎹垹闄�
 		if (CodeDefaultLC.TASK_BACK.getValue().equals(baseModelDTO.getLcStatus())) {
 			R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(baseModelDTO.getBtmname()));
-//			String referTable = listR.getData().get(0).getTableName();
 			commonsMapper.deleteByTaleAndOid(listR.getData().get(0).getTableName(),VciBaseUtil.toInSql(baseModelDTO.getOid()));
-			// BatchCBO batchCBO = new BatchCBO();
-			// batchCBO.getDeleteCbos().addAll(cboList);
-
-			// TODO 寰呭畬鍠�
-			//btmTypeClient.deleteBatchIds(cboList);
-
-			//boService.persistenceBatch(batchCBO);
 		} else {
 			for (BaseModel baseModel : baseModels) {
 				baseModel.setLcStatus(baseModelDTO.getLcStatus());
@@ -434,11 +429,11 @@
 		List<String> codeList = productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(),cboList);
 
 
-		List<String> charList = new ArrayList<>();
-		for (BaseModel baseModel : cboList) {
-			charList.add(baseModel.getId());
-		}
-		batchSaveSelectChar(templateVO, charList);
+//		List<String> charList = new ArrayList<>();
+//		for (BaseModel baseModel : cboList) {
+//			charList.add(baseModel.getId());
+//		}
+		batchSaveSelectChar(templateVO, cboList);
 		return codeList.size() > 0 ? codeList.get(0) : "";
 //		return null;
 	}
@@ -662,7 +657,7 @@
 			} else if (StringUtils.isNotBlank(orderDTO.getCopyFromVersion())) {
 				sql[0] += " and oid != '" + orderDTO.getCopyFromVersion() + "'";
 			}
-			sql[0] += " and islastR = '1' and islastV = '1' ";
+			sql[0] += " and lastR = '1' and lastV = '1' ";
 //			if (boService.queryCountBySql(sql[0], new HashMap<>()) > 0) {
 			if (Integer.parseInt(commonsMapper.selectById(sql[0]).get(0)) > 0) {
 				String ruleInfoMsg = keyRuleVO == null ? "" : "鏌ヨ瑙勫垯锛氬幓闄ょ┖鏍�--{0},蹇界暐澶у皬鍐�--{1},蹇界暐鍏ㄥ崐瑙�--{2},蹇界暐鍏ㄩ儴绌烘牸--{3}";
@@ -874,7 +869,6 @@
 		}
 		try {
 			String keyPrefix = BTM_INIT_CACHE.concat(StringPool.COLON).concat(AuthUtil.getTenantId()).concat(StringPool.COLON);
-//			String finalBtmName = btmName;
 			Cache.ValueWrapper valueWrapper = CacheUtil.getCache(keyPrefix).get(keyPrefix.concat(String.valueOf(btmName)));
 			if(valueWrapper == null){
 				CacheUtil.getCache(keyPrefix).put(keyPrefix.concat(String.valueOf(btmName)), createBaseModel(btmName));
@@ -885,52 +879,6 @@
 			logger.error("鍒涘缓涓氬姟绫诲瀷瀵硅薄",e);
 			throw new VciBaseException("initBtmError",new String[]{btmName});
 		}
-//		String userName = AuthUtil.getUser().getUserName();
-//		CodeWupin wupinEntity = new CodeWupin();
-//		wupinEntity.setOid(VciBaseUtil.getPk());
-////		bo.setRevisionid((new ObjectUtility()).getNewObjectID36());
-////		bo.setNameoid((new ObjectUtility()).getNewObjectID36());
-//		wupinEntity.setBtmname(btmName);
-//		wupinEntity.setLastR(String.valueOf(1));
-//		wupinEntity.setFirstR(String.valueOf(1));
-//		wupinEntity.setFirstV(String.valueOf(1));
-//		wupinEntity.setLastV(String.valueOf(1));
-//		wupinEntity.setCreator(userName);
-//		wupinEntity.setCreateTime(new Date());
-//		wupinEntity.setLastModifier(userName);
-//		wupinEntity.setLastModifyTime(new Date());
-//		wupinEntity.setRevisionRule("numberversionrule");
-//		wupinEntity.setVersionRule("0");
-////		if(StringUtils.isNotBlank(btmTypeVO.getRevisionruleid())){
-//			//
-////			OsRevisionRuleVO revisionRuleVO = revisionRuleService.getRevisionRuleById(btmTypeVO.getRevisionruleid());
-//		wupinEntity.setRevisionValue("1");
-////		}
-//
-//		wupinEntity.setRevisionSeq(1);
-//		wupinEntity.setVersionSeq(1);
-//		//鎻掍釜鐐癸紝闇�瑕侀棶鍕囧摜鐗堟湰闂锛屽睍绀洪粯璁や负1
-//		wupinEntity.setVersionValue("1");
-//		wupinEntity.setLctid("wupinLC");
-//		wupinEntity.setLcStatus("Editing");
-//		wupinEntity.setId("");
-//		wupinEntity.setName("");
-//		wupinEntity.setDescription("");
-//		wupinEntity.setOwner(userName);
-//		wupinEntity.setCheckinby(userName);
-//		wupinEntity.setCopyFromVersion("");
-//		wupinEntity.setMaterialtype(1001);
-//		wupinEntity.setCaigouwl("true");
-//		wupinEntity.setShifoupihaoguanli("true");
-//		wupinEntity.setKucunwl("true");
-//		wupinEntity.setXiaoshouwl("false");
-//		wupinEntity.setPassing("true");
-
-//		this.initTypeAttributeValue(wupinEntity,btmTypeVO);
-//		return wupinEntity;
-
-
-//		return cbo;
 	}
 
 	/**
@@ -957,7 +905,7 @@
 	 */
 	@Override
 	public void batchSaveSelectChar(CodeClassifyTemplateVO templateVO, /*List<ClientBusinessObject> cboList*/
-									List<String> cboList) {
+									List<BaseModel> cboList) {
 		if (templateVO != null && !CollectionUtils.isEmpty(cboList)) {
 			//鏄紓姝ョ殑锛屾墍浠ョ洿鎺ュ惊鐜�
 			List<CodeClassifyTemplateAttrVO> selectAttrVOs = templateVO.getAttributes().stream().filter(s -> StringUtils.isNotBlank(s.getLibraryIdentification())).collect(Collectors.toList());
@@ -965,13 +913,26 @@
 			if (!CollectionUtils.isEmpty(selectAttrVOs)) {
 //				SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
 				selectAttrVOs.parallelStream().forEach(attrVO -> {
-					List<String> valuesList = cboList;
-//					cboList.parallelStream().forEach(cbo -> {
+					List<String> valuesList = new ArrayList<>();
+					cboList.parallelStream().forEach(cbo -> {
 //						String value = cbo.get.getAttributeValue(attrVO.getId());
-//						if (StringUtils.isNotBlank(value)) {
-//							valuesList.add(value);
-//						}
-//					});
+
+						//灏哹ean杞负map,mybatis缁熶竴澶勭悊
+						Map<String,String> map = null;
+
+//						baseModels.stream().forEach(model-> {
+						try {
+							map = VciBaseUtil.convertBean2Map(cbo);
+						} catch (Exception e) {
+							throw new VciBaseException("绫诲瀷杞崲閿欒锛�" + e.getMessage());
+						}
+//						});
+
+						String value = map.get(attrVO.getId());
+						if (StringUtils.isNotBlank(value)) {
+							valuesList.add(value);
+						}
+					});
 					if (!CollectionUtils.isEmpty(valuesList)) {
 						for (String s : valuesList) {
 							DictBiz dictBiz = new DictBiz();
@@ -1711,10 +1672,10 @@
 			});
 
 			andCondtionMap.forEach((k, v) -> {
-				andSql.add(getConditionSql(k.toLowerCase(), v, referFieldMap, attrVOMap));
+				andSql.add(getConditionSql(k.toLowerCase(), v, referFieldMap, attrVOMap,btmType));
 			});
 			orConditionMap.forEach((k, v) -> {
-				orSql.add(getConditionSql(k.toLowerCase(), v, referFieldMap, attrVOMap));
+				orSql.add(getConditionSql(k.toLowerCase(), v, referFieldMap, attrVOMap,btmType));
 			});
 		}
 		//缁勫悎璧锋潵
@@ -1786,7 +1747,137 @@
 	 * @param attrVOMap     灞炴�х殑鏄犲皠
 	 * @return Sql璇彞
 	 */
-	private String getConditionSql(String key, String value, Map<String/**鍙傜収鐨勫睘鎬�**/, String/**瀹為檯鐨勫睘鎬�**/> referFieldMap, Map<String, CodeClassifyTemplateAttrVO> attrVOMap) {
+	private String getConditionSql(String key, String value, Map<String/**鍙傜収鐨勫睘鎬�**/, String/**瀹為檯鐨勫睘鎬�**/> referFieldMap, Map<String, CodeClassifyTemplateAttrVO> attrVOMap,String btmType) {
+		/*if (!Func.hasEmpty(new Object[]{key,value}) && !key.endsWith("_ignore")) {
+			if (key.endsWith("_like")) {
+				String field = UBCSSqlKeyword.getColumn(key, "_like");
+				if (referFieldMap.containsKey(field)) {
+					//璇存槑杩樻槸鍙傜収閲岄潰鐨勶紝鎴戜滑榛樿杩欑鎯呭喌涓嬮兘鏄瓧绗︿覆鍚э紝鍥犱负鍙傜収鐨勫睘鎬т笉涓�瀹氱敤鐨勫钩鍙扮殑灞炴�ф睜閲岀殑锛屾墍浠ュぇ閮ㄥ垎鎯呭喌涓嬶紝鏄剧ず鐨勫睘鎬ч兘鏄瓧绗︿覆鍚�
+					return referFieldMap.get(field) + SPACE + "LIKE" + SPACE + "concat(%,"+"concat(" + value + ",%)" + SPACE;
+				} else {
+					return (field.contains(".") ? "" : "t.") + field + SPACE + "LIKE " + "concat(%,"+"concat(" + getStringValueInWhere(field, value, attrVOMap) + ",%)" + SPACE;
+				}
+			} else if (key.endsWith("_notequal")) {
+				String field = UBCSSqlKeyword.getColumn(key, "_notequal");
+				if (referFieldMap.containsKey(field)) {
+					//璇存槑杩樻槸鍙傜収閲岄潰鐨勶紝鎴戜滑榛樿杩欑鎯呭喌涓嬮兘鏄瓧绗︿覆鍚э紝鍥犱负鍙傜収鐨勫睘鎬т笉涓�瀹氱敤鐨勫钩鍙扮殑灞炴�ф睜閲岀殑锛屾墍浠ュぇ閮ㄥ垎鎯呭喌涓嬶紝鏄剧ず鐨勫睘鎬ч兘鏄瓧绗︿覆鍚�
+					return referFieldMap.get(field) + SPACE + " != '" + value + "'" + SPACE;
+				} else {
+					return (field.contains(".") ? "" : "t.") + field + SPACE + " != " + getStringValueInWhere(field, value, attrVOMap);
+				}
+			} else if (key.endsWith("_likeleft")) {
+				String field = UBCSSqlKeyword.getColumn(key, "_likeleft");
+				if (referFieldMap.containsKey(field)) {
+					return referFieldMap.get(field) + SPACE + "LIKE" + SPACE + "concat(%,"+value+")" + SPACE;
+				} else {
+					return (field.contains(".") ? "" : "t.") + field + SPACE + "LIKE " + "concat(%,"+getStringValueInWhere(field, value, attrVOMap)+")" + SPACE;
+				}
+			} else if (key.endsWith("_likeright")) {
+				String field = UBCSSqlKeyword.getColumn(key, "_likeright");
+				if (referFieldMap.containsKey(field)) {
+					return referFieldMap.get(field) + SPACE + "LIKE" + SPACE + "concat("+value+",%)" + SPACE;
+				} else {
+					return (field.contains(".") ? "" : "t.") + field + SPACE + "LIKE " + "concat("+getStringValueInWhere(field, value, attrVOMap)+",%)" + SPACE;
+				}
+			} else if (key.endsWith("_notlike")) {
+				String field = UBCSSqlKeyword.getColumn(key, "_notlike");
+				if (referFieldMap.containsKey(field)) {
+					return referFieldMap.get(field) + SPACE + "NO LIKE" + SPACE + "concat(%,concat("+value+",%)" + SPACE;
+				} else {
+					return (field.contains(".") ? "" : "t.") + field + SPACE + "NO LIKE " + "concat(%,concat"+getStringValueInWhere(field, value, attrVOMap)+",%)" + SPACE;
+				}
+			} else if (key.endsWith("_ge")) {
+				String field = UBCSSqlKeyword.getColumn(key, "_ge");
+				if (referFieldMap.containsKey(field)) {
+					//璇存槑杩樻槸鍙傜収閲岄潰鐨勶紝鎴戜滑榛樿杩欑鎯呭喌涓嬮兘鏄瓧绗︿覆鍚э紝鍥犱负鍙傜収鐨勫睘鎬т笉涓�瀹氱敤鐨勫钩鍙扮殑灞炴�ф睜閲岀殑锛屾墍浠ュぇ閮ㄥ垎鎯呭喌涓嬶紝鏄剧ず鐨勫睘鎬ч兘鏄瓧绗︿覆鍚�
+					return referFieldMap.get(field) + SPACE + " >= '" + value + "'" + SPACE;
+				} else {
+					return (field.contains(".") ? "" : "t.") + field + SPACE + " >= '" + getStringValueInWhere(value, field, attrVOMap) + "'" + SPACE;
+				}
+			} else if (key.endsWith("_le")) {
+				//璇存槑鏄�<=鐨勩�傛垜浠渶瑕佸厛鑾峰彇涓�涓�
+				String field = UBCSSqlKeyword.getColumn(key, "_le");
+				if (referFieldMap.containsKey(field)) {
+					//璇存槑杩樻槸鍙傜収閲岄潰鐨勶紝鎴戜滑榛樿杩欑鎯呭喌涓嬮兘鏄瓧绗︿覆鍚э紝鍥犱负鍙傜収鐨勫睘鎬т笉涓�瀹氱敤鐨勫钩鍙扮殑灞炴�ф睜閲岀殑锛屾墍浠ュぇ閮ㄥ垎鎯呭喌涓嬶紝鏄剧ず鐨勫睘鎬ч兘鏄瓧绗︿覆鍚�
+					return referFieldMap.get(field) + SPACE + " <= '" + value + "'" + SPACE;
+				} else {
+					return (field.contains(".") ? "" : "t.") + field + SPACE + " <= '" + getStringValueInWhere(field, value, attrVOMap) + "'" + SPACE;
+				}
+			} else if (key.endsWith("_gt")) {
+				String field = UBCSSqlKeyword.getColumn(key, "_gt");
+				if (referFieldMap.containsKey(field)) {
+					return referFieldMap.get(field) + SPACE + "> '" + value + "'" + SPACE;
+				} else {
+					return (field.contains(".") ? "" : "t.") + field + SPACE + "> '" + getStringValueInWhere(field, value, attrVOMap) + "'" + SPACE;
+				}
+			} else if (key.endsWith("_lt")) {
+				String field = UBCSSqlKeyword.getColumn(key, "_lt");
+				if (referFieldMap.containsKey(field)) {
+					//璇存槑杩樻槸鍙傜収閲岄潰鐨勶紝鎴戜滑榛樿杩欑鎯呭喌涓嬮兘鏄瓧绗︿覆鍚э紝鍥犱负鍙傜収鐨勫睘鎬т笉涓�瀹氱敤鐨勫钩鍙扮殑灞炴�ф睜閲岀殑锛屾墍浠ュぇ閮ㄥ垎鎯呭喌涓嬶紝鏄剧ず鐨勫睘鎬ч兘鏄瓧绗︿覆鍚�
+					return referFieldMap.get(field) + SPACE + "< '" + value + "'" + SPACE;
+				} else {
+					return (field.contains(".") ? "" : "t.") + field + SPACE + "< '" + getStringValueInWhere(field, value, attrVOMap) + "'" + SPACE;
+				}
+			} else if (key.endsWith("_datege")) {
+				String field = UBCSSqlKeyword.getColumn(key, "_datege");
+				if (referFieldMap.containsKey(field)) {
+					//璇存槑杩樻槸鍙傜収閲岄潰鐨勶紝鎴戜滑榛樿杩欑鎯呭喌涓嬮兘鏄瓧绗︿覆鍚э紝鍥犱负鍙傜収鐨勫睘鎬т笉涓�瀹氱敤鐨勫钩鍙扮殑灞炴�ф睜閲岀殑锛屾墍浠ュぇ閮ㄥ垎鎯呭喌涓嬶紝鏄剧ず鐨勫睘鎬ч兘鏄瓧绗︿覆鍚�
+					return referFieldMap.get(field) + SPACE + ">= '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE;
+				} else {
+					return (field.contains(".") ? "" : "t.") + field + SPACE + ">= '" + DateUtil.parse(String.valueOf(getStringValueInWhere(field, value, attrVOMap)), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE;
+				}
+			} else if (key.endsWith("_dategt")) {
+				String field = UBCSSqlKeyword.getColumn(key, "_dategt");
+				if (referFieldMap.containsKey(field)) {
+					return referFieldMap.get(field) + SPACE + "> '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE;
+				} else {
+					return (field.contains(".") ? "" : "t.") + field + SPACE + "> '" + DateUtil.parse(String.valueOf(getStringValueInWhere(field, value, attrVOMap)), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE;
+				}
+			} else if (key.endsWith("_dateequal")) {
+				String field = UBCSSqlKeyword.getColumn(key, "_dateequal");
+				if (referFieldMap.containsKey(field)) {
+					return referFieldMap.get(field) + SPACE + "= '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE;
+				} else {
+					return (field.contains(".") ? "" : "t.") + field + SPACE + "= '" + DateUtil.parse(String.valueOf(getStringValueInWhere(field, value, attrVOMap)), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE;
+				}
+			} else if (key.endsWith("_datele")) {
+				String field = UBCSSqlKeyword.getColumn(key, "_datele");
+				if (referFieldMap.containsKey(field)) {
+					return referFieldMap.get(field) + SPACE + "<= '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE;
+				} else {
+					return (field.contains(".") ? "" : "t.") + field + SPACE + "<= '" + DateUtil.parse(String.valueOf(getStringValueInWhere(field, value, attrVOMap)), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE;
+				}
+			} else if (key.endsWith("_datelt")) {
+				String field = UBCSSqlKeyword.getColumn(key, "_datelt");
+				if (referFieldMap.containsKey(field)) {
+					return referFieldMap.get(field) + SPACE + "< '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE;
+				} else {
+					return (field.contains(".") ? "" : "t.") + field + SPACE + "< '" + DateUtil.parse(String.valueOf(getStringValueInWhere(field, value, attrVOMap)), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE;
+				}
+			} else if (key.endsWith("_null")) {
+				String field = UBCSSqlKeyword.getColumn(key, "_null");
+				if (referFieldMap.containsKey(field)) {
+					return referFieldMap.get(field) + SPACE + "IS NULL" + SPACE;
+				} else {
+					return (field.contains(".") ? "" : "t.") + field + SPACE + "IS NULL" + SPACE;
+				}
+			} else if (key.endsWith("_notnull")) {
+				String field = UBCSSqlKeyword.getColumn(key, "_null");
+				if (referFieldMap.containsKey(field)) {
+					return referFieldMap.get(field) + SPACE + "IS NOT NULL" + SPACE;
+				} else {
+					return (field.contains(".") ? "" : "t.") + field + SPACE + "IS NOT NULL" + SPACE;
+				}
+			} else {
+				String field = UBCSSqlKeyword.getColumn(key, "_dateequal");
+				if (referFieldMap.containsKey(field)) {
+					return referFieldMap.get(field) + SPACE + "= '" + value + "'" + SPACE;
+				} else {
+					return (field.contains(".") ? "" : "t.") + field + SPACE + "= '" + getStringValueInWhere(field, value, attrVOMap)+ "'" + SPACE;
+				}
+			}
+
+		}*/
 		if (key.endsWith("_begin")) {
 			//璇存槑鏄�>=鐨勩�傛垜浠渶瑕佸厛鑾峰彇涓�涓�
 			String field = (key.substring(0, key.length() - 6).toLowerCase().trim());
@@ -1809,12 +1900,11 @@
 			if (referFieldMap.containsKey(key)) {
 				//璇存槑鏄弬鐓х殑锛屾垜浠弬鐓х殑鏌ヨ閮借涓烘槸瀛楃涓诧紝濡傛灉鏄椂闂存牸寮忕殑鏌ヨ鑲畾鏈夐棶棰橈紝
 				String selectKey = referFieldMap.get(key);
-				return getSqlByValue(selectKey, value, null);
+				return getSqlByValue(selectKey, value, null,btmType);
 			} else {
-				return getSqlByValue(key, value, attrVOMap);
+				return getSqlByValue(key, value, attrVOMap,btmType);
 			}
 		}
-
 	}
 
 	/**
@@ -1873,6 +1963,24 @@
 	}
 
 	/**
+	 * 鏌ョ湅鏄惁榛樿灞炴��
+	 * @param selectKey
+	 * @param btmType
+	 * @return
+	 */
+	private boolean isDefaultAttr(String selectKey, String btmType){
+		if(StringUtils.isBlank(btmType)){
+			return false;
+		}
+		R<BtmTypeVO> r = btmTypeClient.getDefaultAttrByBtmId(btmType);
+		List<BtmTypeAttributeVO> attributes = r.getData().getAttributes();
+		if(r.getCode() != 200 || attributes.isEmpty()){
+			return false;
+		}
+		return  attributes.stream().anyMatch(item->item.getId().equals(selectKey));
+	}
+
+	/**
 	 * 灏佽鏈�缁堢殑sql璇彞涓殑鍊奸儴鍒�
 	 *
 	 * @param selectKey 鏌ヨ鐨勫瓧娈�
@@ -1880,12 +1988,12 @@
 	 * @param attrVOMap 灞炴�х殑鏄剧ず瀵硅薄鏄犲皠
 	 * @return sql閲岀殑鍊�
 	 */
-	private String getSqlByValue(String selectKey, String value, Map<String, CodeClassifyTemplateAttrVO> attrVOMap) {
+	private String getSqlByValue(String selectKey, String value, Map<String, CodeClassifyTemplateAttrVO> attrVOMap,String btmType) {
 		StringBuilder sql = new StringBuilder();
-		// TODO 寰呭畬鍠�
-		//	if (!selectKey.contains(".") && (attrVOMap.containsKey(selectKey.toLowerCase(Locale.ROOT)) || attributeService.isDefaultAttr(selectKey) || selectKey.matches(RegExpConstant.LETTER))) {
-		//		sql.append("t.");
-		//	}
+		// TODO 宸插畬鍠�
+		if (!selectKey.contains(".") && (attrVOMap.containsKey(selectKey.toLowerCase(Locale.ROOT)) || isDefaultAttr(selectKey,btmType) || selectKey.matches(RegExpConstant.LETTER))) {
+			sql.append("t.");
+		}
 		if (value.startsWith(QueryOptionConstant.IN)) {
 			sql.append(selectKey)
 				.append(SPACE)
@@ -1989,12 +2097,15 @@
 //		CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
 		CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
 		//鎵句笟鍔$被鍨嬶紝鐒跺悗浣跨敤涓婚敭鍘昏幏鍙栨暟鎹簱閲岀殑鏁版嵁
-//		List<ClientBusinessObject> cbos = boService.queryCBO(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), WebUtil.getOidQuery(orderDTO.getOid()));
+		List<BaseModel> cbos = selectByTypeAndOid(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), orderDTO.getOid());
 
-		QueryWrapper<CodeWupin> btmWrapper = new QueryWrapper<>();
-		btmWrapper.eq("OID",orderDTO.getOid());
-		CodeWupin cbo = codeWupinMapper.selectOne(btmWrapper);
-
+		if (CollectionUtils.isEmpty(cbos)) {
+			throw new VciBaseException(DATA_OID_NOT_EXIST);
+		}
+//		QueryWrapper<CodeWupin> btmWrapper = new QueryWrapper<>();
+//		btmWrapper.eq("OID",orderDTO.getOid());
+//		CodeWupin cbo = codeWupinMapper.selectOne(btmWrapper);
+		BaseModel cbo = cbos.get(0);
 //		CodeClstemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid());
 //		CodeRuleVO ruleVO = ruleService.getObjectHasSecByOid(orderDTO.getCodeRuleOid());
 
@@ -2032,7 +2143,7 @@
 		cbo.setDescription(orderDTO.getDescription());
 		cbo.setName(orderDTO.getName());
 		try {
-			cbo.setDescription(orderDTO.getDescription());
+			cbo.setDescription( StringUtils.isBlank(orderDTO.getDescription())?"":orderDTO.getDescription());
 			cbo.setName(orderDTO.getName());
 ////			cbo.setAttributeValueWithNoCheck("description", orderDTO.getDescription());
 //			cbo.setAttributeValue("name", orderDTO.getName());
@@ -2040,8 +2151,9 @@
 			e.printStackTrace();
 		}
 		cbo.setLastModifyTime(new Date());
-		cbo.setLastModifier(AuthUtil.getUser().getUserName());
-		codeWupinMapper.updateById(cbo);
+		cbo.setLastModifier(String.valueOf(AuthUtil.getUser().getUserId()));
+		updateBatchByBaseModel(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), Collections.singletonList(cbo));
+//		codeWupinMapper.updateById(cbo);
 //
 //		List<CodeWupinEntity> cboList = new ArrayList<>();
 //
@@ -2067,7 +2179,8 @@
 //		List<ClientBusinessObject> cboList = new ArrayList<>();
 //		cboList.add(cbo);
 //		boService.persistenceBatch(batchCBO);
-		batchSaveSelectChar(templateVO, Arrays.asList(cbo.getId()));
+		batchSaveSelectChar(templateVO, Collections.singletonList(cbo));
+//		batchSaveSelectChar(templateVO, Arrays.asList(cbo.getId()));
 	}
 
 	/**
@@ -2235,67 +2348,77 @@
 	 */
 	@Override
 	public R batchUpdateCode(List<CodeOrderDTO> orderDTOList) {
-//		VciBaseUtil.alertNotNull(orderDTOList,"缂栫爜鐢宠鐩稿叧鐨勫睘鎬у唴瀹�");
-//		orderDTOList.forEach(orderDTO -> {
-//			VciBaseUtil.alertNotNull(orderDTO, "缂栫爜鐢宠鐩稿叧鐨勫睘鎬х殑鍐呭閮戒负绌�", orderDTO.getOid(), "鏁版嵁涓婚敭",
-//				orderDTO.getCodeClassifyOid(), "涓婚搴撳垎绫荤殑涓婚敭");
-//		});
-//		Map<String, CodeOrderDTO> orderDTOMap = orderDTOList.stream().filter(orderDTO -> orderDTO != null && StringUtils.isNotBlank(orderDTO.getOid())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
-//		List<ClientBusinessObject> updateList = new ArrayList<>();
-//		// 搴旇閮芥槸涓�涓垎绫讳笅鐨勪笟鍔℃暟鎹紝鎵剧涓�鏉$殑灏辫
-//		CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTOList.get(0).getCodeClassifyOid());
+		VciBaseUtil.alertNotNull(orderDTOList,"缂栫爜鐢宠鐩稿叧鐨勫睘鎬у唴瀹�");
+		orderDTOList.forEach(orderDTO -> {
+			VciBaseUtil.alertNotNull(orderDTO, "缂栫爜鐢宠鐩稿叧鐨勫睘鎬х殑鍐呭閮戒负绌�", orderDTO.getOid(), "鏁版嵁涓婚敭",
+				orderDTO.getCodeClassifyOid(), "涓婚搴撳垎绫荤殑涓婚敭");
+		});
+		Map<String, CodeOrderDTO> orderDTOMap = orderDTOList.stream().filter(orderDTO -> orderDTO != null && StringUtils.isNotBlank(orderDTO.getOid())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
+		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);
-//		}
+		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)){
-//			throw new VciBaseException(DATA_OID_NOT_EXIST);
-//		}
+		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, ClientBusinessObject> 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);
-//			ClientBusinessObject cbo = cboMap.get(oid);
-//			if (!cbo.getTs().contains(VciDateUtil.date2Str(orderDTO.getTs(), VciDateUtil.DateTimeFormat))) {
-//				throw new VciBaseException("鏁版嵁涓嶆槸鏈�鏂扮殑锛屽彲鑳戒粬浜哄凡缁忎慨鏀癸紝璇峰埛鏂板悗鍐嶈瘯");
-//			}
-//			if (!CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(cbo.getLcStatus()) && !orderDTO.isEditInProcess()) {
-//				throw new VciBaseException("鏁版嵁涓嶆槸{0}鐨勭姸鎬侊紝涓嶅厑璁镐慨鏀�", new String[]{CodeDefaultLC.EDITING.getText()});
-//			}
-//			//1. 鍒ゆ柇蹇呰緭椤�
-//			CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid());
-//			checkRequiredAttrOnOrder(templateVO, orderDTO);
-//			//2.鍏堟敞鍏ワ紝鍐嶇粍鍚堬紝鏈�鍚庢牎楠�
-//			switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO);
-//			//3.澶勭悊缁勫悎瑙勫垯銆傜粍鍚堣鍒欎笉鑳戒娇鐢ㄧ紪鐮佺殑灞炴�э紝鍥犱负缂栫爜鐨勭敓鎴愬彲鑳芥槸闇�瑕佸睘鎬х殑
-//			switchComponentAttrOnOrder(templateVO, orderDTO);
-//			//4.鏍¢獙瑙勫垯
-//			checkVerifyOnOrder(templateVO, orderDTO);
-//			//5.鍒ゆ柇鍏抽敭灞炴��
-//			checkKeyAttrOnOrder(classifyFullInfo, templateVO, orderDTO);
-//			//6.鏍¢獙鏋氫妇鐨勫唴瀹规槸鍚︽纭�
-//			checkEnumOnOrder(templateVO, orderDTO);
-//			//7.澶勭悊鏃堕棿鏍煎紡锛屽湪鏁版嵁搴撻噷闈笉璁烘槸瀛楃涓茶繕鏄棩鏈熸牸寮忥紝閮戒娇鐢ㄧ浉鍚岀殑鏍煎紡瀛樺偍
-//			switchDateAttrOnOrder(templateVO, orderDTO);
-//			//榛樿鐨勫唴瀹逛笉鑳藉彉锛屾墍浠ュ彧闇�瑕佹嫹璐濊嚜瀹氫箟鐨勭浉鍏冲睘鎬у嵆鍙�
-//			copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, true);
-//			//浼佷笟鐮佸拰闆嗗洟鐮佺殑涓嶄慨鏀�
-//			cbo.setDescription(orderDTO.getDescription());
-//			cbo.setName(orderDTO.getName());
+		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())) {
+				throw new VciBaseException("鏁版嵁涓嶆槸鏈�鏂扮殑锛屽彲鑳戒粬浜哄凡缁忎慨鏀癸紝璇峰埛鏂板悗鍐嶈瘯");
+			}
+			if (!CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(cbo.getLcStatus()) && !orderDTO.isEditInProcess()) {
+				throw new VciBaseException("鏁版嵁涓嶆槸{0}鐨勭姸鎬侊紝涓嶅厑璁镐慨鏀�", new String[]{CodeDefaultLC.EDITING.getText()});
+			}
+			//1. 鍒ゆ柇蹇呰緭椤�
+			CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid());
+			checkRequiredAttrOnOrder(templateVO, orderDTO);
+			//2.鍏堟敞鍏ワ紝鍐嶇粍鍚堬紝鏈�鍚庢牎楠�
+			switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO);
+			//3.澶勭悊缁勫悎瑙勫垯銆傜粍鍚堣鍒欎笉鑳戒娇鐢ㄧ紪鐮佺殑灞炴�э紝鍥犱负缂栫爜鐨勭敓鎴愬彲鑳芥槸闇�瑕佸睘鎬х殑
+			switchComponentAttrOnOrder(templateVO, orderDTO);
+			//4.鏍¢獙瑙勫垯
+			checkVerifyOnOrder(templateVO, orderDTO);
+			//5.鍒ゆ柇鍏抽敭灞炴��
+			checkKeyAttrOnOrder(classifyFullInfo, templateVO, orderDTO);
+			//6.鏍¢獙鏋氫妇鐨勫唴瀹规槸鍚︽纭�
+			checkEnumOnOrder(templateVO, orderDTO);
+			//7.澶勭悊鏃堕棿鏍煎紡锛屽湪鏁版嵁搴撻噷闈笉璁烘槸瀛楃涓茶繕鏄棩鏈熸牸寮忥紝閮戒娇鐢ㄧ浉鍚岀殑鏍煎紡瀛樺偍
+			switchDateAttrOnOrder(templateVO, orderDTO);
+			//榛樿鐨勫唴瀹逛笉鑳藉彉锛屾墍浠ュ彧闇�瑕佹嫹璐濊嚜瀹氫箟鐨勭浉鍏冲睘鎬у嵆鍙�
+			copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, true);
+			//浼佷笟鐮佸拰闆嗗洟鐮佺殑涓嶄慨鏀�
+			cbo.setDescription(StringUtils.isBlank(orderDTO.getDescription())?"":orderDTO.getDescription());
+			cbo.setName(orderDTO.getName());
 //			try {
-//				cbo.setAttributeValueWithNoCheck("description", orderDTO.getDescription());
+//				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);
-//		});
+			updateList.add(cbo);
+			batchSaveSelectChar(firstTemplateVO, cboList);
+		});
 //		boService.persistenceBatch(batchCBO);
-//		batchSaveSelectChar(firstTemplateVO, cboList);
+		updateBatchByBaseModel(topClassifyFullInfo.getTopClassifyVO().getBtmtypeid(),updateList);
 		return R.success("鎿嶄綔鎴愬姛锛�");
 	}
 
@@ -2378,64 +2501,76 @@
 	 */
 	@Override
 	public void upSaveCode(CodeOrderDTO orderDTO) {
+		VciBaseUtil.alertNotNull(orderDTO, "缂栫爜鏁版嵁鎵�鍦ㄤ笟鍔$被鍚嶇О", orderDTO.getBtmname());
+		String btmName=orderDTO.getBtmname();
+		//鎵句笟鍔$被鍨嬶紝鐒跺悗浣跨敤涓婚敭鍘昏幏鍙栨暟鎹簱閲岀殑鏁版嵁
+		List<BaseModel> cbos = selectByTypeAndOid(btmName, orderDTO.getCopyFromVersion());
+		if (CollectionUtils.isEmpty(cbos)) {
+			throw new VciBaseException(DATA_OID_NOT_EXIST);
+		}
+		BaseModel oldCbo = cbos.get(0);
+
+		if (!CodeDefaultLC.RELEASED.getValue().equalsIgnoreCase(oldCbo.getLcStatus())) {
+			throw new VciBaseException("鏁版嵁涓嶆槸{0}鐨勭姸鎬侊紝涓嶅厑璁告暟鎹洿鏀�", new String[]{CodeDefaultLC.RELEASED.getText()});
+		}
+
+		//鏍规嵁鏁版嵁鑾峰彇鍒嗙被oid
+		String codeClassifyOid=oldCbo.getData().get(CODE_CLASSIFY_OID_FIELD.toUpperCase());
+		orderDTO.setCodeClassifyOid(codeClassifyOid);
+		CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
+		CodeClassifyTemplateVO templateVO= this.getUsedTemplateByClassifyOid(orderDTO.getCodeClassifyOid());
+		orderDTO.setTemplateOid(templateVO.getOid());
 		VciBaseUtil.alertNotNull(orderDTO, "缂栫爜鐢宠鐩稿叧鐨勫睘鎬х殑鍐呭涓虹┖", orderDTO.getCopyFromVersion(), "鍘熷鏁版嵁鐨勪富閿�",
 			orderDTO.getCodeClassifyOid(), "涓婚搴撳垎绫荤殑涓婚敭");
-		CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
-		//鎵句笟鍔$被鍨嬶紝鐒跺悗浣跨敤涓婚敭鍘昏幏鍙栨暟鎹簱閲岀殑鏁版嵁
-//		List<ClientBusinessObject> cbos = boService.queryCBO(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), WebUtil.getOidQuery(orderDTO.getCopyFromVersion()));
-//		if (CollectionUtils.isEmpty(cbos)) {
-//			throw new VciBaseException(DATA_OID_NOT_EXIST);
-//		}
-//		ClientBusinessObject oldCbo = cbos.get(0);
-//		if (!CodeDefaultLC.RELEASED.getValue().equalsIgnoreCase(oldCbo.getLcStatus())) {
-//			throw new VciBaseException("鏁版嵁涓嶆槸{0}鐨勭姸鎬侊紝涓嶅厑璁告暟鎹洿鏀�", new String[]{CodeDefaultLC.RELEASED.getText()});
-//		}
-//		//闇�瑕佸崌鐗�
+
+		//闇�瑕佸崌鐗�
 //		ClientBusinessObjectOperation cboOperation = new ClientBusinessObjectOperation();
-//		ClientBusinessObject cbo = null;
+		BaseModel cbo = null;
 //		try {
 //			//cbo = cboOperation.createBusinessObjectVersion(oldCbo,VciBaseUtil.getCurrentUserId());
-//			cbo = cboOperation.reviseBusinessObject(oldCbo, "");
+		cbo = reviseBusinessObject(oldCbo);
 //		} catch (VCIError e) {
 //			throw new VciBaseException("鍒濆鍖栫浉鍏崇殑鍐呭鍑虹幇浜嗛敊璇�", new String[0], e);
 //		}
-//		//1. 鍒ゆ柇蹇呰緭椤�
-//		CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid());
-//		checkRequiredAttrOnOrder(templateVO, orderDTO);
-//		//2.鍏堟敞鍏ワ紝鍐嶇粍鍚堬紝鏈�鍚庢牎楠�
-//		switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO);
-//		//3.澶勭悊缁勫悎瑙勫垯銆傜粍鍚堣鍒欎笉鑳戒娇鐢ㄧ紪鐮佺殑灞炴�э紝鍥犱负缂栫爜鐨勭敓鎴愬彲鑳芥槸闇�瑕佸睘鎬х殑
-//		switchComponentAttrOnOrder(templateVO, orderDTO);
-//		//4.鏍¢獙瑙勫垯
-//		checkVerifyOnOrder(templateVO, orderDTO);
-//		//5.鍒ゆ柇鍏抽敭灞炴��
-//		checkKeyAttrOnOrder(classifyFullInfo, templateVO, orderDTO);
-//		//6.鏍¢獙鏋氫妇鐨勫唴瀹规槸鍚︽纭�
-//		checkEnumOnOrder(templateVO, orderDTO);
-//		//7.澶勭悊鏃堕棿鏍煎紡锛屽湪鏁版嵁搴撻噷闈笉璁烘槸瀛楃涓茶繕鏄棩鏈熸牸寮忥紝閮戒娇鐢ㄧ浉鍚岀殑鏍煎紡瀛樺偍
-//		switchDateAttrOnOrder(templateVO, orderDTO);
-//		//榛樿鐨勫唴瀹逛笉鑳藉彉锛屾墍浠ュ彧闇�瑕佹嫹璐濊嚜瀹氫箟鐨勭浉鍏冲睘鎬у嵆鍙�
-//		copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, true);
-//		//浼佷笟鐮佸拰闆嗗洟鐮佺殑涓嶄慨鏀�
-//		cbo.setDescription(orderDTO.getDescription());
-//		cbo.setName(orderDTO.getName());
+		//1. 鍒ゆ柇蹇呰緭椤�
+		//CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid());
+		checkRequiredAttrOnOrder(templateVO, orderDTO);
+		//2.鍏堟敞鍏ワ紝鍐嶇粍鍚堬紝鏈�鍚庢牎楠�
+		switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO);
+		//3.澶勭悊缁勫悎瑙勫垯銆傜粍鍚堣鍒欎笉鑳戒娇鐢ㄧ紪鐮佺殑灞炴�э紝鍥犱负缂栫爜鐨勭敓鎴愬彲鑳芥槸闇�瑕佸睘鎬х殑
+		switchComponentAttrOnOrder(templateVO, orderDTO);
+		//4.鏍¢獙瑙勫垯
+		checkVerifyOnOrder(templateVO, orderDTO);
+		//5.鍒ゆ柇鍏抽敭灞炴��
+		checkKeyAttrOnOrder(classifyFullInfo, templateVO, orderDTO);
+		//6.鏍¢獙鏋氫妇鐨勫唴瀹规槸鍚︽纭�
+		checkEnumOnOrder(templateVO, orderDTO);
+		//7.澶勭悊鏃堕棿鏍煎紡锛屽湪鏁版嵁搴撻噷闈笉璁烘槸瀛楃涓茶繕鏄棩鏈熸牸寮忥紝閮戒娇鐢ㄧ浉鍚岀殑鏍煎紡瀛樺偍
+		switchDateAttrOnOrder(templateVO, orderDTO);
+		//榛樿鐨勫唴瀹逛笉鑳藉彉锛屾墍浠ュ彧闇�瑕佹嫹璐濊嚜瀹氫箟鐨勭浉鍏冲睘鎬у嵆鍙�
+		copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, true);
+		//浼佷笟鐮佸拰闆嗗洟鐮佺殑涓嶄慨鏀�
+		cbo.setDescription(StringUtils.isBlank(orderDTO.getDescription())?"":orderDTO.getDescription());
+		cbo.setName(orderDTO.getName());
 //		try {
-//			cbo.setAttributeValueWithNoCheck("description", orderDTO.getDescription());
-//			cbo.setAttributeValue("name", orderDTO.getName());
+		cbo.setDescription(StringUtils.isBlank(orderDTO.getDescription())?"":orderDTO.getDescription());
+//		cbo.setAttributeValueWithNoCheck("description", StringUtils.isBlank(orderDTO.getDescription())?"":orderDTO.getDescription());
+		cbo.setName(orderDTO.getName());
 //		} catch (VCIError e) {
 //			e.printStackTrace();
 //		}
-//		//鏁版嵁鐨勬椂鍊欙紝缂栫爜鏄笉鍙樼殑
-//		cbo.setCreateTime(DateUtils.convert2String(new Date(Long.parseLong(cbo.getCreateTime())), "yyyy-MM-dd HH:mm:ss"));
-//		cbo.setLastModifyTime(DateUtils.convert2String(new Date(Long.parseLong(cbo.getLastModifyTime())), "yyyy-MM-dd HH:mm:ss"));
+		//鏁版嵁鐨勬椂鍊欙紝缂栫爜鏄笉鍙樼殑
+		cbo.setCreateTime(cbo.getCreateTime());
+		cbo.setLastModifyTime(cbo.getLastModifyTime());
 //		List<ClientBusinessObject> cboList = new ArrayList<>();
 //		cboList.add(cbo);
-//		try {
+		try {
 //			cboOperation.saveRevisionBuinessObject(cbo);
-//		} catch (VCIError vciError) {
-//			throw new VciBaseException("鏁版嵁鏇存敼淇濆瓨鍑洪敊浜�", new String[0], vciError);
-//		}
-//		batchSaveSelectChar(templateVO, cboList);
+			insertBatchByType(cbo.getBtmname(), Collections.singletonList(cbo));
+		} catch (Exception vciError) {
+			throw new VciBaseException("鏁版嵁鏇存敼淇濆瓨鍑洪敊浜�", new String[0], vciError);
+		}
+		batchSaveSelectChar(templateVO, Collections.singletonList(cbo));
 	}
 
 	/**
@@ -3358,4 +3493,45 @@
 
 		return "pl_code_"+refertype.trim().toLowerCase();
 	}
+
+	public BaseModel reviseBusinessObject(BaseModel fromBo) {
+		BaseModel toBo = new BaseModel();
+//		Map<String,String> data = new HashMap<>();
+//		toBo.getData().put(data);
+		toBo.setOid(VciBaseUtil.getPk());
+		toBo.setRevisionOid(VciBaseUtil.getPk());
+		toBo.setNameOid(fromBo.getNameOid());
+		toBo.setBtmname(fromBo.getBtmname());
+		toBo.setLastR(String.valueOf(1));
+		toBo.setFirstR(String.valueOf(0));
+		toBo.setFirstV(String.valueOf(1));
+		toBo.setLastV(String.valueOf(1));
+		toBo.setCreator(String.valueOf(AuthUtil.getUser().getUserId()));
+		toBo.setCreateTime(new Date());
+		toBo.setLastModifier(String.valueOf(AuthUtil.getUser().getUserId()));
+		toBo.setLastModifyTime(new Date());
+		toBo.setRevisionRule(fromBo.getRevisionRule());
+		toBo.setVersionRule(fromBo.getVersionRule());
+//		RevisionValueObject rvObj = this.getNextRevision(fromBo.getBtmName(), fromBo.getNameoid(), item.revRuleName, item.revInput, revisionVal);
+		R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(fromBo.getBtmname()));
+		Map<String, Object> nextRevision = commonsMapper.getNextRevision(listR.getData().get(0).getTableName(), fromBo.getNameOid());
+		toBo.setRevisionSeq(Integer.parseInt(nextRevision.get("REVISIONSEQ").toString()));
+		toBo.setRevisionValue(nextRevision.get("REVISIONVAL").toString());
+//		VersionValueObject versionObj = this.getVersionValue(item.verRuleName);
+		toBo.setVersionSeq(Integer.valueOf(nextRevision.get("VERSIONSEQ").toString()));
+		toBo.setVersionValue(nextRevision.get("VERSIONVAL").toString());
+		toBo.setLctid(fromBo.getLctid());
+		toBo.setLcStatus("Editing");
+		toBo.setId(fromBo.getId());
+		toBo.setName(fromBo.getName());
+		toBo.setDescription(fromBo.getDescription());
+		toBo.setOwner(String.valueOf(AuthUtil.getUser().getUserId()));
+//		toBo.setCheckinBy(String.valueOf(AuthUtil.getUser().getUserId()));
+		toBo.setCopyFromVersion(fromBo.getOid());
+		toBo.getData().putAll(fromBo.getData());
+		toBo.getData().put("CHECKINBY",String.valueOf(AuthUtil.getUser().getUserId()));
+//		this.initRevisionTypeAttributeValue(fromBo, toBo);
+		return toBo;
+
+	}
 }

--
Gitblit v1.9.3