From 3579af2945dd38d841a23cd340acd474bb63773a Mon Sep 17 00:00:00 2001
From: lihang <lihang@vci-tech.com>
Date: 星期四, 04 五月 2023 18:02:01 +0800
Subject: [PATCH] 业务类型与DDL服务相关的添加

---
 Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/processor/dll/DllMapperProcessor.java |  193 +++++++++++++++++++-----------------------------
 1 files changed, 76 insertions(+), 117 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..619a79c 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,19 @@
 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.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.List;
 
 /**
  * Description:DLL鐨勫鐞嗘帴鍙�
@@ -10,7 +21,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 +125,24 @@
 		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(),"OID") ? StringPool.SPACE +  "primary key" + StringPool.SPACE : "");
 
-		if (!attributeVO.isNullableFlag()){
-			value += dealNullableSql(attributeVO);
-		}
-		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;
-		}
-		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 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