From 4b42ec4cf0fd085752b563b146aed696098b3d3a Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期一, 03 七月 2023 19:13:17 +0800
Subject: [PATCH] 修改referDataGrid方法

---
 Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/processor/dll/DllMapperProcessor.java |  215 +++++++++++++++++++++++++----------------------------
 1 files changed, 100 insertions(+), 115 deletions(-)

diff --git a/Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/processor/dll/DllMapperProcessor.java b/Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/processor/dll/DllMapperProcessor.java
index 4ea938e..e23f3d3 100644
--- a/Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/processor/dll/DllMapperProcessor.java
+++ b/Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/processor/dll/DllMapperProcessor.java
@@ -1,8 +1,22 @@
 package com.vci.ubcs.ddl.processor.dll;
 
-import com.vci.ubcs.ddl.mapper.DllMapper;
+import com.vci.ubcs.ddl.bo.DdlFieldMappingAttrBO;
+import com.vci.ubcs.ddl.mapper.*;
 import com.vci.ubcs.omd.vo.BtmTypeAttributeVO;
-import org.apache.commons.lang3.StringUtils;
+import com.vci.ubcs.starter.exception.VciBaseException;
+import com.vci.ubcs.starter.web.enumpck.VciFieldTypeEnum;
+import com.vci.ubcs.starter.web.util.VciBaseUtil;
+import org.apache.commons.collections4.BidiMap;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.bidimap.DualHashBidiMap;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.StringPool;
+import org.springblade.core.tool.utils.StringUtil;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Locale;
 
 /**
  * Description:DLL鐨勫鐞嗘帴鍙�
@@ -10,7 +24,57 @@
  * @author LiHang
  * @date 2023/4/24
  */
