| | |
| | | import com.vci.ubcs.ddl.bo.DdlFieldMappingAttrBO; |
| | | import com.vci.ubcs.ddl.mapper.DllDmMapper; |
| | | import com.vci.ubcs.ddl.mapper.DllMapper; |
| | | import com.vci.ubcs.omd.vo.BtmTypeAttributeVO; |
| | | import com.vci.ubcs.starter.util.VciSpringUtil; |
| | | import com.vci.ubcs.starter.web.enumpck.VciFieldTypeEnum; |
| | | import org.apache.commons.collections4.BidiMap; |
| | | import org.springblade.core.tool.utils.StringPool; |
| | | import org.springblade.core.tool.utils.StringUtil; |
| | | import org.springframework.context.annotation.DependsOn; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.List; |
| | | import java.util.Locale; |
| | | import java.util.Optional; |
| | | |
| | | /** |
| | | * Description: 应用于达梦数据,生成创建表操作sql的处理器 |
| | |
| | | * @date 2023/4/24 |
| | | */ |
| | | @Component |
| | | public class DllDmMapperProcessor extends DllMapperProcessor{ |
| | | @DependsOn("vciSpringUtil") |
| | | public class DllDmMapperProcessor extends DllMapperProcessor { |
| | | |
| | | private static final DllMapper MAPPER = VciSpringUtil.getBean(DllDmMapper.class); |
| | | |
| | |
| | | |
| | | static { |
| | | // 需要重新映射的字段类型在这里写 |
| | | FIELD_MAP.put(VciFieldTypeEnum.VTDouble,new DdlFieldMappingAttrBO("DOUBLE",26,8,true,null)); |
| | | FIELD_MAP.put(VciFieldTypeEnum.VTInteger,new DdlFieldMappingAttrBO("NUMBER",22,null,true,null)); |
| | | FIELD_MAP.put(VciFieldTypeEnum.VTLong,new DdlFieldMappingAttrBO("BIGINT",22,null,true,null)); |
| | | FIELD_MAP.put(VciFieldTypeEnum.VTBoolean,new DdlFieldMappingAttrBO("VARCHAR",5,null,true,null)); |
| | | FIELD_MAP.put(VciFieldTypeEnum.VTDate,new DdlFieldMappingAttrBO("DATE",null,null,true,null)); |
| | | FIELD_MAP.put(VciFieldTypeEnum.VTDateTime,new DdlFieldMappingAttrBO("TIMESTAMP",null,null,true,null)); |
| | | FIELD_MAP.put(VciFieldTypeEnum.VTTime,new DdlFieldMappingAttrBO("TIME",null,null,true,null)); |
| | | FIELD_MAP.put(VciFieldTypeEnum.VTFilePath,new DdlFieldMappingAttrBO("TEXT",null,null,true,null)); |
| | | FIELD_MAP.put(VciFieldTypeEnum.VTClob,new DdlFieldMappingAttrBO("CLOB",100,null,true,null)); |
| | | FIELD_MAP.put(VciFieldTypeEnum.VTString,new DdlFieldMappingAttrBO("VARCHAR",255,null,true,null)); |
| | | FIELD_MAP.put(VciFieldTypeEnum.VTDouble, new DdlFieldMappingAttrBO("DOUBLE", 53, null, true, null)); |
| | | FIELD_MAP.put(VciFieldTypeEnum.VTInteger, new DdlFieldMappingAttrBO("INTEGER", null, null, true, null)); |
| | | FIELD_MAP.put(VciFieldTypeEnum.VTLong, new DdlFieldMappingAttrBO("NUMBER", 38, null, true, null)); |
| | | FIELD_MAP.put(VciFieldTypeEnum.VTBoolean, new DdlFieldMappingAttrBO("VARCHAR", 5, null, true, null)); |
| | | FIELD_MAP.put(VciFieldTypeEnum.VTDate, new DdlFieldMappingAttrBO("DATE", null, null, true, null)); |
| | | FIELD_MAP.put(VciFieldTypeEnum.VTDateTime, new DdlFieldMappingAttrBO("TIMESTAMP", null, null, true, null)); |
| | | FIELD_MAP.put(VciFieldTypeEnum.VTTime, new DdlFieldMappingAttrBO("TIME", null, null, true, null)); |
| | | FIELD_MAP.put(VciFieldTypeEnum.VTFilePath, new DdlFieldMappingAttrBO("TEXT", null, null, true, null)); |
| | | FIELD_MAP.put(VciFieldTypeEnum.VTClob, new DdlFieldMappingAttrBO("CLOB", 100, null, true, null)); |
| | | FIELD_MAP.put(VciFieldTypeEnum.VTString, new DdlFieldMappingAttrBO("VARCHAR", 255, null, true, null)); |
| | | FIELD_MAP.put(VciFieldTypeEnum.VTString, new DdlFieldMappingAttrBO("VARCHAR2", 255, null, true, null)); |
| | | } |
| | | |
| | | public DllDmMapperProcessor() { |
| | | super(MAPPER); |
| | | System.out.println("-----------------"); |
| | | if (MAPPER != null){ |
| | | if (MAPPER != null) { |
| | | System.out.println("[success]::加载达梦数据库DLL操作服务成功"); |
| | | }else { |
| | | } else { |
| | | System.out.println("[fail]::加载达梦数据库DLL操作服务失败"); |
| | | } |
| | | } |
| | |
| | | |
| | | @Override |
| | | protected DdlFieldMappingAttrBO getMappingBO(VciFieldTypeEnum fieldTypeEnum) { |
| | | return getMappingBOInMap(fieldTypeEnum,FIELD_MAP); |
| | | return getMappingBOInMap(fieldTypeEnum, FIELD_MAP); |
| | | } |
| | | |
| | | @Override |
| | | public String getColumnTypeSql(VciFieldTypeEnum fieldType, BtmTypeAttributeVO attributeVO) { |
| | | DdlFieldMappingAttrBO mappingBO = getMappingBO(fieldType); |
| | | if (mappingBO.getDataLength() != null) { |
| | | //mappingBO用来做最后的校验,如果定义的BO没有字段长度,则说明这个类型生成的sql不应该指定长度。如果指定了长度,说明是字段长度的最大值,VARCHAR、CLOB除外 |
| | | if (!(fieldType.equals(VciFieldTypeEnum.VTClob) || fieldType.equals(VciFieldTypeEnum.VTString)) |
| | | && attributeVO.getAttributeLength() > mappingBO.getDataLength()) { |
| | | mappingBO.setDataLength(attributeVO.getAttributeLength()); |
| | | } |
| | | } |
| | | 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 : ""); |
| | | |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | @Override |
| | | public List<VciFieldTypeEnum> listFieldByColumnStr(String columnStr) { |
| | | return listFieldInMapByColumnStr(columnStr,FIELD_MAP); |
| | | return listFieldInMapByColumnStr(columnStr, FIELD_MAP); |
| | | } |
| | | |
| | | @Override |
| | | public VciFieldTypeEnum getFieldTypeByColumnStr(String columnStr, Integer length) { |
| | | return getFieldTypeBeColumnStrInMap(columnStr,length,FIELD_MAP); |
| | | return getFieldTypeBeColumnStrInMap(columnStr, length, FIELD_MAP); |
| | | } |
| | | } |