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