-public abstract class DllMapperProcessor implements DllBehavior {
+public abstract class DllMapperProcessor {
+
+	private final static BidiMap<VciFieldTypeEnum, DdlFieldMappingAttrBO> FIELD_MAPPING_MAP;
+
+	static {
+		FIELD_MAPPING_MAP = new DualHashBidiMap<>();
+		FIELD_MAPPING_MAP.put(VciFieldTypeEnum.VTInteger,new DdlFieldMappingAttrBO("NUMBER",22,null,true,null));
+		FIELD_MAPPING_MAP.put(VciFieldTypeEnum.VTLong,new DdlFieldMappingAttrBO("NUMBER",22,null,true,null));
+		FIELD_MAPPING_MAP.put(VciFieldTypeEnum.VTDouble,new DdlFieldMappingAttrBO("NUMBER",26,8,true,null));
+		FIELD_MAPPING_MAP.put(VciFieldTypeEnum.VTBoolean,new DdlFieldMappingAttrBO("VARCHAR2",5,null,true,null));
+		FIELD_MAPPING_MAP.put(VciFieldTypeEnum.VTDate,new DdlFieldMappingAttrBO("TIMESTAMP",6,null,true,null));
+		FIELD_MAPPING_MAP.put(VciFieldTypeEnum.VTTime,new DdlFieldMappingAttrBO("TIMESTAMP",6,null,true,null));
+		FIELD_MAPPING_MAP.put(VciFieldTypeEnum.VTDateTime,new DdlFieldMappingAttrBO("TIMESTAMP",6,null,true,null));
+		FIELD_MAPPING_MAP.put(VciFieldTypeEnum.VTFilePath,new DdlFieldMappingAttrBO("VARCHAR2",100,null,true,null));
+		FIELD_MAPPING_MAP.put(VciFieldTypeEnum.VTClob,new DdlFieldMappingAttrBO("VTClob",null,null,true,null));
+		FIELD_MAPPING_MAP.put(VciFieldTypeEnum.VTString,new DdlFieldMappingAttrBO("VARCHAR2",255,null,true,null));
+	}
+
+	protected abstract DdlFieldMappingAttrBO getMappingBO(VciFieldTypeEnum fieldTypeEnum);
+
+	protected final DdlFieldMappingAttrBO getMappingBOInMap(VciFieldTypeEnum fieldTypeEnum,BidiMap<VciFieldTypeEnum, DdlFieldMappingAttrBO> map){
+		if (!map.containsKey(fieldTypeEnum)){
+			throw new VciBaseException("鎵句笉鍒板瓧娈电殑鏄犲皠");
+		}
+		DdlFieldMappingAttrBO bo = map.get(fieldTypeEnum);
+		return BeanUtil.copy(bo,DdlFieldMappingAttrBO.class);
+	}
+
+	protected static BidiMap<VciFieldTypeEnum,DdlFieldMappingAttrBO> getMappingMapCopy(){
+		BidiMap<VciFieldTypeEnum, DdlFieldMappingAttrBO> map = new DualHashBidiMap<>();
+		map.putAll(FIELD_MAPPING_MAP);
+		return map;
+	}
+
+	/**
+	 * 鎸夋暟鎹簱瀛楁绫诲瀷鍒椾妇鎵�鏈夌殑VCI瀛楁绫诲瀷
+	 * @param columnStr 鏁版嵁搴撳瓧娈电被鍨�
+	 * @return VCI瀛楁绫诲瀷
+	 */
+	public List<VciFieldTypeEnum> listFieldByColumnStr(String columnStr){
+		return listFieldInMapByColumnStr(columnStr,FIELD_MAPPING_MAP);
+	}
+
+	protected final List<VciFieldTypeEnum> listFieldInMapByColumnStr(String columnStr,BidiMap<VciFieldTypeEnum,DdlFieldMappingAttrBO> map){
+		VciBaseUtil.alertNotNull(columnStr,"鏁版嵁搴撳瓧娈电被鍨�",map,"瀛楁鏄犲皠闆嗗悎");
+		List<VciFieldTypeEnum> fieldTypeList = new ArrayList<>();
+		map.values().stream().filter(s -> StringUtil.equals(s.getDataType(),columnStr)).forEach(s -> {
+			fieldTypeList.add(map.getKey(s));
+		});
+		return fieldTypeList;
+	}
 
 	private DllMapper mapper;
 
@@ -64,126 +128,47 @@
 		return mapper.countAll(tableName);
 	}
 
+
+
 	/**
-	 * 澶勭悊鏁存暟绫诲瀷鐨剆ql杞崲
-	 *
+	 * 鑾峰彇瀛楁鍒涘缓sql
+	 * @param fieldType VT瀛楁绫诲瀷
 	 * @param attributeVO 灞炴��
 	 * @return sql
 	 */
-	@Override
-	public String dealNumberCreateSql(BtmTypeAttributeVO attributeVO) {
-		StringBuilder snb = new StringBuilder().append(NUMBER + SPACE);
-		dealDefaultAndNull(attributeVO);
-		return snb.toString();
-	}
-
-	/**
-	 * 璋冪敤澶勭悊榛樿鍊煎拰闈炵┖
-	 *
-	 * @param attributeVO 灞炴��
-	 * @return 鎵ц缁撴灉
-	 */
-	@Override
-	public String dealDefaultAndNull(BtmTypeAttributeVO attributeVO) {
-		String value = "";
-		if (StringUtils.isNotBlank(attributeVO.getDefaultValue())) {
-			value += dealDefaultValue(attributeVO.getDefaultValue());
+	public String getColumnTypeSql(VciFieldTypeEnum fieldType,BtmTypeAttributeVO attributeVO){
+		DdlFieldMappingAttrBO mappingBO = getMappingBO(fieldType);
+		mappingBO.setDataLength(attributeVO.getAttributeLength());
+		if (fieldType.equals(VciFieldTypeEnum.VTDouble)){
+			mappingBO.setDataPrecision(attributeVO.getPrecisionLength());
 		}
+		mappingBO.setNullable(attributeVO.isNullableFlag());
+		mappingBO.setDefaultValue(attributeVO.getDefaultValue());
+		return mappingBO.toString() + (StringUtil.equals(attributeVO.getId().toLowerCase(Locale.ROOT),"OID".toLowerCase(Locale.ROOT)) ? StringPool.SPACE +  "primary key" + StringPool.SPACE : "");
 
-		if (!attributeVO.isNullableFlag()){
-			value += dealNullableSql(attributeVO);
+	}
+
+	public abstract VciFieldTypeEnum getFieldTypeByColumnStr(String columnStr,Integer length);
+
+	protected final VciFieldTypeEnum getFieldTypeBeColumnStrInMap(String columnStr,Integer length,BidiMap<VciFieldTypeEnum, DdlFieldMappingAttrBO> map){
+		List<VciFieldTypeEnum> fieldTypes = listFieldInMapByColumnStr(columnStr, map);
+		VciFieldTypeEnum finalField = null;
+		int i = Integer.MAX_VALUE;
+		if (fieldTypes.size() == 1){
+			return fieldTypes.get(0);
 		}
-		return value;
-	}
-
-	/**
-	 * 澶勭悊榛樿鍊�
-	 *
-	 * @return sql
-	 */
-	@Override
-	public String dealDefaultValue(String defualValule) {
-		return DEFAULT + SPACE + defualValule + SPACE;
-	}
-
-	/**
-	 * 澶勭悊娴偣鏁扮被鍨嬬殑sql杞崲
-	 *
-	 * @param attributeVO 灞炴��
-	 * @return sql
-	 */
-	@Override
-	public String dealDoubleCreateSql(BtmTypeAttributeVO attributeVO) {
-		Integer length = attributeVO.getPrecisionLength();
-		if(length == null || length == 0){
-			length = 20;
+		for (VciFieldTypeEnum fieldType : fieldTypes) {
+			if (fieldType.equals(VciFieldTypeEnum.VTString)) {
+				finalField = VciFieldTypeEnum.VTString;
+			}
+			if (fieldType.equals(VciFieldTypeEnum.VTDateTime)){
+				finalField = VciFieldTypeEnum.VTDateTime;
+			}
+			if (fieldType.equals(VciFieldTypeEnum.VTInteger) && length <= 26){
+				finalField = VciFieldTypeEnum.VTInteger;
+			}
 		}
-		Integer scaleLength = attributeVO.getScaleLength();
-		if(scaleLength == null){
-			scaleLength = 2;
-		}
-		StringBuilder sb = new StringBuilder().append(NUMBER).append("(").append(String.valueOf(length.intValue()))
-			.append(",").append(String.valueOf(scaleLength.intValue()))
-			.append(")").append(SPACE);
-		sb.append(dealDefaultAndNull(attributeVO));
-		return sb.toString();
+		return finalField;
 	}
 
-	/**
-	 * 澶勭悊闈炵┖
-	 *
-	 * @return sql
-	 */
-	@Override
-	public String dealNullableSql(BtmTypeAttributeVO attributeVO) {
-		if (!attributeVO.isNullableFlag()) {
-			return SPACE + "not null" + SPACE;
-		}
-		return "";
-	}
-
-	/**
-	 * 澶勭悊甯冨皵绫诲瀷鐨剆ql杞崲
-	 *
-	 * @param attributeVO 灞炴��
-	 * @return sql
-	 */
-	@Override
-	public String dealBooleanCreateSql(BtmTypeAttributeVO attributeVO) {
-		return "VARCHAR (5) " + SPACE + dealDefaultAndNull(attributeVO);
-	}
-
-	/**
-	 * 澶勭悊鏃ユ湡鏃堕棿绫诲瀷鐨剆ql杞崲
-	 *
-	 * @param attributeVO 灞炴��
-	 * @return sql
-	 */
-	@Override
-	public String dealDateTimeCreateSql(BtmTypeAttributeVO attributeVO) {
-		return "DATETIME" + SPACE + dealDefaultAndNull(attributeVO);
-	}
-
-	/**
-	 * 澶勭悊瀛楃涓茬被鍨嬬殑sql杞崲
-	 *
-	 * @param attributeVO 灞炴��
-	 * @return sql
-	 */
-	@Override
-	public String dealStringCreateSql(BtmTypeAttributeVO attributeVO) {
-		StringBuilder sb = new StringBuilder();
-		Integer length2 = attributeVO.getAttributeLength();
-		if (length2 == null) {
-			length2 = 250;
-		}
-		sb.append("VARCHAR").append("(").
-			append(String.valueOf(length2.intValue())).append(")").append(SPACE);
-		if (OID.equalsIgnoreCase(attributeVO.getId())) {
-			sb.append(" primary key ");
-			//寮哄埗璁剧疆OID涓轰富閿�
-		}
-		sb.append(dealDefaultAndNull(attributeVO));
-		return sb.toString();
-	}
 }

--
Gitblit v1.9.3