fujunling
2023-07-05 5cca849c1690ac6e49bfc04b3f930d41c0513c32
Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/processor/dll/DllDmMapperProcessor.java
@@ -3,12 +3,16 @@
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.stereotype.Component;
import java.util.List;
import java.util.Locale;
/**
 * Description: 应用于达梦数据,生成创建表操作sql的处理器
@@ -26,8 +30,8 @@
   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.VTInteger, new DdlFieldMappingAttrBO("INTEGER", 10, 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));
@@ -57,6 +61,28 @@
      return getMappingBOInMap(fieldTypeEnum,FIELD_MAP);
   }
   @Override
   public String getColumnTypeSql(VciFieldTypeEnum fieldType, BtmTypeAttributeVO attributeVO) {
      DdlFieldMappingAttrBO mappingBO = getMappingBO(fieldType);
      if (fieldType.equals(VciFieldTypeEnum.VTDouble)) {
         mappingBO.setDataPrecision(attributeVO.getPrecisionLength());
      }
      //先只针对数字类型的进行处理
      if (fieldType.equals(VciFieldTypeEnum.VTInteger) ){
         mappingBO.setDataLength(null);
      } else if (fieldType.equals(VciFieldTypeEnum.VTDouble) || fieldType.equals(VciFieldTypeEnum.VTLong)) {
         if (attributeVO.getAttributeLength() <= mappingBO.getDataLength()) {
            mappingBO.setDataLength(attributeVO.getAttributeLength());
         }
      }else {
         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 : "");
   }
   /**
    * 按数据库字段类型列举所有的VCI字段类型
    *